From 0bc901774fb6002cbf66b1bc2c199996d44f5240 Mon Sep 17 00:00:00 2001 From: gpabst Date: Fri, 7 Feb 2025 12:30:54 -0500 Subject: [PATCH 1/2] feat: add set operatorset split convenience method --- chainio/clients/elcontracts/writer.go | 32 ++ contracts/bindings/AVSDirectory/binding.go | 2 +- .../bindings/AllocationManager/binding.go | 2 +- .../bindings/DelegationManager/binding.go | 2 +- contracts/bindings/EigenPod/binding.go | 2 +- contracts/bindings/EigenPodManager/binding.go | 2 +- .../bindings/IRewardsCoordinator/binding.go | 408 +++++++++++++++++- .../bindings/PermissionController/binding.go | 2 +- contracts/bindings/StrategyManager/binding.go | 16 +- contracts/lib/eigenlayer-middleware | 2 +- 10 files changed, 454 insertions(+), 16 deletions(-) diff --git a/chainio/clients/elcontracts/writer.go b/chainio/clients/elcontracts/writer.go index 2ec517ffb..82ccda3c0 100644 --- a/chainio/clients/elcontracts/writer.go +++ b/chainio/clients/elcontracts/writer.go @@ -405,6 +405,38 @@ func (w *ChainWriter) SetOperatorPISplit( return receipt, nil } +// Sets the split for an operator in an operator set. +// The caller must be a registered operator. +// The split has to be between 0 and 10000 bips (inclusive). +// The split will be activated after activation delay. +func (w *ChainWriter) SetOperatorSetSplit( + ctx context.Context, + operator gethcommon.Address, + operatorSet rewardscoordinator.OperatorSet, + split uint16, + waitForReceipt bool, +) (*gethtypes.Receipt, error) { + if w.rewardsCoordinator == nil { + return nil, errors.New("RewardsCoordinator contract not provided") + } + + noSendTxOpts, err := w.txMgr.GetNoSendTxOpts() + if err != nil { + return nil, utils.WrapError("failed to get no send tx opts", err) + } + + tx, err := w.rewardsCoordinator.SetOperatorSetSplit(noSendTxOpts, operator, operatorSet, split) + if err != nil { + return nil, utils.WrapError("failed to create SetOperatorSetSplit tx", err) + } + receipt, err := w.txMgr.Send(ctx, tx, waitForReceipt) + if err != nil { + return nil, utils.WrapError("failed to send tx", err) + } + + return receipt, nil +} + // Processes the claims given by `claims`. // The rewards are transferred to the given `recipientAddress`. func (w *ChainWriter) ProcessClaims( diff --git a/contracts/bindings/AVSDirectory/binding.go b/contracts/bindings/AVSDirectory/binding.go index 9cb5e4c24..083d343a6 100644 --- a/contracts/bindings/AVSDirectory/binding.go +++ b/contracts/bindings/AVSDirectory/binding.go @@ -39,7 +39,7 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct { // ContractAVSDirectoryMetaData contains all meta data concerning the ContractAVSDirectory contract. var ContractAVSDirectoryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_SET_FORCE_DEREGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_SET_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsOperatorStatus\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIAVSDirectoryTypes.OperatorAVSRegistrationStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cancelSalt\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"isSpent\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSMetadataURIUpdated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIAVSDirectoryTypes.OperatorAVSRegistrationStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorAlreadyRegisteredToAVS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegisteredToAVS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegisteredToEigenLayer\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SaltSpent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]}]", - Bin: "0x610100604052348015610010575f5ffd5b5060405161170438038061170483398101604081905261002f916101ed565b81816001600160a01b038116610058576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0524660c052610108604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b60e05261011361011a565b5050610225565b5f54610100900460ff16156101855760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146101d4575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ea575f5ffd5b50565b5f5f604083850312156101fe575f5ffd5b8251610209816101d6565b602084015190925061021a816101d6565b809150509250929050565b60805160a05160c05160e0516114906102745f395f610b7a01525f610aba01525f8181610340015261063d01525f818161021c015281816103d8015281816104ad0152610b9e01526114905ff3fe608060405234801561000f575f5ffd5b506004361061013d575f3560e01c8063a364f4da116100b4578063dce974b911610079578063dce974b914610314578063df5cf7231461033b578063ec76f44214610362578063f2fde38b14610395578063f698da25146103a8578063fabc1cbc146103b0575f5ffd5b8063a364f4da1461028d578063a98fb355146102a0578063c825fe68146102b3578063cd6dc687146102da578063d79aceab146102ed575f5ffd5b80635c975abb116101055780635c975abb146101fd578063715018a61461020f578063886f1195146102175780638da5cb5b146102565780639926ee7d14610267578063a1060c881461027a575f5ffd5b8063136439dd14610141578063374823b51461015657806349075da314610198578063595c6a67146101d25780635ac86ab7146101da575b5f5ffd5b61015461014f366004611075565b6103c3565b005b6101836101643660046110a0565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101c56101a63660046110ca565b609860209081525f928352604080842090915290825290205460ff1681565b60405161018f9190611115565b610154610498565b6101836101e836600461113b565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161018f565b610154610547565b61023e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161018f565b6033546001600160a01b031661023e565b6101546102753660046111d0565b610558565b6102016102883660046112bd565b610777565b61015461029b366004611300565b6107f6565b6101546102ae36600461131b565b6108db565b6102017f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b6101546102e83660046110a0565b610922565b6102017fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102017f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61023e7f000000000000000000000000000000000000000000000000000000000000000081565b610154610370366004611075565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b6101546103a3366004611300565b610a3e565b610201610ab7565b6101546103be366004611075565b610b9c565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610425573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104499190611389565b61046657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461048b5760405163c61dca5d60e01b815260040160405180910390fd5b61049482610cab565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104fa573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051e9190611389565b61053b57604051631d77d47760e21b815260040160405180910390fd5b6105455f19610cab565b565b61054f610ce8565b6105455f610d42565b6066545f906001908116036105805760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156105b9576105b9611101565b036105d757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561061e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015610682573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a69190611389565b6106c357604051639f88c8af60e01b815260040160405180910390fd5b6106e7836106db853386602001518760400151610777565b84516040860151610d93565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161076a9190611115565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f906107ed9060c00160405160208183030381529060405280519060200120610deb565b95945050505050565b6066545f9060019081160361081e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff16600181111561085757610857611101565b14610875576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916108cf9190611115565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371383836040516109169291906113a8565b60405180910390a25050565b5f54610100900460ff161580801561094057505f54600160ff909116105b806109595750303b15801561095957505f5460ff166001145b6109c15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156109e2575f805461ff0019166101001790555b6109eb82610cab565b6109f483610d42565b8015610a39575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a46610ce8565b6001600160a01b038116610aab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b8565b610ab481610d42565b50565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610b775750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1c91906113d6565b6001600160a01b0316336001600160a01b031614610c4d5760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c745760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610916565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6033546001600160a01b031633146105455760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109b8565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610db457604051630819bdcd60e01b815260040160405180910390fd5b610dc86001600160a01b0385168484610e31565b610de557604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610df4610ab7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f5f5f610e3e8585610e8f565b90925090505f816004811115610e5657610e56611101565b148015610e745750856001600160a01b0316826001600160a01b0316145b80610e855750610e85868686610ed1565b9695505050505050565b5f5f8251604103610ec3576020830151604084015160608501515f1a610eb787828585610fb8565b94509450505050610eca565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401610ef99291906113f1565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610f37919061142d565b5f60405180830381855afa9150503d805f8114610f6f576040519150601f19603f3d011682016040523d82523d5f602084013e610f74565b606091505b5091509150818015610f8857506020815110155b8015610e8557508051630b135d3f60e11b90610fad9083016020908101908401611443565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610fed57505f9050600361106c565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561103e573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611066575f6001925092505061106c565b91505f90505b94509492505050565b5f60208284031215611085575f5ffd5b5035919050565b6001600160a01b0381168114610ab4575f5ffd5b5f5f604083850312156110b1575f5ffd5b82356110bc8161108c565b946020939093013593505050565b5f5f604083850312156110db575f5ffd5b82356110e68161108c565b915060208301356110f68161108c565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061113557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f6020828403121561114b575f5ffd5b813560ff8116811461115b575f5ffd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561119957611199611162565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156111c8576111c8611162565b604052919050565b5f5f604083850312156111e1575f5ffd5b82356111ec8161108c565b9150602083013567ffffffffffffffff811115611207575f5ffd5b830160608186031215611218575f5ffd5b611220611176565b813567ffffffffffffffff811115611236575f5ffd5b8201601f81018713611246575f5ffd5b803567ffffffffffffffff81111561126057611260611162565b611273601f8201601f191660200161119f565b818152886020838501011115611287575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f608085870312156112d0575f5ffd5b84356112db8161108c565b935060208501356112eb8161108c565b93969395505050506040820135916060013590565b5f60208284031215611310575f5ffd5b813561115b8161108c565b5f5f6020838503121561132c575f5ffd5b823567ffffffffffffffff811115611342575f5ffd5b8301601f81018513611352575f5ffd5b803567ffffffffffffffff811115611368575f5ffd5b856020828401011115611379575f5ffd5b6020919091019590945092505050565b5f60208284031215611399575f5ffd5b8151801515811461115b575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f602082840312156113e6575f5ffd5b815161115b8161108c565b828152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f82518060208501845e5f920191825250919050565b5f60208284031215611453575f5ffd5b505191905056fea2646970667358221220eff20e62ca279ac549110f1c49a3e7fac156c54a44153ab22aad70ec2d783ac664736f6c634300081b0033", + Bin: "0x61010060405234801561001157600080fd5b5060405161179a38038061179a833981016040819052610030916101f2565b81816001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0524660c052610109604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b60e05261011461011b565b505061022c565b600054610100900460ff16156101875760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146101d8576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ef57600080fd5b50565b6000806040838503121561020557600080fd5b8251610210816101da565b6020840151909250610221816101da565b809150509250929050565b60805160a05160c05160e0516115196102816000396000610b9a01526000610ada015260008181610348015261064f015260008181610224015281816103e1015281816104b80152610bbe01526115196000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063a364f4da116100b8578063dce974b91161007c578063dce974b91461031c578063df5cf72314610343578063ec76f4421461036a578063f2fde38b1461039e578063f698da25146103b1578063fabc1cbc146103b957600080fd5b8063a364f4da14610295578063a98fb355146102a8578063c825fe68146102bb578063cd6dc687146102e2578063d79aceab146102f557600080fd5b80635c975abb1161010a5780635c975abb14610205578063715018a614610217578063886f11951461021f5780638da5cb5b1461025e5780639926ee7d1461026f578063a1060c881461028257600080fd5b8063136439dd14610147578063374823b51461015c57806349075da31461019f578063595c6a67146101da5780635ac86ab7146101e2575b600080fd5b61015a6101553660046110ab565b6103cc565b005b61018a61016a3660046110d9565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101cd6101ad366004611105565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101969190611154565b61015a6104a3565b61018a6101f036600461117c565b606654600160ff9092169190911b9081161490565b6066545b604051908152602001610196565b61015a610555565b6102467f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610196565b6033546001600160a01b0316610246565b61015a61027d366004611216565b610567565b61020961029036600461130b565b61078c565b61015a6102a3366004611351565b61080c565b61015a6102b636600461136e565b6108f4565b6102097f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015a6102f03660046110d9565b61093b565b6102097fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102097f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b6102467f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103783660046110ab565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b61015a6103ac366004611351565b610a5d565b610209610ad6565b61015a6103c73660046110ab565b610bbc565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610430573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045491906113e2565b61047157604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104965760405163c61dca5d60e01b815260040160405180910390fd5b61049f82610ccd565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052b91906113e2565b61054857604051631d77d47760e21b815260040160405180910390fd5b610553600019610ccd565b565b61055d610d0a565b6105536000610d64565b6066546000906001908116036105905760405163840a48d560e01b815260040160405180910390fd5b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156105ca576105ca61113e565b036105e857604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff161561063057604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015610696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ba91906113e2565b6106d757604051639f88c8af60e01b815260040160405180910390fd5b6106fb836106ef85338660200151876040015161078c565b84516040860151610db6565b6001600160a01b038316600081815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161077f9190611154565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290526000906108039060c00160405160208183030381529060405280519060200120610e0e565b95945050505050565b6066546000906001908116036108355760405163840a48d560e01b815260040160405180910390fd5b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff16600181111561086f5761086f61113e565b1461088d576040516352df45c960e01b815260040160405180910390fd5b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916108e89190611154565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713838360405161092f929190611404565b60405180910390a25050565b600054610100900460ff161580801561095b5750600054600160ff909116105b806109755750303b158015610975575060005460ff166001145b6109dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610a00576000805461ff0019166101001790555b610a0982610ccd565b610a1283610d64565b8015610a58576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a65610d0a565b6001600160a01b038116610aca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d4565b610ad381610d64565b50565b60007f00000000000000000000000000000000000000000000000000000000000000004614610b975750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e9190611433565b6001600160a01b0316336001600160a01b031614610c6f5760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c965760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161092f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6033546001600160a01b031633146105535760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109d4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b42811015610dd757604051630819bdcd60e01b815260040160405180910390fd5b610deb6001600160a01b0385168484610e55565b610e0857604051638baa579f60e01b815260040160405180910390fd5b50505050565b6000610e18610ad6565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b6000806000610e648585610eb6565b90925090506000816004811115610e7d57610e7d61113e565b148015610e9b5750856001600160a01b0316826001600160a01b0316145b80610eac5750610eac868686610efb565b9695505050505050565b6000808251604103610eec5760208301516040840151606085015160001a610ee087828585610fe7565b94509450505050610ef4565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401610f25929190611474565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610f6391906114ae565b600060405180830381855afa9150503d8060008114610f9e576040519150601f19603f3d011682016040523d82523d6000602084013e610fa3565b606091505b5091509150818015610fb757506020815110155b8015610eac57508051630b135d3f60e11b90610fdc90830160209081019084016114ca565b149695505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561101e57506000905060036110a2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611072573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661109b576000600192509250506110a2565b9150600090505b94509492505050565b6000602082840312156110bd57600080fd5b5035919050565b6001600160a01b0381168114610ad357600080fd5b600080604083850312156110ec57600080fd5b82356110f7816110c4565b946020939093013593505050565b6000806040838503121561111857600080fd5b8235611123816110c4565b91506020830135611133816110c4565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b602081016002831061117657634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561118e57600080fd5b813560ff8116811461119f57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156111df576111df6111a6565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561120e5761120e6111a6565b604052919050565b6000806040838503121561122957600080fd5b8235611234816110c4565b9150602083013567ffffffffffffffff81111561125057600080fd5b83016060818603121561126257600080fd5b61126a6111bc565b813567ffffffffffffffff81111561128157600080fd5b8201601f8101871361129257600080fd5b803567ffffffffffffffff8111156112ac576112ac6111a6565b6112bf601f8201601f19166020016111e5565b8181528860208385010111156112d457600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b6000806000806080858703121561132157600080fd5b843561132c816110c4565b9350602085013561133c816110c4565b93969395505050506040820135916060013590565b60006020828403121561136357600080fd5b813561119f816110c4565b6000806020838503121561138157600080fd5b823567ffffffffffffffff81111561139857600080fd5b8301601f810185136113a957600080fd5b803567ffffffffffffffff8111156113c057600080fd5b8560208284010111156113d257600080fd5b6020919091019590945092505050565b6000602082840312156113f457600080fd5b8151801515811461119f57600080fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561144557600080fd5b815161119f816110c4565b60005b8381101561146b578181015183820152602001611453565b50506000910152565b8281526040602082015260008251806040840152611499816060850160208701611450565b601f01601f1916919091016060019392505050565b600082516114c0818460208701611450565b9190910192915050565b6000602082840312156114dc57600080fd5b505191905056fea2646970667358221220e4ca370ea77c252035bb541d98c5335b575e430931fef3e69d30a990219bb26964736f6c634300081b0033", } // ContractAVSDirectoryABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/AllocationManager/binding.go b/contracts/bindings/AllocationManager/binding.go index 233f2a5d1..9d428a437 100644 --- a/contracts/bindings/AllocationManager/binding.go +++ b/contracts/bindings/AllocationManager/binding.go @@ -81,7 +81,7 @@ type OperatorSet struct { // ContractAllocationManagerMetaData contains all meta data concerning the ContractAllocationManager contract. var ContractAllocationManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_DEALLOCATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_ALLOCATION_CONFIGURATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ALLOCATION_CONFIGURATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEALLOCATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addStrategiesToOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearDeallocationQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"numToClear\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterFromOperatorSets\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.DeregisterParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"encumberedMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatableMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocation\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.Allocation\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocations\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudesAtBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMemberCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMembers\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinimumSlashableStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"futureBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCount\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRegisteredSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesInOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isMemberOfOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.AllocateParams[]\",\"components\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"newMagnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerForOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.RegisterParams\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperator\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.SlashingParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadsToSlash\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSMetadataURIUpdated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AVSRegistrarSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIAVSRegistrar\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationDelaySet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"magnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EncumberedMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"encumberedMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"maxMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadSlashed\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Empty\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSnapshotOrdering\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWadToSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ModificationAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotSlashable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutOfBounds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesMustBeInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UninitializedAllocationDelay\",\"inputs\":[]}]", - Bin: "0x610120604052348015610010575f5ffd5b50604051615a80380380615a8083398101604081905261002f91610180565b82858383876001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008b610095565b50505050506101e9565b5f54610100900460ff16156101005760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161461014f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610165575f5ffd5b50565b805163ffffffff8116811461017b575f5ffd5b919050565b5f5f5f5f5f60a08688031215610194575f5ffd5b855161019f81610151565b60208701519095506101b081610151565b60408701519094506101c181610151565b92506101cf60608701610168565b91506101dd60808701610168565b90509295509295909350565b60805160a05160c05160e0516101005161580661027a5f395f81816103f9015261370301525f81816105480152613d0301525f818161031e0152818161223e015261293501525f81816106fa01528181610c970152818161161c01528181611c8301528181611ced0152612bfc01525f818161056f0152818161079201528181611d92015261337a01526158065ff3fe608060405234801561000f575f5ffd5b5060043610610281575f3560e01c80636e875dba11610156578063a984eb3a116100ca578063c221d8ae11610084578063c221d8ae146106bc578063cd6dc687146106cf578063d3d96ff4146106e2578063df5cf723146106f5578063f2fde38b1461071c578063fabc1cbc1461072f575f5ffd5b8063a984eb3a1461060e578063adc2e3d914610641578063b2447af714610654578063b66bd98914610667578063b9fbaed11461067a578063ba1a84e5146106a9575f5ffd5b80638ce648541161011b5780638ce64854146105915780638da5cb5b146105b157806394d7d00c146105c2578063952899ee146105d5578063a9333ec8146105e8578063a9821821146105fb575f5ffd5b80636e875dba14610515578063715018a61461052857806379ae50cd146105305780637bc1ef6114610543578063886f11951461056a575f5ffd5b80634657e26a116101f8578063595c6a67116101b2578063595c6a67146104875780635ac86ab71461048f5780635c975abb146104b2578063670d3ba2146104c45780636cfb4481146104d75780636e3492b514610502575f5ffd5b80634657e26a146103f45780634a10ffe51461041b5780634b5046ef1461043b57806350feea201461044e578063547afb871461046157806356c483e614610474575f5ffd5b80632981eb77116102495780632981eb77146103195780632bab2c4a14610355578063304c10cd1461037557806336352057146103a057806340120dab146103b35780634177a87c146103d4575f5ffd5b806310e1b9b814610285578063136439dd146102ae57806315fe5028146102c3578063260dc758146102e3578063261f84e014610306575b5f5ffd5b610298610293366004614733565b610742565b6040516102a5919061477a565b60405180910390f35b6102c16102bc3660046147ad565b61077d565b005b6102d66102d13660046147c4565b610852565b6040516102a59190614842565b6102f66102f1366004614854565b610969565b60405190151581526020016102a5565b6102c16103143660046148ae565b6109a0565b6103407f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102a5565b610368610363366004614993565b610c43565b6040516102a59190614a47565b6103886103833660046147c4565b610f30565b6040516001600160a01b0390911681526020016102a5565b6102c16103ae366004614aaa565b610f5f565b6103c66103c1366004614afc565b611771565b6040516102a5929190614b89565b6103e76103e2366004614854565b6118ec565b6040516102a59190614be6565b6103887f000000000000000000000000000000000000000000000000000000000000000081565b61042e610429366004614bf8565b611910565b6040516102a59190614c3b565b6102c1610449366004614c86565b6119b8565b6102c161045c366004614d06565b611a72565b61042e61046f366004614d64565b611bd0565b6102c1610482366004614db0565b611c78565b6102c1611d7d565b6102f661049d366004614de3565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102a5565b6102f66104d2366004614e03565b611e2c565b6104ea6104e5366004614afc565b611e3d565b6040516001600160401b0390911681526020016102a5565b6102c1610510366004614e44565b611faa565b6103e7610523366004614854565b61237a565b6102c161238b565b6102d661053e3660046147c4565b61239c565b6103407f000000000000000000000000000000000000000000000000000000000000000081565b6103887f000000000000000000000000000000000000000000000000000000000000000081565b6105a461059f366004614e75565b612476565b6040516102a59190614eb8565b6033546001600160a01b0316610388565b61042e6105d0366004614eca565b61253b565b6102c16105e3366004614f25565b612627565b6104ea6105f6366004614afc565b612aee565b6102c16106093660046150ce565b612b1d565b6104ea61061c366004614afc565b60a260209081525f92835260408084209091529082529020546001600160401b031681565b6102c161064f36600461514c565b612b8d565b6104b6610662366004614854565b612edc565b6102c1610675366004614d06565b612efe565b61068d6106883660046147c4565b613058565b60408051921515835263ffffffff9091166020830152016102a5565b6104b66106b73660046147c4565b6130f2565b6103e76106ca366004614e03565b613112565b6102c16106dd36600461518e565b613143565b6102c16106f0366004614afc565b613260565b6103887f000000000000000000000000000000000000000000000000000000000000000081565b6102c161072a3660046147c4565b6132ff565b6102c161073d3660046147ad565b613378565b604080516060810182525f80825260208201819052918101829052906107718561076b8661348e565b856134f1565b925050505b9392505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156107df573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080391906151b8565b61082057604051631d77d47760e21b815260040160405180910390fd5b60665481811681146108455760405163c61dca5d60e01b815260040160405180910390fd5b61084e8261365d565b5050565b6001600160a01b0381165f908152609d60205260408120606091906108769061369a565b90505f816001600160401b0381111561089157610891614657565b6040519080825280602002602001820160405280156108d557816020015b604080518082019091525f80825260208201528152602001906001900390816108af5790505b5090505f5b82811015610961576001600160a01b0385165f908152609d6020526040902061093c9061090790836136a3565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b82828151811061094e5761094e6151d7565b60209081029190910101526001016108da565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061099a9163ffffffff908116906136ae16565b92915050565b826109aa816136c5565b6109c75760405163932d94f760e01b815260040160405180910390fd5b5f5b82811015610c3c575f6040518060400160405280876001600160a01b031681526020018686858181106109fe576109fe6151d7565b9050602002810190610a1091906151eb565b610a1e906020810190615209565b63ffffffff168152509050610a68816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f2061376f90919063ffffffff16565b610a8557604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610adb9190615222565b60405180910390a15f610aed8261348e565b90505f5b868685818110610b0357610b036151d7565b9050602002810190610b1591906151eb565b610b23906020810190615230565b9050811015610c3157610b99878786818110610b4157610b416151d7565b9050602002810190610b5391906151eb565b610b61906020810190615230565b83818110610b7157610b716151d7565b9050602002016020810190610b8691906147c4565b5f8481526099602052604090209061377a565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610bce57610bce6151d7565b9050602002810190610be091906151eb565b610bee906020810190615230565b84818110610bfe57610bfe6151d7565b9050602002016020810190610c1391906147c4565b604051610c21929190615275565b60405180910390a1600101610af1565b5050506001016109c9565b5050505050565b606083516001600160401b03811115610c5e57610c5e614657565b604051908082528060200260200182016040528015610c9157816020015b6060815260200190600190039081610c7c5790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b8152600401610ce392919061529b565b5f60405180830381865afa158015610cfd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d2491908101906152bf565b90505f5b8551811015610f26575f868281518110610d4457610d446151d7565b6020026020010151905085516001600160401b03811115610d6757610d67614657565b604051908082528060200260200182016040528015610d90578160200160208202803683370190505b50848381518110610da357610da36151d7565b60209081029190910101525f5b8651811015610f1c575f878281518110610dcc57610dcc6151d7565b6020908102919091018101516001600160a01b038086165f90815260a1845260408082209284168252919093528220909250610e079061378e565b9050806001600160401b03165f03610e20575050610f14565b5f610e2c858d85610742565b90508863ffffffff16816040015163ffffffff1611158015610e5457505f8160200151600f0b125b15610e7657610e6a815f015182602001516137a1565b6001600160401b031681525b80515f90610e91906001600160401b039081169085166137b5565b9050610ed881898981518110610ea957610ea96151d7565b60200260200101518781518110610ec257610ec26151d7565b60200260200101516137c990919063ffffffff16565b898881518110610eea57610eea6151d7565b60200260200101518681518110610f0357610f036151d7565b602002602001018181525050505050505b600101610db0565b5050600101610d28565b5050949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610f585780610776565b5090919050565b606654600190600290811603610f885760405163840a48d560e01b815260040160405180910390fd5b82610f92816136c5565b610faf5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610fdd9190615209565b63ffffffff16905290505f610ffe610ff860208701876147c4565b836137dd565b905061100d6060860186615230565b905061101c6040870187615230565b90501461103c576040516343714afd60e01b815260040160405180910390fd5b60208083015183516001600160a01b03165f9081526098909252604090912061106e9163ffffffff908116906136ae16565b61108b57604051631fb1705560e21b815260040160405180910390fd5b806110a95760405163ebbff49760e01b815260040160405180910390fd5b5f6110b76040870187615230565b90506001600160401b038111156110d0576110d0614657565b6040519080825280602002602001820160405280156110f9578160200160208202803683370190505b5090505f5b61110b6040880188615230565b90508110156117025780158061119e57506111296040880188615230565b6111346001846153df565b818110611143576111436151d7565b905060200201602081019061115891906147c4565b6001600160a01b031661116e6040890189615230565b8381811061117e5761117e6151d7565b905060200201602081019061119391906147c4565b6001600160a01b0316115b6111bb57604051639f1c805360e01b815260040160405180910390fd5b6111c86060880188615230565b828181106111d8576111d86151d7565b905060200201355f1080156112185750670de0b6b3a76400006111fe6060890189615230565b8381811061120e5761120e6151d7565b9050602002013511155b61123557604051631353603160e01b815260040160405180910390fd5b6112916112456040890189615230565b83818110611255576112556151d7565b905060200201602081019061126a91906147c4565b60995f6112768861348e565b81526020019081526020015f2061385390919063ffffffff16565b6112ae576040516331bc342760e11b815260040160405180910390fd5b5f806113006112c060208b018b6147c4565b6112c98861348e565b6112d660408d018d615230565b878181106112e6576112e66151d7565b90506020020160208101906112fb91906147c4565b6134f1565b805191935091506001600160401b03165f0361131d5750506116fa565b5f61135861132e60608c018c615230565b8681811061133e5761133e6151d7565b85516001600160401b031692602090910201359050613874565b83519091506113736001600160401b038084169083166137b5565b868681518110611385576113856151d7565b60200260200101818152505081835f018181516113a291906153f2565b6001600160401b03169052508351829085906113bf9083906153f2565b6001600160401b03169052506020840180518391906113df9083906153f2565b6001600160401b031690525060208301515f600f9190910b12156114fa575f61144261140e60608e018e615230565b8881811061141e5761141e6151d7565b90506020020135856020015161143390615411565b6001600160801b031690613874565b9050806001600160401b03168460200181815161145f9190615435565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61149360208e018e6147c4565b8a8e80604001906114a49190615230565b8a8181106114b4576114b46151d7565b90506020020160208101906114c991906147c4565b6114da885f015189602001516137a1565b88604001516040516114f0959493929190615462565b60405180910390a1505b61154c61150a60208d018d6147c4565b6115138a61348e565b61152060408f018f615230565b89818110611530576115306151d7565b905060200201602081019061154591906147c4565b878761388a565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61157a60208d018d6147c4565b8961158860408f018f615230565b89818110611598576115986151d7565b90506020020160208101906115ad91906147c4565b86516040516115c194939291904390615462565b60405180910390a16116126115d960208d018d6147c4565b6115e660408e018e615230565b888181106115f6576115f66151d7565b905060200201602081019061160b91906147c4565b8651613aca565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663601bb36f61164e60208e018e6147c4565b61165b60408f018f615230565b8981811061166b5761166b6151d7565b905060200201602081019061168091906147c4565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b1580156116df575f5ffd5b505af11580156116f1573d5f5f3e3d5ffd5b50505050505050505b6001016110fe565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe561173160208801886147c4565b8461173f60408a018a615230565b8561174d60808d018d6154b3565b604051611760979695949392919061551d565b60405180910390a150505050505050565b6001600160a01b0382165f908152609d6020526040812060609182916117969061369a565b90505f816001600160401b038111156117b1576117b1614657565b6040519080825280602002602001820160405280156117f557816020015b604080518082019091525f80825260208201528152602001906001900390816117cf5790505b5090505f826001600160401b0381111561181157611811614657565b60405190808252806020026020018201604052801561185a57816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161182f5790505b5090505f5b838110156118dd576001600160a01b0388165f908152609d6020526040812061188c9061090790846136a3565b9050808483815181106118a1576118a16151d7565b60200260200101819052506118b789828a610742565b8383815181106118c9576118c96151d7565b60209081029190910101525060010161185f565b509093509150505b9250929050565b60605f61077660995f6118fe8661348e565b81526020019081526020015f20613b4c565b60605f83516001600160401b0381111561192c5761192c614657565b604051908082528060200260200182016040528015611955578160200160208202803683370190505b5090505f5b845181101561096157611986858281518110611978576119786151d7565b602002602001015185612aee565b828281518110611998576119986151d7565b6001600160401b039092166020928302919091019091015260010161195a565b6066545f906001908116036119e05760405163840a48d560e01b815260040160405180910390fd5b838214611a00576040516343714afd60e01b815260040160405180910390fd5b5f5b84811015611a6957611a6187878784818110611a2057611a206151d7565b9050602002016020810190611a3591906147c4565b868685818110611a4757611a476151d7565b9050602002016020810190611a5c91906155b3565b613b58565b600101611a02565b50505050505050565b83611a7c816136c5565b611a995760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f611ac58261348e565b9050611b06826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f206136ae90919063ffffffff16565b611b2357604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611bc657611b42868683818110610b7157610b716151d7565b611b5f5760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611b9357611b936151d7565b9050602002016020810190611ba891906147c4565b604051611bb6929190615275565b60405180910390a1600101611b25565b5050505050505050565b60605f82516001600160401b03811115611bec57611bec614657565b604051908082528060200260200182016040528015611c15578160200160208202803683370190505b5090505f5b835181101561096157611c4685858381518110611c3957611c396151d7565b6020026020010151612aee565b828281518110611c5857611c586151d7565b6001600160401b0390921660209283029190910190910152600101611c1a565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d7357611cb1826136c5565b611cce576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611d32573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5691906151b8565b611d735760405163ccea9e6f60e01b815260040160405180910390fd5b61084e8282613c5c565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611ddf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e0391906151b8565b611e2057604051631d77d47760e21b815260040160405180910390fd5b611e2a5f1961365d565b565b5f61077683609a5f6112768661348e565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b0390911690600f81810b600160801b909204900b03825b81811015611f67576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120611ecf9083613e08565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff16918101829052919250431015611f4a575050611f67565b611f588582602001516137a1565b94505050806001019050611e97565b506001600160a01b038086165f90815260a1602090815260408083209388168352929052208290611f979061378e565b611fa191906153f2565b95945050505050565b606654600290600490811603611fd35760405163840a48d560e01b815260040160405180910390fd5b611fe8611fe360208401846147c4565b6136c5565b806120015750612001611fe360408401602085016147c4565b61201e576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b61202d6040840184615230565b90508110156122ef575f604051806040016040528085602001602081019061205591906147c4565b6001600160a01b031681526020016120706040870187615230565b85818110612080576120806151d7565b90506020020160208101906120959190615209565b63ffffffff1681525090506120e2816020015163ffffffff1660985f8760200160208101906120c491906147c4565b6001600160a01b0316815260208101919091526040015f20906136ae565b6120ff57604051631fb1705560e21b815260040160405180910390fd5b609e5f61210f60208701876147c4565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6121388361348e565b815260208101919091526040015f205460ff16612168576040516325131d4f60e01b815260040160405180910390fd5b6121a26121748261348e565b609c5f61218460208901896147c4565b6001600160a01b0316815260208101919091526040015f2090613e77565b506121da6121b360208601866147c4565b609a5f6121bf8561348e565b81526020019081526020015f20613e8290919063ffffffff16565b506121e860208501856147c4565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe826040516122209190615222565b60405180910390a2604080518082019091525f8152602081016122637f0000000000000000000000000000000000000000000000000000000000000000436155d4565b63ffffffff169052609e5f61227b60208801886147c4565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6122a48461348e565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101612020565b5061230361038360408401602085016147c4565b6001600160a01b0316639d8e0c2361231e60208501856147c4565b61232b6040860186615230565b6040518463ffffffff1660e01b815260040161234993929190615629565b5f604051808303815f87803b158015612360575f5ffd5b505af1925050508015612371575060015b1561084e575050565b606061099a609a5f6118fe8561348e565b612393613e96565b611e2a5f613ef0565b6001600160a01b0381165f908152609c60205260408120606091906123c09061369a565b90505f816001600160401b038111156123db576123db614657565b60405190808252806020026020018201604052801561241f57816020015b604080518082019091525f80825260208201528152602001906001900390816123f95790505b5090505f5b82811015610961576001600160a01b0385165f908152609c602052604090206124519061090790836136a3565b828281518110612463576124636151d7565b6020908102919091010152600101612424565b60605f84516001600160401b0381111561249257612492614657565b6040519080825280602002602001820160405280156124db57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816124b05790505b5090505f5b85518110156125325761250d8682815181106124fe576124fe6151d7565b60200260200101518686610742565b82828151811061251f5761251f6151d7565b60209081029190910101526001016124e0565b50949350505050565b60605f83516001600160401b0381111561255757612557614657565b604051908082528060200260200182016040528015612580578160200160208202803683370190505b5090505f5b8451811015612532576001600160a01b0386165f90815260a16020526040812086516125f5928792918990869081106125c0576125c06151d7565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20613f4190919063ffffffff16565b828281518110612607576126076151d7565b6001600160401b0390921660209283029190910190910152600101612585565b6066545f9060019081160361264f5760405163840a48d560e01b815260040160405180910390fd5b612658836136c5565b612675576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61268186613058565b91509150816126a35760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610c3c578381815181106126c4576126c46151d7565b602002602001015160400151518482815181106126e3576126e36151d7565b602002602001015160200151511461270e576040516343714afd60e01b815260040160405180910390fd5b5f848281518110612721576127216151d7565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506127619163ffffffff908116906136ae16565b61277e57604051631fb1705560e21b815260040160405180910390fd5b5f61278987836137dd565b90505f5b86848151811061279f5761279f6151d7565b60200260200101516020015151811015612ae3575f8785815181106127c6576127c66151d7565b60200260200101516020015182815181106127e3576127e36151d7565b602002602001015190506127fa898261ffff613b58565b5f5f6128098b61076b8861348e565b915091508060200151600f0b5f1461283457604051630d8fcbe360e41b815260040160405180910390fd5b5f61284187858489613f55565b9050612886825f01518c8a8151811061285c5761285c6151d7565b6020026020010151604001518781518110612879576128796151d7565b6020026020010151613f8b565b600f0b602083018190525f036128af57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b12156129f3578015612975576129306128d08861348e565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61295a7f0000000000000000000000000000000000000000000000000000000000000000436155d4565b6129659060016155d4565b63ffffffff166040830152612a60565b612987836020015183602001516137a1565b6001600160401b031660208401528a518b90899081106129a9576129a96151d7565b60200260200101516040015185815181106129c6576129c66151d7565b6020908102919091018101516001600160401b031683525f9083015263ffffffff43166040830152612a60565b5f8260200151600f0b1315612a6057612a14836020015183602001516137a1565b6001600160401b039081166020850181905284519091161015612a4a57604051636c9be0bf60e01b815260040160405180910390fd5b612a5489436155d4565b63ffffffff1660408301525b612a758c612a6d8961348e565b86868661388a565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c612aa36109078a61348e565b86612ab5865f015187602001516137a1565b8660400151604051612acb959493929190615462565b60405180910390a150506001909201915061278d9050565b5050506001016126a9565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107769061378e565b82612b27816136c5565b612b445760405163932d94f760e01b815260040160405180910390fd5b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138484604051612b7f92919061564d565b60405180910390a250505050565b606654600290600490811603612bb65760405163840a48d560e01b815260040160405180910390fd5b82612bc0816136c5565b612bdd5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612c41573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c6591906151b8565b612c825760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612c916020850185615230565b9050811015612e5957604080518082019091525f9080612cb460208801886147c4565b6001600160a01b03168152602001868060200190612cd29190615230565b85818110612ce257612ce26151d7565b9050602002016020810190612cf79190615209565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612d339291908116906136ae16565b612d5057604051631fb1705560e21b815260040160405180910390fd5b612d5a86826137dd565b15612d7857604051636c6c6e2760e11b815260040160405180910390fd5b612da1612d848261348e565b6001600160a01b0388165f908152609c602052604090209061376f565b50612dcd86609a5f612db28561348e565b81526020019081526020015f2061377a90919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612e079190615222565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612e328461348e565b815260208101919091526040015f20805460ff191691151591909117905550600101612c84565b50612e6a61038360208501856147c4565b6001600160a01b031663adcf73f785612e866020870187615230565b612e9360408901896154b3565b6040518663ffffffff1660e01b8152600401612eb3959493929190615660565b5f604051808303815f87803b158015612eca575f5ffd5b505af1158015611bc6573d5f5f3e3d5ffd5b5f61099a609a5f612eec8561348e565b81526020019081526020015f2061369a565b83612f08816136c5565b612f255760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612f6492916136ae16565b612f8157604051631fb1705560e21b815260040160405180910390fd5b5f612f8b8261348e565b90505f5b84811015611bc657612fd4868683818110612fac57612fac6151d7565b9050602002016020810190612fc191906147c4565b5f84815260996020526040902090613e82565b612ff1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110613025576130256151d7565b905060200201602081019061303a91906147c4565b604051613048929190615275565b60405180910390a1600101612f8f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b9091041660608201819052849391929190158015906130d95750826060015163ffffffff164310155b156130e8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061099a9061369a565b6001600160a01b0382165f908152609f602052604081206060919061313b90826118fe8661348e565b949350505050565b5f54610100900460ff161580801561316157505f54600160ff909116105b8061317a5750303b15801561317a57505f5460ff166001145b6131e25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015613203575f805461ff0019166101001790555b61320c8261365d565b61321583613ef0565b801561325b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b8161326a816136c5565b6132875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf85836132df81610f30565b604080516001600160a01b03938416815292909116602083015201613252565b613307613e96565b6001600160a01b03811661336c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016131d9565b61337581613ef0565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133f891906156a3565b6001600160a01b0316336001600160a01b0316146134295760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146134505760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff166040516020016134d992919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261099a906156be565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906135519061378e565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff169181018290529192504310156135f3579092509050613655565b613604815f015182602001516137a1565b6001600160401b0316815260208101515f600f9190910b121561364257613633826020015182602001516137a1565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61099a825490565b5f6107768383613fa2565b5f8181526001830160205260408120541515610776565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af115801561374b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099a91906151b8565b5f6107768383613fc8565b5f610776836001600160a01b038416613fc8565b5f61099a82670de0b6b3a7640000614014565b5f610776826001600160401b038516615435565b5f61077683670de0b6b3a764000084614058565b5f6107768383670de0b6b3a7640000614058565b6001600160a01b0382165f908152609e602052604081208190816138008561348e565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff169282019290925291508061313b57506020015163ffffffff164311159392505050565b6001600160a01b0381165f9081526001830160205260408120541515610776565b5f6107768383670de0b6b3a7640000600161413d565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b0390811691161461395057602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613a32576001600160a01b0385165f908152609f602090815260408083208784529091529020613a0a908461377a565b506001600160a01b0385165f908152609d60205260409020613a2c908561376f565b50610c3c565b80516001600160401b03165f03610c3c576001600160a01b0385165f908152609f602090815260408083208784529091529020613a6f9084613e82565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613a9b9061369a565b5f03610c3c576001600160a01b0385165f908152609d60205260409020613ac29085613e77565b505050505050565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613af9904383614196565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c90606001613252565b60605f610776836141aa565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613ba257508261ffff1682105b15610c3c576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613bd690614203565b90505f5f613be58884896134f1565b91509150806040015163ffffffff16431015613c0357505050610c3c565b613c10888489858561388a565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613c3d90614255565b50613c47856156e1565b9450613c52846156f9565b9350505050613b90565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613cd85750806060015163ffffffff164310155b15613cf257604081015163ffffffff168152600160208201525b63ffffffff82166040820152613d287f0000000000000000000000000000000000000000000000000000000000000000436155d4565b613d339060016155d4565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db9101613252565b5f5f613e2a613e16846142d2565b8554613e259190600f0b61570e565b61433f565b8454909150600160801b9004600f90810b9082900b12613e5d57604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f61077683836143a8565b5f610776836001600160a01b0384166143a8565b6033546001600160a01b03163314611e2a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016131d9565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107768383670de0b6b3a764000061448b565b5f613f668460995f6112768961348e565b8015613f6f5750815b8015611fa157505090516001600160401b031615159392505050565b5f6107766001600160401b03808516908416615735565b5f825f018281548110613fb757613fb76151d7565b905f5260205f200154905092915050565b5f81815260018301602052604081205461400d57508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561099a565b505f61099a565b81545f9080156140505761403a8461402d6001846153df565b5f91825260209091200190565b54600160201b90046001600160e01b031661313b565b509092915050565b5f80805f19858709858702925082811083820303915050805f0361408f5783828161408557614085615762565b0492505050610776565b8084116140d65760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016131d9565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f5f61414a868686614058565b9050600183600281111561416057614160615776565b14801561417c57505f848061417757614177615762565b868809115b15611fa15761418c60018261578a565b9695505050505050565b61325b83836001600160401b0384166144d3565b6060815f018054806020026020016040519081016040528092919081815260200182805480156141f757602002820191905f5260205f20905b8154815260200190600101908083116141e3575b50505050509050919050565b5f61421d8254600f81810b600160801b909204900b131590565b1561423b57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f61426f8254600f81810b600160801b909204900b131590565b1561428d57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f6001600160ff1b0382111561433b5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016131d9565b5090565b80600f81900b81146143a35760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016131d9565b919050565b5f8181526001830160205260408120548015614482575f6143ca6001836153df565b85549091505f906143dd906001906153df565b905081811461443c575f865f0182815481106143fb576143fb6151d7565b905f5260205f200154905080875f01848154811061441b5761441b6151d7565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061444d5761444d61579d565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061099a565b5f91505061099a565b82545f908161449c868683856145d6565b905080156144c9576144b38661402d6001846153df565b54600160201b90046001600160e01b0316610771565b5091949350505050565b82548015614589575f6144eb8561402d6001856153df565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b03166020840152919250908516101561453d5760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff808616911603614587578261455e8661402d6001866153df565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f5b81831015610961575f6145eb8484614629565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561461557809250614623565b61462081600161578a565b93505b506145d8565b5f61463760028484186157b1565b6107769084841661578a565b6001600160a01b0381168114613375575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561468d5761468d614657565b60405290565b604051601f8201601f191681016001600160401b03811182821017156146bb576146bb614657565b604052919050565b803563ffffffff811681146143a3575f5ffd5b5f604082840312156146e6575f5ffd5b604080519081016001600160401b038111828210171561470857614708614657565b604052905080823561471981614643565b8152614727602084016146c3565b60208201525092915050565b5f5f5f60808486031215614745575f5ffd5b833561475081614643565b925061475f85602086016146d6565b9150606084013561476f81614643565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161099a565b5f602082840312156147bd575f5ffd5b5035919050565b5f602082840312156147d4575f5ffd5b813561077681614643565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614838576148228683516147df565b604095909501946020919091019060010161480f565b5093949350505050565b602081525f61077660208301846147fd565b5f60408284031215614864575f5ffd5b61077683836146d6565b5f5f83601f84011261487e575f5ffd5b5081356001600160401b03811115614894575f5ffd5b6020830191508360208260051b85010111156118e5575f5ffd5b5f5f5f604084860312156148c0575f5ffd5b83356148cb81614643565b925060208401356001600160401b038111156148e5575f5ffd5b6148f18682870161486e565b9497909650939450505050565b5f6001600160401b0382111561491657614916614657565b5060051b60200190565b5f82601f83011261492f575f5ffd5b813561494261493d826148fe565b614693565b8082825260208201915060208360051b860101925085831115614963575f5ffd5b602085015b8381101561498957803561497b81614643565b835260209283019201614968565b5095945050505050565b5f5f5f5f60a085870312156149a6575f5ffd5b6149b086866146d6565b935060408501356001600160401b038111156149ca575f5ffd5b6149d687828801614920565b93505060608501356001600160401b038111156149f1575f5ffd5b6149fd87828801614920565b925050614a0c608086016146c3565b905092959194509250565b5f8151808452602084019350602083015f5b82811015614838578151865260209586019590910190600101614a29565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614a9e57603f19878603018452614a89858351614a17565b94506020938401939190910190600101614a6d565b50929695505050505050565b5f5f60408385031215614abb575f5ffd5b8235614ac681614643565b915060208301356001600160401b03811115614ae0575f5ffd5b830160a08186031215614af1575f5ffd5b809150509250929050565b5f5f60408385031215614b0d575f5ffd5b8235614b1881614643565b91506020830135614af181614643565b5f8151808452602084019350602083015f5b8281101561483857614b7386835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614b3a565b604081525f614b9b60408301856147fd565b8281036020840152611fa18185614b28565b5f8151808452602084019350602083015f5b828110156148385781516001600160a01b0316865260209586019590910190600101614bbf565b602081525f6107766020830184614bad565b5f5f60408385031215614c09575f5ffd5b82356001600160401b03811115614c1e575f5ffd5b614c2a85828601614920565b9250506020830135614af181614643565b602080825282518282018190525f918401906040840190835b81811015614c7b5783516001600160401b0316835260209384019390920191600101614c54565b509095945050505050565b5f5f5f5f5f60608688031215614c9a575f5ffd5b8535614ca581614643565b945060208601356001600160401b03811115614cbf575f5ffd5b614ccb8882890161486e565b90955093505060408601356001600160401b03811115614ce9575f5ffd5b614cf58882890161486e565b969995985093965092949392505050565b5f5f5f5f60608587031215614d19575f5ffd5b8435614d2481614643565b9350614d32602086016146c3565b925060408501356001600160401b03811115614d4c575f5ffd5b614d588782880161486e565b95989497509550505050565b5f5f60408385031215614d75575f5ffd5b8235614d8081614643565b915060208301356001600160401b03811115614d9a575f5ffd5b614da685828601614920565b9150509250929050565b5f5f60408385031215614dc1575f5ffd5b8235614dcc81614643565b9150614dda602084016146c3565b90509250929050565b5f60208284031215614df3575f5ffd5b813560ff81168114610776575f5ffd5b5f5f60608385031215614e14575f5ffd5b8235614e1f81614643565b9150614dda84602085016146d6565b5f60608284031215614e3e575f5ffd5b50919050565b5f60208284031215614e54575f5ffd5b81356001600160401b03811115614e69575f5ffd5b61313b84828501614e2e565b5f5f5f60808486031215614e87575f5ffd5b83356001600160401b03811115614e9c575f5ffd5b614ea886828701614920565b93505061475f85602086016146d6565b602081525f6107766020830184614b28565b5f5f5f60608486031215614edc575f5ffd5b8335614ee781614643565b925060208401356001600160401b03811115614f01575f5ffd5b614f0d86828701614920565b925050614f1c604085016146c3565b90509250925092565b5f5f60408385031215614f36575f5ffd5b8235614f4181614643565b915060208301356001600160401b03811115614f5b575f5ffd5b8301601f81018513614f6b575f5ffd5b8035614f7961493d826148fe565b8082825260208201915060208360051b850101925087831115614f9a575f5ffd5b602084015b838110156150bf5780356001600160401b03811115614fbc575f5ffd5b85016080818b03601f19011215614fd1575f5ffd5b614fd961466b565b614fe68b602084016146d6565b815260608201356001600160401b03811115615000575f5ffd5b61500f8c602083860101614920565b60208301525060808201356001600160401b0381111561502d575f5ffd5b6020818401019250508a601f830112615044575f5ffd5b813561505261493d826148fe565b8082825260208201915060208360051b86010192508d831115615073575f5ffd5b6020850194505b828510156150a95784356001600160401b0381168114615098575f5ffd5b82526020948501949091019061507a565b6040840152505084525060209283019201614f9f565b50809450505050509250929050565b5f5f5f604084860312156150e0575f5ffd5b83356150eb81614643565b925060208401356001600160401b03811115615105575f5ffd5b8401601f81018613615115575f5ffd5b80356001600160401b0381111561512a575f5ffd5b86602082840101111561513b575f5ffd5b939660209190910195509293505050565b5f5f6040838503121561515d575f5ffd5b823561516881614643565b915060208301356001600160401b03811115615182575f5ffd5b614da685828601614e2e565b5f5f6040838503121561519f575f5ffd5b82356151aa81614643565b946020939093013593505050565b5f602082840312156151c8575f5ffd5b81518015158114610776575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126151ff575f5ffd5b9190910192915050565b5f60208284031215615219575f5ffd5b610776826146c3565b6040810161099a82846147df565b5f5f8335601e19843603018112615245575f5ffd5b8301803591506001600160401b0382111561525e575f5ffd5b6020019150600581901b36038213156118e5575f5ffd5b6060810161528382856147df565b6001600160a01b039290921660409190910152919050565b604081525f6152ad6040830185614bad565b8281036020840152611fa18185614bad565b5f602082840312156152cf575f5ffd5b81516001600160401b038111156152e4575f5ffd5b8201601f810184136152f4575f5ffd5b805161530261493d826148fe565b8082825260208201915060208360051b850101925086831115615323575f5ffd5b602084015b838110156153c05780516001600160401b03811115615345575f5ffd5b8501603f81018913615355575f5ffd5b602081015161536661493d826148fe565b808282526020820191506020808460051b8601010192508b831115615389575f5ffd5b6040840193505b828410156153ab578351825260209384019390910190615390565b86525050602093840193919091019050615328565b509695505050505050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561099a5761099a6153cb565b6001600160401b03828116828216039081111561099a5761099a6153cb565b5f81600f0b60016001607f1b0319810361542d5761542d6153cb565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561099a5761099a6153cb565b6001600160a01b038616815260c0810161547f60208301876147df565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e198436030181126154c8575f5ffd5b8301803591506001600160401b038211156154e1575f5ffd5b6020019150368190038213156118e5575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c0820161553b602084018a6147df565b60c060608401528690528660e083015f5b8881101561557c57823561555f81614643565b6001600160a01b031682526020928301929091019060010161554c565b50838103608085015261558f8188614a17565b91505082810360a08401526155a58185876154f5565b9a9950505050505050505050565b5f602082840312156155c3575f5ffd5b813561ffff81168114610776575f5ffd5b63ffffffff818116838216019081111561099a5761099a6153cb565b8183526020830192505f815f5b848110156148385763ffffffff615613836146c3565b16865260209586019591909101906001016155fd565b6001600160a01b03841681526040602082018190525f90611fa190830184866155f0565b602081525f61313b6020830184866154f5565b6001600160a01b03861681526060602082018190525f9061568490830186886155f0565b82810360408401526156978185876154f5565b98975050505050505050565b5f602082840312156156b3575f5ffd5b815161077681614643565b80516020808301519190811015614e3e575f1960209190910360031b1b16919050565b5f600182016156f2576156f26153cb565b5060010190565b5f81615707576157076153cb565b505f190190565b8082018281125f83128015821682158216171561572d5761572d6153cb565b505092915050565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561099a5761099a6153cb565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b8082018082111561099a5761099a6153cb565b634e487b7160e01b5f52603160045260245ffd5b5f826157cb57634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203e191df9d03f4b07e333db2a74d301ea9917d492701878a037e5f5e4e19e73b264736f6c634300081b0033", + Bin: "0x61012060405234801561001157600080fd5b50604051615c58380380615c5883398101604081905261003091610186565b82858383876001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008c610096565b50505050506101f3565b600054610100900460ff16156101025760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614610153576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461016a57600080fd5b50565b805163ffffffff8116811461018157600080fd5b919050565b600080600080600060a0868803121561019e57600080fd5b85516101a981610155565b60208701519095506101ba81610155565b60408701519094506101cb81610155565b92506101d96060870161016d565b91506101e76080870161016d565b90509295509295909350565b60805160a05160c05160e051610100516159cd61028b6000396000818161040301526137c80152600081816105520152613de7015260008181610328015281816122ab01526129c901526000818161070501528181610cb40152818161165701528181611cd801528181611d420152612c940152600081816105790152818161079e01528181611de9015261343201526159cd6000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c80636e875dba1161015c578063a984eb3a116100ce578063c221d8ae11610087578063c221d8ae146106c7578063cd6dc687146106da578063d3d96ff4146106ed578063df5cf72314610700578063f2fde38b14610727578063fabc1cbc1461073a57600080fd5b8063a984eb3a14610618578063adc2e3d91461064c578063b2447af71461065f578063b66bd98914610672578063b9fbaed114610685578063ba1a84e5146106b457600080fd5b80638ce64854116101205780638ce648541461059b5780638da5cb5b146105bb57806394d7d00c146105cc578063952899ee146105df578063a9333ec8146105f2578063a98218211461060557600080fd5b80636e875dba1461051f578063715018a61461053257806379ae50cd1461053a5780637bc1ef611461054d578063886f11951461057457600080fd5b80634657e26a11610200578063595c6a67116101b9578063595c6a67146104915780635ac86ab7146104995780635c975abb146104bc578063670d3ba2146104ce5780636cfb4481146104e15780636e3492b51461050c57600080fd5b80634657e26a146103fe5780634a10ffe5146104255780634b5046ef1461044557806350feea2014610458578063547afb871461046b57806356c483e61461047e57600080fd5b80632981eb77116102525780632981eb77146103235780632bab2c4a1461035f578063304c10cd1461037f57806336352057146103aa57806340120dab146103bd5780634177a87c146103de57600080fd5b806310e1b9b81461028f578063136439dd146102b857806315fe5028146102cd578063260dc758146102ed578063261f84e014610310575b600080fd5b6102a261029d366004614856565b61074d565b6040516102af91906148a0565b60405180910390f35b6102cb6102c63660046148d3565b610789565b005b6102e06102db3660046148ec565b610860565b6040516102af919061496e565b6103006102fb366004614981565b61097d565b60405190151581526020016102af565b6102cb61031e3660046149e1565b6109b5565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102af565b61037261036d366004614ace565b610c5f565b6040516102af9190614b89565b61039261038d3660046148ec565b610f5b565b6040516001600160a01b0390911681526020016102af565b6102cb6103b8366004614bee565b610f8b565b6103d06103cb366004614c44565b6117b1565b6040516102af929190614cd5565b6103f16103ec366004614981565b611934565b6040516102af9190614d35565b6103927f000000000000000000000000000000000000000000000000000000000000000081565b610438610433366004614d48565b61195b565b6040516102af9190614d8e565b6102cb610453366004614dda565b611a05565b6102cb610466366004614e60565b611ac1565b610438610479366004614ec2565b611c23565b6102cb61048c366004614f11565b611ccd565b6102cb611dd4565b6103006104a7366004614f46565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102af565b6103006104dc366004614f69565b611e86565b6104f46104ef366004614c44565b611e99565b6040516001600160401b0390911681526020016102af565b6102cb61051a366004614fae565b61200a565b6103f161052d366004614981565b6123ee565b6102cb612400565b6102e06105483660046148ec565b612412565b61034a7f000000000000000000000000000000000000000000000000000000000000000081565b6103927f000000000000000000000000000000000000000000000000000000000000000081565b6105ae6105a9366004614fe2565b6124f1565b6040516102af9190615029565b6033546001600160a01b0316610392565b6104386105da36600461503c565b6125ba565b6102cb6105ed36600461509b565b6126aa565b6104f4610600366004614c44565b612b85565b6102cb610613366004615250565b612bb5565b6104f4610626366004614c44565b60a26020908152600092835260408084209091529082529020546001600160401b031681565b6102cb61065a3660046152d5565b612c25565b6104c061066d366004614981565b612f83565b6102cb610680366004614e60565b612fa8565b6106986106933660046148ec565b613106565b60408051921515835263ffffffff9091166020830152016102af565b6104c06106c23660046148ec565b6131a1565b6103f16106d5366004614f69565b6131c2565b6102cb6106e836600461531a565b6131f4565b6102cb6106fb366004614c44565b613317565b6103927f000000000000000000000000000000000000000000000000000000000000000081565b6102cb6107353660046148ec565b6133b7565b6102cb6107483660046148d3565b613430565b604080516060810182526000808252602082018190529181018290529061077d8561077786613548565b856135ad565b925050505b9392505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156107ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108119190615346565b61082e57604051631d77d47760e21b815260040160405180910390fd5b60665481811681146108535760405163c61dca5d60e01b815260040160405180910390fd5b61085c8261371e565b5050565b6001600160a01b0381166000908152609d60205260408120606091906108859061375b565b90506000816001600160401b038111156108a1576108a1614775565b6040519080825280602002602001820160405280156108e657816020015b60408051808201909152600080825260208201528152602001906001900390816108bf5790505b50905060005b82811015610975576001600160a01b0385166000908152609d602052604090206109509061091a9083613765565b60408051808201909152600080825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b82828151811061096257610962615368565b60209081029190910101526001016108ec565b509392505050565b60208082015182516001600160a01b031660009081526098909252604082206109af9163ffffffff9081169061377116565b92915050565b826109bf81613789565b6109dc5760405163932d94f760e01b815260040160405180910390fd5b60005b82811015610c585760006040518060400160405280876001600160a01b03168152602001868685818110610a1557610a15615368565b9050602002810190610a27919061537e565b610a3590602081019061539e565b63ffffffff168152509050610a81816020015163ffffffff1660986000896001600160a01b03166001600160a01b0316815260200190815260200160002061383790919063ffffffff16565b610a9e57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610af491906153b9565b60405180910390a16000610b0782613548565b905060005b868685818110610b1e57610b1e615368565b9050602002810190610b30919061537e565b610b3e9060208101906153c7565b9050811015610c4d57610bb5878786818110610b5c57610b5c615368565b9050602002810190610b6e919061537e565b610b7c9060208101906153c7565b83818110610b8c57610b8c615368565b9050602002016020810190610ba191906148ec565b600084815260996020526040902090613843565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610bea57610bea615368565b9050602002810190610bfc919061537e565b610c0a9060208101906153c7565b84818110610c1a57610c1a615368565b9050602002016020810190610c2f91906148ec565b604051610c3d929190615410565b60405180910390a1600101610b0c565b5050506001016109df565b5050505050565b606083516001600160401b03811115610c7a57610c7a614775565b604051908082528060200260200182016040528015610cad57816020015b6060815260200190600190039081610c985790505b50905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b8152600401610d00929190615436565b600060405180830381865afa158015610d1d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d45919081019061545b565b905060005b8551811015610f51576000868281518110610d6757610d67615368565b6020026020010151905085516001600160401b03811115610d8a57610d8a614775565b604051908082528060200260200182016040528015610db3578160200160208202803683370190505b50848381518110610dc657610dc6615368565b602002602001018190525060005b8651811015610f47576000878281518110610df157610df1615368565b6020908102919091018101516001600160a01b03808616600090815260a1845260408082209284168252919093528220909250610e2d90613858565b9050806001600160401b0316600003610e47575050610f3f565b6000610e54858d8561074d565b90508863ffffffff16816040015163ffffffff1611158015610e7d575060008160200151600f0b125b15610ea057610e948160000151826020015161386c565b6001600160401b031681525b8051600090610ebc906001600160401b03908116908516613881565b9050610f0381898981518110610ed457610ed4615368565b60200260200101518781518110610eed57610eed615368565b602002602001015161389690919063ffffffff16565b898881518110610f1557610f15615368565b60200260200101518681518110610f2e57610f2e615368565b602002602001018181525050505050505b600101610dd4565b5050600101610d4a565b5050949350505050565b6001600160a01b038082166000908152609760205260408120549091168015610f845780610782565b5090919050565b606654600190600290811603610fb45760405163840a48d560e01b815260040160405180910390fd5b82610fbe81613789565b610fdb5760405163932d94f760e01b815260040160405180910390fd5b60006040518060400160405280866001600160a01b0316815260200185602001602081019061100a919061539e565b63ffffffff1690529050600061102c61102660208701876148ec565b836138ab565b905061103b60608601866153c7565b905061104a60408701876153c7565b90501461106a576040516343714afd60e01b815260040160405180910390fd5b60208083015183516001600160a01b031660009081526098909252604090912061109d9163ffffffff9081169061377116565b6110ba57604051631fb1705560e21b815260040160405180910390fd5b806110d85760405163ebbff49760e01b815260040160405180910390fd5b60006110e760408701876153c7565b90506001600160401b0381111561110057611100614775565b604051908082528060200260200182016040528015611129578160200160208202803683370190505b50905060005b61113c60408801886153c7565b9050811015611742578015806111cf575061115a60408801886153c7565b611165600184615585565b81811061117457611174615368565b905060200201602081019061118991906148ec565b6001600160a01b031661119f60408901896153c7565b838181106111af576111af615368565b90506020020160208101906111c491906148ec565b6001600160a01b0316115b6111ec57604051639f1c805360e01b815260040160405180910390fd5b6111f960608801886153c7565b8281811061120957611209615368565b90506020020135600010801561124a5750670de0b6b3a764000061123060608901896153c7565b8381811061124057611240615368565b9050602002013511155b61126757604051631353603160e01b815260040160405180910390fd5b6112c561127760408901896153c7565b8381811061128757611287615368565b905060200201602081019061129c91906148ec565b609960006112a988613548565b815260200190815260200160002061392390919063ffffffff16565b6112e2576040516331bc342760e11b815260040160405180910390fd5b6000806113356112f560208b018b6148ec565b6112fe88613548565b61130b60408d018d6153c7565b8781811061131b5761131b615368565b905060200201602081019061133091906148ec565b6135ad565b805191935091506001600160401b031660000361135357505061173a565b600061138f61136560608c018c6153c7565b8681811061137557611375615368565b85516001600160401b031692602090910201359050613945565b83519091506113aa6001600160401b03808416908316613881565b8686815181106113bc576113bc615368565b60200260200101818152505081836000018181516113da9190615598565b6001600160401b03169052508351829085906113f7908390615598565b6001600160401b0316905250602084018051839190611417908390615598565b6001600160401b031690525060208301516000600f9190910b121561153557600061147c61144860608e018e6153c7565b8881811061145857611458615368565b90506020020135856020015161146d906155b7565b6001600160801b031690613945565b9050806001600160401b03168460200181815161149991906155dd565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd6114cd60208e018e6148ec565b8a8e80604001906114de91906153c7565b8a8181106114ee576114ee615368565b905060200201602081019061150391906148ec565b6115158860000151896020015161386c565b886040015160405161152b95949392919061560a565b60405180910390a1505b61158761154560208d018d6148ec565b61154e8a613548565b61155b60408f018f6153c7565b8981811061156b5761156b615368565b905060200201602081019061158091906148ec565b878761395c565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd6115b560208d018d6148ec565b896115c360408f018f6153c7565b898181106115d3576115d3615368565b90506020020160208101906115e891906148ec565b86516040516115fc9493929190439061560a565b60405180910390a161164d61161460208d018d6148ec565b61162160408e018e6153c7565b8881811061163157611631615368565b905060200201602081019061164691906148ec565b8651613ba6565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663601bb36f61168960208e018e6148ec565b61169660408f018f6153c7565b898181106116a6576116a6615368565b90506020020160208101906116bb91906148ec565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b038086166044840152166064820152608401600060405180830381600087803b15801561171d57600080fd5b505af1158015611731573d6000803e3d6000fd5b50505050505050505b60010161112f565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe561177160208801886148ec565b8461177f60408a018a6153c7565b8561178d60808d018d61565b565b6040516117a097969594939291906156ca565b60405180910390a150505050505050565b6001600160a01b0382166000908152609d6020526040812060609182916117d79061375b565b90506000816001600160401b038111156117f3576117f3614775565b60405190808252806020026020018201604052801561183857816020015b60408051808201909152600080825260208201528152602001906001900390816118115790505b5090506000826001600160401b0381111561185557611855614775565b6040519080825280602002602001820160405280156118a057816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816118735790505b50905060005b83811015611925576001600160a01b0388166000908152609d602052604081206118d49061091a9084613765565b9050808483815181106118e9576118e9615368565b60200260200101819052506118ff89828a61074d565b83838151811061191157611911615368565b6020908102919091010152506001016118a6565b509093509150505b9250929050565b606060006107826099600061194886613548565b8152602001908152602001600020613c29565b6060600083516001600160401b0381111561197857611978614775565b6040519080825280602002602001820160405280156119a1578160200160208202803683370190505b50905060005b8451811015610975576119d38582815181106119c5576119c5615368565b602002602001015185612b85565b8282815181106119e5576119e5615368565b6001600160401b03909216602092830291909101909101526001016119a7565b606654600090600190811603611a2e5760405163840a48d560e01b815260040160405180910390fd5b838214611a4e576040516343714afd60e01b815260040160405180910390fd5b60005b84811015611ab857611ab087878784818110611a6f57611a6f615368565b9050602002016020810190611a8491906148ec565b868685818110611a9657611a96615368565b9050602002016020810190611aab9190615762565b613c36565b600101611a51565b50505050505050565b83611acb81613789565b611ae85760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201526000611b1582613548565b9050611b58826020015163ffffffff16609860008a6001600160a01b03166001600160a01b0316815260200190815260200160002061377190919063ffffffff16565b611b7557604051631fb1705560e21b815260040160405180910390fd5b60005b84811015611c1957611b95868683818110610b8c57610b8c615368565b611bb25760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611be657611be6615368565b9050602002016020810190611bfb91906148ec565b604051611c09929190615410565b60405180910390a1600101611b78565b5050505050505050565b6060600082516001600160401b03811115611c4057611c40614775565b604051908082528060200260200182016040528015611c69578160200160208202803683370190505b50905060005b835181101561097557611c9b85858381518110611c8e57611c8e615368565b6020026020010151612b85565b828281518110611cad57611cad615368565b6001600160401b0390921660209283029190910190910152600101611c6f565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611dca57611d0682613789565b611d23576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dad9190615346565b611dca5760405163ccea9e6f60e01b815260040160405180910390fd5b61085c8282613d3f565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5c9190615346565b611e7957604051631d77d47760e21b815260040160405180910390fd5b611e8460001961371e565b565b600061078283609a60006112a986613548565b6001600160a01b03828116600081815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b0390911690600f81810b600160801b909204900b03825b81811015611fc6576001600160a01b03808716600090815260a3602090815260408083209389168352929052908120611f2d9083613eed565b6001600160a01b03888116600090815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff16918101829052919250431015611fa9575050611fc6565b611fb785826020015161386c565b94505050806001019050611ef4565b506001600160a01b03808616600090815260a1602090815260408083209388168352929052208290611ff790613858565b6120019190615598565b95945050505050565b6066546002906004908116036120335760405163840a48d560e01b815260040160405180910390fd5b61204861204360208401846148ec565b613789565b80612061575061206161204360408401602085016148ec565b61207e576040516348f5c3ed60e01b815260040160405180910390fd5b60005b61208e60408401846153c7565b905081101561236057600060405180604001604052808560200160208101906120b791906148ec565b6001600160a01b031681526020016120d260408701876153c7565b858181106120e2576120e2615368565b90506020020160208101906120f7919061539e565b63ffffffff168152509050612146816020015163ffffffff166098600087602001602081019061212791906148ec565b6001600160a01b03168152602081019190915260400160002090613771565b61216357604051631fb1705560e21b815260040160405180910390fd5b609e600061217460208701876148ec565b6001600160a01b03166001600160a01b03168152602001908152602001600020600061219f83613548565b815260208101919091526040016000205460ff166121d0576040516325131d4f60e01b815260040160405180910390fd5b61220c6121dc82613548565b609c60006121ed60208901896148ec565b6001600160a01b03168152602081019190915260400160002090613f5e565b5061224661221d60208601866148ec565b609a600061222a85613548565b8152602001908152602001600020613f6a90919063ffffffff16565b5061225460208501856148ec565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe8260405161228c91906153b9565b60405180910390a26040805180820190915260008152602081016122d07f000000000000000000000000000000000000000000000000000000000000000043615786565b63ffffffff169052609e60006122e960208801886148ec565b6001600160a01b03166001600160a01b03168152602001908152602001600020600061231484613548565b815260208082019290925260400160002082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101612081565b5061237461038d60408401602085016148ec565b6001600160a01b0316639d8e0c2361238f60208501856148ec565b61239c60408601866153c7565b6040518463ffffffff1660e01b81526004016123ba939291906157dd565b600060405180830381600087803b1580156123d457600080fd5b505af19250505080156123e5575060015b1561085c575050565b60606109af609a600061194885613548565b612408613f7f565b611e846000613fd9565b6001600160a01b0381166000908152609c60205260408120606091906124379061375b565b90506000816001600160401b0381111561245357612453614775565b60405190808252806020026020018201604052801561249857816020015b60408051808201909152600080825260208201528152602001906001900390816124715790505b50905060005b82811015610975576001600160a01b0385166000908152609c602052604090206124cc9061091a9083613765565b8282815181106124de576124de615368565b602090810291909101015260010161249e565b6060600084516001600160401b0381111561250e5761250e614775565b60405190808252806020026020018201604052801561255957816020015b604080516060810182526000808252602080830182905292820152825260001990920191018161252c5790505b50905060005b85518110156125b15761258c86828151811061257d5761257d615368565b6020026020010151868661074d565b82828151811061259e5761259e615368565b602090810291909101015260010161255f565b50949350505050565b6060600083516001600160401b038111156125d7576125d7614775565b604051908082528060200260200182016040528015612600578160200160208202803683370190505b50905060005b84518110156125b1576001600160a01b038616600090815260a16020526040812086516126789287929189908690811061264257612642615368565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002061402b90919063ffffffff16565b82828151811061268a5761268a615368565b6001600160401b0390921660209283029190910190910152600101612606565b6066546000906001908116036126d35760405163840a48d560e01b815260040160405180910390fd5b6126dc83613789565b6126f9576040516348f5c3ed60e01b815260040160405180910390fd5b600080600061270786613106565b91509150816127295760405163fa55fc8160e01b815260040160405180910390fd5b9150600090505b8351811015610c585783818151811061274b5761274b615368565b6020026020010151604001515184828151811061276a5761276a615368565b6020026020010151602001515114612795576040516343714afd60e01b815260040160405180910390fd5b60008482815181106127a9576127a9615368565b602090810291909101810151518082015181516001600160a01b03166000908152609890935260409092209092506127ea9163ffffffff9081169061377116565b61280757604051631fb1705560e21b815260040160405180910390fd5b600061281387836138ab565b905060005b86848151811061282a5761282a615368565b60200260200101516020015151811015612b7a57600087858151811061285257612852615368565b602002602001015160200151828151811061286f5761286f615368565b60200260200101519050612886898261ffff613c36565b6000806128968b61077788613548565b915091508060200151600f0b6000146128c257604051630d8fcbe360e41b815260040160405180910390fd5b60006128d087858489614040565b905061291682600001518c8a815181106128ec576128ec615368565b602002602001015160400151878151811061290957612909615368565b6020026020010151614078565b600f0b6020830181905260000361294057604051634606179360e11b815260040160405180910390fd5b60008260200151600f0b1215612a88578015612a09576129c461296288613548565b6001600160a01b03808f16600090815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6129ee7f000000000000000000000000000000000000000000000000000000000000000043615786565b6129f9906001615786565b63ffffffff166040830152612af6565b612a1b8360200151836020015161386c565b6001600160401b031660208401528a518b9089908110612a3d57612a3d615368565b6020026020010151604001518581518110612a5a57612a5a615368565b6020908102919091018101516001600160401b0316835260009083015263ffffffff43166040830152612af6565b60008260200151600f0b1315612af657612aaa8360200151836020015161386c565b6001600160401b039081166020850181905284519091161015612ae057604051636c9be0bf60e01b815260040160405180910390fd5b612aea8943615786565b63ffffffff1660408301525b612b0b8c612b0389613548565b86868661395c565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c612b3961091a8a613548565b86612b4c8660000151876020015161386c565b8660400151604051612b6295949392919061560a565b60405180910390a15050600190920191506128189050565b505050600101612730565b6001600160a01b03808316600090815260a160209081526040808320938516835292905290812061078290613858565b82612bbf81613789565b612bdc5760405163932d94f760e01b815260040160405180910390fd5b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138484604051612c17929190615802565b60405180910390a250505050565b606654600290600490811603612c4e5760405163840a48d560e01b815260040160405180910390fd5b82612c5881613789565b612c755760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cff9190615346565b612d1c5760405163ccea9e6f60e01b815260040160405180910390fd5b60005b612d2c60208501856153c7565b9050811015612efb576040805180820190915260009080612d5060208801886148ec565b6001600160a01b03168152602001868060200190612d6e91906153c7565b85818110612d7e57612d7e615368565b9050602002016020810190612d93919061539e565b63ffffffff90811690915260208083015183516001600160a01b0316600090815260989092526040909120929350612dd092919081169061377116565b612ded57604051631fb1705560e21b815260040160405180910390fd5b612df786826138ab565b15612e1557604051636c6c6e2760e11b815260040160405180910390fd5b612e3f612e2182613548565b6001600160a01b0388166000908152609c6020526040902090613837565b50612e6d86609a6000612e5185613548565b815260200190815260200160002061384390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612ea791906153b9565b60405180910390a26001600160a01b0386166000908152609e60205260408120600191612ed384613548565b81526020810191909152604001600020805460ff191691151591909117905550600101612d1f565b50612f0c61038d60208501856148ec565b6001600160a01b031663adcf73f785612f2860208701876153c7565b612f35604089018961565b565b6040518663ffffffff1660e01b8152600401612f55959493929190615816565b600060405180830381600087803b158015612f6f57600080fd5b505af1158015611c19573d6000803e3d6000fd5b60006109af609a6000612f9585613548565b815260200190815260200160002061375b565b83612fb281613789565b612fcf5760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff808816602080850182905260009384526098905293909120919261300f929161377116565b61302c57604051631fb1705560e21b815260040160405180910390fd5b600061303782613548565b905060005b84811015611c195761308286868381811061305957613059615368565b905060200201602081019061306e91906148ec565b600084815260996020526040902090613f6a565b61309f576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee838787848181106130d3576130d3615368565b90506020020160208101906130e891906148ec565b6040516130f6929190615410565b60405180910390a160010161303c565b6001600160a01b0381166000908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b9091041660608201819052849391929190158015906131885750826060015163ffffffff164310155b15613197575050604081015160015b9590945092505050565b6001600160a01b03811660009081526098602052604081206109af9061375b565b6001600160a01b0382166000908152609f60205260408120606091906131ec908261194886613548565b949350505050565b600054610100900460ff16158080156132145750600054600160ff909116105b8061322e5750303b15801561322e575060005460ff166001145b6132965760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156132b9576000805461ff0019166101001790555b6132c28261371e565b6132cb83613fd9565b8015613312576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b8161332181613789565b61333e5760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b03838116600090815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361339781610f5b565b604080516001600160a01b03938416815292909116602083015201613309565b6133bf613f7f565b6001600160a01b0381166134245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161328d565b61342d81613fd9565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561348e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b2919061585a565b6001600160a01b0316336001600160a01b0316146134e35760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461350a5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60008160000151826020015163ffffffff1660405160200161359592919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526109af90615877565b604080518082018252600080825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a184528685209088168552909252938220929392819061360e90613858565b6001600160401b0390811682526001600160a01b03898116600081815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff169181018290529192504310156136b1579092509050613716565b6136c38160000151826020015161386c565b6001600160401b0316815260208101516000600f9190910b1215613702576136f38260200151826020015161386c565b6001600160401b031660208301525b600060408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60006109af825490565b60006107828383614090565b60008181526001830160205260408120541515610782565b604051631beb2b9760e31b81526001600160a01b038281166004830152336024830152306044830152600080356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303816000875af1158015613813573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109af9190615346565b600061078283836140ba565b6000610782836001600160a01b0384166140ba565b60006109af82670de0b6b3a7640000614109565b6000610782826001600160401b0385166155dd565b600061078283670de0b6b3a76400008461414f565b60006107828383670de0b6b3a764000061414f565b6001600160a01b0382166000908152609e602052604081208190816138cf85613548565b8152602080820192909252604090810160002081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806131ec57506020015163ffffffff164311159392505050565b6001600160a01b03811660009081526001830160205260408120541515610782565b60006107828383670de0b6b3a76400006001614239565b6020808301516001600160a01b03808816600090815260a284526040808220928816825291909352909120546001600160401b03908116911614613a2457602082810180516001600160a01b03888116600081815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b03808616600090815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613b09576001600160a01b0385166000908152609f602090815260408083208784529091529020613ae09084613843565b506001600160a01b0385166000908152609d60205260409020613b039085613837565b50610c58565b80516001600160401b0316600003610c58576001600160a01b0385166000908152609f602090815260408083208784529091529020613b489084613f6a565b506001600160a01b0385166000908152609f602090815260408083208784529091529020613b759061375b565b600003610c58576001600160a01b0385166000908152609d60205260409020613b9e9085613f5e565b505050505050565b6001600160a01b03808416600090815260a160209081526040808320938616835292905220613bd6904383614294565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c90606001613309565b60606000610782836142a8565b6001600160a01b03838116600090815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b600081118015613c8257508261ffff1682105b15610c58576001600160a01b03808616600090815260a3602090815260408083209388168352929052908120613cb790614304565b9050600080613cc78884896135ad565b91509150806040015163ffffffff16431015613ce557505050610c58565b613cf2888489858561395c565b6001600160a01b03808916600090815260a360209081526040808320938b16835292905220613d2090614358565b50613d2a8561589b565b9450613d35846158b4565b9350505050613c6f565b6001600160a01b0382166000908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dbc5750806060015163ffffffff164310155b15613dd657604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e0c7f000000000000000000000000000000000000000000000000000000000000000043615786565b613e17906001615786565b63ffffffff90811660608381019182526001600160a01b0386166000818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db9101613309565b600080613f10613efc846143d7565b8554613f0b9190600f0b6158cb565b614445565b8454909150600160801b9004600f90810b9082900b12613f4357604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600061078283836144ae565b6000610782836001600160a01b0384166144ae565b6033546001600160a01b03163314611e845760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161328d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006107828383670de0b6b3a76400006145a1565b600061405384609960006112a989613548565b801561405c5750815b801561200157505090516001600160401b031615159392505050565b60006107826001600160401b038085169084166158f3565b60008260000182815481106140a7576140a7615368565b9060005260206000200154905092915050565b6000818152600183016020526040812054614101575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109af565b5060006109af565b815460009080156141475761413184614123600184615585565b600091825260209091200190565b54600160201b90046001600160e01b03166131ec565b509092915050565b60008080600019858709858702925082811083820303915050806000036141895783828161417f5761417f615920565b0492505050610782565b8084116141d05760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161328d565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60008061424786868661414f565b9050600183600281111561425d5761425d615936565b14801561427a57506000848061427557614275615920565b868809115b156120015761428a60018261594c565b9695505050505050565b61331283836001600160401b0384166145ea565b6060816000018054806020026020016040519081016040528092919081815260200182805480156142f857602002820191906000526020600020905b8154815260200190600101908083116142e4575b50505050509050919050565b600061431f8254600f81810b600160801b909204900b131590565b1561433d57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b60006143738254600f81810b600160801b909204900b131590565b1561439157604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b60006001600160ff1b038211156144415760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161328d565b5090565b80600f81900b81146144a95760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161328d565b919050565b600081815260018301602052604081205480156145975760006144d2600183615585565b85549091506000906144e690600190615585565b905081811461454b57600086600001828154811061450657614506615368565b906000526020600020015490508087600001848154811061452957614529615368565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061455c5761455c61595f565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506109af565b60009150506109af565b8254600090816145b3868683856146ef565b905080156145e0576145ca86614123600184615585565b54600160201b90046001600160e01b031661077d565b5091949350505050565b825480156146a157600061460385614123600185615585565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156146555760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff80861691160361469f578261467686614123600186615585565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187556000968752952091519051909216600160201b029190921617910155565b60005b818310156109755760006147068484614745565b60008781526020902090915063ffffffff86169082015463ffffffff1611156147315780925061473f565b61473c81600161594c565b93505b506146f2565b60006147546002848418615975565b6107829084841661594c565b6001600160a01b038116811461342d57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156147ad576147ad614775565b60405290565b604051601f8201601f191681016001600160401b03811182821017156147db576147db614775565b604052919050565b803563ffffffff811681146144a957600080fd5b60006040828403121561480957600080fd5b604080519081016001600160401b038111828210171561482b5761482b614775565b604052905080823561483c81614760565b815261484a602084016147e3565b60208201525092915050565b60008060006080848603121561486b57600080fd5b833561487681614760565b925061488585602086016147f7565b9150606084013561489581614760565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff1690820152606081016109af565b6000602082840312156148e557600080fd5b5035919050565b6000602082840312156148fe57600080fd5b813561078281614760565b80516001600160a01b0316825260209081015163ffffffff16910152565b600081518084526020840193506020830160005b828110156149645761494e868351614909565b604095909501946020919091019060010161493b565b5093949350505050565b6020815260006107826020830184614927565b60006040828403121561499357600080fd5b61078283836147f7565b60008083601f8401126149af57600080fd5b5081356001600160401b038111156149c657600080fd5b6020830191508360208260051b850101111561192d57600080fd5b6000806000604084860312156149f657600080fd5b8335614a0181614760565b925060208401356001600160401b03811115614a1c57600080fd5b614a288682870161499d565b9497909650939450505050565b60006001600160401b03821115614a4e57614a4e614775565b5060051b60200190565b600082601f830112614a6957600080fd5b8135614a7c614a7782614a35565b6147b3565b8082825260208201915060208360051b860101925085831115614a9e57600080fd5b602085015b83811015614ac4578035614ab681614760565b835260209283019201614aa3565b5095945050505050565b60008060008060a08587031215614ae457600080fd5b614aee86866147f7565b935060408501356001600160401b03811115614b0957600080fd5b614b1587828801614a58565b93505060608501356001600160401b03811115614b3157600080fd5b614b3d87828801614a58565b925050614b4c608086016147e3565b905092959194509250565b600081518084526020840193506020830160005b82811015614964578151865260209586019590910190600101614b6b565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015614be257603f19878603018452614bcd858351614b57565b94506020938401939190910190600101614bb1565b50929695505050505050565b60008060408385031215614c0157600080fd5b8235614c0c81614760565b915060208301356001600160401b03811115614c2757600080fd5b830160a08186031215614c3957600080fd5b809150509250929050565b60008060408385031215614c5757600080fd5b8235614c6281614760565b91506020830135614c3981614760565b600081518084526020840193506020830160005b8281101561496457614cbf86835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614c86565b604081526000614ce86040830185614927565b82810360208401526120018185614c72565b600081518084526020840193506020830160005b828110156149645781516001600160a01b0316865260209586019590910190600101614d0e565b6020815260006107826020830184614cfa565b60008060408385031215614d5b57600080fd5b82356001600160401b03811115614d7157600080fd5b614d7d85828601614a58565b9250506020830135614c3981614760565b602080825282518282018190526000918401906040840190835b81811015614dcf5783516001600160401b0316835260209384019390920191600101614da8565b509095945050505050565b600080600080600060608688031215614df257600080fd5b8535614dfd81614760565b945060208601356001600160401b03811115614e1857600080fd5b614e248882890161499d565b90955093505060408601356001600160401b03811115614e4357600080fd5b614e4f8882890161499d565b969995985093965092949392505050565b60008060008060608587031215614e7657600080fd5b8435614e8181614760565b9350614e8f602086016147e3565b925060408501356001600160401b03811115614eaa57600080fd5b614eb68782880161499d565b95989497509550505050565b60008060408385031215614ed557600080fd5b8235614ee081614760565b915060208301356001600160401b03811115614efb57600080fd5b614f0785828601614a58565b9150509250929050565b60008060408385031215614f2457600080fd5b8235614f2f81614760565b9150614f3d602084016147e3565b90509250929050565b600060208284031215614f5857600080fd5b813560ff8116811461078257600080fd5b60008060608385031215614f7c57600080fd5b8235614f8781614760565b9150614f3d84602085016147f7565b600060608284031215614fa857600080fd5b50919050565b600060208284031215614fc057600080fd5b81356001600160401b03811115614fd657600080fd5b6131ec84828501614f96565b600080600060808486031215614ff757600080fd5b83356001600160401b0381111561500d57600080fd5b61501986828701614a58565b93505061488585602086016147f7565b6020815260006107826020830184614c72565b60008060006060848603121561505157600080fd5b833561505c81614760565b925060208401356001600160401b0381111561507757600080fd5b61508386828701614a58565b925050615092604085016147e3565b90509250925092565b600080604083850312156150ae57600080fd5b82356150b981614760565b915060208301356001600160401b038111156150d457600080fd5b8301601f810185136150e557600080fd5b80356150f3614a7782614a35565b8082825260208201915060208360051b85010192508783111561511557600080fd5b602084015b838110156152415780356001600160401b0381111561513857600080fd5b85016080818b03601f1901121561514e57600080fd5b61515661478b565b6151638b602084016147f7565b815260608201356001600160401b0381111561517e57600080fd5b61518d8c602083860101614a58565b60208301525060808201356001600160401b038111156151ac57600080fd5b6020818401019250508a601f8301126151c457600080fd5b81356151d2614a7782614a35565b8082825260208201915060208360051b86010192508d8311156151f457600080fd5b6020850194505b8285101561522b5784356001600160401b038116811461521a57600080fd5b8252602094850194909101906151fb565b604084015250508452506020928301920161511a565b50809450505050509250929050565b60008060006040848603121561526557600080fd5b833561527081614760565b925060208401356001600160401b0381111561528b57600080fd5b8401601f8101861361529c57600080fd5b80356001600160401b038111156152b257600080fd5b8660208284010111156152c457600080fd5b939660209190910195509293505050565b600080604083850312156152e857600080fd5b82356152f381614760565b915060208301356001600160401b0381111561530e57600080fd5b614f0785828601614f96565b6000806040838503121561532d57600080fd5b823561533881614760565b946020939093013593505050565b60006020828403121561535857600080fd5b8151801515811461078257600080fd5b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261539457600080fd5b9190910192915050565b6000602082840312156153b057600080fd5b610782826147e3565b604081016109af8284614909565b6000808335601e198436030181126153de57600080fd5b8301803591506001600160401b038211156153f857600080fd5b6020019150600581901b360382131561192d57600080fd5b6060810161541e8285614909565b6001600160a01b039290921660409190910152919050565b6040815260006154496040830185614cfa565b82810360208401526120018185614cfa565b60006020828403121561546d57600080fd5b81516001600160401b0381111561548357600080fd5b8201601f8101841361549457600080fd5b80516154a2614a7782614a35565b8082825260208201915060208360051b8501019250868311156154c457600080fd5b602084015b838110156155645780516001600160401b038111156154e757600080fd5b8501603f810189136154f857600080fd5b6020810151615509614a7782614a35565b808282526020820191506020808460051b8601010192508b83111561552d57600080fd5b6040840193505b8284101561554f578351825260209384019390910190615534565b865250506020938401939190910190506154c9565b509695505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109af576109af61556f565b6001600160401b0382811682821603908111156109af576109af61556f565b600081600f0b60016001607f1b031981036155d4576155d461556f565b60000392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b0319821217156109af576109af61556f565b6001600160a01b038616815260c081016156276020830187614909565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b6000808335601e1984360301811261567257600080fd5b8301803591506001600160401b0382111561568c57600080fd5b60200191503681900382131561192d57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0388168152600060c082016156e9602084018a614909565b60c060608401528690528660e0830160005b8881101561572b57823561570e81614760565b6001600160a01b03168252602092830192909101906001016156fb565b50838103608085015261573e8188614b57565b91505082810360a08401526157548185876156a1565b9a9950505050505050505050565b60006020828403121561577457600080fd5b813561ffff8116811461078257600080fd5b63ffffffff81811683821601908111156109af576109af61556f565b81835260208301925060008160005b848110156149645763ffffffff6157c7836147e3565b16865260209586019591909101906001016157b1565b6001600160a01b038416815260406020820181905260009061200190830184866157a2565b6020815260006131ec6020830184866156a1565b6001600160a01b038616815260606020820181905260009061583b90830186886157a2565b828103604084015261584e8185876156a1565b98975050505050505050565b60006020828403121561586c57600080fd5b815161078281614760565b80516020808301519190811015614fa85760001960209190910360031b1b16919050565b6000600182016158ad576158ad61556f565b5060010190565b6000816158c3576158c361556f565b506000190190565b80820182811260008312801582168215821617156158eb576158eb61556f565b505092915050565b600f82810b9082900b0360016001607f1b0319811260016001607f1b03821317156109af576109af61556f565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b808201808211156109af576109af61556f565b634e487b7160e01b600052603160045260246000fd5b60008261599257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220e680aa282b944433edbcc9f4c0a3387290ed04fbd83e1fc5c5c25d08da715eea64736f6c634300081b0033", } // ContractAllocationManagerABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/DelegationManager/binding.go b/contracts/bindings/DelegationManager/binding.go index 7da86c239..02bf34a4f 100644 --- a/contracts/bindings/DelegationManager/binding.go +++ b/contracts/bindings/DelegationManager/binding.go @@ -56,7 +56,7 @@ type ISignatureUtilsSignatureWithExpiry struct { // ContractDelegationManagerMetaData contains all meta data concerning the ContractDelegationManager contract. var ContractDelegationManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_MIN_WITHDRAWAL_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateDelegationApprovalDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal[]\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"convertToDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cumulativeWithdrawalsQueued\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"totalQueued\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"curDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"beaconChainSlashingFactorDecrease\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateTo\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegatedTo\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApprover\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApproverSaltIsSpent\",\"inputs\":[{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"spent\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositScalingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDepositedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorsShares\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawalRoots\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawals\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal[]\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"shares\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashableSharesInQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawableShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minWithdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingWithdrawals\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"pending\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"__deprecated_withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"redelegate\",\"inputs\":[{\"name\":\"newOperator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newOperatorApproverSig\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"initDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allocationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"newMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"undelegate\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorMetadataURI\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"DelegationApproverUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DepositScalingFactorUpdated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"newDepositScalingFactor\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMetadataURIUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRegistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesDecreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesIncreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlashingWithdrawalCompleted\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlashingWithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"sharesToWithdraw\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerForceUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FullySlashed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSnapshotOrdering\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyAllocationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManagerOrEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SaltSpent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalDelayNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalNotQueued\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawerNotCaller\",\"inputs\":[]}]", - Bin: "0x610180604052348015610010575f5ffd5b50604051615e0d380380615e0d83398101604081905261002f9161021c565b8186868684876001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c05290911660e05263ffffffff16610100524661012052610125604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b610140526001600160a01b03166101605261013e610149565b5050505050506102a7565b5f54610100900460ff16156101b45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610203575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610219575f5ffd5b50565b5f5f5f5f5f5f60c08789031215610231575f5ffd5b865161023c81610205565b602088015190965061024d81610205565b604088015190955061025e81610205565b606088015190945061026f81610205565b608088015190935061028081610205565b60a088015190925063ffffffff81168114610299575f5ffd5b809150509295509295509295565b60805160a05160c05160e05161010051610120516101405161016051615a7161039c5f395f818161042c01526132fa01525f61271601525f61265601525f818161070001528181611504015281816134f5015261383101525f818161075001528181610da901528181610f5a0152818161169f0152818161185e01528181611cb2015281816128eb01526133b101525f818161045301528181610ee0015281816117c501528181611a23015281816130e3015261363b01525f818161038901528181610eae01528181611977015261361501525f81816105ee01528181610b410152818161107a015261273a0152615a715ff3fe608060405234801561000f575f5ffd5b50600436106102cb575f3560e01c8063715018a61161017b578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b146107de578063f698da25146107f1578063fabc1cbc146107f9578063fd8aa88d1461080c575f5ffd5b8063e4cc3f9014610798578063eea9064b146107ab578063f0e0e676146107be575f5ffd5b8063bfae3fd2146106e3578063c448feb8146106f6578063c978f7ac1461072a578063ca8aa7c71461074b578063cd6dc68714610772578063da8be86414610785575f5ffd5b80639104c319116101355780639104c319146106345780639435bb431461064f578063a178848414610662578063a33a343314610681578063b7f06ebe14610694578063bb45fef2146106b6575f5ffd5b8063715018a6146105a4578063778e55f3146105ac57806378296ec5146105d6578063886f1195146105e95780638da5cb5b146106105780639004134714610621575f5ffd5b806354b7c96c116102375780635dd68579116101f157806365da1264116101cc57806365da12641461053557806366d5ba931461055d5780636d70f7ae1461057e5780636e17444814610591575f5ffd5b80635dd68579146104ee578063601bb36f1461050f57806360a0d1ce14610522575f5ffd5b806354b7c96c14610475578063595c6a6714610488578063597b36da146104905780635ac86ab7146104a35780635c975abb146104c65780635d975e88146104ce575f5ffd5b806339b70e381161028857806339b70e38146103845780633c651cf2146103c35780633cdeb5e0146103d65780633e28391d146104045780634657e26a146104275780634665bcda1461044e575f5ffd5b806304a4f979146102cf5780630b9f487a146103095780630dd8dd021461031c578063136439dd1461033c57806325df922e146103515780632aa6d88814610371575b5f5ffd5b6102f67f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b6102f661031736600461498e565b61081f565b61032f61032a366004614a25565b6108a7565b6040516103009190614a63565b61034f61034a366004614a9a565b610b2c565b005b61036461035f366004614c2f565b610c01565b6040516103009190614cdd565b61034f61037f366004614d3f565b610d61565b6103ab7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610300565b61034f6103d1366004614d9d565b610ea3565b6103ab6103e4366004614de0565b6001600160a01b039081165f908152609960205260409020600101541690565b610417610412366004614de0565b610fea565b6040519015158152602001610300565b6103ab7f000000000000000000000000000000000000000000000000000000000000000081565b6103ab7f000000000000000000000000000000000000000000000000000000000000000081565b61034f610483366004614dfb565b611009565b61034f611065565b6102f661049e366004614eee565b611114565b6104176104b1366004614f1f565b606654600160ff9092169190911b9081161490565b6066546102f6565b6104e16104dc366004614a9a565b611143565b6040516103009190614ff6565b6105016104fc366004614de0565b61125f565b604051610300929190615056565b61034f61051d3660046150d7565b611694565b61034f610530366004615130565b6117ba565b6103ab610543366004614de0565b609a6020525f90815260409020546001600160a01b031681565b61057061056b366004614de0565b61194f565b60405161030092919061516f565b61041761058c366004614de0565b611c4f565b6102f661059f366004614dfb565b611c87565b61034f611d31565b6102f66105ba366004614dfb565b609860209081525f928352604080842090915290825290205481565b61034f6105e4366004615193565b611d42565b6103ab7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103ab565b61036461062f3660046151e3565b611dca565b6103ab73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61034f61065d36600461522f565b611ea0565b6102f6610670366004614de0565b609f6020525f908152604090205481565b61032f61068f3660046152cb565b611f70565b6104176106a2366004614a9a565b609e6020525f908152604090205460ff1681565b6104176106c43660046153b2565b609c60209081525f928352604080842090915290825290205460ff1681565b6102f66106f1366004614dfb565b611f88565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610300565b61073d6107383660046151e3565b611fc4565b6040516103009291906153dc565b6103ab7f000000000000000000000000000000000000000000000000000000000000000081565b61034f6107803660046153b2565b612251565b61032f610793366004614de0565b61236c565b61034f6107a63660046153fb565b61247c565b61034f6107b93660046152cb565b6124d2565b6107d16107cc36600461546e565b612535565b604051610300919061551b565b61034f6107ec366004614de0565b6125da565b6102f6612653565b61034f610807366004614a9a565b612738565b61032f61081a366004614de0565b61284f565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f9061089d9060e00160405160208183030381529060405280519060200120612872565b9695505050505050565b6066546060906001906002908116036108d35760405163840a48d560e01b815260040160405180910390fd5b5f836001600160401b038111156108ec576108ec614ab1565b604051908082528060200260200182016040528015610915578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b215786868281811061094f5761094f61552d565b90506020028101906109619190615541565b61096f90602081019061555f565b90508787838181106109835761098361552d565b90506020028101906109959190615541565b61099f908061555f565b9050146109bf576040516343714afd60e01b815260040160405180910390fd5b5f610a2933848a8a868181106109d7576109d761552d565b90506020028101906109e99190615541565b6109f3908061555f565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506128a092505050565b9050610afb33848a8a86818110610a4257610a4261552d565b9050602002810190610a549190615541565b610a5e908061555f565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610aa357610aa361552d565b9050602002810190610ab59190615541565b610ac390602081019061555f565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506129e7915050565b848381518110610b0d57610b0d61552d565b602090810291909101015250600101610935565b509095945050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610b8e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb291906155a4565b610bcf57604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610bf45760405163c61dca5d60e01b815260040160405180910390fd5b610bfd82612edc565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610c2a8683876128a0565b90505f85516001600160401b03811115610c4657610c46614ab1565b604051908082528060200260200182016040528015610c6f578160200160208202803683370190505b5090505f5b8651811015610d54576001600160a01b0388165f90815260a260205260408120885182908a9085908110610caa57610caa61552d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610d2e878381518110610cfc57610cfc61552d565b6020026020010151858481518110610d1657610d1661552d565b602002602001015183612f199092919063ffffffff16565b838381518110610d4057610d4061552d565b602090810291909101015250600101610c74565b50925050505b9392505050565b610d6a33610fea565b15610d8857604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610df2575f5ffd5b505af1158015610e04573d5f5f3e3d5ffd5b50505050610e123385612f37565b610e1c3333612f99565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610e959291906155bf565b60405180910390a250505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f025750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610f1f5760405163045206a560e21b815260040160405180910390fd5b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015610f9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc391906155ed565b90505f610fd187878461309c565b9050610fe183888888888661317e565b50505050505050565b6001600160a01b039081165f908152609a602052604090205416151590565b81611013816132bc565b6110305760405163932d94f760e01b815260040160405180910390fd5b61103983611c4f565b611056576040516325ec6c1f60e01b815260040160405180910390fd5b6110608383612f37565b505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156110c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110eb91906155a4565b61110857604051631d77d47760e21b815260040160405180910390fd5b6111125f19612edc565b565b5f816040516020016111269190614ff6565b604051602081830303815290604052805190602001209050919050565b61114b61484a565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a086019392908301828280156111f957602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116111db575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561124f57602002820191905f5260205f20905b81548152602001906001019080831161123b575b5050505050815250509050919050565b6060805f61126c8461284f565b8051909150806001600160401b0381111561128957611289614ab1565b6040519080825280602002602001820160405280156112c257816020015b6112af61484a565b8152602001906001900390816112a75790505b509350806001600160401b038111156112dd576112dd614ab1565b60405190808252806020026020018201604052801561131057816020015b60608152602001906001900390816112fb5790505b506001600160a01b038087165f908152609a60205260408120549295509116905b8281101561168b5760a45f85838151811061134e5761134e61552d565b60209081029190910181015182528181019290925260409081015f20815160e08101835281546001600160a01b03908116825260018301548116828601526002830154168184015260038201546060820152600482015463ffffffff1660808201526005820180548451818702810187019095528085529194929360a086019390929083018282801561140857602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116113ea575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561145e57602002820191905f5260205f20905b81548152602001906001019080831161144a575b5050505050815250508682815181106114795761147961552d565b60200260200101819052508581815181106114965761149661552d565b602002602001015160a00151516001600160401b038111156114ba576114ba614ab1565b6040519080825280602002602001820160405280156114e3578160200160208202803683370190505b508582815181106114f6576114f661552d565b60200260200101819052505f7f00000000000000000000000000000000000000000000000000000000000000008783815181106115355761153561552d565b60200260200101516080015161154b919061561c565b905060604363ffffffff168263ffffffff1610156115935761158c89858a868151811061157a5761157a61552d565b602002602001015160a0015185613366565b90506115be565b6115bb89858a86815181106115aa576115aa61552d565b602002602001015160a001516128a0565b90505b5f5b8884815181106115d2576115d261552d565b602002602001015160a001515181101561167d5761163f8985815181106115fb576115fb61552d565b602002602001015160c0015182815181106116185761161861552d565b60200260200101518383815181106116325761163261552d565b6020026020010151613494565b8885815181106116515761165161552d565b6020026020010151828151811061166a5761166a61552d565b60209081029190910101526001016115c0565b505050806001019050611331565b50505050915091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116dd576040516323d871a560e01b815260040160405180910390fd5b6001600160a01b038085165f90815260986020908152604080832093871683529290529081205461171b906001600160401b0380861690851661349f565b90505f61172a868686866134b7565b90505f6117378284615638565b9050611745875f8886613574565b5f61174f876135ee565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b15801561179a575f5ffd5b505af11580156117ac573d5f5f3e3d5ffd5b505050505050505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461180357604051633213a66160e21b815260040160405180910390fd5b61180c83610fea565b15611060576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156118a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c791906155ed565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac084528252808320815192830190915254815291925061192d866119256001600160401b03808716908916613660565b849190613674565b9050610fe1848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac084613574565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156119bb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119e291908101906156a6565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa158015611a68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a8c9190615761565b9050805f03611aa057509094909350915050565b5f83516001611aaf9190615638565b6001600160401b03811115611ac657611ac6614ab1565b604051908082528060200260200182016040528015611aef578160200160208202803683370190505b5090505f84516001611b019190615638565b6001600160401b03811115611b1857611b18614ab1565b604051908082528060200260200182016040528015611b41578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082865181518110611b6c57611b6c61552d565b60200260200101906001600160a01b031690816001600160a01b0316815250508281865181518110611ba057611ba061552d565b60209081029190910101525f5b8551811015611c4157858181518110611bc857611bc861552d565b6020026020010151838281518110611be257611be261552d565b60200260200101906001600160a01b031690816001600160a01b031681525050848181518110611c1457611c1461552d565b6020026020010151828281518110611c2e57611c2e61552d565b6020908102919091010152600101611bad565b509097909650945050505050565b5f6001600160a01b03821615801590611c8157506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611cf7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d1b91906155ed565b9050611d298484835f6134b7565b949350505050565b611d39613692565b6111125f6136ec565b82611d4c816132bc565b611d695760405163932d94f760e01b815260040160405180910390fd5b611d7284611c4f565b611d8f576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610e959291906155bf565b60605f82516001600160401b03811115611de657611de6614ab1565b604051908082528060200260200182016040528015611e0f578160200160208202803683370190505b5090505f5b8351811015611e98576001600160a01b0385165f9081526098602052604081208551909190869084908110611e4b57611e4b61552d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611e8557611e8561552d565b6020908102919091010152600101611e14565b509392505050565b606654600290600490811603611ec95760405163840a48d560e01b815260040160405180910390fd5b611ed161373d565b855f5b81811015611f6457611f5c898983818110611ef157611ef161552d565b9050602002810190611f039190615778565b611f0c9061578c565b888884818110611f1e57611f1e61552d565b9050602002810190611f30919061555f565b888886818110611f4257611f4261552d565b9050602002016020810190611f579190615797565b613796565b600101611ed4565b5050610fe1600160c955565b6060611f7b3361236c565b9050610d5a8484846124d2565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610d5a90613c0f565b60608082516001600160401b03811115611fe057611fe0614ab1565b604051908082528060200260200182016040528015612009578160200160208202803683370190505b50915082516001600160401b0381111561202557612025614ab1565b60405190808252806020026020018201604052801561204e578160200160208202803683370190505b506001600160a01b038086165f908152609a60205260408120549293509116906120798683876128a0565b90505f5b8551811015612246575f6120a987838151811061209c5761209c61552d565b60200260200101516135ee565b9050806001600160a01b031663fe243a17898985815181106120cd576120cd61552d565b60200260200101516040518363ffffffff1660e01b81526004016121079291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121469190615761565b8583815181106121585761215861552d565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061219b5761219b61552d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061221f8684815181106121ed576121ed61552d565b60200260200101518585815181106122075761220761552d565b6020026020010151836136749092919063ffffffff16565b8784815181106122315761223161552d565b6020908102919091010152505060010161207d565b5050505b9250929050565b5f54610100900460ff161580801561226f57505f54600160ff909116105b806122885750303b15801561228857505f5460ff166001145b6122f05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612311575f805461ff0019166101001790555b61231a82612edc565b612323836136ec565b8015611060575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b606061237782610fea565b6123945760405163a5c7c44560e01b815260040160405180910390fd5b61239d82611c4f565b156123bb576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b03831614612473576001600160a01b038083165f908152609a6020526040902054166123ee816132bc565b8061241457506001600160a01b038181165f908152609960205260409020600101541633145b61243157604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b611c8182613c2e565b6066546002906004908116036124a55760405163840a48d560e01b815260040160405180910390fd5b6124ad61373d565b6124c16124b98661578c565b858585613796565b6124cb600160c955565b5050505050565b6124db33610fea565b156124f957604051633bf2b50360e11b815260040160405180910390fd5b61250283611c4f565b61251f576040516325ec6c1f60e01b815260040160405180910390fd5b61252b33848484613e8d565b6110603384612f99565b60605f83516001600160401b0381111561255157612551614ab1565b60405190808252806020026020018201604052801561258457816020015b606081526020019060019003908161256f5790505b5090505f5b8451811015611e98576125b58582815181106125a7576125a761552d565b602002602001015185611dca565b8282815181106125c7576125c761552d565b6020908102919091010152600101612589565b6125e2613692565b6001600160a01b0381166126475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016122e7565b612650816136ec565b50565b5f7f000000000000000000000000000000000000000000000000000000000000000046146127135750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612794573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127b891906157b2565b6001600160a01b0316336001600160a01b0316146127e95760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146128105760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a360205260409020606090611c8190613f52565b5f61287b612653565b60405161190160f01b6020820152602281019190915260428101839052606201611126565b60605f82516001600160401b038111156128bc576128bc614ab1565b6040519080825280602002602001820160405280156128e5578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016129379291906157cd565b5f60405180830381865afa158015612951573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261297891908101906157f0565b90505f5b8451811015610b21576129c28786838151811061299b5761299b61552d565b60200260200101518484815181106129b5576129b561552d565b602002602001015161309c565b8382815181106129d4576129d461552d565b602090810291909101015260010161297c565b5f6001600160a01b038616612a0f576040516339b190bb60e11b815260040160405180910390fd5b83515f03612a305760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b03811115612a4a57612a4a614ab1565b604051908082528060200260200182016040528015612a73578160200160208202803683370190505b5090505f85516001600160401b03811115612a9057612a90614ab1565b604051908082528060200260200182016040528015612ab9578160200160208202803683370190505b5090505f5b8651811015612d0f575f612add88838151811061209c5761209c61552d565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a8581518110612b1657612b1661552d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050612b82888481518110612b6857612b6861552d565b60200260200101518885815181106122075761220761552d565b848481518110612b9457612b9461552d565b602002602001018181525050612bcc888481518110612bb557612bb561552d565b602002602001015182613f5e90919063ffffffff16565b858481518110612bde57612bde61552d565b60209081029190910101526001600160a01b038a1615612c7357612c358a8a8581518110612c0e57612c0e61552d565b6020026020010151878681518110612c2857612c2861552d565b6020026020010151613f72565b612c738a8c8b8681518110612c4c57612c4c61552d565b6020026020010151878781518110612c6657612c6661552d565b6020026020010151613574565b816001600160a01b031663724af4238c8b8681518110612c9557612c9561552d565b60200260200101518b8781518110612caf57612caf61552d565b60200260200101516040518463ffffffff1660e01b8152600401612cd59392919061587f565b5f604051808303815f87803b158015612cec575f5ffd5b505af1158015612cfe573d5f5f3e3d5ffd5b505050505050806001019050612abe565b506001600160a01b0388165f908152609f60205260408120805491829190612d36836158a3565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d9c82611114565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612e5292600585019201906148a3565b5060c08201518051612e6e916006840191602090910190614906565b5050506001600160a01b038b165f90815260a360205260409020612e929082614000565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612ec6939291906158bb565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611d2982612f31612f2a87613c0f565b869061400b565b9061400b565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c69101612843565b6066545f90600190811603612fc15760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038381165f818152609a602052604080822080546001600160a01b0319169487169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a35f5f61301e8561194f565b915091505f61302e8686856128a0565b90505f5b8351811015610fe15761309486888684815181106130525761305261552d565b60200260200101515f87868151811061306d5761306d61552d565b60200260200101518787815181106130875761308761552d565b602002602001015161317e565b600101613032565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b0384160161316e5760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa15801561312a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061314e91906155ed565b90506131666001600160401b03848116908316613660565b915050610d5a565b506001600160401b031692915050565b805f0361319e57604051630a33bc6960e21b815260040160405180910390fd5b6001600160a01b038086165f90815260a2602090815260408083209388168352929052206131ce8185858561401f565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061320c90613c0f565b60405161321b9392919061587f565b60405180910390a161322c86610fea565b15610fe1576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613267908490615638565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516132ab9392919061587f565b60405180910390a250505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015613342573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8191906155a4565b60605f83516001600160401b0381111561338257613382614ab1565b6040519080825280602002602001820160405280156133ab578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016133ff939291906158e5565b5f60405180830381865afa158015613419573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261344091908101906157f0565b90505f5b8551811015613488576134638887838151811061299b5761299b61552d565b8382815181106134755761347561552d565b6020908102919091010152600101613444565b50909695505050505050565b5f610d5a8383613660565b5f6134ad848385600161408e565b611d29908561591e565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906134e8906140e9565b90505f61354e600161351a7f000000000000000000000000000000000000000000000000000000000000000043615931565b6135249190615931565b6001600160a01b03808a165f90815260a560209081526040808320938c1683529290522090614103565b90505f61355b828461591e565b905061356881878761411f565b98975050505050505050565b6001600160a01b038085165f908152609860209081526040808320938616835292905290812080548392906135aa90849061591e565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610e959392919061587f565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014613639577f0000000000000000000000000000000000000000000000000000000000000000611c81565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610d5a8383670de0b6b3a764000061413d565b5f611d298261368c61368587613c0f565b8690613660565b90613660565b6033546001600160a01b031633146111125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016122e7565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600260c9540361378f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016122e7565b600260c955565b60a08401515182146137bb576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b0316146137f1576040516316110d3560e21b815260040160405180910390fd5b5f6137fb85611114565b5f818152609e602052604090205490915060ff1661382c576040516387c9d21960e01b815260040160405180910390fd5b60605f7f0000000000000000000000000000000000000000000000000000000000000000876080015161385f919061561c565b90508063ffffffff164363ffffffff161161388d576040516378f67ae160e11b815260040160405180910390fd5b6138a4875f015188602001518960a0015184613366565b87516001600160a01b03165f90815260a3602052604090209092506138ca915083614222565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613921600583018261493f565b61392e600683015f61493f565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00906139779084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a015191909316926139b19184906128a0565b90505f5b8860a0015151811015613c04575f6139dc8a60a00151838151811061209c5761209c61552d565b90505f613a128b60c0015184815181106139f8576139f861552d565b60200260200101518785815181106116325761163261552d565b90508715613ae257816001600160a01b0316632eae418c8c5f01518d60a001518681518110613a4357613a4361552d565b60200260200101518d8d88818110613a5d57613a5d61552d565b9050602002016020810190613a729190614de0565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ac7575f5ffd5b505af1158015613ad9573d5f5f3e3d5ffd5b50505050613bfa565b5f5f836001600160a01b031663c4623ea18e5f01518f60a001518881518110613b0d57613b0d61552d565b60200260200101518f8f8a818110613b2757613b2761552d565b9050602002016020810190613b3c9190614de0565b60405160e085901b6001600160e01b03191681526001600160a01b039384166004820152918316602483015290911660448201526064810186905260840160408051808303815f875af1158015613b95573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613bb9919061594d565b91509150613bf7878e5f01518f60a001518881518110613bdb57613bdb61552d565b602002602001015185858b8b815181106130875761308761552d565b50505b50506001016139b5565b505050505050505050565b80515f9015613c1f578151611c81565b670de0b6b3a764000092915050565b606654606090600190600290811603613c5a5760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613cb98661194f565b9150915081515f03613ccd57505050613e87565b81516001600160401b03811115613ce657613ce6614ab1565b604051908082528060200260200182016040528015613d0f578160200160208202803683370190505b5094505f613d1e8785856128a0565b90505f5b8351811015613e81576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613da257613da261552d565b6020026020010151835f81518110613dbc57613dbc61552d565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613dee57613dee61552d565b6020026020010151825f81518110613e0857613e0861552d565b602002602001018181525050848481518110613e2657613e2661552d565b6020026020010151815f81518110613e4057613e4061552d565b602002602001018181525050613e598b898585856129e7565b8a8581518110613e6b57613e6b61552d565b6020908102919091010152505050600101613d22565b50505050505b50919050565b6001600160a01b038084165f908152609960205260409020600101541680613eb55750613f4c565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff1615613ef957604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff191660011790558301516124cb908290613f4090889088908490889061081f565b8551602087015161422d565b50505050565b60605f610d5a8361427f565b5f610d5a613f6b84613c0f565b8390613660565b6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014611060576001600160a01b038084165f90815260a5602090815260408083209386168352929052908120613fc5906140e9565b9050613f4c43613fd58484615638565b6001600160a01b038088165f90815260a560209081526040808320938a1683529290522091906142d8565b5f610d5a83836142e3565b5f610d5a83670de0b6b3a76400008461413d565b825f0361403f57614038670de0b6b3a76400008261400b565b8455613f4c565b6040805160208101909152845481525f9061405b908584613674565b90505f6140688483615638565b90505f61408384612f3161407c888a615638565b859061400b565b875550505050505050565b5f5f61409b86868661413d565b905060018360028111156140b1576140b161596f565b1480156140cd57505f84806140c8576140c8615983565b868809115b156140e0576140dd600182615638565b90505b95945050505050565b5f6140f4828261432f565b6001600160e01b031692915050565b5f61410f838383614374565b6001600160e01b03169392505050565b5f611d2961412d8385615997565b85906001600160401b0316613660565b5f80805f19858709858702925082811083820303915050805f036141745783828161416a5761416a615983565b0492505050610d5a565b8084116141bb5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016122e7565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610d5a83836143bd565b4281101561424e57604051630819bdcd60e01b815260040160405180910390fd5b6142626001600160a01b03851684846144a0565b613f4c57604051638baa579f60e01b815260040160405180910390fd5b6060815f018054806020026020016040519081016040528092919081815260200182805480156142cc57602002820191905f5260205f20905b8154815260200190600101908083116142b8575b50505050509050919050565b6110608383836144f4565b5f81815260018301602052604081205461432857508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611c81565b505f611c81565b81545f90801561436c576143558461434860018461591e565b5f91825260209091200190565b5464010000000090046001600160e01b0316611d29565b509092915050565b82545f9081614385868683856145fa565b905080156143b35761439c8661434860018461591e565b5464010000000090046001600160e01b031661089d565b5091949350505050565b5f8181526001830160205260408120548015614497575f6143df60018361591e565b85549091505f906143f29060019061591e565b9050818114614451575f865f0182815481106144105761441061552d565b905f5260205f200154905080875f0184815481106144305761443061552d565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080614462576144626159b6565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611c81565b5f915050611c81565b5f5f5f6144ad858561464d565b90925090505f8160048111156144c5576144c561596f565b1480156144e35750856001600160a01b0316826001600160a01b0316145b8061089d575061089d86868661468c565b825480156145ac575f61450c8561434860018561591e565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b03166020840152919250908516101561455f5760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036145aa57826145808661434860018661591e565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611e98575f61460f8484614773565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561463957809250614647565b614644816001615638565b93505b506145fc565b5f5f8251604103614681576020830151604084015160608501515f1a6146758782858561478d565b9450945050505061224a565b505f9050600261224a565b5f5f5f856001600160a01b0316631626ba7e60e01b86866040516024016146b49291906159ca565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516146f29190615a06565b5f60405180830381855afa9150503d805f811461472a576040519150601f19603f3d011682016040523d82523d5f602084013e61472f565b606091505b509150915081801561474357506020815110155b801561089d57508051630b135d3f60e11b906147689083016020908101908401615761565b149695505050505050565b5f6147816002848418615a1c565b610d5a90848416615638565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147c257505f90506003614841565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614813573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661483b575f60019250925050614841565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f209081019282156148f6579160200282015b828111156148f657825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906148c1565b50614902929150614956565b5090565b828054828255905f5260205f209081019282156148f6579160200282015b828111156148f6578251825591602001919060010190614924565b5080545f8255905f5260205f209081019061265091905b5b80821115614902575f8155600101614957565b6001600160a01b0381168114612650575f5ffd5b80356149898161496a565b919050565b5f5f5f5f5f60a086880312156149a2575f5ffd5b85356149ad8161496a565b945060208601356149bd8161496a565b935060408601356149cd8161496a565b94979396509394606081013594506080013592915050565b5f5f83601f8401126149f5575f5ffd5b5081356001600160401b03811115614a0b575f5ffd5b6020830191508360208260051b850101111561224a575f5ffd5b5f5f60208385031215614a36575f5ffd5b82356001600160401b03811115614a4b575f5ffd5b614a57858286016149e5565b90969095509350505050565b602080825282518282018190525f918401906040840190835b81811015610b21578351835260209384019390920191600101614a7c565b5f60208284031215614aaa575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614ae757614ae7614ab1565b60405290565b604080519081016001600160401b0381118282101715614ae757614ae7614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b3757614b37614ab1565b604052919050565b5f6001600160401b03821115614b5757614b57614ab1565b5060051b60200190565b5f82601f830112614b70575f5ffd5b8135614b83614b7e82614b3f565b614b0f565b8082825260208201915060208360051b860101925085831115614ba4575f5ffd5b602085015b83811015614bca578035614bbc8161496a565b835260209283019201614ba9565b5095945050505050565b5f82601f830112614be3575f5ffd5b8135614bf1614b7e82614b3f565b8082825260208201915060208360051b860101925085831115614c12575f5ffd5b602085015b83811015614bca578035835260209283019201614c17565b5f5f5f60608486031215614c41575f5ffd5b8335614c4c8161496a565b925060208401356001600160401b03811115614c66575f5ffd5b614c7286828701614b61565b92505060408401356001600160401b03811115614c8d575f5ffd5b614c9986828701614bd4565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614cd3578151865260209586019590910190600101614cb5565b5093949350505050565b602081525f610d5a6020830184614ca3565b803563ffffffff81168114614989575f5ffd5b5f5f83601f840112614d12575f5ffd5b5081356001600160401b03811115614d28575f5ffd5b60208301915083602082850101111561224a575f5ffd5b5f5f5f5f60608587031215614d52575f5ffd5b8435614d5d8161496a565b9350614d6b60208601614cef565b925060408501356001600160401b03811115614d85575f5ffd5b614d9187828801614d02565b95989497509550505050565b5f5f5f5f60808587031215614db0575f5ffd5b8435614dbb8161496a565b93506020850135614dcb8161496a565b93969395505050506040820135916060013590565b5f60208284031215614df0575f5ffd5b8135610d5a8161496a565b5f5f60408385031215614e0c575f5ffd5b8235614e178161496a565b91506020830135614e278161496a565b809150509250929050565b5f60e08284031215614e42575f5ffd5b614e4a614ac5565b9050614e558261497e565b8152614e636020830161497e565b6020820152614e746040830161497e565b604082015260608281013590820152614e8f60808301614cef565b608082015260a08201356001600160401b03811115614eac575f5ffd5b614eb884828501614b61565b60a08301525060c08201356001600160401b03811115614ed6575f5ffd5b614ee284828501614bd4565b60c08301525092915050565b5f60208284031215614efe575f5ffd5b81356001600160401b03811115614f13575f5ffd5b611d2984828501614e32565b5f60208284031215614f2f575f5ffd5b813560ff81168114610d5a575f5ffd5b5f8151808452602084019350602083015f5b82811015614cd35781516001600160a01b0316865260209586019590910190600101614f51565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f91614fc39085018263ffffffff169052565b5060a082015160e060a0850152614fdd60e0850182614f3f565b905060c083015184820360c08601526140e08282614ca3565b602081525f610d5a6020830184614f78565b5f82825180855260208501945060208160051b830101602085015f5b8381101561348857601f19858403018852615040838351614ca3565b6020988901989093509190910190600101615024565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156150ad57605f19878603018452615098858351614f78565b9450602093840193919091019060010161507c565b5050505082810360208401526140e08185615008565b6001600160401b0381168114612650575f5ffd5b5f5f5f5f608085870312156150ea575f5ffd5b84356150f58161496a565b935060208501356151058161496a565b92506040850135615115816150c3565b91506060850135615125816150c3565b939692955090935050565b5f5f5f60608486031215615142575f5ffd5b833561514d8161496a565b9250602084013591506040840135615164816150c3565b809150509250925092565b604081525f6151816040830185614f3f565b82810360208401526140e08185614ca3565b5f5f5f604084860312156151a5575f5ffd5b83356151b08161496a565b925060208401356001600160401b038111156151ca575f5ffd5b6151d686828701614d02565b9497909650939450505050565b5f5f604083850312156151f4575f5ffd5b82356151ff8161496a565b915060208301356001600160401b03811115615219575f5ffd5b61522585828601614b61565b9150509250929050565b5f5f5f5f5f5f60608789031215615244575f5ffd5b86356001600160401b03811115615259575f5ffd5b61526589828a016149e5565b90975095505060208701356001600160401b03811115615283575f5ffd5b61528f89828a016149e5565b90955093505060408701356001600160401b038111156152ad575f5ffd5b6152b989828a016149e5565b979a9699509497509295939492505050565b5f5f5f606084860312156152dd575f5ffd5b83356152e88161496a565b925060208401356001600160401b03811115615302575f5ffd5b840160408187031215615313575f5ffd5b61531b614aed565b81356001600160401b03811115615330575f5ffd5b8201601f81018813615340575f5ffd5b80356001600160401b0381111561535957615359614ab1565b61536c601f8201601f1916602001614b0f565b818152896020838501011115615380575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156153c3575f5ffd5b82356153ce8161496a565b946020939093013593505050565b604081525f6151816040830185614ca3565b8015158114612650575f5ffd5b5f5f5f5f6060858703121561540e575f5ffd5b84356001600160401b03811115615423575f5ffd5b850160e08188031215615434575f5ffd5b935060208501356001600160401b0381111561544e575f5ffd5b61545a878288016149e5565b9094509250506040850135615125816153ee565b5f5f6040838503121561547f575f5ffd5b82356001600160401b03811115615494575f5ffd5b8301601f810185136154a4575f5ffd5b80356154b2614b7e82614b3f565b8082825260208201915060208360051b8501019250878311156154d3575f5ffd5b6020840193505b828410156154fe5783356154ed8161496a565b8252602093840193909101906154da565b945050505060208301356001600160401b03811115615219575f5ffd5b602081525f610d5a6020830184615008565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615555575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615574575f5ffd5b8301803591506001600160401b0382111561558d575f5ffd5b6020019150600581901b360382131561224a575f5ffd5b5f602082840312156155b4575f5ffd5b8151610d5a816153ee565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f602082840312156155fd575f5ffd5b8151610d5a816150c3565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff8181168382160190811115611c8157611c81615608565b80820180821115611c8157611c81615608565b5f82601f83011261565a575f5ffd5b8151615668614b7e82614b3f565b8082825260208201915060208360051b860101925085831115615689575f5ffd5b602085015b83811015614bca57805183526020928301920161568e565b5f5f604083850312156156b7575f5ffd5b82516001600160401b038111156156cc575f5ffd5b8301601f810185136156dc575f5ffd5b80516156ea614b7e82614b3f565b8082825260208201915060208360051b85010192508783111561570b575f5ffd5b6020840193505b828410156157365783516157258161496a565b825260209384019390910190615712565b8095505050505060208301516001600160401b03811115615755575f5ffd5b6152258582860161564b565b5f60208284031215615771575f5ffd5b5051919050565b5f823560de19833603018112615555575f5ffd5b5f611c813683614e32565b5f602082840312156157a7575f5ffd5b8135610d5a816153ee565b5f602082840312156157c2575f5ffd5b8151610d5a8161496a565b6001600160a01b03831681526040602082018190525f90611d2990830184614f3f565b5f60208284031215615800575f5ffd5b81516001600160401b03811115615815575f5ffd5b8201601f81018413615825575f5ffd5b8051615833614b7e82614b3f565b8082825260208201915060208360051b850101925086831115615854575f5ffd5b6020840193505b8284101561089d57835161586e816150c3565b82526020938401939091019061585b565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f600182016158b4576158b4615608565b5060010190565b838152606060208201525f6158d36060830185614f78565b828103604084015261089d8185614ca3565b6001600160a01b03841681526060602082018190525f9061590890830185614f3f565b905063ffffffff83166040830152949350505050565b81810381811115611c8157611c81615608565b63ffffffff8281168282160390811115611c8157611c81615608565b5f5f6040838503121561595e575f5ffd5b505080516020909101519092909150565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b038281168282160390811115611c8157611c81615608565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f82518060208501845e5f920191825250919050565b5f82615a3657634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220ae0e7373931bdbf84d71bd113d70e34f8283cadca80ab52d44a72304e9b2512e64736f6c634300081b0033", + Bin: "0x61018060405234801561001157600080fd5b5060405161602238038061602283398101604081905261003091610221565b8186868684876001600160a01b03811661005d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c05290911660e05263ffffffff16610100524661012052610126604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b610140526001600160a01b03166101605261013f61014a565b5050505050506102b1565b600054610100900460ff16156101b65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614610207576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461021e57600080fd5b50565b60008060008060008060c0878903121561023a57600080fd5b865161024581610209565b602088015190965061025681610209565b604088015190955061026781610209565b606088015190945061027881610209565b608088015190935061028981610209565b60a088015190925063ffffffff811681146102a357600080fd5b809150509295509295509295565b60805160a05160c05160e05161010051610120516101405161016051615c726103b06000396000818161043901526133a701526000612792015260006126d201526000818161071201528181611541015281816135b001526138f601526000818161076201528181610dca01528181610f81015281816116dd015281816118a701528181611d0e0152818161296d015261346301526000818161046001528181610f060152818161180d01528181611a750152818161318a01526136fa01526000818161039501528181610ed4015281816119c401526136d40152600081816105fd01528181610b5a015281816110a501526127b60152615c726000f3fe608060405234801561001057600080fd5b50600436106102d65760003560e01c8063715018a611610182578063bfae3fd2116100e9578063e4cc3f90116100a2578063f2fde38b1161007c578063f2fde38b146107f0578063f698da2514610803578063fabc1cbc1461080b578063fd8aa88d1461081e57600080fd5b8063e4cc3f90146107aa578063eea9064b146107bd578063f0e0e676146107d057600080fd5b8063bfae3fd2146106f5578063c448feb814610708578063c978f7ac1461073c578063ca8aa7c71461075d578063cd6dc68714610784578063da8be8641461079757600080fd5b80639104c3191161013b5780639104c319146106435780639435bb431461065e578063a178848414610671578063a33a343314610691578063b7f06ebe146106a4578063bb45fef2146106c757600080fd5b8063715018a6146105b2578063778e55f3146105ba57806378296ec5146105e5578063886f1195146105f85780638da5cb5b1461061f578063900413471461063057600080fd5b806354b7c96c116102415780635dd68579116101fa57806365da1264116101d457806365da12641461054257806366d5ba931461056b5780636d70f7ae1461058c5780636e1744481461059f57600080fd5b80635dd68579146104fb578063601bb36f1461051c57806360a0d1ce1461052f57600080fd5b806354b7c96c14610482578063595c6a6714610495578063597b36da1461049d5780635ac86ab7146104b05780635c975abb146104d35780635d975e88146104db57600080fd5b806339b70e381161029357806339b70e38146103905780633c651cf2146103cf5780633cdeb5e0146103e25780633e28391d146104115780634657e26a146104345780634665bcda1461045b57600080fd5b806304a4f979146102db5780630b9f487a146103155780630dd8dd0214610328578063136439dd1461034857806325df922e1461035d5780632aa6d8881461037d575b600080fd5b6103027f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b610302610323366004614acb565b610831565b61033b610336366004614b6a565b6108ba565b60405161030c9190614bab565b61035b610356366004614be3565b610b45565b005b61037061036b366004614d83565b610c1c565b60405161030c9190614e38565b61035b61038b366004614ea0565b610d82565b6103b77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161030c565b61035b6103dd366004614f02565b610ec9565b6103b76103f0366004614f48565b6001600160a01b039081166000908152609960205260409020600101541690565b61042461041f366004614f48565b611014565b604051901515815260200161030c565b6103b77f000000000000000000000000000000000000000000000000000000000000000081565b6103b77f000000000000000000000000000000000000000000000000000000000000000081565b61035b610490366004614f65565b611034565b61035b611090565b6103026104ab36600461505e565b611142565b6104246104be366004615092565b606654600160ff9092169190911b9081161490565b606654610302565b6104ee6104e9366004614be3565b611172565b60405161030c919061516f565b61050e610509366004614f48565b611293565b60405161030c9291906151d2565b61035b61052a366004615256565b6116d2565b61035b61053d3660046152b2565b611802565b6103b7610550366004614f48565b609a602052600090815260409020546001600160a01b031681565b61057e610579366004614f48565b61199b565b60405161030c9291906152f4565b61042461059a366004614f48565b611ca8565b6103026105ad366004614f65565b611ce2565b61035b611d90565b6103026105c8366004614f65565b609860209081526000928352604080842090915290825290205481565b61035b6105f3366004615319565b611da2565b6103b77f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103b7565b61037061063e36600461536d565b611e2a565b6103b773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61035b61066c3660046153bc565b611f04565b61030261067f366004614f48565b609f6020526000908152604090205481565b61033b61069f36600461545f565b611fd5565b6104246106b2366004614be3565b609e6020526000908152604090205460ff1681565b6104246106d536600461554f565b609c60209081526000928352604080842090915290825290205460ff1681565b610302610703366004614f65565b611fed565b60405163ffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161030c565b61074f61074a36600461536d565b61202a565b60405161030c92919061557b565b6103b77f000000000000000000000000000000000000000000000000000000000000000081565b61035b61079236600461554f565b6122c2565b61033b6107a5366004614f48565b6123e3565b61035b6107b836600461559c565b6124f5565b61035b6107cb36600461545f565b61254b565b6107e36107de366004615615565b6125ae565b60405161030c91906156c8565b61035b6107fe366004614f48565b612655565b6103026126ce565b61035b610819366004614be3565b6127b4565b61033b61082c366004614f48565b6128cd565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290526000906108b09060e001604051602081830303815290604052805190602001206128f1565b9695505050505050565b6066546060906001906002908116036108e65760405163840a48d560e01b815260040160405180910390fd5b6000836001600160401b0381111561090057610900614bfc565b604051908082528060200260200182016040528015610929578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610b3a57868682818110610964576109646156db565b905060200281019061097691906156f1565b610984906020810190615711565b9050878783818110610998576109986156db565b90506020028101906109aa91906156f1565b6109b49080615711565b9050146109d4576040516343714afd60e01b815260040160405180910390fd5b6000610a4033848a8a868181106109ed576109ed6156db565b90506020028101906109ff91906156f1565b610a099080615711565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061292092505050565b9050610b1433848a8a86818110610a5957610a596156db565b9050602002810190610a6b91906156f1565b610a759080615711565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610abb57610abb6156db565b9050602002810190610acd91906156f1565b610adb906020810190615711565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250612a6e915050565b848381518110610b2657610b266156db565b60209081029190910101525060010161094a565b509095945050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd919061575a565b610bea57604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c0f5760405163c61dca5d60e01b815260040160405180910390fd5b610c1882612f79565b5050565b6001600160a01b038084166000908152609a60205260408120546060921690610c46868387612920565b9050600085516001600160401b03811115610c6357610c63614bfc565b604051908082528060200260200182016040528015610c8c578160200160208202803683370190505b50905060005b8651811015610d75576001600160a01b038816600090815260a260205260408120885182908a9085908110610cc957610cc96156db565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206040518060200160405290816000820154815250509050610d4f878381518110610d1d57610d1d6156db565b6020026020010151858481518110610d3757610d376156db565b602002602001015183612fb69092919063ffffffff16565b838381518110610d6157610d616156db565b602090810291909101015250600101610c92565b50925050505b9392505050565b610d8b33611014565b15610da957604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e690604401600060405180830381600087803b158015610e1657600080fd5b505af1158015610e2a573d6000803e3d6000fd5b50505050610e383385612fd5565b610e423333613038565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610ebb929190615777565b60405180910390a250505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f285750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610f455760405163045206a560e21b815260040160405180910390fd5b6001600160a01b038481166000908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015610fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fec91906157a6565b90506000610ffb878784613141565b905061100b838888888886613227565b50505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b8161103e81613368565b61105b5760405163932d94f760e01b815260040160405180910390fd5b61106483611ca8565b611081576040516325ec6c1f60e01b815260040160405180910390fd5b61108b8383612fd5565b505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611118919061575a565b61113557604051631d77d47760e21b815260040160405180910390fd5b611140600019612f79565b565b600081604051602001611155919061516f565b604051602081830303815290604052805190602001209050919050565b61117a614979565b600082815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a0860193929083018282801561122b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161120d575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561128357602002820191906000526020600020905b81548152602001906001019080831161126f575b5050505050815250509050919050565b60608060006112a1846128cd565b8051909150806001600160401b038111156112be576112be614bfc565b6040519080825280602002602001820160405280156112f757816020015b6112e4614979565b8152602001906001900390816112dc5790505b509350806001600160401b0381111561131257611312614bfc565b60405190808252806020026020018201604052801561134557816020015b60608152602001906001900390816113305790505b506001600160a01b038087166000908152609a60205260408120549295509116905b828110156116c95760a46000858381518110611385576113856156db565b6020908102919091018101518252818101929092526040908101600020815160e08101835281546001600160a01b03908116825260018301548116828601526002830154168184015260038201546060820152600482015463ffffffff1660808201526005820180548451818702810187019095528085529194929360a086019390929083018282801561144257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611424575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561149a57602002820191906000526020600020905b815481526020019060010190808311611486575b5050505050815250508682815181106114b5576114b56156db565b60200260200101819052508581815181106114d2576114d26156db565b602002602001015160a00151516001600160401b038111156114f6576114f6614bfc565b60405190808252806020026020018201604052801561151f578160200160208202803683370190505b50858281518110611532576115326156db565b602002602001018190525060007f0000000000000000000000000000000000000000000000000000000000000000878381518110611572576115726156db565b60200260200101516080015161158891906157d9565b905060604363ffffffff168263ffffffff1610156115d0576115c989858a86815181106115b7576115b76156db565b602002602001015160a0015185613416565b90506115fb565b6115f889858a86815181106115e7576115e76156db565b602002602001015160a00151612920565b90505b60005b888481518110611610576116106156db565b602002602001015160a00151518110156116bb5761167d898581518110611639576116396156db565b602002602001015160c001518281518110611656576116566156db565b6020026020010151838381518110611670576116706156db565b602002602001015161354b565b88858151811061168f5761168f6156db565b602002602001015182815181106116a8576116a86156db565b60209081029190910101526001016115fe565b505050806001019050611367565b50505050915091565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461171b576040516323d871a560e01b815260040160405180910390fd5b6001600160a01b03808516600090815260986020908152604080832093871683529290529081205461175a906001600160401b03808616908516613557565b9050600061176a86868686613570565b9050600061177882846157f5565b90506117878760008886613631565b6000611792876136ac565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab90604401600060405180830381600087803b1580156117e057600080fd5b505af11580156117f4573d6000803e3d6000fd5b505050505050505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461184b57604051633213a66160e21b815260040160405180910390fd5b61185483611014565b1561108b576001600160a01b038381166000908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156118ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191291906157a6565b6001600160a01b038616600090815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0845282528083208151928301909152548152919250611979866119716001600160401b0380871690891661371f565b849190613734565b905061100b848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac084613631565b6040516394f649dd60e01b81526001600160a01b038281166004830152606091829160009182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd90602401600060405180830381865afa158015611a0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a339190810190615866565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092506000917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa158015611abc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae09190615927565b905080600003611af557509094909350915050565b600083516001611b0591906157f5565b6001600160401b03811115611b1c57611b1c614bfc565b604051908082528060200260200182016040528015611b45578160200160208202803683370190505b509050600084516001611b5891906157f5565b6001600160401b03811115611b6f57611b6f614bfc565b604051908082528060200260200182016040528015611b98578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082865181518110611bc357611bc36156db565b60200260200101906001600160a01b031690816001600160a01b0316815250508281865181518110611bf757611bf76156db565b60200260200101818152505060005b8551811015611c9a57858181518110611c2157611c216156db565b6020026020010151838281518110611c3b57611c3b6156db565b60200260200101906001600160a01b031690816001600160a01b031681525050848181518110611c6d57611c6d6156db565b6020026020010151828281518110611c8757611c876156db565b6020908102919091010152600101611c06565b509097909650945050505050565b60006001600160a01b03821615801590611cdc57506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b038381166004830152828116602483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611d55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7991906157a6565b9050611d888484836000613570565b949350505050565b611d98613753565b61114060006137ad565b82611dac81613368565b611dc95760405163932d94f760e01b815260040160405180910390fd5b611dd284611ca8565b611def576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610ebb929190615777565b6060600082516001600160401b03811115611e4757611e47614bfc565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50905060005b8351811015611efc576001600160a01b03851660009081526098602052604081208551909190869084908110611eae57611eae6156db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611ee957611ee96156db565b6020908102919091010152600101611e76565b509392505050565b606654600290600490811603611f2d5760405163840a48d560e01b815260040160405180910390fd5b611f356137ff565b8560005b81811015611fc957611fc1898983818110611f5657611f566156db565b9050602002810190611f689190615940565b611f7190615956565b888884818110611f8357611f836156db565b9050602002810190611f959190615711565b888886818110611fa757611fa76156db565b9050602002016020810190611fbc9190615962565b613858565b600101611f39565b505061100b600160c955565b6060611fe0336123e3565b9050610d7b84848461254b565b6001600160a01b03808316600090815260a260209081526040808320938516835292815282822083519182019093529154825290610d7b90613ce9565b60608082516001600160401b0381111561204657612046614bfc565b60405190808252806020026020018201604052801561206f578160200160208202803683370190505b50915082516001600160401b0381111561208b5761208b614bfc565b6040519080825280602002602001820160405280156120b4578160200160208202803683370190505b506001600160a01b038086166000908152609a60205260408120549293509116906120e0868387612920565b905060005b85518110156122b7576000612112878381518110612105576121056156db565b60200260200101516136ac565b9050806001600160a01b031663fe243a1789898581518110612136576121366156db565b60200260200101516040518363ffffffff1660e01b81526004016121709291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa15801561218d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b19190615927565b8583815181106121c3576121c36156db565b602002602001018181525050600060a260008a6001600160a01b03166001600160a01b03168152602001908152602001600020600089858151811061220a5761220a6156db565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020604051806020016040529081600082015481525050905061229086848151811061225e5761225e6156db565b6020026020010151858581518110612278576122786156db565b6020026020010151836137349092919063ffffffff16565b8784815181106122a2576122a26156db565b602090810291909101015250506001016120e5565b5050505b9250929050565b600054610100900460ff16158080156122e25750600054600160ff909116105b806122fc5750303b1580156122fc575060005460ff166001145b6123645760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015612387576000805461ff0019166101001790555b61239082612f79565b612399836137ad565b801561108b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606123ee82611014565b61240b5760405163a5c7c44560e01b815260040160405180910390fd5b61241482611ca8565b15612432576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146124ec576001600160a01b038083166000908152609a60205260409020541661246681613368565b8061248d57506001600160a01b038181166000908152609960205260409020600101541633145b6124aa57604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b611cdc82613d09565b60665460029060049081160361251e5760405163840a48d560e01b815260040160405180910390fd5b6125266137ff565b61253a61253286615956565b858585613858565b612544600160c955565b5050505050565b61255433611014565b1561257257604051633bf2b50360e11b815260040160405180910390fd5b61257b83611ca8565b612598576040516325ec6c1f60e01b815260040160405180910390fd5b6125a433848484613f73565b61108b3384613038565b6060600083516001600160401b038111156125cb576125cb614bfc565b6040519080825280602002602001820160405280156125fe57816020015b60608152602001906001900390816125e95790505b50905060005b8451811015611efc57612630858281518110612622576126226156db565b602002602001015185611e2a565b828281518110612642576126426156db565b6020908102919091010152600101612604565b61265d613753565b6001600160a01b0381166126c25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161235b565b6126cb816137ad565b50565b60007f0000000000000000000000000000000000000000000000000000000000000000461461278f5750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612812573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612836919061597f565b6001600160a01b0316336001600160a01b0316146128675760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461288e5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b038116600090815260a360205260409020606090611cdc9061403b565b60006128fb6126ce565b60405161190160f01b6020820152602281019190915260428101839052606201611155565b6060600082516001600160401b0381111561293d5761293d614bfc565b604051908082528060200260200182016040528015612966578160200160208202803683370190505b50905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016129b992919061599c565b600060405180830381865afa1580156129d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129fe91908101906159c0565b905060005b8451811015610b3a57612a4987868381518110612a2257612a226156db565b6020026020010151848481518110612a3c57612a3c6156db565b6020026020010151613141565b838281518110612a5b57612a5b6156db565b6020908102919091010152600101612a03565b60006001600160a01b038616612a97576040516339b190bb60e11b815260040160405180910390fd5b8351600003612ab95760405163796cc52560e01b815260040160405180910390fd5b600084516001600160401b03811115612ad457612ad4614bfc565b604051908082528060200260200182016040528015612afd578160200160208202803683370190505b509050600085516001600160401b03811115612b1b57612b1b614bfc565b604051908082528060200260200182016040528015612b44578160200160208202803683370190505b50905060005b8651811015612da7576000612b6a888381518110612105576121056156db565b9050600060a260008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008a8581518110612ba757612ba76156db565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206040518060200160405290816000820154815250509050612c15888481518110612bfb57612bfb6156db565b6020026020010151888581518110612278576122786156db565b848481518110612c2757612c276156db565b602002602001018181525050612c5f888481518110612c4857612c486156db565b60200260200101518261404890919063ffffffff16565b858481518110612c7157612c716156db565b60209081029190910101526001600160a01b038a1615612d0657612cc88a8a8581518110612ca157612ca16156db565b6020026020010151878681518110612cbb57612cbb6156db565b602002602001015161405d565b612d068a8c8b8681518110612cdf57612cdf6156db565b6020026020010151878781518110612cf957612cf96156db565b6020026020010151613631565b816001600160a01b031663724af4238c8b8681518110612d2857612d286156db565b60200260200101518b8781518110612d4257612d426156db565b60200260200101516040518463ffffffff1660e01b8152600401612d6893929190615a54565b600060405180830381600087803b158015612d8257600080fd5b505af1158015612d96573d6000803e3d6000fd5b505050505050806001019050612b4a565b506001600160a01b0388166000908152609f60205260408120805491829190612dcf83615a78565b919050555060006040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090506000612e3782611142565b6000818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612eee92600585019201906149d7565b5060c08201518051612f0a916006840191602090910190614a3c565b5050506001600160a01b038b16600090815260a360205260409020612f2f90826140ed565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612f6393929190615a91565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6000611d8882612fcf612fc887613ce9565b86906140f9565b906140f9565b6001600160a01b0382811660008181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c691016128c1565b6066546000906001908116036130615760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038381166000818152609a602052604080822080546001600160a01b0319169487169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806130c08561199b565b9150915060006130d1868685612920565b905060005b835181101561100b5761313986888684815181106130f6576130f66156db565b60200260200101516000878681518110613112576131126156db565b602002602001015187878151811061312c5761312c6156db565b6020026020010151613227565b6001016130d6565b600073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132175760405163a3d75e0960e01b81526001600160a01b0385811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa1580156131d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f791906157a6565b905061320f6001600160401b0384811690831661371f565b915050610d7b565b506001600160401b031692915050565b8060000361324857604051630a33bc6960e21b815260040160405180910390fd5b6001600160a01b03808616600090815260a2602090815260408083209388168352929052206132798185858561410e565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f90879087906132b790613ce9565b6040516132c693929190615a54565b60405180910390a16132d786611014565b1561100b576001600160a01b038088166000908152609860209081526040808320938916835292905290812080548592906133139084906157f5565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c87878660405161335793929190615a54565b60405180910390a250505050505050565b604051631beb2b9760e31b81526001600160a01b038281166004830152336024830152306044830152600080356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303816000875af11580156133f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdc919061575a565b6060600083516001600160401b0381111561343357613433614bfc565b60405190808252806020026020018201604052801561345c578160200160208202803683370190505b50905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016134b193929190615abc565b600060405180830381865afa1580156134ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134f691908101906159c0565b905060005b855181101561353f5761351a88878381518110612a2257612a226156db565b83828151811061352c5761352c6156db565b60209081029190910101526001016134fb565b50909695505050505050565b6000610d7b838361371f565b60006135668483856001614181565b611d889085615af6565b6001600160a01b03808516600090815260a560209081526040808320938716835292905290812081906135a2906141de565b9050600061360a60016135d57f000000000000000000000000000000000000000000000000000000000000000043615b09565b6135df9190615b09565b6001600160a01b03808a16600090815260a560209081526040808320938c16835292905220906141f9565b905060006136188284615af6565b9050613625818787614216565b98975050505050505050565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613668908490615af6565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610ebb93929190615a54565b60006001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146136f8577f0000000000000000000000000000000000000000000000000000000000000000611cdc565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b6000610d7b8383670de0b6b3a7640000614235565b6000611d888261374d61374687613ce9565b869061371f565b9061371f565b6033546001600160a01b031633146111405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161235b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260c954036138515760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161235b565b600260c955565b60a084015151821461387d576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b0316146138b3576040516316110d3560e21b815260040160405180910390fd5b60006138be85611142565b6000818152609e602052604090205490915060ff166138f0576040516387c9d21960e01b815260040160405180910390fd5b606060007f0000000000000000000000000000000000000000000000000000000000000000876080015161392491906157d9565b90508063ffffffff164363ffffffff1611613952576040516378f67ae160e11b815260040160405180910390fd5b61396a876000015188602001518960a0015184613416565b87516001600160a01b0316600090815260a36020526040902090925061399191508361431f565b50600082815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff19169055906139e96005830182614a77565b6139f7600683016000614a77565b50506000828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613a419084815260200190565b60405180910390a185516001600160a01b039081166000908152609a6020526040812054885160a08a01519190931692613a7c918490612920565b905060005b8860a0015151811015613cde576000613aa98a60a001518381518110612105576121056156db565b90506000613ae08b60c001518481518110613ac657613ac66156db565b6020026020010151878581518110611670576116706156db565b90508715613bb657816001600160a01b0316632eae418c8c600001518d60a001518681518110613b1257613b126156db565b60200260200101518d8d88818110613b2c57613b2c6156db565b9050602002016020810190613b419190614f48565b60405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529183166024830152909116604482015260648101849052608401600060405180830381600087803b158015613b9957600080fd5b505af1158015613bad573d6000803e3d6000fd5b50505050613cd4565b600080836001600160a01b031663c4623ea18e600001518f60a001518881518110613be357613be36156db565b60200260200101518f8f8a818110613bfd57613bfd6156db565b9050602002016020810190613c129190614f48565b60405160e085901b6001600160e01b03191681526001600160a01b039384166004820152918316602483015290911660448201526064810186905260840160408051808303816000875af1158015613c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c929190615b25565b91509150613cd1878e600001518f60a001518881518110613cb557613cb56156db565b602002602001015185858b8b8151811061312c5761312c6156db565b50505b5050600101613a81565b505050505050505050565b805160009015613cfa578151611cdc565b670de0b6b3a764000092915050565b606654606090600190600290811603613d355760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084166000818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a3600080613d968661199b565b915091508151600003613dab57505050613f6d565b81516001600160401b03811115613dc457613dc4614bfc565b604051908082528060200260200182016040528015613ded578160200160208202803683370190505b5094506000613dfd878585612920565b905060005b8351811015613f67576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050509050868481518110613e8557613e856156db565b602002602001015183600081518110613ea057613ea06156db565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613ed257613ed26156db565b602002602001015182600081518110613eed57613eed6156db565b602002602001018181525050848481518110613f0b57613f0b6156db565b602002602001015181600081518110613f2657613f266156db565b602002602001018181525050613f3f8b89858585612a6e565b8a8581518110613f5157613f516156db565b6020908102919091010152505050600101613e02565b50505050505b50919050565b6001600160a01b038084166000908152609960205260409020600101541680613f9c5750614035565b6001600160a01b0381166000908152609c6020908152604080832085845290915290205460ff1615613fe157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381166000908152609c602090815260408083208584528252909120805460ff19166001179055830151612544908290614029908890889084908890610831565b8551602087015161432b565b50505050565b60606000610d7b8361437d565b6000610d7b61405684613ce9565b839061371f565b6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461108b576001600160a01b03808416600090815260a56020908152604080832093861683529290529081206140b1906141de565b9050614035436140c184846157f5565b6001600160a01b03808816600090815260a560209081526040808320938a1683529290522091906143d9565b6000610d7b83836143e4565b6000610d7b83670de0b6b3a764000084614235565b8260000361412f57614128670de0b6b3a7640000826140f9565b8455614035565b60408051602081019091528454815260009061414c908584613734565b9050600061415a84836157f5565b9050600061417684612fcf61416f888a6157f5565b85906140f9565b875550505050505050565b60008061418f868686614235565b905060018360028111156141a5576141a5615b49565b1480156141c25750600084806141bd576141bd615b5f565b868809115b156141d5576141d26001826157f5565b90505b95945050505050565b60006141ea8282614433565b6001600160e01b031692915050565b600061420683838361447a565b6001600160e01b03169392505050565b6000611d886142258385615b75565b85906001600160401b031661371f565b600080806000198587098587029250828110838203039150508060000361426f5783828161426557614265615b5f565b0492505050610d7b565b8084116142b65760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161235b565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000610d7b83836144c4565b4281101561434c57604051630819bdcd60e01b815260040160405180910390fd5b6143606001600160a01b03851684846145b7565b61403557604051638baa579f60e01b815260040160405180910390fd5b6060816000018054806020026020016040519081016040528092919081815260200182805480156143cd57602002820191906000526020600020905b8154815260200190600101908083116143b9575b50505050509050919050565b61108b83838361460e565b600081815260018301602052604081205461442b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611cdc565b506000611cdc565b815460009080156144725761445b8461444d600184615af6565b600091825260209091200190565b5464010000000090046001600160e01b0316611d88565b509092915050565b82546000908161448c86868385614716565b905080156144ba576144a38661444d600184615af6565b5464010000000090046001600160e01b03166108b0565b5091949350505050565b600081815260018301602052604081205480156145ad5760006144e8600183615af6565b85549091506000906144fc90600190615af6565b905081811461456157600086600001828154811061451c5761451c6156db565b906000526020600020015490508087600001848154811061453f5761453f6156db565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061457257614572615b94565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611cdc565b6000915050611cdc565b60008060006145c6858561476c565b909250905060008160048111156145df576145df615b49565b1480156145fd5750856001600160a01b0316826001600160a01b0316145b806108b057506108b08686866147ae565b825480156146c75760006146278561444d600185615af6565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b03166020840152919250908516101561467a5760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036146c5578261469b8661444d600186615af6565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187556000968752952091519051909216640100000000029190921617910155565b60005b81831015611efc57600061472d848461489a565b60008781526020902090915063ffffffff86169082015463ffffffff16111561475857809250614766565b6147638160016157f5565b93505b50614719565b60008082516041036147a25760208301516040840151606085015160001a614796878285856148b5565b945094505050506122bb565b506000905060026122bb565b6000806000856001600160a01b0316631626ba7e60e01b86866040516024016147d8929190615bce565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516148169190615c08565b600060405180830381855afa9150503d8060008114614851576040519150601f19603f3d011682016040523d82523d6000602084013e614856565b606091505b509150915081801561486a57506020815110155b80156108b057508051630b135d3f60e11b9061488f9083016020908101908401615927565b149695505050505050565b60006148a96002848418615c1a565b610d7b908484166157f5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156148ec5750600090506003614970565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614940573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661496957600060019250925050614970565b9150600090505b94509492505050565b6040518060e0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600063ffffffff16815260200160608152602001606081525090565b828054828255906000526020600020908101928215614a2c579160200282015b82811115614a2c57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906149f7565b50614a38929150614a91565b5090565b828054828255906000526020600020908101928215614a2c579160200282015b82811115614a2c578251825591602001919060010190614a5c565b50805460008255906000526020600020908101906126cb91905b5b80821115614a385760008155600101614a92565b6001600160a01b03811681146126cb57600080fd5b8035614ac681614aa6565b919050565b600080600080600060a08688031215614ae357600080fd5b8535614aee81614aa6565b94506020860135614afe81614aa6565b93506040860135614b0e81614aa6565b94979396509394606081013594506080013592915050565b60008083601f840112614b3857600080fd5b5081356001600160401b03811115614b4f57600080fd5b6020830191508360208260051b85010111156122bb57600080fd5b60008060208385031215614b7d57600080fd5b82356001600160401b03811115614b9357600080fd5b614b9f85828601614b26565b90969095509350505050565b602080825282518282018190526000918401906040840190835b81811015610b3a578351835260209384019390920191600101614bc5565b600060208284031215614bf557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c3457614c34614bfc565b60405290565b604080519081016001600160401b0381118282101715614c3457614c34614bfc565b604051601f8201601f191681016001600160401b0381118282101715614c8457614c84614bfc565b604052919050565b60006001600160401b03821115614ca557614ca5614bfc565b5060051b60200190565b600082601f830112614cc057600080fd5b8135614cd3614cce82614c8c565b614c5c565b8082825260208201915060208360051b860101925085831115614cf557600080fd5b602085015b83811015614d1b578035614d0d81614aa6565b835260209283019201614cfa565b5095945050505050565b600082601f830112614d3657600080fd5b8135614d44614cce82614c8c565b8082825260208201915060208360051b860101925085831115614d6657600080fd5b602085015b83811015614d1b578035835260209283019201614d6b565b600080600060608486031215614d9857600080fd5b8335614da381614aa6565b925060208401356001600160401b03811115614dbe57600080fd5b614dca86828701614caf565b92505060408401356001600160401b03811115614de657600080fd5b614df286828701614d25565b9150509250925092565b600081518084526020840193506020830160005b82811015614e2e578151865260209586019590910190600101614e10565b5093949350505050565b602081526000610d7b6020830184614dfc565b803563ffffffff81168114614ac657600080fd5b60008083601f840112614e7157600080fd5b5081356001600160401b03811115614e8857600080fd5b6020830191508360208285010111156122bb57600080fd5b60008060008060608587031215614eb657600080fd5b8435614ec181614aa6565b9350614ecf60208601614e4b565b925060408501356001600160401b03811115614eea57600080fd5b614ef687828801614e5f565b95989497509550505050565b60008060008060808587031215614f1857600080fd5b8435614f2381614aa6565b93506020850135614f3381614aa6565b93969395505050506040820135916060013590565b600060208284031215614f5a57600080fd5b8135610d7b81614aa6565b60008060408385031215614f7857600080fd5b8235614f8381614aa6565b91506020830135614f9381614aa6565b809150509250929050565b600060e08284031215614fb057600080fd5b614fb8614c12565b9050614fc382614abb565b8152614fd160208301614abb565b6020820152614fe260408301614abb565b604082015260608281013590820152614ffd60808301614e4b565b608082015260a08201356001600160401b0381111561501b57600080fd5b61502784828501614caf565b60a08301525060c08201356001600160401b0381111561504657600080fd5b61505284828501614d25565b60c08301525092915050565b60006020828403121561507057600080fd5b81356001600160401b0381111561508657600080fd5b611d8884828501614f9e565b6000602082840312156150a457600080fd5b813560ff81168114610d7b57600080fd5b600081518084526020840193506020830160005b82811015614e2e5781516001600160a01b03168652602095860195909101906001016150c9565b80516001600160a01b039081168352602080830151821690840152604080830151909116908301526060808201519083015260808082015160009161513c9085018263ffffffff169052565b5060a082015160e060a085015261515660e08501826150b5565b905060c083015184820360c08601526141d58282614dfc565b602081526000610d7b60208301846150f0565b600082825180855260208501945060208160051b8301016020850160005b8381101561353f57601f198584030188526151bc838351614dfc565b60209889019890935091909101906001016151a0565b6000604082016040835280855180835260608501915060608160051b86010192506020870160005b8281101561522b57605f198786030184526152168583516150f0565b945060209384019391909101906001016151fa565b5050505082810360208401526141d58185615182565b6001600160401b03811681146126cb57600080fd5b6000806000806080858703121561526c57600080fd5b843561527781614aa6565b9350602085013561528781614aa6565b9250604085013561529781615241565b915060608501356152a781615241565b939692955090935050565b6000806000606084860312156152c757600080fd5b83356152d281614aa6565b92506020840135915060408401356152e981615241565b809150509250925092565b60408152600061530760408301856150b5565b82810360208401526141d58185614dfc565b60008060006040848603121561532e57600080fd5b833561533981614aa6565b925060208401356001600160401b0381111561535457600080fd5b61536086828701614e5f565b9497909650939450505050565b6000806040838503121561538057600080fd5b823561538b81614aa6565b915060208301356001600160401b038111156153a657600080fd5b6153b285828601614caf565b9150509250929050565b600080600080600080606087890312156153d557600080fd5b86356001600160401b038111156153eb57600080fd5b6153f789828a01614b26565b90975095505060208701356001600160401b0381111561541657600080fd5b61542289828a01614b26565b90955093505060408701356001600160401b0381111561544157600080fd5b61544d89828a01614b26565b979a9699509497509295939492505050565b60008060006060848603121561547457600080fd5b833561547f81614aa6565b925060208401356001600160401b0381111561549a57600080fd5b8401604081870312156154ac57600080fd5b6154b4614c3a565b81356001600160401b038111156154ca57600080fd5b8201601f810188136154db57600080fd5b80356001600160401b038111156154f4576154f4614bfc565b615507601f8201601f1916602001614c5c565b81815289602083850101111561551c57600080fd5b81602084016020830137600060209282018301528352928301359282019290925293969395505050506040919091013590565b6000806040838503121561556257600080fd5b823561556d81614aa6565b946020939093013593505050565b6040815260006153076040830185614dfc565b80151581146126cb57600080fd5b600080600080606085870312156155b257600080fd5b84356001600160401b038111156155c857600080fd5b850160e081880312156155da57600080fd5b935060208501356001600160401b038111156155f557600080fd5b61560187828801614b26565b90945092505060408501356152a78161558e565b6000806040838503121561562857600080fd5b82356001600160401b0381111561563e57600080fd5b8301601f8101851361564f57600080fd5b803561565d614cce82614c8c565b8082825260208201915060208360051b85010192508783111561567f57600080fd5b6020840193505b828410156156aa57833561569981614aa6565b825260209384019390910190615686565b945050505060208301356001600160401b038111156153a657600080fd5b602081526000610d7b6020830184615182565b634e487b7160e01b600052603260045260246000fd5b60008235605e1983360301811261570757600080fd5b9190910192915050565b6000808335601e1984360301811261572857600080fd5b8301803591506001600160401b0382111561574257600080fd5b6020019150600581901b36038213156122bb57600080fd5b60006020828403121561576c57600080fd5b8151610d7b8161558e565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156157b857600080fd5b8151610d7b81615241565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8181168382160190811115611cdc57611cdc6157c3565b80820180821115611cdc57611cdc6157c3565b600082601f83011261581957600080fd5b8151615827614cce82614c8c565b8082825260208201915060208360051b86010192508583111561584957600080fd5b602085015b83811015614d1b57805183526020928301920161584e565b6000806040838503121561587957600080fd5b82516001600160401b0381111561588f57600080fd5b8301601f810185136158a057600080fd5b80516158ae614cce82614c8c565b8082825260208201915060208360051b8501019250878311156158d057600080fd5b6020840193505b828410156158fb5783516158ea81614aa6565b8252602093840193909101906158d7565b8095505050505060208301516001600160401b0381111561591b57600080fd5b6153b285828601615808565b60006020828403121561593957600080fd5b5051919050565b6000823560de1983360301811261570757600080fd5b6000611cdc3683614f9e565b60006020828403121561597457600080fd5b8135610d7b8161558e565b60006020828403121561599157600080fd5b8151610d7b81614aa6565b6001600160a01b0383168152604060208201819052600090611d88908301846150b5565b6000602082840312156159d257600080fd5b81516001600160401b038111156159e857600080fd5b8201601f810184136159f957600080fd5b8051615a07614cce82614c8c565b8082825260208201915060208360051b850101925086831115615a2957600080fd5b6020840193505b828410156108b0578351615a4381615241565b825260209384019390910190615a30565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060018201615a8a57615a8a6157c3565b5060010190565b838152606060208201526000615aaa60608301856150f0565b82810360408401526108b08185614dfc565b6001600160a01b0384168152606060208201819052600090615ae0908301856150b5565b905063ffffffff83166040830152949350505050565b81810381811115611cdc57611cdc6157c3565b63ffffffff8281168282160390811115611cdc57611cdc6157c3565b60008060408385031215615b3857600080fd5b505080516020909101519092909150565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160401b038281168282160390811115611cdc57611cdc6157c3565b634e487b7160e01b600052603160045260246000fd5b60005b83811015615bc5578181015183820152602001615bad565b50506000910152565b8281526040602082015260008251806040840152615bf3816060850160208701615baa565b601f01601f1916919091016060019392505050565b60008251615707818460208701615baa565b600082615c3757634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212209e2cf13a27e4148366c7d3148bcbce5592d411c22a6f0ddb72a6a7508e77185964736f6c634300081b0033", } // ContractDelegationManagerABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/EigenPod/binding.go b/contracts/bindings/EigenPod/binding.go index 28fddc06e..88b22f2cb 100644 --- a/contracts/bindings/EigenPod/binding.go +++ b/contracts/bindings/EigenPod/binding.go @@ -74,7 +74,7 @@ type IEigenPodTypesValidatorInfo struct { // ContractEigenPodMetaData contains all meta data concerning the ContractEigenPod contract. var ContractEigenPodMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_GENESIS_TIME\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"GENESIS_TIME\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidatorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpointBalanceExitedGwei\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpoint\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.Checkpoint\",\"components\":[{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proofsRemaining\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"podBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"balanceDeltasGwei\",\"type\":\"int64\",\"internalType\":\"int64\"},{\"name\":\"prevBeaconBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getParentBlockRoot\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proofSubmitter\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recoverTokens\",\"inputs\":[{\"name\":\"tokenList\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"amountsToWithdraw\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setProofSubmitter\",\"inputs\":[{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"startCheckpoint\",\"inputs\":[{\"name\":\"revertIfNoBalance\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"validatorPubkeyHashToInfo\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorPubkeyToInfo\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyCheckpointProofs\",\"inputs\":[{\"name\":\"balanceContainerProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.BalanceContainerProof\",\"components\":[{\"name\":\"balanceContainerRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proofs\",\"type\":\"tuple[]\",\"internalType\":\"structBeaconChainProofs.BalanceProof[]\",\"components\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"balanceRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyStaleBalance\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.ValidatorProof\",\"components\":[{\"name\":\"validatorFields\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyWithdrawalCredentials\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"validatorIndices\",\"type\":\"uint40[]\",\"internalType\":\"uint40[]\"},{\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"validatorFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawRestakedBeaconChainETH\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amountWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawableRestakedExecutionLayerGwei\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"CheckpointCreated\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validatorCount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointFinalized\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"totalShareDeltaWei\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EigenPodStaked\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NonBeaconChainETHReceived\",\"inputs\":[{\"name\":\"amountReceived\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProofSubmitterUpdated\",\"inputs\":[{\"name\":\"prevProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RestakedBeaconChainETHWithdrawn\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorBalanceUpdated\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"},{\"name\":\"balanceTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newValidatorBalanceGwei\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorCheckpointed\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":true,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRestaked\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWithdrawn\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":true,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"BeaconTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotCheckpointTwiceInSingleBlock\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CheckpointAlreadyActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CredentialsAlreadyVerified\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientWithdrawableBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEIP4788Response\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPubKeyLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidValidatorFieldsLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MsgValueNot32ETH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoActiveCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoBalanceToCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwnerOrProofSubmitter\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TimestampOutOfRange\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorInactiveOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorIsExitingBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotActiveInPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotSlashedOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalCredentialsNotForEigenPod\",\"inputs\":[]}]", - Bin: "0x60e060405234801561000f575f5ffd5b50604051613c7c380380613c7c83398101604081905261002e91610131565b6001600160a01b03808416608052821660a0526001600160401b03811660c05261005661005e565b505050610186565b5f54610100900460ff16156100c95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610118575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461012e575f5ffd5b50565b5f5f5f60608486031215610143575f5ffd5b835161014e8161011a565b602085015190935061015f8161011a565b60408501519092506001600160401b038116811461017b575f5ffd5b809150509250925092565b60805160a05160c051613a7f6101fd5f395f61060401525f81816102a90152818161063f015281816106e7015281816109ab01528181610b7501528181610e4e01528181610ef50152818161112b01528181611479015281816115ad01526127bb01525f81816104c60152610f5e0152613a7f5ff3fe608060405260043610610164575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c14610596578063ee94d67c146105b5578063f074ba62146105d4578063f2882461146105f3575f5ffd5b8063c490744214610539578063c4d66de814610558578063d06d558714610577575f5ffd5b80636fcd0e53146104545780637439841f1461048057806374cdd798146104b557806388676cad146104e85780639b4e463414610507578063b522538a1461051a575f5ffd5b80634665bcda1161011e5780634665bcda1461029857806347d28372146102cb57806352396a59146103b657806358753357146103ea57806358eaee79146104095780636c0d2d5a14610435575f5ffd5b8063039157d2146101a25780630b18ff66146101c35780632340e8d3146101ff5780633474aa16146102225780633f65cf191461025357806342ecff2a14610272575f5ffd5b3661019e576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101ad575f5ffd5b506101c16101bc366004612ff3565b610626565b005b3480156101ce575f5ffd5b506033546101e2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561020a575f5ffd5b5061021460395481565b6040519081526020016101f6565b34801561022d575f5ffd5b506034546001600160401b03165b6040516001600160401b0390911681526020016101f6565b34801561025e575f5ffd5b506101c161026d3660046130ac565b610952565b34801561027d575f5ffd5b50603a5461023b90600160401b90046001600160401b031681565b3480156102a3575f5ffd5b506101e27f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d6575f5ffd5b5061035b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b6040516101f691905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103c1575f5ffd5b5061023b6103d0366004613181565b603b6020525f90815260409020546001600160401b031681565b3480156103f5575f5ffd5b50603e546101e2906001600160a01b031681565b348015610414575f5ffd5b506104286104233660046131de565b610bda565b6040516101f69190613250565b348015610440575f5ffd5b5061021461044f366004613181565b610c3c565b34801561045f575f5ffd5b5061047361046e36600461325e565b610d4a565b6040516101f69190613275565b34801561048b575f5ffd5b5061042861049a36600461325e565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104c0575f5ffd5b506101e27f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f3575f5ffd5b506101c16105023660046132d8565b610df5565b6101c16105153660046132f3565b610eea565b348015610525575f5ffd5b506104736105343660046131de565b611031565b348015610544575f5ffd5b506101c1610553366004613383565b611120565b348015610563575f5ffd5b506101c16105723660046133ad565b611257565b348015610582575f5ffd5b506101c16105913660046133ad565b6113a1565b3480156105a1575f5ffd5b506101c16105b0366004613498565b611435565b3480156105c0575f5ffd5b50603a5461023b906001600160401b031681565b3480156105df575f5ffd5b506101c16105ee36600461356a565b611594565b3480156105fe575f5ffd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561068c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b091906135d1565b156106ce5760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610734573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075891906135d1565b156107765760405163840a48d560e01b815260040160405180910390fd5b5f6107ba61078485806135ec565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061199192505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156108285761082861321c565b60028111156108395761083961321c565b81525050905080604001516001600160401b0316876001600160401b031611610875576040516337e07ffd60e01b815260040160405180910390fd5b60018160600151600281111561088d5761088d61321c565b146108ab5760405163d49e19a760e01b815260040160405180910390fd5b6108ee6108b886806135ec565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119b392505050565b61090b5760405163161ce5ed60e31b815260040160405180910390fd5b61091d61091788610c3c565b876119db565b610940863561092c87806135ec565b61093960208a018a613631565b8651611a80565b6109495f611ba7565b50505050505050565b6033546001600160a01b03163314806109755750603e546001600160a01b031633145b6109925760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156109f8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1c91906135d1565b15610a3a5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a4857508382145b610a65576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610a9b576040516337e07ffd60e01b815260040160405180910390fd5b610aad610aa78a610c3c565b896119db565b5f805b87811015610b4557610b318a358a8a84818110610acf57610acf613673565b9050602002016020810190610ae49190613687565b898985818110610af657610af6613673565b9050602002810190610b089190613631565b898987818110610b1a57610b1a613673565b9050602002810190610b2c91906135ec565b611d27565b610b3b90836136bf565b9150600101610ab0565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bb8575f5ffd5b505af1158015610bca573d5f5f3e3d5ffd5b5050505050505050505050505050565b5f5f610c1a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506121dc92505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610c4a611fff600c6136d2565b610c5d6001600160401b038416426136e9565b10610c7b57604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610cc291613713565b5f60405180830381855afa9150503d805f8114610cfa576040519150601f19603f3d011682016040523d82523d5f602084013e610cff565b606091505b5091509150818015610d1157505f8151115b610d2e5760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610d42919061371e565b949350505050565b610d71604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610ddb57610ddb61321c565b6002811115610dec57610dec61321c565b90525092915050565b6033546001600160a01b0316331480610e185750603e546001600160a01b031633145b610e355760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610e9b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebf91906135d1565b15610edd5760405163840a48d560e01b815260040160405180910390fd5b610ee682611ba7565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f3357604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610f5c5760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610f9f61226d565b8888886040518863ffffffff1660e01b8152600401610fc39695949392919061378b565b5f604051808303818588803b158015610fda575f5ffd5b505af1158015610fec573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e2385856040516110229291906137d9565b60405180910390a15050505050565b611058604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61109985858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506121dc92505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156111055761110561321c565b60028111156111165761111661321c565b9052509392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461116957604051633213a66160e21b815260040160405180910390fd5b5f611178633b9aca0083613800565b9050611191633b9aca006001600160401b0383166136d2565b6034549092506001600160401b0390811690821611156111c4576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906111e19084906001600160401b0316613813565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161124091815260200190565b60405180910390a261125283836122b1565b505050565b5f54610100900460ff161580801561127557505f54600160ff909116105b8061128e5750303b15801561128e57505f5460ff166001145b6112f65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611317575f805461ff0019166101001790555b6001600160a01b03821661133e576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610ee6575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146113cc5760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114605760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156114c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ea91906135d1565b156115085760405163840a48d560e01b815260040160405180910390fd5b825184511461152a576040516343714afd60e01b815260040160405180910390fd5b5f5b845181101561158d576115858385838151811061154b5761154b613673565b602002602001015187848151811061156557611565613673565b60200260200101516001600160a01b03166123c69092919063ffffffff16565b60010161152c565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156115fa573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061161e91906135d1565b1561163c5760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f81900361167057604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c54808252603d5462ffffff811660208401526001600160401b0363010000008204811694840194909452600160581b810460070b6060840152600160981b90049092166080820152906116cf9087612418565b5f805b8581101561193857368787838181106116ed576116ed613673565b90506020028101906116ff9190613832565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561176f5761176f61321c565b60028111156117805761178061321c565b905250905060018160600151600281111561179d5761179d61321c565b146117a9575050611930565b856001600160401b031681604001516001600160401b0316106117cd575050611930565b5f80806117dd848a8f35886124c9565b60208b01805193965091945092506117f482613850565b62ffffff1690525060808801805184919061181090839061386d565b6001600160401b031690525060608801805183919061183090839061388c565b60070b905250611840818861386d565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b8360028111156118e4576118e461321c565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b6001016116d2565b506001600160401b038084165f908152603b60205260408120805484939192916119649185911661386d565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610949826125ec565b5f815f815181106119a4576119a4613673565b60200260200101519050919050565b5f816003815181106119c7576119c7613673565b60200260200101515f5f1b14159050919050565b6119e7600360206136d2565b6119f46020830183613631565b905014611a14576040516313717da960e21b815260040160405180910390fd5b611a63611a246020830183613631565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508692505084359050600361281b565b610ee6576040516309bde33960e01b815260040160405180910390fd5b60088414611aa15760405163200591bd60e01b815260040160405180910390fd5b6005611aaf602860016136bf565b611ab991906136bf565b611ac49060206136d2565b8214611ae3576040516313717da960e21b815260040160405180910390fd5b5f611b1f8686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061283292505050565b90505f64ffffffffff8316611b36602860016136bf565b600b901b179050611b8085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c925086915085905061281b565b611b9d576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b603a54600160401b90046001600160401b031615611bd75760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611c05576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611c21633b9aca0047613800565b611c2b9190613813565b9050818015611c4157506001600160401b038116155b15611c5f576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611c7442610c3c565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611cd8816125ec565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611d648484808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061199192505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611dd257611dd261321c565b6002811115611de357611de361321c565b90525090505f81606001516002811115611dff57611dff61321c565b14611e1d576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611e628686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ac292505050565b6001600160401b031603611e8957604051631958236d60e21b815260040160405180910390fd5b6001600160401b038016611ece8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ae692505050565b6001600160401b031614611ef557604051632eade63760e01b815260040160405180910390fd5b611efd61226d565b611f06906138bb565b611f418686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612afd92505050565b14611f5f57604051633772dd5360e11b815260040160405180910390fd5b5f611f9b8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612b1192505050565b9050611fab8a87878b8b8e611a80565b60398054905f611fba836138de565b9091555050603a545f90600160401b90046001600160401b031615611ff157603a54600160401b90046001600160401b0316611ffe565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b8360028111156120d3576120d361321c565b021790555050603d80548492506013906120fe908490600160981b90046001600160401b031661386d565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161215e919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a16121cd633b9aca006001600160401b0384166136d2565b9b9a5050505050505050505050565b5f81516030146121ff57604051634f88323960e11b815260040160405180910390fd5b6040516002906122159084905f906020016138f6565b60408051601f198184030181529082905261222f91613713565b602060405180830381855afa15801561224a573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610c36919061371e565b60408051600160f81b60208201525f602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b804710156123015760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016112ed565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461234a576040519150601f19603f3d011682016040523d82523d5f602084013e61234f565b606091505b50509050806112525760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016112ed565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611252908490612b28565b612424600560036136bf565b61242f9060206136d2565b61243c6020830183613631565b90501461245c576040516313717da960e21b815260040160405180910390fd5b606c6124ac61246e6020840184613631565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525087925050853590508461281b565b611252576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816124e1878388612bfb565b9050846001600160401b0316816001600160401b03161461255b57612506858261391a565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036125e05760398054905f61258a83613949565b9091555050600260608a015261259f8461395e565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff161561268c578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916126a8916001600160401b031661386d565b90505f826060015183604001516126bf919061388c565b60408401516034805492935090915f906126e39084906001600160401b031661386d565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061273390633b9aca009085166136d2565b90505f612748633b9aca00600785900b613983565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156127fe575f5ffd5b505af1158015612810573d5f5f3e3d5ffd5b505050505050505050565b5f83612828868585612cd9565b1495945050505050565b5f5f600283516128429190613800565b90505f816001600160401b0381111561285d5761285d6133c8565b604051908082528060200260200182016040528015612886578160200160208202803683370190505b5090505f5b82811015612980576002856128a083836136d2565b815181106128b0576128b0613673565b6020026020010151868360026128c691906136d2565b6128d19060016136bf565b815181106128e1576128e1613673565b6020026020010151604051602001612903929190918252602082015260400190565b60408051601f198184030181529082905261291d91613713565b602060405180830381855afa158015612938573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061295b919061371e565b82828151811061296d5761296d613673565b602090810291909101015260010161288b565b5061298c600283613800565b91505b8115612a9f575f5b82811015612a8c576002826129ac83836136d2565b815181106129bc576129bc613673565b6020026020010151838360026129d291906136d2565b6129dd9060016136bf565b815181106129ed576129ed613673565b6020026020010151604051602001612a0f929190918252602082015260400190565b60408051601f1981840301815290829052612a2991613713565b602060405180830381855afa158015612a44573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612a67919061371e565b828281518110612a7957612a79613673565b6020908102919091010152600101612997565b50612a98600283613800565b915061298f565b805f81518110612ab157612ab1613673565b602002602001015192505050919050565b5f610c3682600581518110612ad957612ad9613673565b6020026020010151612dad565b5f610c3682600681518110612ad957612ad9613673565b5f816001815181106119a4576119a4613673565b5f610c3682600281518110612ad957612ad9613673565b5f612b7c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e149092919063ffffffff16565b905080515f1480612b9c575080806020019051810190612b9c91906135d1565b6112525760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016112ed565b5f612c08602660016136bf565b612c139060206136d2565b612c206040840184613631565b905014612c40576040516313717da960e21b815260040160405180910390fd5b5f612c4c6004856139b2565b64ffffffffff169050612ca5612c656040850185613631565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250899250505060208601358461281b565b612cc2576040516309bde33960e01b815260040160405180910390fd5b612cd0836020013585612e22565b95945050505050565b5f83515f14158015612cf6575060208451612cf491906139db565b155b612d13576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b85518111612da357612d376002856139db565b5f03612d695781515f528086015160205260208260405f60026107d05a03fa612d5e575f5ffd5b600284049350612d91565b808601515f52815160205260208260405f60026107d05a03fa612d8a575f5ffd5b6002840493505b612d9c6020826136bf565b9050612d24565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610d4284845f85612e4e565b5f80612e2f6004846139ee565b612e3a906040613a17565b64ffffffffff169050610d4284821b612dad565b606082471015612eaf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016112ed565b5f5f866001600160a01b03168587604051612eca9190613713565b5f6040518083038185875af1925050503d805f8114612f04576040519150601f19603f3d011682016040523d82523d5f602084013e612f09565b606091505b5091509150612f1a87838387612f25565b979650505050505050565b60608315612f935782515f03612f8c576001600160a01b0385163b612f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016112ed565b5081610d42565b610d428383815115612fa85781518083602001fd5b8060405162461bcd60e51b81526004016112ed9190613a37565b80356001600160401b0381168114612fd8575f5ffd5b919050565b5f60408284031215612fed575f5ffd5b50919050565b5f5f5f60608486031215613005575f5ffd5b61300e84612fc2565b925060208401356001600160401b03811115613028575f5ffd5b61303486828701612fdd565b92505060408401356001600160401b0381111561304f575f5ffd5b61305b86828701612fdd565b9150509250925092565b5f5f83601f840112613075575f5ffd5b5081356001600160401b0381111561308b575f5ffd5b6020830191508360208260051b85010111156130a5575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b0312156130c3575f5ffd5b6130cc89612fc2565b975060208901356001600160401b038111156130e6575f5ffd5b6130f28b828c01612fdd565b97505060408901356001600160401b0381111561310d575f5ffd5b6131198b828c01613065565b90975095505060608901356001600160401b03811115613137575f5ffd5b6131438b828c01613065565b90955093505060808901356001600160401b03811115613161575f5ffd5b61316d8b828c01613065565b999c989b5096995094979396929594505050565b5f60208284031215613191575f5ffd5b61319a82612fc2565b9392505050565b5f5f83601f8401126131b1575f5ffd5b5081356001600160401b038111156131c7575f5ffd5b6020830191508360208285010111156130a5575f5ffd5b5f5f602083850312156131ef575f5ffd5b82356001600160401b03811115613204575f5ffd5b613210858286016131a1565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b6003811061324c57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610c368284613230565b5f6020828403121561326e575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b03604084015116604083015260608301516132c16060840182613230565b5092915050565b80151581146132d5575f5ffd5b50565b5f602082840312156132e8575f5ffd5b813561319a816132c8565b5f5f5f5f5f60608688031215613307575f5ffd5b85356001600160401b0381111561331c575f5ffd5b613328888289016131a1565b90965094505060208601356001600160401b03811115613346575f5ffd5b613352888289016131a1565b96999598509660400135949350505050565b6001600160a01b03811681146132d5575f5ffd5b8035612fd881613364565b5f5f60408385031215613394575f5ffd5b823561339f81613364565b946020939093013593505050565b5f602082840312156133bd575f5ffd5b813561319a81613364565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613404576134046133c8565b604052919050565b5f6001600160401b03821115613424576134246133c8565b5060051b60200190565b5f82601f83011261343d575f5ffd5b813561345061344b8261340c565b6133dc565b8082825260208201915060208360051b860101925085831115613471575f5ffd5b602085015b8381101561348e578035835260209283019201613476565b5095945050505050565b5f5f5f606084860312156134aa575f5ffd5b83356001600160401b038111156134bf575f5ffd5b8401601f810186136134cf575f5ffd5b80356134dd61344b8261340c565b8082825260208201915060208360051b8501019250888311156134fe575f5ffd5b6020840193505b8284101561352957833561351881613364565b825260209384019390910190613505565b955050505060208401356001600160401b03811115613546575f5ffd5b6135528682870161342e565b92505061356160408501613378565b90509250925092565b5f5f5f6040848603121561357c575f5ffd5b83356001600160401b03811115613591575f5ffd5b61359d86828701612fdd565b93505060208401356001600160401b038111156135b8575f5ffd5b6135c486828701613065565b9497909650939450505050565b5f602082840312156135e1575f5ffd5b815161319a816132c8565b5f5f8335601e19843603018112613601575f5ffd5b8301803591506001600160401b0382111561361a575f5ffd5b6020019150600581901b36038213156130a5575f5ffd5b5f5f8335601e19843603018112613646575f5ffd5b8301803591506001600160401b0382111561365f575f5ffd5b6020019150368190038213156130a5575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613697575f5ffd5b813564ffffffffff8116811461319a575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c3657610c366136ab565b8082028115828204841417610c3657610c366136ab565b81810381811115610c3657610c366136ab565b5f81518060208401855e5f93019283525090919050565b5f61319a82846136fc565b5f6020828403121561372e575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b608081525f61379e60808301888a613735565b82810360208401526137b0818861375d565b905082810360408401526137c5818688613735565b915050826060830152979650505050505050565b602081525f610d42602083018486613735565b634e487b7160e01b5f52601260045260245ffd5b5f8261380e5761380e6137ec565b500490565b6001600160401b038281168282160390811115610c3657610c366136ab565b5f8235605e19833603018112613846575f5ffd5b9190910192915050565b5f62ffffff821680613864576138646136ab565b5f190192915050565b6001600160401b038181168382160190811115610c3657610c366136ab565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610c3657610c366136ab565b80516020808301519190811015612fed575f1960209190910360031b1b16919050565b5f600182016138ef576138ef6136ab565b5060010190565b5f61390182856136fc565b6001600160801b03199390931683525050601001919050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610c3657610c366136ab565b5f81613957576139576136ab565b505f190190565b5f8160070b677fffffffffffffff19810361397b5761397b6136ab565b5f0392915050565b8082025f8212600160ff1b8414161561399e5761399e6136ab565b8181058314821517610c3657610c366136ab565b5f64ffffffffff8316806139c8576139c86137ec565b8064ffffffffff84160491505092915050565b5f826139e9576139e96137ec565b500690565b5f64ffffffffff831680613a0457613a046137ec565b8064ffffffffff84160691505092915050565b64ffffffffff81811683821602908116908181146132c1576132c16136ab565b602081525f61319a602083018461375d56fea2646970667358221220c88dcb7031759ade990fec453c411692a78837e47b58f76f40a517dda02220a964736f6c634300081b0033", + Bin: "0x60e060405234801561001057600080fd5b50604051613dc4380380613dc483398101604081905261002f91610136565b6001600160a01b03808416608052821660a0526001600160401b03811660c05261005761005f565b50505061018f565b600054610100900460ff16156100cb5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161461011c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013357600080fd5b50565b60008060006060848603121561014b57600080fd5b83516101568161011e565b60208501519093506101678161011e565b60408501519092506001600160401b038116811461018457600080fd5b809150509250925092565b60805160a05160c051613bb961020b60003960006106270152600081816102b7015281816106620152818161070c015281816109d701528181610ba501528181610e8e01528181610f3701528181611175015281816114cb0152818161160201526128430152600081816104e00152610fa00152613bb96000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c146105b5578063ee94d67c146105d5578063f074ba62146105f5578063f28824611461061557600080fd5b8063c490744214610555578063c4d66de814610575578063d06d55871461059557600080fd5b80636fcd0e531461046a5780637439841f1461049757806374cdd798146104ce57806388676cad146105025780639b4e463414610522578063b522538a1461053557600080fd5b80634665bcda116101235780634665bcda146102a557806347d28372146102d957806352396a59146103c757806358753357146103fd57806358eaee791461041d5780636c0d2d5a1461044a57600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461025e57806342ecff2a1461027e57600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c43660046130a6565b610649565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b506034546001600160401b03165b6040516001600160401b0390911681526020016101ff565b34801561026a57600080fd5b506101c9610279366004613168565b61097e565b34801561028a57600080fd5b50603a5461024690600160401b90046001600160401b031681565b3480156102b157600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e557600080fd5b5061036b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b6040516101ff9190600060a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103d357600080fd5b506102466103e2366004613246565b603b602052600090815260409020546001600160401b031681565b34801561040957600080fd5b50603e546101eb906001600160a01b031681565b34801561042957600080fd5b5061043d6104383660046132a9565b610c0f565b6040516101ff9190613322565b34801561045657600080fd5b5061021e610465366004613246565b610c74565b34801561047657600080fd5b5061048a610485366004613330565b610d88565b6040516101ff9190613349565b3480156104a357600080fd5b5061043d6104b2366004613330565b600090815260366020526040902054600160c01b900460ff1690565b3480156104da57600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561050e57600080fd5b506101c961051d3660046133ae565b610e35565b6101c96105303660046133cb565b610f2c565b34801561054157600080fd5b5061048a6105503660046132a9565b611077565b34801561056157600080fd5b506101c9610570366004613462565b61116a565b34801561058157600080fd5b506101c961059036600461348e565b6112a3565b3480156105a157600080fd5b506101c96105b036600461348e565b6113f3565b3480156105c157600080fd5b506101c96105d0366004613581565b611487565b3480156105e157600080fd5b50603a54610246906001600160401b031681565b34801561060157600080fd5b506101c961061036600461365a565b6115e9565b34801561062157600080fd5b506102467f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d591906136c6565b156106f35760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561075b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077f91906136c6565b1561079d5760405163840a48d560e01b815260040160405180910390fd5b60006107e36107ac85806136e3565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506119ef92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610852576108526132ea565b6002811115610863576108636132ea565b81525050905080604001516001600160401b0316876001600160401b03161161089f576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108b7576108b76132ea565b146108d55760405163d49e19a760e01b815260040160405180910390fd5b6109196108e286806136e3565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611a1392505050565b6109365760405163161ce5ed60e31b815260040160405180910390fd5b61094861094288610c74565b87611a3d565b61096b863561095787806136e3565b61096460208a018a61372c565b8651611ae3565b6109756000611c0e565b50505050505050565b6033546001600160a01b03163314806109a15750603e546001600160a01b031633145b6109be5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a91906136c6565b15610a685760405163840a48d560e01b815260040160405180910390fd5b8584148015610a7657508382145b610a93576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610ac9576040516337e07ffd60e01b815260040160405180910390fd5b610adb610ad58a610c74565b89611a3d565b6000805b87811015610b7457610b608a358a8a84818110610afe57610afe613772565b9050602002016020810190610b139190613788565b898985818110610b2557610b25613772565b9050602002810190610b37919061372c565b898987818110610b4957610b49613772565b9050602002810190610b5b91906136e3565b611d91565b610b6a90836137c5565b9150600101610adf565b5060335460405163a1ca780b60e01b81526001600160a01b03918216600482015260006024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b90606401600060405180830381600087803b158015610beb57600080fd5b505af1158015610bff573d6000803e3d6000fd5b5050505050505050505050505050565b600080610c5184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061225292505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610c83611fff600c6137d8565b610c966001600160401b038416426137ef565b10610cb457604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610cfc91613826565b600060405180830381855afa9150503d8060008114610d37576040519150601f19603f3d011682016040523d82523d6000602084013e610d3c565b606091505b5091509150818015610d4f575060008151115b610d6c5760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610d809190613842565b949350505050565b610db06040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e1b57610e1b6132ea565b6002811115610e2c57610e2c6132ea565b90525092915050565b6033546001600160a01b0316331480610e585750603e546001600160a01b031633145b610e755760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0191906136c6565b15610f1f5760405163840a48d560e01b815260040160405180910390fd5b610f2882611c0e565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f7557604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610f9e5760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610fe16122e7565b8888886040518863ffffffff1660e01b8152600401611005969594939291906138b0565b6000604051808303818588803b15801561101e57600080fd5b505af1158015611032573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e2385856040516110689291906138ff565b60405180910390a15050505050565b61109f6040805160808101825260008082526020820181905291810182905290606082015290565b603660006110e285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061225292505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561114f5761114f6132ea565b6002811115611160576111606132ea565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111b357604051633213a66160e21b815260040160405180910390fd5b60006111c3633b9aca0083613929565b90506111dc633b9aca006001600160401b0383166137d8565b6034549092506001600160401b03908116908216111561120f576040516302c6f54760e21b815260040160405180910390fd5b6034805482919060009061122d9084906001600160401b031661393d565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161128c91815260200190565b60405180910390a261129e838361232c565b505050565b600054610100900460ff16158080156112c35750600054600160ff909116105b806112dd5750303b1580156112dd575060005460ff166001145b6113455760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015611368576000805461ff0019166101001790555b6001600160a01b03821661138f576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f28576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461141e5760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114b25760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561151a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153e91906136c6565b1561155c5760405163840a48d560e01b815260040160405180910390fd5b825184511461157e576040516343714afd60e01b815260040160405180910390fd5b60005b84518110156115e2576115da838583815181106115a0576115a0613772565b60200260200101518784815181106115ba576115ba613772565b60200260200101516001600160a01b03166124459092919063ffffffff16565b600101611581565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611651573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167591906136c6565b156116935760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b031660008190036116c857604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c54808252603d5462ffffff811660208401526001600160401b0363010000008204811694840194909452600160581b810460070b6060840152600160981b90049092166080820152906117279087612497565b6000805b85811015611995573687878381811061174657611746613772565b9050602002810190611758919061395c565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117c9576117c96132ea565b60028111156117da576117da6132ea565b90525090506001816060015160028111156117f7576117f76132ea565b1461180357505061198d565b856001600160401b031681604001516001600160401b03161061182757505061198d565b60008080611838848a8f3588612549565b60208b018051939650919450925061184f82613972565b62ffffff1690525060808801805184919061186b908390613991565b6001600160401b031690525060608801805183919061188b9083906139b0565b60070b90525061189b8188613991565b85356000908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611940576119406132ea565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a350505050505b60010161172b565b506001600160401b038084166000908152603b60205260408120805484939192916119c291859116613991565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506109758261266f565b600081600081518110611a0457611a04613772565b60200260200101519050919050565b600081600381518110611a2857611a28613772565b60200260200101516000801b14159050919050565b611a49600360206137d8565b611a56602083018361372c565b905014611a76576040516313717da960e21b815260040160405180910390fd5b611ac6611a86602083018361372c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250508435905060036128a8565b610f28576040516309bde33960e01b815260040160405180910390fd5b60088414611b045760405163200591bd60e01b815260040160405180910390fd5b6005611b12602860016137c5565b611b1c91906137c5565b611b279060206137d8565b8214611b46576040516313717da960e21b815260040160405180910390fd5b6000611b848686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506128c092505050565b9050600064ffffffffff8316611b9c602860016137c5565b600b901b179050611be785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508691508590506128a8565b611c04576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b603a54600160401b90046001600160401b031615611c3e5760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611c6c576040516367db5b8b60e01b815260040160405180910390fd5b6034546000906001600160401b0316611c89633b9aca0047613929565b611c93919061393d565b9050818015611ca957506001600160401b038116155b15611cc7576040516332dea95960e21b815260040160405180910390fd5b60006040518060a00160405280611cdd42610c74565b815260395462ffffff1660208201526001600160401b038085166040830152600060608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611d428161266f565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080611dd08484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506119ef92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611e3f57611e3f6132ea565b6002811115611e5057611e506132ea565b9052509050600081606001516002811115611e6d57611e6d6132ea565b14611e8b576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611ed1868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612b5992505050565b6001600160401b031603611ef857604051631958236d60e21b815260040160405180910390fd5b6001600160401b038016611f3e868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612b7e92505050565b6001600160401b031614611f6557604051632eade63760e01b815260040160405180910390fd5b611f6d6122e7565b611f76906139df565b611fb2868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612b9692505050565b14611fd057604051633772dd5360e11b815260040160405180910390fd5b600061200e868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612bab92505050565b905061201e8a87878b8b8e611ae3565b6039805490600061202e83613a03565b9091555050603a54600090600160401b90046001600160401b03161561206657603a54600160401b90046001600160401b0316612073565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612149576121496132ea565b021790555050603d8054849250601390612174908490600160981b90046001600160401b0316613991565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a6040516121d4919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612243633b9aca006001600160401b0384166137d8565b9b9a5050505050505050505050565b6000815160301461227657604051634f88323960e11b815260040160405180910390fd5b60405160029061228d908490600090602001613a1c565b60408051601f19818403018152908290526122a791613826565b602060405180830381855afa1580156122c4573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c6e9190613842565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b8047101561237c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161133c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146123c9576040519150601f19603f3d011682016040523d82523d6000602084013e6123ce565b606091505b505090508061129e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161133c565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261129e908490612bc3565b6124a3600560036137c5565b6124ae9060206137d8565b6124bb602083018361372c565b9050146124db576040516313717da960e21b815260040160405180910390fd5b606c61252c6124ed602084018461372c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792505085359050846128a8565b61129e576040516309bde33960e01b815260040160405180910390fd5b8351602085015190600090819081612562878388612c98565b9050846001600160401b0316816001600160401b0316146125dc576125878582613a4b565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b0152600003612663576039805490600061260d83613a7a565b9091555050600260608a015261262284613a91565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff161561270f578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b608081015160345460009161272c916001600160401b0316613991565b905060008260600151836040015161274491906139b0565b60408401516034805492935090916000906127699084906001600160401b0316613991565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b0319909116179055600091506127ba90633b9aca009085166137d8565b905060006127d0633b9aca00600785900b613ab8565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b90606401600060405180830381600087803b15801561288957600080fd5b505af115801561289d573d6000803e3d6000fd5b505050505050505050565b6000836128b6868585612d79565b1495945050505050565b600080600283516128d19190613929565b90506000816001600160401b038111156128ed576128ed6134ab565b604051908082528060200260200182016040528015612916578160200160208202803683370190505b50905060005b82811015612a135760028561293183836137d8565b8151811061294157612941613772565b60200260200101518683600261295791906137d8565b6129629060016137c5565b8151811061297257612972613772565b6020026020010151604051602001612994929190918252602082015260400190565b60408051601f19818403018152908290526129ae91613826565b602060405180830381855afa1580156129cb573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906129ee9190613842565b828281518110612a0057612a00613772565b602090810291909101015260010161291c565b50612a1f600283613929565b91505b8115612b355760005b82811015612b2257600282612a4083836137d8565b81518110612a5057612a50613772565b602002602001015183836002612a6691906137d8565b612a719060016137c5565b81518110612a8157612a81613772565b6020026020010151604051602001612aa3929190918252602082015260400190565b60408051601f1981840301815290829052612abd91613826565b602060405180830381855afa158015612ada573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612afd9190613842565b828281518110612b0f57612b0f613772565b6020908102919091010152600101612a2b565b50612b2e600283613929565b9150612a22565b80600081518110612b4857612b48613772565b602002602001015192505050919050565b6000610c6e82600581518110612b7157612b71613772565b6020026020010151612e56565b6000610c6e82600681518110612b7157612b71613772565b600081600181518110611a0457611a04613772565b6000610c6e82600281518110612b7157612b71613772565b6000612c18826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ebd9092919063ffffffff16565b9050805160001480612c39575080806020019051810190612c3991906136c6565b61129e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161133c565b6000612ca6602660016137c5565b612cb19060206137d8565b612cbe604084018461372c565b905014612cde576040516313717da960e21b815260040160405180910390fd5b6000612ceb600485613ae8565b64ffffffffff169050612d45612d04604085018561372c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089925050506020860135846128a8565b612d62576040516309bde33960e01b815260040160405180910390fd5b612d70836020013585612ecc565b95945050505050565b60008351600014158015612d98575060208451612d969190613b12565b155b612db5576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b85518111612e4c57612dd9600285613b12565b600003612e0f578151600052808601516020526020826040600060026107d05a03fa612e0457600080fd5b600284049350612e3a565b8086015160005281516020526020826040600060026107d05a03fa612e3357600080fd5b6002840493505b612e456020826137c5565b9050612dc6565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610d808484600085612ef9565b600080612eda600484613b26565b612ee5906040613b50565b64ffffffffff169050610d8084821b612e56565b606082471015612f5a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161133c565b600080866001600160a01b03168587604051612f769190613826565b60006040518083038185875af1925050503d8060008114612fb3576040519150601f19603f3d011682016040523d82523d6000602084013e612fb8565b606091505b5091509150612fc987838387612fd4565b979650505050505050565b6060831561304357825160000361303c576001600160a01b0385163b61303c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161133c565b5081610d80565b610d8083838151156130585781518083602001fd5b8060405162461bcd60e51b815260040161133c9190613b70565b80356001600160401b038116811461308957600080fd5b919050565b6000604082840312156130a057600080fd5b50919050565b6000806000606084860312156130bb57600080fd5b6130c484613072565b925060208401356001600160401b038111156130df57600080fd5b6130eb8682870161308e565b92505060408401356001600160401b0381111561310757600080fd5b6131138682870161308e565b9150509250925092565b60008083601f84011261312f57600080fd5b5081356001600160401b0381111561314657600080fd5b6020830191508360208260051b850101111561316157600080fd5b9250929050565b60008060008060008060008060a0898b03121561318457600080fd5b61318d89613072565b975060208901356001600160401b038111156131a857600080fd5b6131b48b828c0161308e565b97505060408901356001600160401b038111156131d057600080fd5b6131dc8b828c0161311d565b90975095505060608901356001600160401b038111156131fb57600080fd5b6132078b828c0161311d565b90955093505060808901356001600160401b0381111561322657600080fd5b6132328b828c0161311d565b999c989b5096995094979396929594505050565b60006020828403121561325857600080fd5b61326182613072565b9392505050565b60008083601f84011261327a57600080fd5b5081356001600160401b0381111561329157600080fd5b60208301915083602082850101111561316157600080fd5b600080602083850312156132bc57600080fd5b82356001600160401b038111156132d257600080fd5b6132de85828601613268565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b6003811061331e57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c6e8284613300565b60006020828403121561334257600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b03604084015116604083015260608301516133966060840182613300565b5092915050565b80151581146133ab57600080fd5b50565b6000602082840312156133c057600080fd5b81356132618161339d565b6000806000806000606086880312156133e357600080fd5b85356001600160401b038111156133f957600080fd5b61340588828901613268565b90965094505060208601356001600160401b0381111561342457600080fd5b61343088828901613268565b96999598509660400135949350505050565b6001600160a01b03811681146133ab57600080fd5b803561308981613442565b6000806040838503121561347557600080fd5b823561348081613442565b946020939093013593505050565b6000602082840312156134a057600080fd5b813561326181613442565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156134e9576134e96134ab565b604052919050565b60006001600160401b0382111561350a5761350a6134ab565b5060051b60200190565b600082601f83011261352557600080fd5b8135613538613533826134f1565b6134c1565b8082825260208201915060208360051b86010192508583111561355a57600080fd5b602085015b8381101561357757803583526020928301920161355f565b5095945050505050565b60008060006060848603121561359657600080fd5b83356001600160401b038111156135ac57600080fd5b8401601f810186136135bd57600080fd5b80356135cb613533826134f1565b8082825260208201915060208360051b8501019250888311156135ed57600080fd5b6020840193505b8284101561361857833561360781613442565b8252602093840193909101906135f4565b955050505060208401356001600160401b0381111561363657600080fd5b61364286828701613514565b92505061365160408501613457565b90509250925092565b60008060006040848603121561366f57600080fd5b83356001600160401b0381111561368557600080fd5b6136918682870161308e565b93505060208401356001600160401b038111156136ad57600080fd5b6136b98682870161311d565b9497909650939450505050565b6000602082840312156136d857600080fd5b81516132618161339d565b6000808335601e198436030181126136fa57600080fd5b8301803591506001600160401b0382111561371457600080fd5b6020019150600581901b360382131561316157600080fd5b6000808335601e1984360301811261374357600080fd5b8301803591506001600160401b0382111561375d57600080fd5b60200191503681900382131561316157600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561379a57600080fd5b813564ffffffffff8116811461326157600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610c6e57610c6e6137af565b8082028115828204841417610c6e57610c6e6137af565b81810381811115610c6e57610c6e6137af565b60005b8381101561381d578181015183820152602001613805565b50506000910152565b60008251613838818460208701613802565b9190910192915050565b60006020828403121561385457600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261389c816020860160208601613802565b601f01601f19169290920160200192915050565b6080815260006138c460808301888a61385b565b82810360208401526138d68188613884565b905082810360408401526138eb81868861385b565b915050826060830152979650505050505050565b602081526000610d8060208301848661385b565b634e487b7160e01b600052601260045260246000fd5b60008261393857613938613913565b500490565b6001600160401b038281168282160390811115610c6e57610c6e6137af565b60008235605e1983360301811261383857600080fd5b600062ffffff821680613987576139876137af565b6000190192915050565b6001600160401b038181168382160190811115610c6e57610c6e6137af565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610c6e57610c6e6137af565b805160208083015191908110156130a05760001960209190910360031b1b16919050565b600060018201613a1557613a156137af565b5060010190565b60008351613a2e818460208801613802565b6001600160801b0319939093169190920190815260100192915050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610c6e57610c6e6137af565b600081613a8957613a896137af565b506000190190565b60008160070b677fffffffffffffff198103613aaf57613aaf6137af565b60000392915050565b80820260008212600160ff1b84141615613ad457613ad46137af565b8181058314821517610c6e57610c6e6137af565b600064ffffffffff831680613aff57613aff613913565b8064ffffffffff84160491505092915050565b600082613b2157613b21613913565b500690565b600064ffffffffff831680613b3d57613b3d613913565b8064ffffffffff84160691505092915050565b64ffffffffff8181168382160290811690818114613396576133966137af565b602081526000613261602083018461388456fea26469706673582212207bff0e88aa060bf331c229352b9c0dc2bd209339417daae82946eaf2de5d447664736f6c634300081b0033", } // ContractEigenPodABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/EigenPodManager/binding.go b/contracts/bindings/EigenPodManager/binding.go index d7e5aae00..fad6f8878 100644 --- a/contracts/bindings/EigenPodManager/binding.go +++ b/contracts/bindings/EigenPodManager/binding.go @@ -32,7 +32,7 @@ var ( // ContractEigenPodManagerMetaData contains all meta data concerning the ContractEigenPodManager contract. var ContractEigenPodManagerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_eigenPodBeacon\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"},{\"name\":\"_delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainSlashingFactor\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burnableETHShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createPod\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseBurnableShares\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"addedSharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_initPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"numPods\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerToPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwnerDepositShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordBeaconChainETHBalanceUpdate\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"prevRestakedBalanceWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"balanceDeltaWei\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"depositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BeaconChainETHDeposited\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainETHWithdrawalCompleted\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainSlashingFactorDecreased\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"prevBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableETHSharesIncreased\",\"inputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewTotalShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newTotalShares\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodDeployed\",\"inputs\":[{\"name\":\"eigenPod\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodSharesUpdated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sharesDelta\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EigenPodAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyWithdrawalsNotCompleted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNegative\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNotMultipleOfGwei\",\"inputs\":[]}]", - Bin: "0x610100604052348015610010575f5ffd5b50604051612a81380380612a8183398101604081905261002f9161015c565b838383836001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e052610080610089565b505050506101b8565b5f54610100900460ff16156100f45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610143575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610159575f5ffd5b50565b5f5f5f5f6080858703121561016f575f5ffd5b845161017a81610145565b602086015190945061018b81610145565b604086015190935061019c81610145565b60608601519092506101ad81610145565b939692955090935050565b60805160a05160c05160e0516128496102385f395f8181610530015281816106dd015281816109e301528181610d5a01528181610e0701528181610fb4015261116d01525f81816101f001528181610ecd015261153401525f61030301525f818161034a015281816106120152818161092d015261127301526128495ff3fe6080604052600436106101ba575f3560e01c80639ba06275116100f2578063d48e889411610092578063f5d4fed311610062578063f5d4fed314610571578063f6848d2414610586578063fabc1cbc146105bf578063fe243a17146105de575f5ffd5b8063d48e8894146104d5578063debe1eab14610500578063ea4d3c9b1461051f578063f2fde38b14610552575f5ffd5b8063a3d75e09116100cd578063a3d75e0914610435578063a6a509be1461046d578063c4623ea114610482578063cd6dc687146104b6575f5ffd5b80639ba06275146103c3578063a1ca780b146103f7578063a38406a314610416575f5ffd5b8063724af4231161015d578063886f119511610138578063886f1195146103395780638da5cb5b1461036c5780639104c319146103895780639b4e4634146103b0575f5ffd5b8063724af423146102d357806374cdd798146102f257806384d8106214610325575f5ffd5b8063595c6a6711610198578063595c6a671461024e5780635ac86ab7146102625780635c975abb146102a1578063715018a6146102bf575f5ffd5b8063136439dd146101be578063292b7b2b146101df5780632eae418c1461022f575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d8366004611af5565b6105fd565b005b3480156101ea575f5ffd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023a575f5ffd5b506101dd610249366004611b20565b6106d2565b348015610259575f5ffd5b506101dd610918565b34801561026d575f5ffd5b5061029161027c366004611b6e565b606654600160ff9092169190911b9081161490565b6040519015158152602001610226565b3480156102ac575f5ffd5b506066545b604051908152602001610226565b3480156102ca575f5ffd5b506101dd6109c7565b3480156102de575f5ffd5b506101dd6102ed366004611b8e565b6109d8565b3480156102fd575f5ffd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b348015610330575f5ffd5b50610212610afe565b348015610344575f5ffd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b348015610377575f5ffd5b506033546001600160a01b0316610212565b348015610394575f5ffd5b5061021273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6101dd6103be366004611c0a565b610b6e565b3480156103ce575f5ffd5b506102126103dd366004611c7d565b60986020525f90815260409020546001600160a01b031681565b348015610402575f5ffd5b506101dd610411366004611c98565b610c2b565b348015610421575f5ffd5b50610212610430366004611c7d565b610e73565b348015610440575f5ffd5b5061045461044f366004611c7d565b610f44565b60405167ffffffffffffffff9091168152602001610226565b348015610478575f5ffd5b506102b160995481565b34801561048d575f5ffd5b506104a161049c366004611b20565b610fa7565b60408051928352602083019190915201610226565b3480156104c1575f5ffd5b506101dd6104d0366004611cca565b611046565b3480156104e0575f5ffd5b506102b16104ef366004611c7d565b609b6020525f908152604090205481565b34801561050b575f5ffd5b506101dd61051a366004611cca565b611162565b34801561052a575f5ffd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b34801561055d575f5ffd5b506101dd61056c366004611c7d565b6111f8565b34801561057c575f5ffd5b506102b1609e5481565b348015610591575f5ffd5b506102916105a0366004611c7d565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156105ca575f5ffd5b506101dd6105d9366004611af5565b611271565b3480156105e9575f5ffd5b506102b16105f8366004611cf4565b611387565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561065f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106839190611d2b565b6106a057604051631d77d47760e21b815260040160405180910390fd5b60665481811681146106c55760405163c61dca5d60e01b815260040160405180910390fd5b6106ce82611407565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461071b5760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461075857604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b03841661077f576040516339b190bb60e11b815260040160405180910390fd5b5f811361079f5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b6020526040812054908290821215610899575f6107cb83611d5e565b90505f818511156107e95750806107e28186611d78565b92506107ef565b505f9150835b5f6107fa8286611d8b565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061084a9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161088d91815260200190565b60405180910390a25050505b8015610910576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015f604051808303815f87803b1580156108f9575f5ffd5b505af115801561090b573d5f5f3e3d5ffd5b505050505b505050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561097a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099e9190611d2b565b6109bb57604051631d77d47760e21b815260040160405180910390fd5b6109c55f19611407565b565b6109cf611444565b6109c55f61149e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a215760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610a5e57604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b6020526040812054610a81908390611db2565b90505f811215610aa45760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610af09084815260200190565b60405180910390a250505050565b6066545f908190600190811603610b285760405163840a48d560e01b815260040160405180910390fd5b335f908152609860205260409020546001600160a01b031615610b5e5760405163031a852160e21b815260040160405180910390fd5b5f610b676114ef565b9250505090565b6066545f90600190811603610b965760405163840a48d560e01b815260040160405180910390fd5b335f908152609860205260409020546001600160a01b031680610bbe57610bbb6114ef565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610bf4908b908b908b908b908b90600401611e00565b5f604051808303818588803b158015610c0b575f5ffd5b505af1158015610c1d573d5f5f3e3d5ffd5b505050505050505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610c66576040516312e16d7160e11b815260040160405180910390fd5b610c6e61164a565b6001600160a01b038416610c95576040516339b190bb60e11b815260040160405180910390fd5b610ca3633b9aca0083611e4d565b15610cc1576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610cfa57604051634b692bcf60e01b815260040160405180910390fd5b5f8312610dba575f5f610d0d87866116a3565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015610d9d575f5ffd5b505af1158015610daf573d5f5f3e3d5ffd5b505050505050610e62565b5f610dce8686610dc987611d5e565b6117e0565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce906064015f604051808303815f87803b158015610e4a575f5ffd5b505af1158015610e5c573d5f5f3e3d5ffd5b50505050505b50610e6d600160c955565b50505050565b6001600160a01b038082165f9081526098602052604081205490911680610f3e57610f3b836001600160a01b03165f1b60405180610940016040528061090e8152602001611f0661090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f1981840301815290829052610f209291602001611e83565b604051602081830303815290604052805190602001206118d9565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff169282019290925290610f9a57670de0b6b3a7640000610fa0565b80602001515b9392505050565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ff25760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03851673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461102f57604051632711b74d60e11b815260040160405180910390fd5b61103986846116a3565b9150915094509492505050565b5f54610100900460ff161580801561106457505f54600160ff909116105b8061107d5750303b15801561107d57505f5460ff166001145b6110e55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611106575f805461ff0019166101001790555b61110f8361149e565b61111882611407565b801561115d575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111ab5760405163f739589b60e01b815260040160405180910390fd5b80609e5f8282546111bc9190611e9f565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a15050565b611200611444565b6001600160a01b0381166112655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016110dc565b61126e8161149e565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f19190611eb2565b6001600160a01b0316336001600160a01b0316146113225760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146113495760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146113c557604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b6020526040812054126113ff576001600160a01b0383165f908152609b6020526040902054610f3b565b505f92915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6033546001600160a01b031633146109c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016110dc565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f60995f81546114fe90611ecd565b9091555060408051610940810190915261090e8082525f9161159b9183913391611f066020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526115879291602001611e83565b6040516020818303038152906040526118e5565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b1580156115dc575f5ffd5b505af11580156115ee573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b600260c9540361169c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016110dc565b600260c955565b5f806001600160a01b0384166116cc576040516339b190bb60e11b815260040160405180910390fd5b5f8312156116ed5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117118383611d8b565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117619086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516117a491815260200190565b60405180910390a25f81136117c1575f5f945094505050506117d9565b5f82126117ce57816117d0565b5f5b86945094505050505b9250929050565b5f806117ec8385611d78565b90505f6117f886610f44565b90505f61181067ffffffffffffffff831684886119e7565b90505f61181d8284611ee5565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f610f3b838330611acc565b5f834710156119365760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016110dc565b81515f036119865760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016110dc565b8282516020840186f590506001600160a01b038116610fa05760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016110dc565b5f80805f19858709858702925082811083820303915050805f03611a1e57838281611a1457611a14611e39565b0492505050610fa0565b808411611a655760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016110dc565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b5f60208284031215611b05575f5ffd5b5035919050565b6001600160a01b038116811461126e575f5ffd5b5f5f5f5f60808587031215611b33575f5ffd5b8435611b3e81611b0c565b93506020850135611b4e81611b0c565b92506040850135611b5e81611b0c565b9396929550929360600135925050565b5f60208284031215611b7e575f5ffd5b813560ff81168114610fa0575f5ffd5b5f5f5f60608486031215611ba0575f5ffd5b8335611bab81611b0c565b92506020840135611bbb81611b0c565b929592945050506040919091013590565b5f5f83601f840112611bdc575f5ffd5b50813567ffffffffffffffff811115611bf3575f5ffd5b6020830191508360208285010111156117d9575f5ffd5b5f5f5f5f5f60608688031215611c1e575f5ffd5b853567ffffffffffffffff811115611c34575f5ffd5b611c4088828901611bcc565b909650945050602086013567ffffffffffffffff811115611c5f575f5ffd5b611c6b88828901611bcc565b96999598509660400135949350505050565b5f60208284031215611c8d575f5ffd5b8135610fa081611b0c565b5f5f5f60608486031215611caa575f5ffd5b8335611cb581611b0c565b95602085013595506040909401359392505050565b5f5f60408385031215611cdb575f5ffd5b8235611ce681611b0c565b946020939093013593505050565b5f5f60408385031215611d05575f5ffd5b8235611d1081611b0c565b91506020830135611d2081611b0c565b809150509250929050565b5f60208284031215611d3b575f5ffd5b81518015158114610fa0575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b8201611d7257611d72611d4a565b505f0390565b81810381811115610f3e57610f3e611d4a565b8082018281125f831280158216821582161715611daa57611daa611d4a565b505092915050565b8181035f831280158383131683831282161715611dd157611dd1611d4a565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f611e13606083018789611dd8565b8281036020840152611e26818688611dd8565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f82611e6757634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f611e97611e918386611e6c565b84611e6c565b949350505050565b80820180821115610f3e57610f3e611d4a565b5f60208284031215611ec2575f5ffd5b8151610fa081611b0c565b5f60018201611ede57611ede611d4a565b5060010190565b67ffffffffffffffff8281168282160390811115610f3e57610f3e611d4a56fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122032580c3abe64f0c28017ab46e39968977be4a0f5722c3b505cc4ede52b69cdc164736f6c634300081b0033", + Bin: "0x61010060405234801561001157600080fd5b50604051612b64380380612b6483398101604081905261003091610161565b838383836001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e05261008161008a565b505050506101c0565b600054610100900460ff16156100f65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614610147576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461015e57600080fd5b50565b6000806000806080858703121561017757600080fd5b845161018281610149565b602086015190945061019381610149565b60408601519093506101a481610149565b60608601519092506101b581610149565b939692955090935050565b60805160a05160c05160e05161291e610246600039600081816105520152818161070701528181610a1e01528181610da501528181610e580152818161100f01526111ce0152600081816101fb01528181610f2501526115a00152600061031501526000818161035e0152818161063a0152818161096401526112d5015261291e6000f3fe6080604052600436106101c25760003560e01c80639ba06275116100f7578063d48e889411610095578063f5d4fed311610064578063f5d4fed314610594578063f6848d24146105aa578063fabc1cbc146105e5578063fe243a171461060557600080fd5b8063d48e8894146104f3578063debe1eab14610520578063ea4d3c9b14610540578063f2fde38b1461057457600080fd5b8063a3d75e09116100d1578063a3d75e091461044f578063a6a509be14610488578063c4623ea11461049e578063cd6dc687146104d357600080fd5b80639ba06275146103d9578063a1ca780b1461040f578063a38406a31461042f57600080fd5b8063724af42311610164578063886f11951161013e578063886f11951461034c5780638da5cb5b146103805780639104c3191461039e5780639b4e4634146103c657600080fd5b8063724af423146102e357806374cdd7981461030357806384d810621461033757600080fd5b8063595c6a67116101a0578063595c6a671461025a5780635ac86ab71461026f5780635c975abb146102af578063715018a6146102ce57600080fd5b8063136439dd146101c7578063292b7b2b146101e95780632eae418c1461023a575b600080fd5b3480156101d357600080fd5b506101e76101e2366004611b7e565b610625565b005b3480156101f557600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561024657600080fd5b506101e7610255366004611bac565b6106fc565b34801561026657600080fd5b506101e761094f565b34801561027b57600080fd5b5061029f61028a366004611bfd565b606654600160ff9092169190911b9081161490565b6040519015158152602001610231565b3480156102bb57600080fd5b506066545b604051908152602001610231565b3480156102da57600080fd5b506101e7610a01565b3480156102ef57600080fd5b506101e76102fe366004611c20565b610a13565b34801561030f57600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561034357600080fd5b5061021d610b3c565b34801561035857600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561038c57600080fd5b506033546001600160a01b031661021d565b3480156103aa57600080fd5b5061021d73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6101e76103d4366004611ca3565b610baf565b3480156103e557600080fd5b5061021d6103f4366004611d1c565b6098602052600090815260409020546001600160a01b031681565b34801561041b57600080fd5b506101e761042a366004611d39565b610c72565b34801561043b57600080fd5b5061021d61044a366004611d1c565b610ec9565b34801561045b57600080fd5b5061046f61046a366004611d1c565b610f9d565b60405167ffffffffffffffff9091168152602001610231565b34801561049457600080fd5b506102c060995481565b3480156104aa57600080fd5b506104be6104b9366004611bac565b611001565b60408051928352602083019190915201610231565b3480156104df57600080fd5b506101e76104ee366004611d6e565b6110a1565b3480156104ff57600080fd5b506102c061050e366004611d1c565b609b6020526000908152604090205481565b34801561052c57600080fd5b506101e761053b366004611d6e565b6111c3565b34801561054c57600080fd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561058057600080fd5b506101e761058f366004611d1c565b61125a565b3480156105a057600080fd5b506102c0609e5481565b3480156105b657600080fd5b5061029f6105c5366004611d1c565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105f157600080fd5b506101e7610600366004611b7e565b6112d3565b34801561061157600080fd5b506102c0610620366004611d9a565b6113eb565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad9190611dd3565b6106ca57604051631d77d47760e21b815260040160405180910390fd5b60665481811681146106ef5760405163c61dca5d60e01b815260040160405180910390fd5b6106f88261146f565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107455760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461078257604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166107a9576040516339b190bb60e11b815260040160405180910390fd5b600081136107ca5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384166000908152609b60205260408120549082908212156108ca5760006107f883611e0b565b90506000818511156108175750806108108186611e27565b925061081e565b5060009150835b600061082a8286611e3a565b6001600160a01b038a166000818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061087b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516108be91815260200190565b60405180910390a25050505b8015610947576001600160a01b03868116600081815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c490744290604401600060405180830381600087803b15801561092e57600080fd5b505af1158015610942573d6000803e3d6000fd5b505050505b505050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190611dd3565b6109f457604051631d77d47760e21b815260040160405180910390fd5b6109ff60001961146f565b565b610a096114ac565b6109ff6000611506565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a5c5760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610a9957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383166000908152609b6020526040812054610abd908390611e62565b90506000811215610ae15760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384166000818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610b2e9084815260200190565b60405180910390a250505050565b6066546000908190600190811603610b675760405163840a48d560e01b815260040160405180910390fd5b336000908152609860205260409020546001600160a01b031615610b9e5760405163031a852160e21b815260040160405180910390fd5b6000610ba8611558565b9250505090565b606654600090600190811603610bd85760405163840a48d560e01b815260040160405180910390fd5b336000908152609860205260409020546001600160a01b031680610c0157610bfe611558565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610c37908b908b908b908b908b90600401611eb2565b6000604051808303818588803b158015610c5057600080fd5b505af1158015610c64573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038084166000908152609860205260409020548491163314610cae576040516312e16d7160e11b815260040160405180910390fd5b610cb66116bd565b6001600160a01b038416610cdd576040516339b190bb60e11b815260040160405180910390fd5b610ceb633b9aca0083611f02565b15610d09576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384166000908152609b602052604081205490811215610d4357604051634b692bcf60e01b815260040160405180910390fd5b60008312610e0a57600080610d588786611716565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf290608401600060405180830381600087803b158015610deb57600080fd5b505af1158015610dff573d6000803e3d6000fd5b505050505050610eb8565b6000610e1f8686610e1a87611e0b565b61185b565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce90606401600060405180830381600087803b158015610e9e57600080fd5b505af1158015610eb2573d6000803e3d6000fd5b50505050505b50610ec3600160c955565b50505050565b6001600160a01b0380821660009081526098602052604081205490911680610f9757610f94836001600160a01b031660001b60405180610940016040528061090e8152602001611fdb61090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052610f799291602001611f54565b60405160208183030381529060405280519060200120611959565b90505b92915050565b6001600160a01b0381166000908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff169282019290925290610ff457670de0b6b3a7640000610ffa565b80602001515b9392505050565b600080336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461104d5760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03851673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461108a57604051632711b74d60e11b815260040160405180910390fd5b6110948684611716565b9150915094509492505050565b600054610100900460ff16158080156110c15750600054600160ff909116105b806110db5750303b1580156110db575060005460ff166001145b6111435760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015611166576000805461ff0019166101001790555b61116f83611506565b6111788261146f565b80156111be576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461120c5760405163f739589b60e01b815260040160405180910390fd5b80609e600082825461121e9190611f71565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a15050565b6112626114ac565b6001600160a01b0381166112c75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161113a565b6112d081611506565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113559190611f84565b6001600160a01b0316336001600160a01b0316146113865760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146113ad5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60006001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461142a57604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383166000908152609b602052604081205412611466576001600160a01b0383166000908152609b6020526040902054610f94565b50600092915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6033546001600160a01b031633146109ff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161113a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060996000815461156990611fa1565b9091555060408051610940810190915261090e8082526000916116089183913391611fdb6020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526115f49291602001611f54565b604051602081830303815290604052611966565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b15801561164c57600080fd5b505af1158015611660573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b600260c9540361170f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161113a565b600260c955565b6000806001600160a01b038416611740576040516339b190bb60e11b815260040160405180910390fd5b60008312156117625760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384166000908152609b602052604081205484916117878383611e3a565b6001600160a01b0388166000818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117d89086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161181b91815260200190565b60405180910390a26000811361183a5760008094509450505050611854565b60008212611848578161184b565b60005b86945094505050505b9250929050565b6000806118688385611e27565b9050600061187586610f9d565b9050600061188e67ffffffffffffffff83168488611a6a565b9050600061189c8284611fba565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f166000818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b6000610f94838330611b54565b6000834710156119b85760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161113a565b8151600003611a095760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161113a565b8282516020840186f590506001600160a01b038116610ffa5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161113a565b6000808060001985870985870292508281108382030391505080600003611aa457838281611a9a57611a9a611eec565b0492505050610ffa565b808411611aeb5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161113a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b600060208284031215611b9057600080fd5b5035919050565b6001600160a01b03811681146112d057600080fd5b60008060008060808587031215611bc257600080fd5b8435611bcd81611b97565b93506020850135611bdd81611b97565b92506040850135611bed81611b97565b9396929550929360600135925050565b600060208284031215611c0f57600080fd5b813560ff81168114610ffa57600080fd5b600080600060608486031215611c3557600080fd5b8335611c4081611b97565b92506020840135611c5081611b97565b929592945050506040919091013590565b60008083601f840112611c7357600080fd5b50813567ffffffffffffffff811115611c8b57600080fd5b60208301915083602082850101111561185457600080fd5b600080600080600060608688031215611cbb57600080fd5b853567ffffffffffffffff811115611cd257600080fd5b611cde88828901611c61565b909650945050602086013567ffffffffffffffff811115611cfe57600080fd5b611d0a88828901611c61565b96999598509660400135949350505050565b600060208284031215611d2e57600080fd5b8135610ffa81611b97565b600080600060608486031215611d4e57600080fd5b8335611d5981611b97565b95602085013595506040909401359392505050565b60008060408385031215611d8157600080fd5b8235611d8c81611b97565b946020939093013593505050565b60008060408385031215611dad57600080fd5b8235611db881611b97565b91506020830135611dc881611b97565b809150509250929050565b600060208284031215611de557600080fd5b81518015158114610ffa57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b8201611e2057611e20611df5565b5060000390565b81810381811115610f9757610f97611df5565b8082018281126000831280158216821582161715611e5a57611e5a611df5565b505092915050565b8181036000831280158383131683831282161715611e8257611e82611df5565b5092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b606081526000611ec6606083018789611e89565b8281036020840152611ed9818688611e89565b9150508260408301529695505050505050565b634e487b7160e01b600052601260045260246000fd5b600082611f1f57634e487b7160e01b600052601260045260246000fd5b500790565b6000815160005b81811015611f455760208185018101518683015201611f2b565b50600093019283525090919050565b6000611f69611f638386611f24565b84611f24565b949350505050565b80820180821115610f9757610f97611df5565b600060208284031215611f9657600080fd5b8151610ffa81611b97565b600060018201611fb357611fb3611df5565b5060010190565b67ffffffffffffffff8281168282160390811115610f9757610f97611df556fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220299baee9160654e593be1d006f79805fe392e5d20cd6fbaddffbbd25291e717c64736f6c634300081b0033", } // ContractEigenPodManagerABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/IRewardsCoordinator/binding.go b/contracts/bindings/IRewardsCoordinator/binding.go index 653170d00..e420ae4c7 100644 --- a/contracts/bindings/IRewardsCoordinator/binding.go +++ b/contracts/bindings/IRewardsCoordinator/binding.go @@ -91,9 +91,15 @@ type IRewardsCoordinatorTypesTokenTreeMerkleLeaf struct { CumulativeEarnings *big.Int } +// OperatorSet is an auto generated low-level Go binding around an user-defined struct. +type OperatorSet struct { + Avs common.Address + Id uint32 +} + // ContractIRewardsCoordinatorMetaData contains all meta data concerning the ContractIRewardsCoordinator contract. var ContractIRewardsCoordinatorMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"CALCULATION_INTERVAL_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GENESIS_REWARDS_TIMESTAMP\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_FUTURE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_RETROACTIVE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_REWARDS_DURATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activationDelay\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateEarnerLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"calculateTokenLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"checkClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorDirectedAVSRewardsSubmission\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllEarners\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeClaimed\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currRewardsCalculationEndTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"defaultOperatorSplitBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCurrentClaimableDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootAtIndex\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootsLength\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_defaultSplitBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"processClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"processClaims\",\"inputs\":[{\"name\":\"claims\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim[]\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setActivationDelay\",\"inputs\":[{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setDefaultOperatorSplit\",\"inputs\":[{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_newValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsUpdater\",\"inputs\":[{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ActivationDelaySet\",\"inputs\":[{\"name\":\"oldActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"newActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ClaimerForSet\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldClaimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultOperatorSplitBipsSet\",\"inputs\":[{\"name\":\"oldDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootDisabled\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootSubmitted\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedAVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorPISplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsClaimed\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"claimedAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsForAllSubmitterSet\",\"inputs\":[{\"name\":\"rewardsForAllSubmitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"},{\"name\":\"newValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllCreated\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllEarnersCreated\",\"inputs\":[{\"name\":\"tokenHopper\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsUpdaterSet\",\"inputs\":[{\"name\":\"oldRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AmountExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AmountIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DurationExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EarningsNotGreaterThanClaimed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCalculationIntervalSecondsRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidClaimProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDurationRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarnerLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGenesisRewardsTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRootIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStartTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTokenLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewRootMustBeForNewCalculatedPeriod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreviousSplitPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RewardsEndTimestampNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootAlreadyActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootNotActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SplitExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SubmissionNotRetroactive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedCaller\",\"inputs\":[]}]", + ABI: "[{\"type\":\"function\",\"name\":\"CALCULATION_INTERVAL_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GENESIS_REWARDS_TIMESTAMP\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_FUTURE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_RETROACTIVE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_REWARDS_DURATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activationDelay\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateEarnerLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"calculateTokenLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"checkClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorDirectedAVSRewardsSubmission\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorDirectedOperatorSetRewardsSubmission\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllEarners\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeClaimed\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currRewardsCalculationEndTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"defaultOperatorSplitBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCurrentClaimableDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootAtIndex\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootsLength\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_defaultSplitBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"processClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"processClaims\",\"inputs\":[{\"name\":\"claims\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim[]\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setActivationDelay\",\"inputs\":[{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setDefaultOperatorSplit\",\"inputs\":[{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorSetSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_newValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsUpdater\",\"inputs\":[{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ActivationDelaySet\",\"inputs\":[{\"name\":\"oldActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"newActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ClaimerForSet\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldClaimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultOperatorSplitBipsSet\",\"inputs\":[{\"name\":\"oldDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootDisabled\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootSubmitted\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedAVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedOperatorSetRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorPISplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorSetSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorSetSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsClaimed\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"claimedAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsForAllSubmitterSet\",\"inputs\":[{\"name\":\"rewardsForAllSubmitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"},{\"name\":\"newValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllCreated\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllEarnersCreated\",\"inputs\":[{\"name\":\"tokenHopper\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsUpdaterSet\",\"inputs\":[{\"name\":\"oldRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AmountExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AmountIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DurationExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EarningsNotGreaterThanClaimed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCalculationIntervalSecondsRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidClaimProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDurationRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarnerLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGenesisRewardsTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRootIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStartTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTokenLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewRootMustBeForNewCalculatedPeriod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreviousSplitPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RewardsEndTimestampNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootAlreadyActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootNotActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SplitExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SubmissionNotRetroactive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedCaller\",\"inputs\":[]}]", } // ContractIRewardsCoordinatorABI is the input ABI used to generate the binding from. @@ -147,6 +153,8 @@ type ContractIRewardsCoordinatorCalls interface { GetOperatorPISplit(opts *bind.CallOpts, operator common.Address) (uint16, error) + GetOperatorSetSplit(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) (uint16, error) + GetRootIndexFromHash(opts *bind.CallOpts, rootHash [32]byte) (uint32, error) RewardsUpdater(opts *bind.CallOpts) (common.Address, error) @@ -158,6 +166,8 @@ type ContractIRewardsCoordinatorTransacts interface { CreateOperatorDirectedAVSRewardsSubmission(opts *bind.TransactOpts, avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) + CreateOperatorDirectedOperatorSetRewardsSubmission(opts *bind.TransactOpts, operatorSet OperatorSet, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) + CreateRewardsForAllEarners(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) CreateRewardsForAllSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) @@ -182,6 +192,8 @@ type ContractIRewardsCoordinatorTransacts interface { SetOperatorPISplit(opts *bind.TransactOpts, operator common.Address, split uint16) (*types.Transaction, error) + SetOperatorSetSplit(opts *bind.TransactOpts, operator common.Address, operatorSet OperatorSet, split uint16) (*types.Transaction, error) + SetRewardsForAllSubmitter(opts *bind.TransactOpts, _submitter common.Address, _newValue bool) (*types.Transaction, error) SetRewardsUpdater(opts *bind.TransactOpts, _rewardsUpdater common.Address) (*types.Transaction, error) @@ -223,10 +235,18 @@ type ContractIRewardsCoordinatorFilters interface { WatchOperatorDirectedAVSRewardsSubmissionCreated(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated, caller []common.Address, avs []common.Address, operatorDirectedRewardsSubmissionHash [][32]byte) (event.Subscription, error) ParseOperatorDirectedAVSRewardsSubmissionCreated(log types.Log) (*ContractIRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated, error) + FilterOperatorDirectedOperatorSetRewardsSubmissionCreated(opts *bind.FilterOpts, caller []common.Address, operatorDirectedRewardsSubmissionHash [][32]byte) (*ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreatedIterator, error) + WatchOperatorDirectedOperatorSetRewardsSubmissionCreated(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreated, caller []common.Address, operatorDirectedRewardsSubmissionHash [][32]byte) (event.Subscription, error) + ParseOperatorDirectedOperatorSetRewardsSubmissionCreated(log types.Log) (*ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreated, error) + FilterOperatorPISplitBipsSet(opts *bind.FilterOpts, caller []common.Address, operator []common.Address) (*ContractIRewardsCoordinatorOperatorPISplitBipsSetIterator, error) WatchOperatorPISplitBipsSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorPISplitBipsSet, caller []common.Address, operator []common.Address) (event.Subscription, error) ParseOperatorPISplitBipsSet(log types.Log) (*ContractIRewardsCoordinatorOperatorPISplitBipsSet, error) + FilterOperatorSetSplitBipsSet(opts *bind.FilterOpts, caller []common.Address, operator []common.Address) (*ContractIRewardsCoordinatorOperatorSetSplitBipsSetIterator, error) + WatchOperatorSetSplitBipsSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorSetSplitBipsSet, caller []common.Address, operator []common.Address) (event.Subscription, error) + ParseOperatorSetSplitBipsSet(log types.Log) (*ContractIRewardsCoordinatorOperatorSetSplitBipsSet, error) + FilterRewardsClaimed(opts *bind.FilterOpts, earner []common.Address, claimer []common.Address, recipient []common.Address) (*ContractIRewardsCoordinatorRewardsClaimedIterator, error) WatchRewardsClaimed(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorRewardsClaimed, earner []common.Address, claimer []common.Address, recipient []common.Address) (event.Subscription, error) ParseRewardsClaimed(log types.Log) (*ContractIRewardsCoordinatorRewardsClaimed, error) @@ -991,6 +1011,37 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) Ge return _ContractIRewardsCoordinator.Contract.GetOperatorPISplit(&_ContractIRewardsCoordinator.CallOpts, operator) } +// GetOperatorSetSplit is a free data retrieval call binding the contract method 0x9de4b35f. +// +// Solidity: function getOperatorSetSplit(address operator, (address,uint32) operatorSet) view returns(uint16) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCaller) GetOperatorSetSplit(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) (uint16, error) { + var out []interface{} + err := _ContractIRewardsCoordinator.contract.Call(opts, &out, "getOperatorSetSplit", operator, operatorSet) + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// GetOperatorSetSplit is a free data retrieval call binding the contract method 0x9de4b35f. +// +// Solidity: function getOperatorSetSplit(address operator, (address,uint32) operatorSet) view returns(uint16) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) GetOperatorSetSplit(operator common.Address, operatorSet OperatorSet) (uint16, error) { + return _ContractIRewardsCoordinator.Contract.GetOperatorSetSplit(&_ContractIRewardsCoordinator.CallOpts, operator, operatorSet) +} + +// GetOperatorSetSplit is a free data retrieval call binding the contract method 0x9de4b35f. +// +// Solidity: function getOperatorSetSplit(address operator, (address,uint32) operatorSet) view returns(uint16) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorCallerSession) GetOperatorSetSplit(operator common.Address, operatorSet OperatorSet) (uint16, error) { + return _ContractIRewardsCoordinator.Contract.GetOperatorSetSplit(&_ContractIRewardsCoordinator.CallOpts, operator, operatorSet) +} + // GetRootIndexFromHash is a free data retrieval call binding the contract method 0xe810ce21. // // Solidity: function getRootIndexFromHash(bytes32 rootHash) view returns(uint32) @@ -1095,6 +1146,27 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession return _ContractIRewardsCoordinator.Contract.CreateOperatorDirectedAVSRewardsSubmission(&_ContractIRewardsCoordinator.TransactOpts, avs, operatorDirectedRewardsSubmissions) } +// CreateOperatorDirectedOperatorSetRewardsSubmission is a paid mutator transaction binding the contract method 0x0ca29899. +// +// Solidity: function createOperatorDirectedOperatorSetRewardsSubmission((address,uint32) operatorSet, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) CreateOperatorDirectedOperatorSetRewardsSubmission(opts *bind.TransactOpts, operatorSet OperatorSet, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "createOperatorDirectedOperatorSetRewardsSubmission", operatorSet, operatorDirectedRewardsSubmissions) +} + +// CreateOperatorDirectedOperatorSetRewardsSubmission is a paid mutator transaction binding the contract method 0x0ca29899. +// +// Solidity: function createOperatorDirectedOperatorSetRewardsSubmission((address,uint32) operatorSet, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) CreateOperatorDirectedOperatorSetRewardsSubmission(operatorSet OperatorSet, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.CreateOperatorDirectedOperatorSetRewardsSubmission(&_ContractIRewardsCoordinator.TransactOpts, operatorSet, operatorDirectedRewardsSubmissions) +} + +// CreateOperatorDirectedOperatorSetRewardsSubmission is a paid mutator transaction binding the contract method 0x0ca29899. +// +// Solidity: function createOperatorDirectedOperatorSetRewardsSubmission((address,uint32) operatorSet, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) CreateOperatorDirectedOperatorSetRewardsSubmission(operatorSet OperatorSet, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.CreateOperatorDirectedOperatorSetRewardsSubmission(&_ContractIRewardsCoordinator.TransactOpts, operatorSet, operatorDirectedRewardsSubmissions) +} + // CreateRewardsForAllEarners is a paid mutator transaction binding the contract method 0xff9f6cce. // // Solidity: function createRewardsForAllEarners(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() @@ -1347,6 +1419,27 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession return _ContractIRewardsCoordinator.Contract.SetOperatorPISplit(&_ContractIRewardsCoordinator.TransactOpts, operator, split) } +// SetOperatorSetSplit is a paid mutator transaction binding the contract method 0xf74e8eac. +// +// Solidity: function setOperatorSetSplit(address operator, (address,uint32) operatorSet, uint16 split) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactor) SetOperatorSetSplit(opts *bind.TransactOpts, operator common.Address, operatorSet OperatorSet, split uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.contract.Transact(opts, "setOperatorSetSplit", operator, operatorSet, split) +} + +// SetOperatorSetSplit is a paid mutator transaction binding the contract method 0xf74e8eac. +// +// Solidity: function setOperatorSetSplit(address operator, (address,uint32) operatorSet, uint16 split) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorSession) SetOperatorSetSplit(operator common.Address, operatorSet OperatorSet, split uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.SetOperatorSetSplit(&_ContractIRewardsCoordinator.TransactOpts, operator, operatorSet, split) +} + +// SetOperatorSetSplit is a paid mutator transaction binding the contract method 0xf74e8eac. +// +// Solidity: function setOperatorSetSplit(address operator, (address,uint32) operatorSet, uint16 split) returns() +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorTransactorSession) SetOperatorSetSplit(operator common.Address, operatorSet OperatorSet, split uint16) (*types.Transaction, error) { + return _ContractIRewardsCoordinator.Contract.SetOperatorSetSplit(&_ContractIRewardsCoordinator.TransactOpts, operator, operatorSet, split) +} + // SetRewardsForAllSubmitter is a paid mutator transaction binding the contract method 0x0eb38345. // // Solidity: function setRewardsForAllSubmitter(address _submitter, bool _newValue) returns() @@ -2641,6 +2734,162 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseOp return event, nil } +// ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreatedIterator is returned from FilterOperatorDirectedOperatorSetRewardsSubmissionCreated and is used to iterate over the raw logs and unpacked data for OperatorDirectedOperatorSetRewardsSubmissionCreated events raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreatedIterator struct { + Event *ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreated represents a OperatorDirectedOperatorSetRewardsSubmissionCreated event raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreated struct { + Caller common.Address + OperatorDirectedRewardsSubmissionHash [32]byte + OperatorSet OperatorSet + SubmissionNonce *big.Int + OperatorDirectedRewardsSubmission IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorDirectedOperatorSetRewardsSubmissionCreated is a free log retrieval operation binding the contract event 0xfff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc756. +// +// Solidity: event OperatorDirectedOperatorSetRewardsSubmissionCreated(address indexed caller, bytes32 indexed operatorDirectedRewardsSubmissionHash, (address,uint32) operatorSet, uint256 submissionNonce, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string) operatorDirectedRewardsSubmission) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) FilterOperatorDirectedOperatorSetRewardsSubmissionCreated(opts *bind.FilterOpts, caller []common.Address, operatorDirectedRewardsSubmissionHash [][32]byte) (*ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreatedIterator, error) { + + var callerRule []interface{} + for _, callerItem := range caller { + callerRule = append(callerRule, callerItem) + } + var operatorDirectedRewardsSubmissionHashRule []interface{} + for _, operatorDirectedRewardsSubmissionHashItem := range operatorDirectedRewardsSubmissionHash { + operatorDirectedRewardsSubmissionHashRule = append(operatorDirectedRewardsSubmissionHashRule, operatorDirectedRewardsSubmissionHashItem) + } + + logs, sub, err := _ContractIRewardsCoordinator.contract.FilterLogs(opts, "OperatorDirectedOperatorSetRewardsSubmissionCreated", callerRule, operatorDirectedRewardsSubmissionHashRule) + if err != nil { + return nil, err + } + return &ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreatedIterator{contract: _ContractIRewardsCoordinator.contract, event: "OperatorDirectedOperatorSetRewardsSubmissionCreated", logs: logs, sub: sub}, nil +} + +// WatchOperatorDirectedOperatorSetRewardsSubmissionCreated is a free log subscription operation binding the contract event 0xfff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc756. +// +// Solidity: event OperatorDirectedOperatorSetRewardsSubmissionCreated(address indexed caller, bytes32 indexed operatorDirectedRewardsSubmissionHash, (address,uint32) operatorSet, uint256 submissionNonce, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string) operatorDirectedRewardsSubmission) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) WatchOperatorDirectedOperatorSetRewardsSubmissionCreated(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreated, caller []common.Address, operatorDirectedRewardsSubmissionHash [][32]byte) (event.Subscription, error) { + + var callerRule []interface{} + for _, callerItem := range caller { + callerRule = append(callerRule, callerItem) + } + var operatorDirectedRewardsSubmissionHashRule []interface{} + for _, operatorDirectedRewardsSubmissionHashItem := range operatorDirectedRewardsSubmissionHash { + operatorDirectedRewardsSubmissionHashRule = append(operatorDirectedRewardsSubmissionHashRule, operatorDirectedRewardsSubmissionHashItem) + } + + logs, sub, err := _ContractIRewardsCoordinator.contract.WatchLogs(opts, "OperatorDirectedOperatorSetRewardsSubmissionCreated", callerRule, operatorDirectedRewardsSubmissionHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreated) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorDirectedOperatorSetRewardsSubmissionCreated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorDirectedOperatorSetRewardsSubmissionCreated is a log parse operation binding the contract event 0xfff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc756. +// +// Solidity: event OperatorDirectedOperatorSetRewardsSubmissionCreated(address indexed caller, bytes32 indexed operatorDirectedRewardsSubmissionHash, (address,uint32) operatorSet, uint256 submissionNonce, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string) operatorDirectedRewardsSubmission) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseOperatorDirectedOperatorSetRewardsSubmissionCreated(log types.Log) (*ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreated, error) { + event := new(ContractIRewardsCoordinatorOperatorDirectedOperatorSetRewardsSubmissionCreated) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorDirectedOperatorSetRewardsSubmissionCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ContractIRewardsCoordinatorOperatorPISplitBipsSetIterator is returned from FilterOperatorPISplitBipsSet and is used to iterate over the raw logs and unpacked data for OperatorPISplitBipsSet events raised by the ContractIRewardsCoordinator contract. type ContractIRewardsCoordinatorOperatorPISplitBipsSetIterator struct { Event *ContractIRewardsCoordinatorOperatorPISplitBipsSet // Event containing the contract specifics and raw log @@ -2797,6 +3046,163 @@ func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseOp return event, nil } +// ContractIRewardsCoordinatorOperatorSetSplitBipsSetIterator is returned from FilterOperatorSetSplitBipsSet and is used to iterate over the raw logs and unpacked data for OperatorSetSplitBipsSet events raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorOperatorSetSplitBipsSetIterator struct { + Event *ContractIRewardsCoordinatorOperatorSetSplitBipsSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContractIRewardsCoordinatorOperatorSetSplitBipsSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContractIRewardsCoordinatorOperatorSetSplitBipsSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContractIRewardsCoordinatorOperatorSetSplitBipsSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContractIRewardsCoordinatorOperatorSetSplitBipsSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIRewardsCoordinatorOperatorSetSplitBipsSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIRewardsCoordinatorOperatorSetSplitBipsSet represents a OperatorSetSplitBipsSet event raised by the ContractIRewardsCoordinator contract. +type ContractIRewardsCoordinatorOperatorSetSplitBipsSet struct { + Caller common.Address + Operator common.Address + OperatorSet OperatorSet + ActivatedAt uint32 + OldOperatorSetSplitBips uint16 + NewOperatorSetSplitBips uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSetSplitBipsSet is a free log retrieval operation binding the contract event 0x14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f1. +// +// Solidity: event OperatorSetSplitBipsSet(address indexed caller, address indexed operator, (address,uint32) operatorSet, uint32 activatedAt, uint16 oldOperatorSetSplitBips, uint16 newOperatorSetSplitBips) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) FilterOperatorSetSplitBipsSet(opts *bind.FilterOpts, caller []common.Address, operator []common.Address) (*ContractIRewardsCoordinatorOperatorSetSplitBipsSetIterator, error) { + + var callerRule []interface{} + for _, callerItem := range caller { + callerRule = append(callerRule, callerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractIRewardsCoordinator.contract.FilterLogs(opts, "OperatorSetSplitBipsSet", callerRule, operatorRule) + if err != nil { + return nil, err + } + return &ContractIRewardsCoordinatorOperatorSetSplitBipsSetIterator{contract: _ContractIRewardsCoordinator.contract, event: "OperatorSetSplitBipsSet", logs: logs, sub: sub}, nil +} + +// WatchOperatorSetSplitBipsSet is a free log subscription operation binding the contract event 0x14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f1. +// +// Solidity: event OperatorSetSplitBipsSet(address indexed caller, address indexed operator, (address,uint32) operatorSet, uint32 activatedAt, uint16 oldOperatorSetSplitBips, uint16 newOperatorSetSplitBips) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) WatchOperatorSetSplitBipsSet(opts *bind.WatchOpts, sink chan<- *ContractIRewardsCoordinatorOperatorSetSplitBipsSet, caller []common.Address, operator []common.Address) (event.Subscription, error) { + + var callerRule []interface{} + for _, callerItem := range caller { + callerRule = append(callerRule, callerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _ContractIRewardsCoordinator.contract.WatchLogs(opts, "OperatorSetSplitBipsSet", callerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContractIRewardsCoordinatorOperatorSetSplitBipsSet) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorSetSplitBipsSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSetSplitBipsSet is a log parse operation binding the contract event 0x14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f1. +// +// Solidity: event OperatorSetSplitBipsSet(address indexed caller, address indexed operator, (address,uint32) operatorSet, uint32 activatedAt, uint16 oldOperatorSetSplitBips, uint16 newOperatorSetSplitBips) +func (_ContractIRewardsCoordinator *ContractIRewardsCoordinatorFilterer) ParseOperatorSetSplitBipsSet(log types.Log) (*ContractIRewardsCoordinatorOperatorSetSplitBipsSet, error) { + event := new(ContractIRewardsCoordinatorOperatorSetSplitBipsSet) + if err := _ContractIRewardsCoordinator.contract.UnpackLog(event, "OperatorSetSplitBipsSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ContractIRewardsCoordinatorRewardsClaimedIterator is returned from FilterRewardsClaimed and is used to iterate over the raw logs and unpacked data for RewardsClaimed events raised by the ContractIRewardsCoordinator contract. type ContractIRewardsCoordinatorRewardsClaimedIterator struct { Event *ContractIRewardsCoordinatorRewardsClaimed // Event containing the contract specifics and raw log diff --git a/contracts/bindings/PermissionController/binding.go b/contracts/bindings/PermissionController/binding.go index ba96d83c2..5ac57f9d7 100644 --- a/contracts/bindings/PermissionController/binding.go +++ b/contracts/bindings/PermissionController/binding.go @@ -32,7 +32,7 @@ var ( // ContractPermissionControllerMetaData contains all meta data concerning the ContractPermissionController contract. var ContractPermissionControllerMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"acceptAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addPendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"canCall\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAdmins\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAppointeePermissions\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAppointees\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingAdmins\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isPendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pendingAdmin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeAppointee\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removePendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAppointee\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AdminSet\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AppointeeRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":false,\"internalType\":\"bytes4\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AppointeeSet\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":false,\"internalType\":\"bytes4\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PendingAdminAdded\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PendingAdminRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AdminAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminNotPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AppointeeAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AppointeeNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotHaveZeroAdmins\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAdmin\",\"inputs\":[]}]", - Bin: "0x6080604052348015600e575f5ffd5b5060156019565b60d3565b5f54610100900460ff161560835760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161460d1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610f40806100e05f395ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101b0578063df595cb8146101c3578063eb5a4e87146101d6578063fddbdefd146101e9575f5ffd5b80639100674514610167578063950d806e1461018a578063ad5f22101461019d575f5ffd5b806306641201146100cf578063268959e5146100e45780634f906cf9146100f7578063628806ef1461010a5780636bddfa1f1461011d578063882a3b3814610146575b5f5ffd5b6100e26100dd366004610cfa565b6101fc565b005b6100e26100f2366004610d4b565b61031d565b6100e2610105366004610d4b565b6103f8565b6100e2610118366004610d7c565b61049b565b61013061012b366004610d7c565b610529565b60405161013d9190610dd8565b60405180910390f35b610159610154366004610d4b565b610552565b60405161013d929190610dea565b61017a610175366004610d4b565b6106b3565b604051901515815260200161013d565b6100e2610198366004610cfa565b610723565b6101306101ab366004610d7c565b610834565b61017a6101be366004610d4b565b6108da565b61017a6101d1366004610cfa565b6108fb565b6100e26101e4366004610d4b565b610950565b6101306101f7366004610e4c565b610a1e565b8361020781336106b3565b61022457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102468585610a5c565b6001600160a01b0387165f908152600484016020526040902090915061026c9082610a89565b6102895760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102ac9082610aa0565b505f81815260058301602052604090206102c69087610aab565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161030c929190610e8c565b60405180910390a350505050505050565b8161032881336106b3565b61034557604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061036c82610abf565b1161038a576040516310ce892b60e31b815260040160405180910390fd5b6103948184610aab565b6103b157604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b8161040381336106b3565b61042057604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104418184610aab565b61045e5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7906020016103ea565b6001600160a01b0381165f9081526001602052604090206104bc8133610aab565b6104d95760405163bed8295f60e01b815260040160405180910390fd5b6104e66002820133610ac8565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f90815260016020526040902060609061054c90610adc565b92915050565b6001600160a01b038083165f90815260016020908152604080832093851683526004909301905290812060609182919061058b82610abf565b90505f8167ffffffffffffffff8111156105a7576105a7610eaf565b6040519080825280602002602001820160405280156105d0578160200160208202803683370190505b5090505f8267ffffffffffffffff8111156105ed576105ed610eaf565b604051908082528060200260200182016040528015610616578160200160208202803683370190505b5090505f5b838110156106a5576106496106308683610ae8565b606081901c9160a09190911b6001600160e01b03191690565b84838151811061065b5761065b610ec3565b6020026020010184848151811061067457610674610ec3565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161061b565b509097909650945050505050565b6001600160a01b0382165f9081526001602052604081206106d690600201610abf565b5f036106f857816001600160a01b0316836001600160a01b031614905061054c565b6001600160a01b0383165f90815260016020526040902061071c9060020183610af3565b9392505050565b8361072e81336106b3565b61074b57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f9081526001602052604081209061076d8585610a5c565b6001600160a01b0387165f90815260048401602052604090209091506107939082610a89565b156107b15760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206107d49082610b14565b505f81815260058301602052604090206107ee9087610ac8565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161030c929190610e8c565b6001600160a01b0381165f90815260016020526040902060609061085a90600201610abf565b5f036108b2576040805160018082528183019092525f916020808301908036833701905050905082815f8151811061089457610894610ec3565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f90815260016020526040902061054c90600201610adc565b919050565b6001600160a01b0382165f90815260016020526040812061071c9083610af3565b5f61090685856106b3565b8061094757506109476109198484610a5c565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610a89565b95945050505050565b8161095b81336106b3565b61097857604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260016020526040902061099c6002820184610af3565b156109ba5760405163130160e560e31b815260040160405180910390fd5b6109c48184610ac8565b6109e1576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c906020016103ea565b60605f610a2b8484610a5c565b6001600160a01b0386165f908152600160209081526040808320848452600501909152902090915061094790610adc565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561071c565b5f61071c8383610b1f565b5f61071c836001600160a01b038416610b1f565b5f61054c825490565b5f61071c836001600160a01b038416610c02565b60605f61071c83610c4e565b5f61071c8383610ca7565b6001600160a01b0381165f908152600183016020526040812054151561071c565b5f61071c8383610c02565b5f8181526001830160205260408120548015610bf9575f610b41600183610ed7565b85549091505f90610b5490600190610ed7565b9050818114610bb3575f865f018281548110610b7257610b72610ec3565b905f5260205f200154905080875f018481548110610b9257610b92610ec3565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610bc457610bc4610ef6565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061054c565b5f91505061054c565b5f818152600183016020526040812054610c4757508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561054c565b505f61054c565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610c9b57602002820191905f5260205f20905b815481526020019060010190808311610c87575b50505050509050919050565b5f825f018281548110610cbc57610cbc610ec3565b905f5260205f200154905092915050565b80356001600160a01b03811681146108d5575f5ffd5b80356001600160e01b0319811681146108d5575f5ffd5b5f5f5f5f60808587031215610d0d575f5ffd5b610d1685610ccd565b9350610d2460208601610ccd565b9250610d3260408601610ccd565b9150610d4060608601610ce3565b905092959194509250565b5f5f60408385031215610d5c575f5ffd5b610d6583610ccd565b9150610d7360208401610ccd565b90509250929050565b5f60208284031215610d8c575f5ffd5b61071c82610ccd565b5f8151808452602084019350602083015f5b82811015610dce5781516001600160a01b0316865260209586019590910190600101610da7565b5093949350505050565b602081525f61071c6020830184610d95565b604081525f610dfc6040830185610d95565b82810360208401528084518083526020830191506020860192505f5b81811015610e405783516001600160e01b031916835260209384019390920191600101610e18565b50909695505050505050565b5f5f5f60608486031215610e5e575f5ffd5b610e6784610ccd565b9250610e7560208501610ccd565b9150610e8360408501610ce3565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b8181038181111561054c57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d51174d6b3c524ff4f2a28349f859cd925e5fb8f0c1cd6c178158e9059cdc26c64736f6c634300081b0033", + Bin: "0x6080604052348015600f57600080fd5b506016601a565b60d7565b600054610100900460ff161560855760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161460d5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610f9f806100e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063910067451161008c578063ad8aca7711610066578063ad8aca77146101b5578063df595cb8146101c8578063eb5a4e87146101db578063fddbdefd146101ee57600080fd5b8063910067451461016c578063950d806e1461018f578063ad5f2210146101a257600080fd5b806306641201146100d4578063268959e5146100e95780634f906cf9146100fc578063628806ef1461010f5780636bddfa1f14610122578063882a3b381461014b575b600080fd5b6100e76100e2366004610d42565b610201565b005b6100e76100f7366004610d96565b610326565b6100e761010a366004610d96565b610402565b6100e761011d366004610dc9565b6104a6565b610135610130366004610dc9565b610535565b6040516101429190610e29565b60405180910390f35b61015e610159366004610d96565b61055f565b604051610142929190610e3c565b61017f61017a366004610d96565b6106c4565b6040519015158152602001610142565b6100e761019d366004610d42565b610737565b6101356101b0366004610dc9565b61084c565b61017f6101c3366004610d96565b6108f7565b61017f6101d6366004610d42565b610919565b6100e76101e9366004610d96565b610970565b6101356101fc366004610ea0565b610a3f565b8361020c81336106c4565b61022957604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03851660009081526001602052604081209061024c8585610a7f565b6001600160a01b038716600090815260048401602052604090209091506102739082610aac565b6102905760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b038616600090815260048301602052604090206102b49082610ac4565b50600081815260058301602052604090206102cf9087610ad0565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c68787604051610315929190610ee3565b60405180910390a350505050505050565b8161033181336106c4565b61034e57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03831660009081526001602081905260409091206002019061037682610ae5565b11610394576040516310ce892b60e31b815260040160405180910390fd5b61039e8184610ad0565b6103bb57604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b8161040d81336106c4565b61042a57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b038316600090815260016020526040902061044c8184610ad0565b6104695760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7906020016103f4565b6001600160a01b03811660009081526001602052604090206104c88133610ad0565b6104e55760405163bed8295f60e01b815260040160405180910390fd5b6104f26002820133610aef565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b038116600090815260016020526040902060609061055990610b04565b92915050565b6001600160a01b03808316600090815260016020908152604080832093851683526004909301905290812060609182919061059982610ae5565b905060008167ffffffffffffffff8111156105b6576105b6610f06565b6040519080825280602002602001820160405280156105df578160200160208202803683370190505b50905060008267ffffffffffffffff8111156105fd576105fd610f06565b604051908082528060200260200182016040528015610626578160200160208202803683370190505b50905060005b838110156106b65761065a6106418683610b11565b606081901c9160a09190911b6001600160e01b03191690565b84838151811061066c5761066c610f1c565b6020026020010184848151811061068557610685610f1c565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161062c565b509097909650945050505050565b6001600160a01b03821660009081526001602052604081206106e890600201610ae5565b60000361070b57816001600160a01b0316836001600160a01b0316149050610559565b6001600160a01b03831660009081526001602052604090206107309060020183610b1d565b9392505050565b8361074281336106c4565b61075f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385166000908152600160205260408120906107828585610a7f565b6001600160a01b038716600090815260048401602052604090209091506107a99082610aac565b156107c75760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b038616600090815260048301602052604090206107eb9082610b3f565b50600081815260058301602052604090206108069087610aef565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc01698787604051610315929190610ee3565b6001600160a01b038116600090815260016020526040902060609061087390600201610ae5565b6000036108ce576040805160018082528183019092526000916020808301908036833701905050905082816000815181106108b0576108b0610f1c565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b038216600090815260016020526040902061055990600201610b04565b919050565b6001600160a01b03821660009081526001602052604081206107309083610b1d565b600061092585856106c4565b8061096757506109676109388484610a7f565b6001600160a01b038088166000908152600160209081526040808320938a168352600490930190522090610aac565b95945050505050565b8161097b81336106c4565b61099857604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03831660009081526001602052604090206109bd6002820184610b1d565b156109db5760405163130160e560e31b815260040160405180910390fd5b6109e58184610aef565b610a02576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c906020016103f4565b60606000610a4d8484610a7f565b6001600160a01b0386166000908152600160209081526040808320848452600501909152902090915061096790610b04565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b60008181526001830160205260408120541515610730565b60006107308383610b4b565b6000610730836001600160a01b038416610b4b565b6000610559825490565b6000610730836001600160a01b038416610c3e565b6060600061073083610c8d565b60006107308383610ce9565b6001600160a01b03811660009081526001830160205260408120541515610730565b60006107308383610c3e565b60008181526001830160205260408120548015610c34576000610b6f600183610f32565b8554909150600090610b8390600190610f32565b9050818114610be8576000866000018281548110610ba357610ba3610f1c565b9060005260206000200154905080876000018481548110610bc657610bc6610f1c565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610bf957610bf9610f53565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610559565b6000915050610559565b6000818152600183016020526040812054610c8557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610559565b506000610559565b606081600001805480602002602001604051908101604052809291908181526020018280548015610cdd57602002820191906000526020600020905b815481526020019060010190808311610cc9575b50505050509050919050565b6000826000018281548110610d0057610d00610f1c565b9060005260206000200154905092915050565b80356001600160a01b03811681146108f257600080fd5b80356001600160e01b0319811681146108f257600080fd5b60008060008060808587031215610d5857600080fd5b610d6185610d13565b9350610d6f60208601610d13565b9250610d7d60408601610d13565b9150610d8b60608601610d2a565b905092959194509250565b60008060408385031215610da957600080fd5b610db283610d13565b9150610dc060208401610d13565b90509250929050565b600060208284031215610ddb57600080fd5b61073082610d13565b600081518084526020840193506020830160005b82811015610e1f5781516001600160a01b0316865260209586019590910190600101610df8565b5093949350505050565b6020815260006107306020830184610de4565b604081526000610e4f6040830185610de4565b828103602084015280845180835260208301915060208601925060005b81811015610e945783516001600160e01b031916835260209384019390920191600101610e6c565b50909695505050505050565b600080600060608486031215610eb557600080fd5b610ebe84610d13565b9250610ecc60208501610d13565b9150610eda60408501610d2a565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8181038181111561055957634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea264697066735822122056e8e91f548755cdc46acd1d344e6c21b75342d96b93404719a2b8fe22872ff764736f6c634300081b0033", } // ContractPermissionControllerABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/StrategyManager/binding.go b/contracts/bindings/StrategyManager/binding.go index e96d4c723..d0f4de39f 100644 --- a/contracts/bindings/StrategyManager/binding.go +++ b/contracts/bindings/StrategyManager/binding.go @@ -31,8 +31,8 @@ var ( // ContractStrategyManagerMetaData contains all meta data concerning the ContractStrategyManager contract. var ContractStrategyManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_BURN_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEPOSIT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addStrategiesToDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateStrategyDepositDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositIntoStrategy\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"depositedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositIntoStrategyWithSignature\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"depositedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDeposits\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"addedSharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyWhitelister\",\"inputs\":[{\"name\":\"newStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyListLength\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyIsWhitelistedForDeposit\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"whitelisted\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWhitelister\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BurnableSharesDecreased\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableSharesIncreased\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyWhitelisterChanged\",\"inputs\":[{\"name\":\"previousAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxStrategiesExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyWhitelister\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountTooHigh\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StakerAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotFound\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]}]", - Bin: "0x610100604052348015610010575f5ffd5b5060405161286038038061286083398101604081905261002f916101ed565b81816001600160a01b038116610058576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0524660c052610108604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b60e05261011361011a565b5050610225565b5f54610100900460ff16156101855760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146101d4575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ea575f5ffd5b50565b5f5f604083850312156101fe575f5ffd5b8251610209816101d6565b602084015190925061021a816101d6565b809150509250929050565b60805160a05160c05160e0516125d06102905f395f6112ef01525f61122f01525f81816104c50152818161076201528181610bfb01528181610f99015281816110b401526116d301525f81816103720152818161057101528181610a06015261131301526125d05ff3fe608060405234801561000f575f5ffd5b50600436106101fd575f3560e01c80638da5cb5b11610114578063de44acb6116100a9578063f2fde38b11610079578063f2fde38b146104fa578063f3b4a0001461050d578063f698da2514610517578063fabc1cbc1461051f578063fe243a1714610532575f5ffd5b8063de44acb61461048d578063debe1eab146104ad578063df5cf723146104c0578063e7a050aa146104e7575f5ffd5b8063b5d8b5b8116100e4578063b5d8b5b81461042c578063c4623ea11461043f578063c665670214610467578063cbc2bd621461047a575f5ffd5b80638da5cb5b146103d457806394f649dd146103e5578063967fc0d2146104065780639ac01d6114610419575f5ffd5b80635ac86ab711610195578063715018a611610165578063715018a614610333578063724af4231461033b5780637ecebe001461034e578063886f11951461036d5780638b8aac3c146103ac575f5ffd5b80635ac86ab7146102c35780635c975abb146102f65780635de08ff2146102fe578063663c1de414610311575f5ffd5b806332e89ace116101d057806332e89ace1461026e57806348825e94146102815780634b6d5d6e146102a8578063595c6a67146102bb575f5ffd5b8063136439dd146102015780631794bb3c146102165780631b3cbdc1146102295780632eae418c1461025b575b5f5ffd5b61021461020f36600461207e565b61055c565b005b6102146102243660046120a9565b610631565b6102486102373660046120e7565b60d46020525f908152604090205481565b6040519081526020015b60405180910390f35b610214610269366004612102565b610757565b61024861027c366004612164565b61080b565b6102487f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b6102146102b63660046120e7565b6108af565b6102146109f1565b6102e66102d136600461225f565b609854600160ff9092169190911b9081161490565b6040519015158152602001610252565b609854610248565b61021461030c36600461227f565b610aa0565b6102e661031f3660046120e7565b60d16020525f908152604090205460ff1681565b610214610bdf565b6102146103493660046120a9565b610bf0565b61024861035c3660046120e7565b60ca6020525f908152604090205481565b6103947f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610252565b6102486103ba3660046120e7565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b0316610394565b6103f86103f33660046120e7565b610c44565b604051610252929190612333565b60cb54610394906001600160a01b031681565b61024861042736600461238b565b610dbc565b61021461043a36600461227f565b610e4d565b61045261044d366004612102565b610f8c565b60408051928352602083019190915201610252565b6102146104753660046120e7565b610ff1565b6103946104883660046123ec565b611002565b6104a061049b3660046120e7565b611036565b6040516102529190612416565b6102146104bb3660046123ec565b6110a9565b6103947f000000000000000000000000000000000000000000000000000000000000000081565b6102486104f53660046120a9565b611164565b6102146105083660046120e7565b6111b6565b610394620e16e481565b61024861122c565b61021461052d36600461207e565b611311565b610248610540366004612428565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e2919061245f565b6105ff57604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106245760405163c61dca5d60e01b815260040160405180910390fd5b61062d82611427565b5050565b5f54610100900460ff161580801561064f57505f54600160ff909116105b806106685750303b15801561066857505f5460ff166001145b6106d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156106f1575f805461ff0019166101001790555b6106fa82611427565b61070384611464565b61070c836114b5565b8015610751575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107a05760405163f739589b60e01b815260040160405180910390fd5b604051636ce5768960e11b81526001600160a01b03858116600483015283811660248301526044820183905284169063d9caed12906064015f604051808303815f87803b1580156107ef575f5ffd5b505af1158015610801573d5f5f3e3d5ffd5b5050505050505050565b6098545f9081906001908116036108355760405163840a48d560e01b815260040160405180910390fd5b61083d61151e565b6001600160a01b0385165f90815260ca602052604090205461086e86610867818c8c8c878c610dbc565b8688611577565b6001600160a01b0386165f90815260ca60205260409020600182019055610897868a8a8a6115c9565b9250506108a46001606555565b509695505050505050565b6108b761151e565b6001600160a01b0381165f81815260d4602090815260408083208054939055805193845290830182905290917fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a1816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610981919061247e565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064015f604051808303815f87803b1580156109cd575f5ffd5b505af11580156109df573d5f5f3e3d5ffd5b50505050506109ee6001606555565b50565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a53573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a77919061245f565b610a9457604051631d77d47760e21b815260040160405180910390fd5b610a9e5f19611427565b565b60cb546001600160a01b03163314610acb576040516320ba3ff960e21b815260040160405180910390fd5b805f5b818110156107515760d15f858584818110610aeb57610aeb612499565b9050602002016020810190610b0091906120e7565b6001600160a01b0316815260208101919091526040015f205460ff16610bd757600160d15f868685818110610b3757610b37612499565b9050602002016020810190610b4c91906120e7565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610ba657610ba6612499565b9050602002016020810190610bbb91906120e7565b6040516001600160a01b03909116815260200160405180910390a15b600101610ace565b610be7611737565b610a9e5f611464565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c395760405163f739589b60e01b815260040160405180910390fd5b610751838383611791565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610c7b57610c7b612150565b604051908082528060200260200182016040528015610ca4578160200160208202803683370190505b5090505f5b82811015610d32576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610ce757610ce7612499565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610d1f57610d1f612499565b6020908102919091010152600101610ca9565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610daa57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610d8c575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90610e42906101000160405160208183030381529060405280519060200120611855565b979650505050505050565b60cb546001600160a01b03163314610e78576040516320ba3ff960e21b815260040160405180910390fd5b805f5b818110156107515760d15f858584818110610e9857610e98612499565b9050602002016020810190610ead91906120e7565b6001600160a01b0316815260208101919091526040015f205460ff1615610f84575f60d15f868685818110610ee457610ee4612499565b9050602002016020810190610ef991906120e7565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610f5357610f53612499565b9050602002016020810190610f6891906120e7565b6040516001600160a01b03909116815260200160405180910390a15b600101610e7b565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fd75760405163f739589b60e01b815260040160405180910390fd5b610fe38685878661189b565b915091505b94509492505050565b610ff9611737565b6109ee816114b5565b60ce602052815f5260405f20818154811061101b575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561109d57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161107f575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110f25760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b0382165f90815260d46020526040812080548392906111199084906124c1565b9091555050604080516001600160a01b0384168152602081018390527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a15050565b6098545f90819060019081160361118e5760405163840a48d560e01b815260040160405180910390fd5b61119661151e565b6111a2338686866115c9565b91506111ae6001606555565b509392505050565b6111be611737565b6001600160a01b0381166112235760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106c7565b6109ee81611464565b5f7f000000000000000000000000000000000000000000000000000000000000000046146112ec5750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561136d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611391919061247e565b6001600160a01b0316336001600160a01b0316146113c25760405163794821ff60e01b815260040160405180910390fd5b609854801982198116146113e95760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b6002606554036115705760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106c7565b6002606555565b4281101561159857604051630819bdcd60e01b815260040160405180910390fd5b6115ac6001600160a01b0385168484611a13565b61075157604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff1661160357604051632efd965160e11b815260040160405180910390fd5b6116186001600160a01b038516338786611a71565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af1158015611664573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168891906124da565b91505f5f6116988887898761189b565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015611716575f5ffd5b505af1158015611728573d5f5f3e3d5ffd5b50505050505050949350505050565b6033546001600160a01b03163314610a9e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106c7565b5f815f036117b2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038085165f90815260cd6020908152604080832093871683529290522054808311156117f857604051634b18b19360e01b815260040160405180910390fd5b61180283826124f1565b6001600160a01b038087165f90815260cd6020908152604080832093891683529290529081208290559091508190036118495761183f8585611acb565b600191505061184e565b5f9150505b9392505050565b5f61185e61122c565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f806001600160a01b0386166118c4576040516316f2ccc960e01b815260040160405180910390fd5b825f036118e4576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038087165f90815260cd602090815260408083209388168352929052908120549081900361198a576001600160a01b0387165f90815260ce60209081526040909120541061194c576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038781165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b61199484826124c1565b6001600160a01b038881165f81815260cd602090815260408083208b861680855290835292819020959095558451928352928a169282019290925291820152606081018590527f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969060800160405180910390a196929550919350505050565b5f5f5f611a208585611c49565b90925090505f816004811115611a3857611a38612504565b148015611a565750856001600160a01b0316826001600160a01b0316145b80611a675750611a67868686611c8b565b9695505050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610751908590611d72565b6001600160a01b0382165f90815260ce6020526040812054905b81811015611bdd576001600160a01b038481165f90815260ce6020526040902080549185169183908110611b1b57611b1b612499565b5f918252602090912001546001600160a01b031603611bd5576001600160a01b0384165f90815260ce602052604090208054611b59906001906124f1565b81548110611b6957611b69612499565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611ba557611ba5612499565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611bdd565b600101611ae5565b818103611bfd57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611c2357611c23612518565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f5f8251604103611c7d576020830151604084015160608501515f1a611c7187828585611e4a565b94509450505050611c84565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401611cb392919061255a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611cf19190612572565b5f60405180830381855afa9150503d805f8114611d29576040519150601f19603f3d011682016040523d82523d5f602084013e611d2e565b606091505b5091509150818015611d4257506020815110155b8015611a6757508051630b135d3f60e11b90611d6790830160209081019084016124da565b149695505050505050565b5f611dc6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611f049092919063ffffffff16565b905080515f1480611de6575080806020019051810190611de6919061245f565b611e455760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106c7565b505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611e7f57505f90506003610fe8565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611ed0573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611ef8575f60019250925050610fe8565b965f9650945050505050565b6060611f1284845f85611f1a565b949350505050565b606082471015611f7b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106c7565b5f5f866001600160a01b03168587604051611f969190612572565b5f6040518083038185875af1925050503d805f8114611fd0576040519150601f19603f3d011682016040523d82523d5f602084013e611fd5565b606091505b5091509150610e42878383876060831561204f5782515f03612048576001600160a01b0385163b6120485760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106c7565b5081611f12565b611f1283838151156120645781518083602001fd5b8060405162461bcd60e51b81526004016106c79190612588565b5f6020828403121561208e575f5ffd5b5035919050565b6001600160a01b03811681146109ee575f5ffd5b5f5f5f606084860312156120bb575f5ffd5b83356120c681612095565b925060208401356120d681612095565b929592945050506040919091013590565b5f602082840312156120f7575f5ffd5b813561184e81612095565b5f5f5f5f60808587031215612115575f5ffd5b843561212081612095565b9350602085013561213081612095565b9250604085013561214081612095565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c08789031215612179575f5ffd5b863561218481612095565b9550602087013561219481612095565b94506040870135935060608701356121ab81612095565b92506080870135915060a087013567ffffffffffffffff8111156121cd575f5ffd5b8701601f810189136121dd575f5ffd5b803567ffffffffffffffff8111156121f7576121f7612150565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561222657612226612150565b6040528181528282016020018b101561223d575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f6020828403121561226f575f5ffd5b813560ff8116811461184e575f5ffd5b5f5f60208385031215612290575f5ffd5b823567ffffffffffffffff8111156122a6575f5ffd5b8301601f810185136122b6575f5ffd5b803567ffffffffffffffff8111156122cc575f5ffd5b8560208260051b84010111156122e0575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156123295781516001600160a01b0316865260209586019590910190600101612302565b5093949350505050565b604081525f61234560408301856122f0565b82810360208401528084518083526020830191506020860192505f5b8181101561237f578351835260209384019390920191600101612361565b50909695505050505050565b5f5f5f5f5f5f60c087890312156123a0575f5ffd5b86356123ab81612095565b955060208701356123bb81612095565b945060408701356123cb81612095565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156123fd575f5ffd5b823561240881612095565b946020939093013593505050565b602081525f61184e60208301846122f0565b5f5f60408385031215612439575f5ffd5b823561244481612095565b9150602083013561245481612095565b809150509250929050565b5f6020828403121561246f575f5ffd5b8151801515811461184e575f5ffd5b5f6020828403121561248e575f5ffd5b815161184e81612095565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156124d4576124d46124ad565b92915050565b5f602082840312156124ea575f5ffd5b5051919050565b818103818111156124d4576124d46124ad565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b828152604060208201525f611f12604083018461252c565b5f82518060208501845e5f920191825250919050565b602081525f61184e602083018461252c56fea2646970667358221220b61c058c0762e924331e509b86e67e3798f6c7cf40e82b207636f4f40947b55e64736f6c634300081b0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_BURN_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEPOSIT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addStrategiesToDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateStrategyDepositDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositIntoStrategy\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"depositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositIntoStrategyWithSignature\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"depositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDeposits\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"addedSharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyWhitelister\",\"inputs\":[{\"name\":\"newStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyListLength\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyIsWhitelistedForDeposit\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"whitelisted\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWhitelister\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BurnableSharesDecreased\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableSharesIncreased\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyWhitelisterChanged\",\"inputs\":[{\"name\":\"previousAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxStrategiesExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyWhitelister\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountTooHigh\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StakerAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotFound\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]}]", + Bin: "0x61010060405234801561001157600080fd5b50604051612959380380612959833981016040819052610030916101f2565b81816001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0524660c052610109604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b60e05261011461011b565b505061022c565b600054610100900460ff16156101875760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146101d8576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ef57600080fd5b50565b6000806040838503121561020557600080fd5b8251610210816101da565b6020840151909250610221816101da565b809150509250929050565b60805160a05160c05160e0516126bc61029d6000396000611339015260006112790152600081816104d30152818161077901528181610c2b01528181610fd9015281816110fb015261172501526000818161037f0152818161058001528181610a2d015261135d01526126bc6000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063de44acb6116100ad578063f2fde38b1161007c578063f2fde38b14610508578063f3b4a0001461051b578063f698da2514610525578063fabc1cbc1461052d578063fe243a171461054057600080fd5b8063de44acb61461049b578063debe1eab146104bb578063df5cf723146104ce578063e7a050aa146104f557600080fd5b8063b5d8b5b8116100e9578063b5d8b5b81461043a578063c4623ea11461044d578063c665670214610475578063cbc2bd621461048857600080fd5b80638da5cb5b146103e257806394f649dd146103f3578063967fc0d2146104145780639ac01d611461042757600080fd5b80635ac86ab71161019d578063715018a61161016c578063715018a61461033f578063724af423146103475780637ecebe001461035a578063886f11951461037a5780638b8aac3c146103b957600080fd5b80635ac86ab7146102ce5780635c975abb146103015780635de08ff214610309578063663c1de41461031c57600080fd5b806332e89ace116101d957806332e89ace1461027957806348825e941461028c5780634b6d5d6e146102b3578063595c6a67146102c657600080fd5b8063136439dd1461020b5780631794bb3c146102205780631b3cbdc1146102335780632eae418c14610266575b600080fd5b61021e610219366004612106565b61056b565b005b61021e61022e366004612134565b610642565b610253610241366004612175565b60d46020526000908152604090205481565b6040519081526020015b60405180910390f35b61021e610274366004612192565b61076e565b6102536102873660046121f9565b610827565b6102537f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102c1366004612175565b6108ce565b61021e610a18565b6102f16102dc3660046122fc565b609854600160ff9092169190911b9081161490565b604051901515815260200161025d565b609854610253565b61021e61031736600461231f565b610aca565b6102f161032a366004612175565b60d16020526000908152604090205460ff1681565b61021e610c0e565b61021e610355366004612134565b610c20565b610253610368366004612175565b60ca6020526000908152604090205481565b6103a17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161025d565b6102536103c7366004612175565b6001600160a01b0316600090815260ce602052604090205490565b6033546001600160a01b03166103a1565b610406610401366004612175565b610c74565b60405161025d9291906123db565b60cb546103a1906001600160a01b031681565b610253610435366004612435565b610df4565b61021e61044836600461231f565b610e86565b61046061045b366004612192565b610fcb565b6040805192835260208301919091520161025d565b61021e610483366004612175565b611031565b6103a161049636600461249a565b611042565b6104ae6104a9366004612175565b61107a565b60405161025d91906124c6565b61021e6104c936600461249a565b6110f0565b6103a17f000000000000000000000000000000000000000000000000000000000000000081565b610253610503366004612134565b6111ac565b61021e610516366004612175565b6111ff565b6103a1620e16e481565b610253611275565b61021e61053b366004612106565b61135b565b61025361054e3660046124d9565b60cd60209081526000928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f39190612512565b61061057604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106355760405163c61dca5d60e01b815260040160405180910390fd5b61063e82611473565b5050565b600054610100900460ff16158080156106625750600054600160ff909116105b8061067c5750303b15801561067c575060005460ff166001145b6106e45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610707576000805461ff0019166101001790555b61071082611473565b610719846114b0565b61072283611502565b8015610768576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107b75760405163f739589b60e01b815260040160405180910390fd5b604051636ce5768960e11b81526001600160a01b03858116600483015283811660248301526044820183905284169063d9caed1290606401600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b5050505050505050565b60985460009081906001908116036108525760405163840a48d560e01b815260040160405180910390fd5b61085a61156b565b6001600160a01b038516600090815260ca602052604090205461088c86610885818c8c8c878c610df4565b86886115c4565b6001600160a01b038616600090815260ca602052604090206001820190556108b6868a8a8a611616565b9250506108c36001606555565b509695505050505050565b6108d661156b565b6001600160a01b038116600081815260d4602090815260408083208054939055805193845290830182905290917fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a1816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561097f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a39190612534565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260448101849052606401600060405180830381600087803b1580156109f257600080fd5b505af1158015610a06573d6000803e3d6000fd5b5050505050610a156001606555565b50565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa09190612512565b610abd57604051631d77d47760e21b815260040160405180910390fd5b610ac8600019611473565b565b60cb546001600160a01b03163314610af5576040516320ba3ff960e21b815260040160405180910390fd5b8060005b818110156107685760d16000858584818110610b1757610b17612551565b9050602002016020810190610b2c9190612175565b6001600160a01b0316815260208101919091526040016000205460ff16610c0657600160d16000868685818110610b6557610b65612551565b9050602002016020810190610b7a9190612175565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610bd557610bd5612551565b9050602002016020810190610bea9190612175565b6040516001600160a01b03909116815260200160405180910390a15b600101610af9565b610c1661178e565b610ac860006114b0565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c695760405163f739589b60e01b815260040160405180910390fd5b6107688383836117e8565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610cac57610cac6121e3565b604051908082528060200260200182016040528015610cd5578160200160208202803683370190505b50905060005b82811015610d66576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610d1a57610d1a612551565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610d5357610d53612551565b6020908102919091010152600101610cdb565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610de257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610dc4575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e08101829052600090610e7b9061010001604051602081830303815290604052805190602001206118b1565b979650505050505050565b60cb546001600160a01b03163314610eb1576040516320ba3ff960e21b815260040160405180910390fd5b8060005b818110156107685760d16000858584818110610ed357610ed3612551565b9050602002016020810190610ee89190612175565b6001600160a01b0316815260208101919091526040016000205460ff1615610fc357600060d16000868685818110610f2257610f22612551565b9050602002016020810190610f379190612175565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610f9257610f92612551565b9050602002016020810190610fa79190612175565b6040516001600160a01b03909116815260200160405180910390a15b600101610eb5565b600080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110175760405163f739589b60e01b815260040160405180910390fd5b611023868587866118f8565b915091505b94509492505050565b61103961178e565b610a1581611502565b60ce602052816000526040600020818154811061105e57600080fd5b6000918252602090912001546001600160a01b03169150829050565b6001600160a01b038116600090815260ce60209081526040918290208054835181840281018401909452808452606093928301828280156110e457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110c6575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111395760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b038216600090815260d460205260408120805483929061116190849061257d565b9091555050604080516001600160a01b0384168152602081018390527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a15050565b60985460009081906001908116036111d75760405163840a48d560e01b815260040160405180910390fd5b6111df61156b565b6111eb33868686611616565b91506111f76001606555565b509392505050565b61120761178e565b6001600160a01b03811661126c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106db565b610a15816114b0565b60007f000000000000000000000000000000000000000000000000000000000000000046146113365750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113dd9190612534565b6001600160a01b0316336001600160a01b03161461140e5760405163794821ff60e01b815260040160405180910390fd5b609854801982198116146114355760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b6002606554036115bd5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106db565b6002606555565b428110156115e557604051630819bdcd60e01b815260040160405180910390fd5b6115f96001600160a01b0385168484611a76565b61076857604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b038316600090815260d16020526040812054849060ff1661165157604051632efd965160e11b815260040160405180910390fd5b6116666001600160a01b038516338786611ad7565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af11580156116b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d99190612596565b91506000806116ea888789876118f8565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf290608401600060405180830381600087803b15801561176b57600080fd5b505af115801561177f573d6000803e3d6000fd5b50505050505050949350505050565b6033546001600160a01b03163314610ac85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106db565b60008160000361180b576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b03808516600090815260cd60209081526040808320938716835292905220548083111561185257604051634b18b19360e01b815260040160405180910390fd5b61185c83826125af565b6001600160a01b03808716600090815260cd6020908152604080832093891683529290529081208290559091508190036118a45761189a8585611b31565b60019150506118aa565b60009150505b9392505050565b60006118bb611275565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b6000806001600160a01b038616611922576040516316f2ccc960e01b815260040160405180910390fd5b82600003611943576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b03808716600090815260cd60209081526040808320938816835292905290812054908190036119ec576001600160a01b038716600090815260ce6020908152604090912054106119ad576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b03878116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b6119f6848261257d565b6001600160a01b03888116600081815260cd602090815260408083208b861680855290835292819020959095558451928352928a169282019290925291820152606081018590527f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969060800160405180910390a196929550919350505050565b6000806000611a858585611cba565b90925090506000816004811115611a9e57611a9e6125c2565b148015611abc5750856001600160a01b0316826001600160a01b0316145b80611acd5750611acd868686611cff565b9695505050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610768908590611deb565b6001600160a01b038216600090815260ce6020526040812054905b81811015611c4b576001600160a01b03848116600090815260ce6020526040902080549185169183908110611b8357611b83612551565b6000918252602090912001546001600160a01b031603611c43576001600160a01b038416600090815260ce602052604090208054611bc3906001906125af565b81548110611bd357611bd3612551565b60009182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611c1057611c10612551565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611c4b565b600101611b4c565b818103611c6b57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b038416600090815260ce60205260409020805480611c9257611c926125d8565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604103611cf05760208301516040840151606085015160001a611ce487828585611ec5565b94509450505050611cf8565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401611d2992919061263e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611d679190612657565b600060405180830381855afa9150503d8060008114611da2576040519150601f19603f3d011682016040523d82523d6000602084013e611da7565b606091505b5091509150818015611dbb57506020815110155b8015611acd57508051630b135d3f60e11b90611de09083016020908101908401612596565b149695505050505050565b6000611e40826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611f869092919063ffffffff16565b9050805160001480611e61575080806020019051810190611e619190612512565b611ec05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106db565b505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611efc5750600090506003611028565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611f50573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611f7957600060019250925050611028565b9660009650945050505050565b6060611f958484600085611f9d565b949350505050565b606082471015611ffe5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106db565b600080866001600160a01b0316858760405161201a9190612657565b60006040518083038185875af1925050503d8060008114612057576040519150601f19603f3d011682016040523d82523d6000602084013e61205c565b606091505b5091509150610e7b87838387606083156120d75782516000036120d0576001600160a01b0385163b6120d05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106db565b5081611f95565b611f9583838151156120ec5781518083602001fd5b8060405162461bcd60e51b81526004016106db9190612673565b60006020828403121561211857600080fd5b5035919050565b6001600160a01b0381168114610a1557600080fd5b60008060006060848603121561214957600080fd5b83356121548161211f565b925060208401356121648161211f565b929592945050506040919091013590565b60006020828403121561218757600080fd5b81356118aa8161211f565b600080600080608085870312156121a857600080fd5b84356121b38161211f565b935060208501356121c38161211f565b925060408501356121d38161211f565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c0878903121561221257600080fd5b863561221d8161211f565b9550602087013561222d8161211f565b94506040870135935060608701356122448161211f565b92506080870135915060a087013567ffffffffffffffff81111561226757600080fd5b8701601f8101891361227857600080fd5b803567ffffffffffffffff811115612292576122926121e3565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156122c1576122c16121e3565b6040528181528282016020018b10156122d957600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b60006020828403121561230e57600080fd5b813560ff811681146118aa57600080fd5b6000806020838503121561233257600080fd5b823567ffffffffffffffff81111561234957600080fd5b8301601f8101851361235a57600080fd5b803567ffffffffffffffff81111561237157600080fd5b8560208260051b840101111561238657600080fd5b6020919091019590945092505050565b600081518084526020840193506020830160005b828110156123d15781516001600160a01b03168652602095860195909101906001016123aa565b5093949350505050565b6040815260006123ee6040830185612396565b828103602084015280845180835260208301915060208601925060005b8181101561242957835183526020938401939092019160010161240b565b50909695505050505050565b60008060008060008060c0878903121561244e57600080fd5b86356124598161211f565b955060208701356124698161211f565b945060408701356124798161211f565b959894975094956060810135955060808101359460a0909101359350915050565b600080604083850312156124ad57600080fd5b82356124b88161211f565b946020939093013593505050565b6020815260006118aa6020830184612396565b600080604083850312156124ec57600080fd5b82356124f78161211f565b915060208301356125078161211f565b809150509250929050565b60006020828403121561252457600080fd5b815180151581146118aa57600080fd5b60006020828403121561254657600080fd5b81516118aa8161211f565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561259057612590612567565b92915050565b6000602082840312156125a857600080fd5b5051919050565b8181038181111561259057612590612567565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60005b838110156126095781810151838201526020016125f1565b50506000910152565b6000815180845261262a8160208601602086016125ee565b601f01601f19169290920160200192915050565b828152604060208201526000611f956040830184612612565b600082516126698184602087016125ee565b9190910192915050565b6020815260006118aa602083018461261256fea2646970667358221220603796bc0f719e7bc94b1668dcd1375dc1c8691dffcb2eea754949370329012f64736f6c634300081b0033", } // ContractStrategyManagerABI is the input ABI used to generate the binding from. @@ -962,42 +962,42 @@ func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) BurnSh // DepositIntoStrategy is a paid mutator transaction binding the contract method 0xe7a050aa. // -// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 depositedShares) +// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 depositShares) func (_ContractStrategyManager *ContractStrategyManagerTransactor) DepositIntoStrategy(opts *bind.TransactOpts, strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) { return _ContractStrategyManager.contract.Transact(opts, "depositIntoStrategy", strategy, token, amount) } // DepositIntoStrategy is a paid mutator transaction binding the contract method 0xe7a050aa. // -// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 depositedShares) +// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 depositShares) func (_ContractStrategyManager *ContractStrategyManagerSession) DepositIntoStrategy(strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) { return _ContractStrategyManager.Contract.DepositIntoStrategy(&_ContractStrategyManager.TransactOpts, strategy, token, amount) } // DepositIntoStrategy is a paid mutator transaction binding the contract method 0xe7a050aa. // -// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 depositedShares) +// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 depositShares) func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) DepositIntoStrategy(strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) { return _ContractStrategyManager.Contract.DepositIntoStrategy(&_ContractStrategyManager.TransactOpts, strategy, token, amount) } // DepositIntoStrategyWithSignature is a paid mutator transaction binding the contract method 0x32e89ace. // -// Solidity: function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes signature) returns(uint256 depositedShares) +// Solidity: function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes signature) returns(uint256 depositShares) func (_ContractStrategyManager *ContractStrategyManagerTransactor) DepositIntoStrategyWithSignature(opts *bind.TransactOpts, strategy common.Address, token common.Address, amount *big.Int, staker common.Address, expiry *big.Int, signature []byte) (*types.Transaction, error) { return _ContractStrategyManager.contract.Transact(opts, "depositIntoStrategyWithSignature", strategy, token, amount, staker, expiry, signature) } // DepositIntoStrategyWithSignature is a paid mutator transaction binding the contract method 0x32e89ace. // -// Solidity: function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes signature) returns(uint256 depositedShares) +// Solidity: function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes signature) returns(uint256 depositShares) func (_ContractStrategyManager *ContractStrategyManagerSession) DepositIntoStrategyWithSignature(strategy common.Address, token common.Address, amount *big.Int, staker common.Address, expiry *big.Int, signature []byte) (*types.Transaction, error) { return _ContractStrategyManager.Contract.DepositIntoStrategyWithSignature(&_ContractStrategyManager.TransactOpts, strategy, token, amount, staker, expiry, signature) } // DepositIntoStrategyWithSignature is a paid mutator transaction binding the contract method 0x32e89ace. // -// Solidity: function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes signature) returns(uint256 depositedShares) +// Solidity: function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes signature) returns(uint256 depositShares) func (_ContractStrategyManager *ContractStrategyManagerTransactorSession) DepositIntoStrategyWithSignature(strategy common.Address, token common.Address, amount *big.Int, staker common.Address, expiry *big.Int, signature []byte) (*types.Transaction, error) { return _ContractStrategyManager.Contract.DepositIntoStrategyWithSignature(&_ContractStrategyManager.TransactOpts, strategy, token, amount, staker, expiry, signature) } diff --git a/contracts/lib/eigenlayer-middleware b/contracts/lib/eigenlayer-middleware index 11b006137..978509927 160000 --- a/contracts/lib/eigenlayer-middleware +++ b/contracts/lib/eigenlayer-middleware @@ -1 +1 @@ -Subproject commit 11b006137db429fed661da5ef01ac2a1927823b6 +Subproject commit 9785099277870df97843b4b88262bfef227663b6 From eadf6af792314afbfe07d2885d9234d7dcbb9878 Mon Sep 17 00:00:00 2001 From: gpabst Date: Mon, 10 Feb 2025 12:36:53 -0500 Subject: [PATCH 2/2] feat: get operator set split --- chainio/clients/elcontracts/reader.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/chainio/clients/elcontracts/reader.go b/chainio/clients/elcontracts/reader.go index 1f46ab3d7..8ff018c14 100644 --- a/chainio/clients/elcontracts/reader.go +++ b/chainio/clients/elcontracts/reader.go @@ -350,6 +350,16 @@ func (r *ChainReader) GetOperatorPISplit( return r.rewardsCoordinator.GetOperatorPISplit(&bind.CallOpts{Context: ctx}, operator) } +func (r *ChainReader) GetOperatorSetSplit( + ctx context.Context, + operator gethcommon.Address, + operatorSet rewardscoordinator.OperatorSet, +) (uint16, error) { + if r.rewardsCoordinator == nil { + return 0, errors.New("RewardsCoordinator contract not provided") + } + return r.rewardsCoordinator.GetOperatorSetSplit(&bind.CallOpts{Context: ctx}, operator, operatorSet) +} func (r *ChainReader) GetAllocatableMagnitude( ctx context.Context,