From 705842444f4969409ace75b9d192055f2db06d82 Mon Sep 17 00:00:00 2001 From: Michael Sun Date: Mon, 12 Aug 2024 16:03:18 -0400 Subject: [PATCH] build: bindings --- pkg/bindings/AVSDirectory/binding.go | 1102 +++++++++++++++--- pkg/bindings/AVSDirectoryStorage/binding.go | 1089 ++++++++++++++--- pkg/bindings/Checkpoints/binding.go | 203 ++++ pkg/bindings/IAVSDirectory/binding.go | 729 +++++++++++- pkg/bindings/MagnitudeCheckpoints/binding.go | 203 ++++ pkg/bindings/RewardsCoordinator/binding.go | 2 +- 6 files changed, 2950 insertions(+), 378 deletions(-) create mode 100644 pkg/bindings/Checkpoints/binding.go create mode 100644 pkg/bindings/MagnitudeCheckpoints/binding.go diff --git a/pkg/bindings/AVSDirectory/binding.go b/pkg/bindings/AVSDirectory/binding.go index 3930e2d0e..b53afd2de 100644 --- a/pkg/bindings/AVSDirectory/binding.go +++ b/pkg/bindings/AVSDirectory/binding.go @@ -29,6 +29,13 @@ var ( _ = abi.ConvertType ) +// IAVSDirectoryMagnitudeAdjustment is an auto generated low-level Go binding around an user-defined struct. +type IAVSDirectoryMagnitudeAdjustment struct { + Strategy common.Address + OperatorSets []IAVSDirectoryOperatorSet + MagnitudeDiffs []uint64 +} + // IAVSDirectoryOperatorSet is an auto generated low-level Go binding around an user-defined struct. type IAVSDirectoryOperatorSet struct { Avs common.Address @@ -44,8 +51,8 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct { // AVSDirectoryMetaData contains all meta data concerning the AVSDirectory contract. var AVSDirectoryMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"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\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"becomeOperatorSetAVS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"calculateOperatorSetForceDeregistrationTypehash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorSetRegistrationDigestHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"createOperatorSets\",\"inputs\":[{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"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\":\"deregisterOperatorFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"forceDeregisterFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"inTotalOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isMember\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSetAVS\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"migrateOperatorsToOperatorSets\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetMemberCount\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetsMemberOf\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.OperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetsMemberOf\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"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\":\"registerOperatorToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"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\":\"AVSMigratedToOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"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\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMigratedToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"indexed\":false,\"internalType\":\"uint32[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"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\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"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}]", - Bin: "0x60c06040523480156200001157600080fd5b5060405162003d1d38038062003d1d833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051613b9f6200017e60003960006122530152600081816105cd01528181610b8e01526113ff0152613b9f6000f3fe608060405234801561001057600080fd5b506004361061023d5760003560e01c80639926ee7d1161013b578063d79aceab116100b8578063ec76f4421161007c578063ec76f442146105ef578063ef2dfa8d14610623578063f2fde38b14610636578063f698da2514610649578063fabc1cbc1461065157600080fd5b8063d79aceab1461053c578063da2ff05d14610563578063dae226b614610576578063dce974b9146105a1578063df5cf723146105c857600080fd5b8063afe02ed5116100ff578063afe02ed5146104c9578063b2841d48146104dc578063c1a8e2c5146104ef578063c825fe6814610502578063cbdf0e421461052957600080fd5b80639926ee7d14610475578063a1060c8814610488578063a364f4da1461049b578063a98fb355146104ae578063aec205c5146104c157600080fd5b8063595c6a67116101c957806384d76f7b1161018d57806384d76f7b146103d8578063886f1195146104065780638da5cb5b146104315780638de5494414610442578063955e66961461046257600080fd5b8063595c6a671461037a5780635ac86ab7146103825780635c975abb146103a5578063715018a6146103ad5780637673e93a146103b557600080fd5b80631e2199e2116102105780631e2199e2146102a657806320606b70146102b9578063374823b5146102ee5780633fee332d1461032c57806349075da31461033f57600080fd5b80630d5387c51461024257806310d67a2f1461026b578063136439dd146102805780631794bb3c14610293575b600080fd5b610255610250366004612fec565b610664565b6040516102629190613021565b60405180910390f35b61027e610279366004613087565b6107a9565b005b61027e61028e3660046130ab565b610865565b61027e6102a13660046130c4565b6109a4565b61027e6102b4366004613269565b610ace565b6102e07f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b604051908152602001610262565b61031c6102fc3660046132e4565b609960209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610262565b61027e61033a366004613310565b610dee565b61036d61034d36600461339e565b609860209081526000928352604080842090915290825290205460ff1681565b60405161026291906133ed565b61027e611038565b61031c610390366004613415565b606654600160ff9092169190911b9081161490565b6066546102e0565b61027e6110ff565b61031c6103c3366004613087565b609a6020526000908152604090205460ff1681565b61031c6103e6366004613451565b609b60209081526000928352604080842090915290825290205460ff1681565b606554610419906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b6033546001600160a01b0316610419565b6104556104503660046132e4565b611113565b6040516102629190613486565b6102e06104703660046134ac565b611156565b61027e610483366004613512565b6111bb565b6102e0610496366004613561565b611589565b61027e6104a9366004613087565b6115f3565b61027e6104bc3660046135a7565b611730565b61027e611777565b61027e6104d7366004613618565b61183f565b6102e06104ea3660046134ac565b611a0c565b61027e6104fd366004613659565b611a4c565b6102e07f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b6102e0610537366004613087565b611a81565b6102e07fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b61031c6105713660046136ad565b611aa2565b6102e0610584366004613451565b609c60209081526000928352604080842090915290825290205481565b6102e07f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b6104197f000000000000000000000000000000000000000000000000000000000000000081565b61027e6105fd3660046130ab565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b61027e610631366004613732565b611ace565b61027e610644366004613087565b611e77565b6102e0611eed565b61027e61065f3660046130ab565b611efc565b6001600160a01b0383166000908152609d6020526040812060609190849061068b90612058565b61069591906137b3565b9050808311156106a3578092505b826001600160401b038111156106bb576106bb613149565b60405190808252806020026020018201604052801561070057816020015b60408051808201909152600080825260208201528152602001906001900390816106d95790505b50915060005b838110156107a05761077261073c61071e83886137ca565b6001600160a01b0389166000908152609d6020526040902090612062565b60408051808201909152600080825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b838281518110610784576107846137e2565b602002602001018190525080610799906137f8565b9050610706565b50509392505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108209190613813565b6001600160a01b0316336001600160a01b0316146108595760405162461bcd60e51b815260040161085090613830565b60405180910390fd5b6108628161206e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d1919061387a565b6108ed5760405162461bcd60e51b81526004016108509061389c565b606654818116146109665760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610850565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156109c45750600054600160ff909116105b806109de5750303b1580156109de575060005460ff166001145b610a415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610850565b6000805460ff191660011790558015610a64576000805461ff0019166101001790555b610a6e8383612165565b610a7661224f565b609755610a8284612318565b8015610ac8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60665460019060029081161415610af75760405162461bcd60e51b8152600401610850906138e4565b4282604001511015610b6f5760405162461bcd60e51b81526020600482015260476024820152600080516020613b2a83398151915260448201527f70657261746f72536574733a206f70657261746f72207369676e617475726520606482015266195e1c1a5c995960ca1b608482015260a401610850565b6040516336b87bd760e11b81526001600160a01b0386811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf9919061387a565b610c785760405162461bcd60e51b81526020600482015260566024820152600080516020613b2a83398151915260448201527f70657261746f72536574733a206f70657261746f72206e6f7420726567697374606482015275195c9959081d1bc8115a59d95b93185e595c881e595d60521b608482015260a401610850565b336000908152609a602052604090205460ff16610cff5760405162461bcd60e51b815260206004820152604b6024820152600080516020613b2a83398151915260448201527f70657261746f72536574733a20415653206973206e6f7420616e206f7065726160648201526a746f72207365742041565360a81b608482015260a401610850565b6001600160a01b038516600090815260996020908152604080832085830151845290915290205460ff1615610d8a5760405162461bcd60e51b815260206004820152603f6024820152600080516020613b2a83398151915260448201527f70657261746f72536574733a2073616c7420616c7265616479207370656e74006064820152608401610850565b610daa85610da333878787602001518860400151611156565b845161236a565b6001600160a01b03851660009081526099602090815260408083208583015184529091529020805460ff19166001179055610de785338686612524565b5050505050565b60665460019060029081161415610e175760405162461bcd60e51b8152600401610850906138e4565b815151610eaf57336001600160a01b03871614610eaa5760405162461bcd60e51b815260206004820152604560248201527f4156534469726563746f72792e666f7263654465726567697374657246726f6d60448201527f4f70657261746f72536574733a2063616c6c6572206d757374206265206f70656064820152643930ba37b960d91b608482015260a401610850565b611024565b4282604001511015610f3a5760405162461bcd60e51b815260206004820152604860248201527f4156534469726563746f72792e666f7263654465726567697374657246726f6d60448201527f4f70657261746f72536574733a206f70657261746f72207369676e617475726560648201526708195e1c1a5c995960c21b608482015260a401610850565b6001600160a01b038616600090815260996020908152604080832085830151845290915290205460ff1615610fd9576040805162461bcd60e51b81526020600482015260248101919091527f4156534469726563746f72792e666f7263654465726567697374657246726f6d60448201527f4f70657261746f72536574733a2073616c7420616c7265616479207370656e746064820152608401610850565b610ff286610da387878787602001518860400151611a0c565b6001600160a01b03861660009081526099602090815260408083208583015184529091529020805460ff191660011790555b611030858786866127de565b505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611080573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a4919061387a565b6110c05760405162461bcd60e51b81526004016108509061389c565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6111076129c0565b6111116000612318565b565b60408051808201909152600080825260208201526001600160a01b0383166000908152609d6020526040902061114d9061073c9084612062565b90505b92915050565b60006111b17f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92987878787876040516020016111969695949392919061395f565b60405160208183030381529060405280519060200120612a1a565b9695505050505050565b606654600090600190811614156111e45760405162461bcd60e51b8152600401610850906138e4565b428260400151101561124c5760405162461bcd60e51b815260206004820152603e6024820152600080516020613b4a83398151915260448201527f56533a206f70657261746f72207369676e6174757265206578706972656400006064820152608401610850565b336000908152609a602052604090205460ff16156112c05760405162461bcd60e51b815260206004820152603e6024820152600080516020613b4a83398151915260448201527f56533a2041565320697320616e206f70657261746f72207365742041565300006064820152608401610850565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156112fa576112fa6133d7565b141561135c5760405162461bcd60e51b815260206004820152603f6024820152600080516020613b4a83398151915260448201527f56533a206f70657261746f7220616c72656164792072656769737465726564006064820152608401610850565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156113e05760405162461bcd60e51b81526020600482015260366024820152600080516020613b4a8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b6064820152608401610850565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146a919061387a565b6114e05760405162461bcd60e51b815260206004820152604d6024820152600080516020613b4a83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a401610850565b6114f883610da3853386602001518760400151611589565b6001600160a01b038316600081815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161157c91906133ed565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290526000906115ea9060c001611196565b95945050505050565b6066546000906001908116141561161c5760405162461bcd60e51b8152600401610850906138e4565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115611656576116566133d7565b146116c95760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f742072656769737465726564006064820152608401610850565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161172491906133ed565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713838360405161176b92919061399f565b60405180910390a25050565b336000908152609a602052604090205460ff16156117fd5760405162461bcd60e51b815260206004820152603e60248201527f4156534469726563746f72792e6265636f6d654f70657261746f72536574415660448201527f533a20616c726561647920616e206f70657261746f72207365742041565300006064820152608401610850565b336000818152609a6020526040808220805460ff19166001179055517f702b0c1f6cb1cf511aaa81f72bc05a215bb3497632d72c690c822b044ab494bf9190a2565b60005b81811015611a0757336000908152609b602052604081209084848481811061186c5761186c6137e2565b905060200201602081019061188191906139ce565b63ffffffff16815260208101919091526040016000205460ff161561190e5760405162461bcd60e51b815260206004820152603b60248201527f4156534469726563746f72792e6372656174654f70657261746f725365743a2060448201527f6f70657261746f722073657420616c72656164792065786973747300000000006064820152608401610850565b336000908152609b60205260408120600191858585818110611932576119326137e2565b905060200201602081019061194791906139ce565b63ffffffff1663ffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280336001600160a01b031681526020018585858181106119c5576119c56137e2565b90506020020160208101906119da91906139ce565b63ffffffff1690526040516119ef9190613486565b60405180910390a1611a00816137f8565b9050611842565b505050565b60006111b17f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49587878787876040516020016111969695949392919061395f565b60665460019060029081161415611a755760405162461bcd60e51b8152600401610850906138e4565b610ac8338585856127de565b6001600160a01b0381166000908152609d6020526040812061115090612058565b600061114d611ab083612a61565b6001600160a01b0385166000908152609d6020526040902090612ac6565b60665460019060029081161415611af75760405162461bcd60e51b8152600401610850906138e4565b336000908152609a602052604090205460ff16611b905760405162461bcd60e51b815260206004820152604b60248201527f4156534469726563746f72792e6d6967726174654f70657261746f7273546f4f60448201527f70657261746f72536574733a20415653206973206e6f7420616e206f7065726160648201526a746f72207365742041565360a81b608482015260a401610850565b60005b8481101561103057600133600090815260986020526040812090888885818110611bbf57611bbf6137e2565b9050602002016020810190611bd49190613087565b6001600160a01b0316815260208101919091526040016000205460ff166001811115611c0257611c026133d7565b14611cae5760405162461bcd60e51b815260206004820152606a60248201527f4156534469726563746f72792e6d6967726174654f70657261746f7273546f4f60448201527f70657261746f72536574733a206f70657261746f7220616c7265616479206d6960648201527f677261746564206f72206e6f742061206c656761637920726567697374657265608482015269321037b832b930ba37b960b11b60a482015260c401610850565b611d02868683818110611cc357611cc36137e2565b9050602002016020810190611cd89190613087565b33868685818110611ceb57611ceb6137e2565b9050602002810190611cfd91906139e9565b612524565b33600090815260986020526040812081888885818110611d2457611d246137e2565b9050602002016020810190611d399190613087565b6001600160a01b031681526020810191909152604001600020805460ff191660018381811115611d6b57611d6b6133d7565b021790555033868683818110611d8357611d836137e2565b9050602002016020810190611d989190613087565b6001600160a01b03167ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b416000604051611dd191906133ed565b60405180910390a333868683818110611dec57611dec6137e2565b9050602002016020810190611e019190613087565b6001600160a01b03167f54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01868685818110611e3d57611e3d6137e2565b9050602002810190611e4f91906139e9565b604051611e5d929190613a32565b60405180910390a380611e6f816137f8565b915050611b93565b611e7f6129c0565b6001600160a01b038116611ee45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610850565b61086281612318565b6000611ef761224f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f739190613813565b6001600160a01b0316336001600160a01b031614611fa35760405162461bcd60e51b815260040161085090613830565b6066541981196066541916146120215760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610850565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610999565b6000611150825490565b600061114d8383612ade565b6001600160a01b0381166120fc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610850565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561218657506001600160a01b03821615155b6122085760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610850565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261224b8261206e565b5050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612280575060975490565b50604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b1561248457604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906123aa9086908690600401613a4e565b602060405180830381865afa1580156123c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123eb9190613aab565b6001600160e01b03191614611a075760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610850565b826001600160a01b03166124988383612b08565b6001600160a01b031614611a075760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610850565b60005b81811015610de75760006040518060400160405280866001600160a01b0316815260200185858581811061255d5761255d6137e2565b905060200201602081019061257291906139ce565b63ffffffff1690526001600160a01b0386166000908152609b602052604081209192508585858181106125a7576125a76137e2565b90506020020160208101906125bc91906139ce565b63ffffffff16815260208101919091526040016000205460ff166126535760405162461bcd60e51b815260206004820152604260248201527f4156534469726563746f72792e5f72656769737465724f70657261746f72546f60448201527f4f70657261746f72536574733a20696e76616c6964206f70657261746f722073606482015261195d60f21b608482015260a401610850565b61265d8682611aa2565b156126f65760405162461bcd60e51b815260206004820152605960248201527f4156534469726563746f72792e5f72656769737465724f70657261746f72546f60448201527f4f70657261746f72536574733a206f70657261746f7220616c7265616479207260648201527f65676973746572656420746f206f70657261746f722073657400000000000000608482015260a401610850565b6001600160a01b0385166000908152609c6020526040812090858585818110612721576127216137e2565b905060200201602081019061273691906139ce565b63ffffffff1663ffffffff1681526020019081526020016000206000815461275d906137f8565b9091555061278b61276d82612a61565b6001600160a01b0388166000908152609d6020526040902090612b2c565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e826040516127c59190613486565b60405180910390a2506127d7816137f8565b9050612527565b60005b81811015610de75760006040518060400160405280876001600160a01b03168152602001858585818110612817576128176137e2565b905060200201602081019061282c91906139ce565b63ffffffff16905290506128408582611aa2565b6128d85760405162461bcd60e51b815260206004820152605960248201527f4156534469726563746f72792e5f646572656769737465724f70657261746f7260448201527f46726f6d4f70657261746f725365743a206f70657261746f72206e6f7420726560648201527f676973746572656420666f72206f70657261746f722073657400000000000000608482015260a401610850565b6001600160a01b0386166000908152609c6020526040812090858585818110612903576129036137e2565b905060200201602081019061291891906139ce565b63ffffffff1663ffffffff1681526020019081526020016000206000815461293f90613ad5565b9091555061296d61294f82612a61565b6001600160a01b0387166000908152609d6020526040902090612b38565b50846001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe826040516129a79190613486565b60405180910390a2506129b9816137f8565b90506127e1565b6033546001600160a01b031633146111115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610850565b6000612a2461224f565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60008160000151826020015163ffffffff16604051602001612aae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261115090613aec565b6000818152600183016020526040812054151561114d565b6000826000018281548110612af557612af56137e2565b9060005260206000200154905092915050565b6000806000612b178585612b44565b91509150612b2481612bb4565b509392505050565b600061114d8383612d6f565b600061114d8383612dbe565b600080825160411415612b7b5760208301516040840151606085015160001a612b6f87828585612eb1565b94509450505050612bad565b825160401415612ba55760208301516040840151612b9a868383612f9e565b935093505050612bad565b506000905060025b9250929050565b6000816004811115612bc857612bc86133d7565b1415612bd15750565b6001816004811115612be557612be56133d7565b1415612c335760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610850565b6002816004811115612c4757612c476133d7565b1415612c955760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610850565b6003816004811115612ca957612ca96133d7565b1415612d025760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610850565b6004816004811115612d1657612d166133d7565b14156108625760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610850565b6000818152600183016020526040812054612db657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611150565b506000611150565b60008181526001830160205260408120548015612ea7576000612de26001836137b3565b8554909150600090612df6906001906137b3565b9050818114612e5b576000866000018281548110612e1657612e166137e2565b9060005260206000200154905080876000018481548110612e3957612e396137e2565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612e6c57612e6c613b13565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611150565b6000915050611150565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612ee85750600090506003612f95565b8460ff16601b14158015612f0057508460ff16601c14155b15612f115750600090506004612f95565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612f65573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612f8e57600060019250925050612f95565b9150600090505b94509492505050565b6000806001600160ff1b03831681612fbb60ff86901c601b6137ca565b9050612fc987828885612eb1565b935093505050935093915050565b6001600160a01b038116811461086257600080fd5b60008060006060848603121561300157600080fd5b833561300c81612fd7565b95602085013595506040909401359392505050565b602080825282518282018190526000919060409081850190868401855b8281101561307a5761306a84835180516001600160a01b0316825260209081015163ffffffff16910152565b928401929085019060010161303e565b5091979650505050505050565b60006020828403121561309957600080fd5b81356130a481612fd7565b9392505050565b6000602082840312156130bd57600080fd5b5035919050565b6000806000606084860312156130d957600080fd5b83356130e481612fd7565b925060208401356130f481612fd7565b929592945050506040919091013590565b60008083601f84011261311757600080fd5b5081356001600160401b0381111561312e57600080fd5b6020830191508360208260051b8501011115612bad57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561318157613181613149565b60405290565b604051601f8201601f191681016001600160401b03811182821017156131af576131af613149565b604052919050565b6000606082840312156131c957600080fd5b6131d161315f565b905081356001600160401b03808211156131ea57600080fd5b818401915084601f8301126131fe57600080fd5b813560208282111561321257613212613149565b613224601f8301601f19168201613187565b9250818352868183860101111561323a57600080fd5b818185018285013760008183850101528285528086013581860152505050506040820135604082015292915050565b6000806000806060858703121561327f57600080fd5b843561328a81612fd7565b935060208501356001600160401b03808211156132a657600080fd5b6132b288838901613105565b909550935060408701359150808211156132cb57600080fd5b506132d8878288016131b7565b91505092959194509250565b600080604083850312156132f757600080fd5b823561330281612fd7565b946020939093013593505050565b60008060008060006080868803121561332857600080fd5b853561333381612fd7565b9450602086013561334381612fd7565b935060408601356001600160401b038082111561335f57600080fd5b61336b89838a01613105565b9095509350606088013591508082111561338457600080fd5b50613391888289016131b7565b9150509295509295909350565b600080604083850312156133b157600080fd5b82356133bc81612fd7565b915060208301356133cc81612fd7565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b602081016002831061340f57634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561342757600080fd5b813560ff811681146130a457600080fd5b803563ffffffff8116811461344c57600080fd5b919050565b6000806040838503121561346457600080fd5b823561346f81612fd7565b915061347d60208401613438565b90509250929050565b81516001600160a01b0316815260208083015163ffffffff169082015260408101611150565b6000806000806000608086880312156134c457600080fd5b85356134cf81612fd7565b945060208601356001600160401b038111156134ea57600080fd5b6134f688828901613105565b9699909850959660408101359660609091013595509350505050565b6000806040838503121561352557600080fd5b823561353081612fd7565b915060208301356001600160401b0381111561354b57600080fd5b613557858286016131b7565b9150509250929050565b6000806000806080858703121561357757600080fd5b843561358281612fd7565b9350602085013561359281612fd7565b93969395505050506040820135916060013590565b600080602083850312156135ba57600080fd5b82356001600160401b03808211156135d157600080fd5b818501915085601f8301126135e557600080fd5b8135818111156135f457600080fd5b86602082850101111561360657600080fd5b60209290920196919550909350505050565b6000806020838503121561362b57600080fd5b82356001600160401b0381111561364157600080fd5b61364d85828601613105565b90969095509350505050565b60008060006040848603121561366e57600080fd5b833561367981612fd7565b925060208401356001600160401b0381111561369457600080fd5b6136a086828701613105565b9497909650939450505050565b60008082840360608112156136c157600080fd5b83356136cc81612fd7565b92506040601f19820112156136e057600080fd5b50604051604081018181106001600160401b038211171561370357613703613149565b604052602084013561371481612fd7565b815261372260408501613438565b6020820152809150509250929050565b6000806000806040858703121561374857600080fd5b84356001600160401b038082111561375f57600080fd5b61376b88838901613105565b9096509450602087013591508082111561378457600080fd5b5061379187828801613105565b95989497509550505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156137c5576137c561379d565b500390565b600082198211156137dd576137dd61379d565b500190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561380c5761380c61379d565b5060010190565b60006020828403121561382557600080fd5b81516130a481612fd7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561388c57600080fd5b815180151581146130a457600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b8183526000602080850194508260005b858110156139545763ffffffff61394183613438565b168752958201959082019060010161392b565b509495945050505050565b8681526001600160a01b038616602082015260a06040820181905260009061398a908301868861391b565b60608301949094525060800152949350505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156139e057600080fd5b61114d82613438565b6000808335601e19843603018112613a0057600080fd5b8301803591506001600160401b03821115613a1a57600080fd5b6020019150600581901b3603821315612bad57600080fd5b602081526000613a4660208301848661391b565b949350505050565b82815260006020604081840152835180604085015260005b81811015613a8257858101830151858201606001528201613a66565b81811115613a94576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215613abd57600080fd5b81516001600160e01b0319811681146130a457600080fd5b600081613ae457613ae461379d565b506000190190565b80516020808301519190811015613b0d576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052603160045260246000fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f4f4156534469726563746f72792e72656769737465724f70657261746f72546f41a264697066735822122076fb1daf319867032c1106bcafdeac72f8b1ae9524fc5a27b5100ab3b791551964736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ALLOCATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"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\":\"allocate\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allocations\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.MagnitudeAdjustment[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.OperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"magnitudeDiffs\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]},{\"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\":\"avsOperatorStatus\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"becomeOperatorSetAVS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"calculateOperatorSetForceDeregistrationTypehash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorSetRegistrationDigestHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"completeDeallocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"operatorSets\",\"type\":\"tuple[][]\",\"internalType\":\"structIAVSDirectory.OperatorSet[][]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"forceDeregisterFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"freeMagnitude\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashableBips\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"timestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inTotalOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isMember\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSetAVS\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSlashable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"migrateOperatorsToOperatorSets\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetMemberCount\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetStatus\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"registered\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"lastDeregisteredTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetsMemberOf\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.OperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetsMemberOf\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"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\":\"queueDeallocate\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"deallocations\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.MagnitudeAdjustment[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.OperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"magnitudeDiffs\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]},{\"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\":\"registerOperatorToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"bipsToSlash\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"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\":\"AVSMigratedToOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MagnitudeAllocated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"magnitudeToAllocate\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MagnitudeDeallocationCompleted\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"freeMagnitudeAdded\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MagnitudeQueueDeallocated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"magnitudeToDeallocate\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"completableTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"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\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMigratedToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"indexed\":false,\"internalType\":\"uint32[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"bipsToSlash\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"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\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"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}]", + Bin: "0x60c06040523480156200001157600080fd5b506040516200597b3803806200597b833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a05161580462000177600039600061275a0152600081816107410152610d9101526158046000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c8063886f11951161015c578063c825fe68116100ce578063df5cf72311610087578063df5cf7231461073c578063ec76f44214610763578063ef2dfa8d14610797578063f2fde38b146107aa578063f698da25146107bd578063fabc1cbc146107c557600080fd5b8063c825fe6814610676578063cbdf0e421461069d578063d79aceab146106b0578063da2ff05d146106d7578063dae226b6146106ea578063dce974b91461071557600080fd5b8063a98fb35511610120578063a98fb3551461060f578063aec205c514610622578063afe02ed51461062a578063b2841d481461063d578063bd74a06c14610650578063c1a8e2c51461066357600080fd5b8063886f11951461058d5780638da5cb5b146105b85780638de54944146105c9578063955e6696146105e9578063a1060c88146105fc57600080fd5b806349075da3116102005780635fd6abfd116101b95780635fd6abfd146104b65780636fbb031c146105025780637019670814610521578063715018a6146105345780637673e93a1461053c57806384d76f7b1461055f57600080fd5b806349075da3146104225780634ef8c5d41461045d578063595c6a67146104705780635a922613146104785780635ac86ab71461048b5780635c975abb146104ae57600080fd5b80631e2199e2116102525780631e2199e2146103165780631e68134e1461032957806320606b701461038657806333429a6a146103bb578063374823b5146103e15780633fee332d1461040f57600080fd5b80630d5387c51461028f57806310d67a2f146102b85780631352c3e6146102cd578063136439dd146102f05780631794bb3c14610303575b600080fd5b6102a261029d3660046148fc565b6107d8565b6040516102af9190614931565b60405180910390f35b6102cb6102c6366004614997565b61091d565b005b6102e06102db366004614a3b565b6109d9565b60405190151581526020016102af565b6102cb6102fe366004614ac0565b610a68565b6102cb610311366004614ad9565b610ba7565b6102cb610324366004614c10565b610cd1565b61036a610337366004614c8b565b609e60209081526000938452604080852082529284528284209052825290205460ff811690610100900463ffffffff1682565b60408051921515835263ffffffff9091166020830152016102af565b6103ad7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020016102af565b6103ce6103c9366004614cd2565b610ff1565b60405161ffff90911681526020016102af565b6102e06103ef366004614d36565b609960209081526000928352604080842090915290825290205460ff1681565b6102cb61041d366004614d62565b6110f9565b610450610430366004614df0565b609860209081526000928352604080842090915290825290205460ff1681565b6040516102af9190614e3f565b6102cb61046b366004614e67565b611343565b6102cb61139d565b6102cb610486366004614ee7565b611464565b6102e0610499366004614f69565b606654600160ff9092169190911b9081161490565b6066546103ad565b6104ea6104c4366004614df0565b60a06020908152600092835260408084209091529082529020546001600160401b031681565b6040516001600160401b0390911681526020016102af565b61050c621baf8081565b60405163ffffffff90911681526020016102af565b6102cb61052f366004614e67565b6115d2565b6102cb61162c565b6102e061054a366004614997565b609a6020526000908152604090205460ff1681565b6102e061056d366004614f8c565b609b60209081526000928352604080842090915290825290205460ff1681565b6065546105a0906001600160a01b031681565b6040516001600160a01b0390911681526020016102af565b6033546001600160a01b03166105a0565b6105dc6105d7366004614d36565b611640565b6040516102af9190614fc1565b6103ad6105f7366004614fe7565b611681565b6103ad61060a36600461504d565b6116e6565b6102cb61061d366004615093565b611750565b6102cb611797565b6102cb610638366004615104565b61185f565b6103ad61064b366004614fe7565b611a2c565b6102cb61065e366004615145565b611a6c565b6102cb6106713660046151c6565b611f53565b6103ad7f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b6103ad6106ab366004614997565b611f88565b6103ad7fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102e06106e5366004614a3b565b611fa9565b6103ad6106f8366004614f8c565b609c60209081526000928352604080842090915290825290205481565b6103ad7f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b6105a07f000000000000000000000000000000000000000000000000000000000000000081565b6102cb610771366004614ac0565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b6102cb6107a536600461521a565b611fd5565b6102cb6107b8366004614997565b61237e565b6103ad6123f4565b6102cb6107d3366004614ac0565b612403565b6001600160a01b0383166000908152609d602052604081206060919084906107ff9061255f565b610809919061529b565b905080831115610817578092505b826001600160401b0381111561082f5761082f6149b4565b60405190808252806020026020018201604052801561087457816020015b604080518082019091526000808252602082015281526020019060019003908161084d5790505b50915060005b83811015610914576108e66108b061089283886152b2565b6001600160a01b0389166000908152609d6020526040902090612569565b60408051808201909152600080825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b8382815181106108f8576108f86152ca565b60200260200101819052508061090d906152e0565b905061087a565b50509392505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610970573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099491906152fb565b6001600160a01b0316336001600160a01b0316146109cd5760405162461bcd60e51b81526004016109c490615318565b60405180910390fd5b6109d681612575565b50565b80516001600160a01b039081166000908152609e6020908152604080832093861683529281528282208185015163ffffffff908116845290825283832084518086019095525460ff811615158086526101009091049091169184019190915290919080610a5e575042621baf808260200151610a559190615362565b63ffffffff1610155b9150505b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad4919061538a565b610af05760405162461bcd60e51b81526004016109c4906153ac565b60665481811614610b695760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610bc75750600054600160ff909116105b80610be15750303b158015610be1575060005460ff166001145b610c445760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109c4565b6000805460ff191660011790558015610c67576000805461ff0019166101001790555b610c71838361266c565b610c79612756565b609755610c858461281f565b8015610ccb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60665460019060029081161415610cfa5760405162461bcd60e51b81526004016109c4906153f4565b4282604001511015610d725760405162461bcd60e51b815260206004820152604760248201526000805160206157af83398151915260448201527f70657261746f72536574733a206f70657261746f72207369676e617475726520606482015266195e1c1a5c995960ca1b608482015260a4016109c4565b6040516336b87bd760e11b81526001600160a01b0386811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc919061538a565b610e7b5760405162461bcd60e51b815260206004820152605660248201526000805160206157af83398151915260448201527f70657261746f72536574733a206f70657261746f72206e6f7420726567697374606482015275195c9959081d1bc8115a59d95b93185e595c881e595d60521b608482015260a4016109c4565b336000908152609a602052604090205460ff16610f025760405162461bcd60e51b815260206004820152604b60248201526000805160206157af83398151915260448201527f70657261746f72536574733a20415653206973206e6f7420616e206f7065726160648201526a746f72207365742041565360a81b608482015260a4016109c4565b6001600160a01b038516600090815260996020908152604080832085830151845290915290205460ff1615610f8d5760405162461bcd60e51b815260206004820152603f60248201526000805160206157af83398151915260448201527f70657261746f72536574733a2073616c7420616c7265616479207370656e740060648201526084016109c4565b610fad85610fa633878787602001518860400151611681565b8451612871565b6001600160a01b03851660009081526099602090815260408083208583015184529091529020805460ff19166001179055610fea85338686612a2b565b5050505050565b6001600160a01b038085166000908152609f60209081526040808320938616835292905290812081906110249084612dfa565b6001600160a01b03808816600090815260a1602090815260408083209389168352928152918120929350916110c1918691908490611064908b018b614997565b6001600160a01b03166001600160a01b031681526020019081526020016000206000896020016020810190611099919061542b565b63ffffffff1663ffffffff168152602001908152602001600020612dfa90919063ffffffff16565b9050816001600160401b0316612710826001600160401b03166110e49190615446565b6110ee919061547b565b979650505050505050565b606654600190600290811614156111225760405162461bcd60e51b81526004016109c4906153f4565b8151516111ba57336001600160a01b038716146111b55760405162461bcd60e51b815260206004820152604560248201527f4156534469726563746f72792e666f7263654465726567697374657246726f6d60448201527f4f70657261746f72536574733a2063616c6c6572206d757374206265206f70656064820152643930ba37b960d91b608482015260a4016109c4565b61132f565b42826040015110156112455760405162461bcd60e51b815260206004820152604860248201527f4156534469726563746f72792e666f7263654465726567697374657246726f6d60448201527f4f70657261746f72536574733a206f70657261746f72207369676e617475726560648201526708195e1c1a5c995960c21b608482015260a4016109c4565b6001600160a01b038616600090815260996020908152604080832085830151845290915290205460ff16156112e4576040805162461bcd60e51b81526020600482015260248101919091527f4156534469726563746f72792e666f7263654465726567697374657246726f6d60448201527f4f70657261746f72536574733a2073616c7420616c7265616479207370656e7460648201526084016109c4565b6112fd86610fa687878787602001518860400151611a2c565b6001600160a01b03861660009081526099602090815260408083208583015184529091529020805460ff191660011790555b61133b85878686612e52565b505050505050565b6000611352621baf8042615362565b905060005b8381101561133b5761138d86868684818110611375576113756152ca565b9050602002810190611387919061549d565b84613034565b611396816152e0565b9050611357565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611409919061538a565b6114255760405162461bcd60e51b81526004016109c4906153ac565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60005b8381101561133b576000805b848484818110611485576114856152ca565b905060200281019061149791906154bd565b90508110156115265761150a888888868181106114b6576114b66152ca565b90506020020160208101906114cb9190614997565b8787878181106114dd576114dd6152ca565b90506020028101906114ef91906154bd565b858181106114ff576114ff6152ca565b905060400201613518565b6115149083615506565b915061151f816152e0565b9050611473565b506001600160a01b038716600090815260a0602052604081208291888886818110611553576115536152ca565b90506020020160208101906115689190614997565b6001600160a01b0316815260208101919091526040016000908120805490919061159c9084906001600160401b0316615506565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555050806115cb906152e0565b9050611467565b60006115e1621baf8042615362565b905060005b8381101561133b5761161c86868684818110611604576116046152ca565b9050602002810190611616919061549d565b846137a5565b611625816152e0565b90506115e6565b611634613cdf565b61163e600061281f565b565b60408051808201909152600080825260208201526001600160a01b0383166000908152609d6020526040902061167a906108b09084612569565b9392505050565b60006116dc7f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92987878787876040516020016116c19695949392919061556c565b60405160208183030381529060405280519060200120613d39565b9695505050505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290526000906117479060c0016116c1565b95945050505050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713838360405161178b9291906155ac565b60405180910390a25050565b336000908152609a602052604090205460ff161561181d5760405162461bcd60e51b815260206004820152603e60248201527f4156534469726563746f72792e6265636f6d654f70657261746f72536574415660448201527f533a20616c726561647920616e206f70657261746f722073657420415653000060648201526084016109c4565b336000818152609a6020526040808220805460ff19166001179055517f702b0c1f6cb1cf511aaa81f72bc05a215bb3497632d72c690c822b044ab494bf9190a2565b60005b81811015611a2757336000908152609b602052604081209084848481811061188c5761188c6152ca565b90506020020160208101906118a1919061542b565b63ffffffff16815260208101919091526040016000205460ff161561192e5760405162461bcd60e51b815260206004820152603b60248201527f4156534469726563746f72792e6372656174654f70657261746f725365743a2060448201527f6f70657261746f722073657420616c726561647920657869737473000000000060648201526084016109c4565b336000908152609b60205260408120600191858585818110611952576119526152ca565b9050602002016020810190611967919061542b565b63ffffffff1663ffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280336001600160a01b031681526020018585858181106119e5576119e56152ca565b90506020020160208101906119fa919061542b565b63ffffffff169052604051611a0f9190614fc1565b60405180910390a1611a20816152e0565b9050611862565b505050565b60006116dc7f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49587878787876040516020016116c19695949392919061556c565b611a99856040518060400160405280336001600160a01b031681526020018763ffffffff168152506109d9565b611b165760405162461bcd60e51b815260206004820152604260248201527f4156534469726563746f72792e736c6173684f70657261746f723a206f70657260448201527f61746f72206e6f7420736c61736861626c6520666f72206f70657261746f7253606482015261195d60f21b608482015260a4016109c4565b60005b8281101561133b576001600160a01b038616600090815260a1602052604081208190611ba490429083898988818110611b5457611b546152ca565b9050602002016020810190611b699190614997565b6001600160a01b0316815260208082019290925260409081016000908120338252835281812063ffffffff808e1683529352209190613d8016565b9050612710611bc06001600160401b03831661ffff8716615446565b611bca919061547b565b6001600160a01b038916600090815260a160205260408120919350611c5a9142916001600160401b03861691908a8a89818110611c0957611c096152ca565b9050602002016020810190611c1e9190614997565b6001600160a01b0316815260208082019290925260409081016000908120338252835281812063ffffffff808f168352935220929190613e2516565b506001600160a01b038716600090815260a260205260408120819081888887818110611c8857611c886152ca565b9050602002016020810190611c9d9190614997565b6001600160a01b0316815260208082019290925260409081016000908120338252835281812063ffffffff8c1682529092529020549050805b8015611e3a576001600160a01b038a16600090815260a260205260408120818a8a89818110611d0757611d076152ca565b9050602002016020810190611d1c9190614997565b6001600160a01b0316815260208082019290925260409081016000908120338252835281812063ffffffff8e1682529092529020611d5b60018461529b565b81548110611d6b57611d6b6152ca565b60009182526020909120018054909150600160401b900463ffffffff16611d95621baf8042615362565b63ffffffff161115611e2357805460009061271090611dc1906001600160401b031661ffff8b16615446565b611dcb919061547b565b825490915081908390600090611deb9084906001600160401b03166155db565b92506101000a8154816001600160401b0302191690836001600160401b031602179055508085611e1b9190615506565b945050611e29565b50611e3a565b50611e3381615603565b9050611cd6565b5050611f3e42826001600160401b0316846001600160401b0316611eca609f60008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008c8c8b818110611e9057611e906152ca565b9050602002016020810190611ea59190614997565b6001600160a01b03166001600160a01b03168152602001908152602001600020613ec1565b611ed4919061561a565b611ede919061561a565b6001600160a01b038b166000908152609f60205260408120908a8a89818110611f0957611f096152ca565b9050602002016020810190611f1e9190614997565b6001600160a01b0316815260208101919091526040016000209190613efa565b5050505080611f4c906152e0565b9050611b19565b60665460019060029081161415611f7c5760405162461bcd60e51b81526004016109c4906153f4565b610ccb33858585612e52565b6001600160a01b0381166000908152609d60205260408120610a629061255f565b600061167a611fb783613f15565b6001600160a01b0385166000908152609d6020526040902090613f7a565b60665460019060029081161415611ffe5760405162461bcd60e51b81526004016109c4906153f4565b336000908152609a602052604090205460ff166120975760405162461bcd60e51b815260206004820152604b60248201527f4156534469726563746f72792e6d6967726174654f70657261746f7273546f4f60448201527f70657261746f72536574733a20415653206973206e6f7420616e206f7065726160648201526a746f72207365742041565360a81b608482015260a4016109c4565b60005b8481101561133b576001336000908152609860205260408120908888858181106120c6576120c66152ca565b90506020020160208101906120db9190614997565b6001600160a01b0316815260208101919091526040016000205460ff16600181111561210957612109614e29565b146121b55760405162461bcd60e51b815260206004820152606a60248201527f4156534469726563746f72792e6d6967726174654f70657261746f7273546f4f60448201527f70657261746f72536574733a206f70657261746f7220616c7265616479206d6960648201527f677261746564206f72206e6f742061206c656761637920726567697374657265608482015269321037b832b930ba37b960b11b60a482015260c4016109c4565b6122098686838181106121ca576121ca6152ca565b90506020020160208101906121df9190614997565b338686858181106121f2576121f26152ca565b9050602002810190612204919061563a565b612a2b565b3360009081526098602052604081208188888581811061222b5761222b6152ca565b90506020020160208101906122409190614997565b6001600160a01b031681526020810191909152604001600020805460ff19166001838181111561227257612272614e29565b02179055503386868381811061228a5761228a6152ca565b905060200201602081019061229f9190614997565b6001600160a01b03167ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4160006040516122d89190614e3f565b60405180910390a3338686838181106122f3576122f36152ca565b90506020020160208101906123089190614997565b6001600160a01b03167f54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01868685818110612344576123446152ca565b9050602002810190612356919061563a565b604051612364929190615683565b60405180910390a380612376816152e0565b91505061209a565b612386613cdf565b6001600160a01b0381166123eb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c4565b6109d68161281f565b60006123fe612756565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247a91906152fb565b6001600160a01b0316336001600160a01b0316146124aa5760405162461bcd60e51b81526004016109c490615318565b6066541981196066541916146125285760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610b9c565b6000610a62825490565b600061167a8383613f92565b6001600160a01b0381166126035760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016109c4565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561268d57506001600160a01b03821615155b61270f5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016109c4565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261275282612575565b5050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612787575060975490565b50604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b1561298b57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906128b1908690869060040161569f565b602060405180830381865afa1580156128ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f291906156fc565b6001600160e01b03191614611a275760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016109c4565b826001600160a01b031661299f8383613fbc565b6001600160a01b031614611a275760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016109c4565b60005b81811015610fea5760006040518060400160405280866001600160a01b03168152602001858585818110612a6457612a646152ca565b9050602002016020810190612a79919061542b565b63ffffffff1690526001600160a01b0386166000908152609b60205260408120919250858585818110612aae57612aae6152ca565b9050602002016020810190612ac3919061542b565b63ffffffff16815260208101919091526040016000205460ff16612b5a5760405162461bcd60e51b815260206004820152604260248201527f4156534469726563746f72792e5f72656769737465724f70657261746f72546f60448201527f4f70657261746f72536574733a20696e76616c6964206f70657261746f722073606482015261195d60f21b608482015260a4016109c4565b612b648682611fa9565b15612bfd5760405162461bcd60e51b815260206004820152605960248201527f4156534469726563746f72792e5f72656769737465724f70657261746f72546f60448201527f4f70657261746f72536574733a206f70657261746f7220616c7265616479207260648201527f65676973746572656420746f206f70657261746f722073657400000000000000608482015260a4016109c4565b6001600160a01b0385166000908152609c6020526040812090858585818110612c2857612c286152ca565b9050602002016020810190612c3d919061542b565b63ffffffff1663ffffffff16815260200190815260200160002060008154612c64906152e0565b90915550612c92612c7482613f15565b6001600160a01b0388166000908152609d6020526040902090613fe0565b506001600160a01b038086166000908152609e60209081526040808320938a16835292905290812081868686818110612ccd57612ccd6152ca565b9050602002016020810190612ce2919061542b565b63ffffffff1681526020810191909152604001600020805490915060ff1615612d995760405162461bcd60e51b815260206004820152605a60248201527f4156534469726563746f72792e5f72656769737465724f70657261746f72546f60448201527f4f70657261746f72536574733a206f70657261746f7220616c7265616479207260648201527f65676973746572656420666f72206f70657261746f7220736574000000000000608482015260a4016109c4565b805460ff191660011781556040516001600160a01b038816907f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e90612ddf908590614fc1565b60405180910390a2505080612df3906152e0565b9050612a2e565b815460009081612e0c85858385613fec565b90508015612e4757612e3185612e2360018461529b565b600091825260209091200190565b54600160201b90046001600160e01b0316611747565b600095945050505050565b60005b81811015610fea5760006040518060400160405280876001600160a01b03168152602001858585818110612e8b57612e8b6152ca565b9050602002016020810190612ea0919061542b565b63ffffffff1690529050612eb48582611fa9565b612f4c5760405162461bcd60e51b815260206004820152605960248201527f4156534469726563746f72792e5f646572656769737465724f70657261746f7260448201527f46726f6d4f70657261746f725365743a206f70657261746f72206e6f7420726560648201527f676973746572656420666f72206f70657261746f722073657400000000000000608482015260a4016109c4565b6001600160a01b0386166000908152609c6020526040812090858585818110612f7757612f776152ca565b9050602002016020810190612f8c919061542b565b63ffffffff1663ffffffff16815260200190815260200160002060008154612fb390615603565b90915550612fe1612fc382613f15565b6001600160a01b0387166000908152609d6020526040902090614042565b50846001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe8260405161301b9190614fc1565b60405180910390a25061302d816152e0565b9050612e55565b60006130436020840184614997565b9050613052604084018461563a565b905061306160208501856154bd565b9050146130ee5760405162461bcd60e51b815260206004820152604f60248201527f4156534469726563746f72792e71756575654465616c6c6f636174696f6e3a2060448201527f6f70657261746f725365747320616e64206d61676e697475646544696666732060648201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b608482015260a4016109c4565b3660006130fe60208601866154bd565b9150915060005b8181101561350f576001600160a01b03808816600090815260a16020908152604080832093881683529290529081206131d79042908387878781811061314d5761314d6152ca565b6131639260206040909202019081019150614997565b6001600160a01b03166001600160a01b031681526020019081526020016000206000878787818110613197576131976152ca565b90506040020160200160208101906131af919061542b565b63ffffffff1663ffffffff168152602001908152602001600020613d8090919063ffffffff16565b90506001600160401b0381166131f0604089018961563a565b84818110613200576132006152ca565b90506020020160208101906132159190615726565b6001600160401b031611156132a85760405162461bcd60e51b815260206004820152604d60248201527f4156534469726563746f72792e71756575654465616c6c6f636174696f6e3a2060448201527f63616e6e6f74206465616c6c6f63617465206d6f7265207468616e207768617460648201526c081a5cc8185b1b1bd8d85d1959609a1b608482015260a4016109c4565b6133b0426132b960408a018a61563a565b858181106132c9576132c96152ca565b90506020020160208101906132de9190615726565b6001600160a01b03808c16600090815260a160209081526040808320938c1683529290529081206001600160401b03929092169190888888818110613325576133256152ca565b61333b9260206040909202019081019150614997565b6001600160a01b03166001600160a01b03168152602001908152602001600020600088888881811061336f5761336f6152ca565b9050604002016020016020810190613387919061542b565b63ffffffff1663ffffffff168152602001908152602001600020613e259092919063ffffffff16565b6001600160a01b03808916600090815260a2602090815260408083209389168352929052908120908585858181106133ea576133ea6152ca565b6134009260206040909202019081019150614997565b6001600160a01b03166001600160a01b031681526020019081526020016000206000858585818110613434576134346152ca565b905060400201602001602081019061344c919061542b565b63ffffffff1663ffffffff1681526020019081526020016000206040518060400160405280898060400190613481919061563a565b86818110613491576134916152ca565b90506020020160208101906134a69190615726565b6001600160401b03908116825263ffffffff808b166020938401528454600181018655600095865294839020845195018054949093015116600160401b026bffffffffffffffffffffffff1990931693169290921717905550613508816152e0565b9050613105565b50505050505050565b6001600160a01b03808416600090815260a26020908152604080832093861683529281529181209091829190829061355290860186614997565b6001600160a01b03166001600160a01b031681526020019081526020016000206000846020016020810190613587919061542b565b63ffffffff1663ffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b8282101561360d57600084815260209081902060408051808201909152908401546001600160401b0381168252600160401b900463ffffffff16818301528252600190920191016135c1565b5050506001600160a01b03808816600090815260a360209081526040808320938a168352928152918120939450929150829061364b90870187614997565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856020016020810190613680919061542b565b63ffffffff1663ffffffff1681526020019081526020016000205490505b8151811015613718574263ffffffff168282815181106136c0576136c06152ca565b60200260200101516020015163ffffffff1611156136dd57613718565b8181815181106136ef576136ef6152ca565b602002602001015160000151836137069190615506565b9250613711816152e0565b905061369e565b6001600160a01b03808716600090815260a3602090815260408083209389168352928152918120839290919061375090880188614997565b6001600160a01b03166001600160a01b031681526020019081526020016000206000866020016020810190613785919061542b565b63ffffffff16815260208101919091526040016000205550509392505050565b60006137b46020840184614997565b90503660006137c660208601866154bd565b6001600160a01b03808916600090815260a0602090815260408083209389168352929052908120549294509092506001600160401b03909116905b82811015613c8f57613816604088018861563a565b82818110613826576138266152ca565b905060200201602081019061383b9190615726565b6001600160401b0316826001600160401b031610156138db5760405162461bcd60e51b815260206004820152605060248201527f4156534469726563746f72792e7175657565416c6c6f636174696f6e733a206960448201527f6e73756666696369656e7420617661696c61626c652066726565206d61676e6960648201526f7475646520746f20616c6c6f6361746560801b608482015260a4016109c4565b6001600160a01b03808916600090815260a160209081526040808320938916835292905290812081906139a79042908389898881811061391d5761391d6152ca565b6139339260206040909202019081019150614997565b6001600160a01b03166001600160a01b031681526020019081526020016000206000898988818110613967576139676152ca565b905060400201602001602081019061397f919061542b565b63ffffffff1663ffffffff16815260200190815260200160002061404e90919063ffffffff16565b91509150816001600160e01b031660001415806139c357508015155b15613b2d576001600160a01b03808b16600090815260a160209081526040808320938b168352929052908120600191613a899190898988818110613a0957613a096152ca565b613a1f9260206040909202019081019150614997565b6001600160a01b03166001600160a01b031681526020019081526020016000206000898988818110613a5357613a536152ca565b9050604002016020016020810190613a6b919061542b565b63ffffffff1663ffffffff1681526020019081526020016000205490565b613a93919061529b565b8114613b2d5760405162461bcd60e51b815260206004820152605a60248201527f4156534469726563746f72792e7175657565416c6c6f636174696f6e733a206f60448201527f6e6c79206f6e652070656e64696e6720616c6c6f636174696f6e20616c6c6f7760648201527f656420666f72206f702c206f705365742c207374726174656779000000000000608482015260a4016109c4565b613c3b88613b3e60408c018c61563a565b86818110613b4e57613b4e6152ca565b9050602002016020810190613b639190615726565b613b76906001600160401b03168561574f565b6001600160a01b03808e16600090815260a160209081526040808320938e168352929052908120908a8a89818110613bb057613bb06152ca565b613bc69260206040909202019081019150614997565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008a8a89818110613bfa57613bfa6152ca565b9050604002016020016020810190613c12919061542b565b63ffffffff1663ffffffff168152602001908152602001600020613efa9092919063ffffffff16565b50613c4b905060408a018a61563a565b84818110613c5b57613c5b6152ca565b9050602002016020810190613c709190615726565b613c7a90856155db565b9350505080613c88906152e0565b9050613801565b506001600160a01b03968716600090815260a0602090815260408083209690991682529490945295909220805467ffffffffffffffff19166001600160401b039096169590951790945550505050565b6033546001600160a01b0316331461163e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109c4565b6000613d43612756565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b815460009081816005811115613ddd576000613d9b84614107565b613da5908561529b565b60008881526020902090915081015463ffffffff9081169087161015613dcd57809150613ddb565b613dd88160016152b2565b92505b505b6000613deb87878585613fec565b90508015613e1857613e0287612e2360018461529b565b54600160201b90046001600160e01b03166110ee565b6000979650505050505050565b600080613e32858561404e565b91509150816001600160e01b03166000148015613e4d575080155b15613e5757506000195b84545b8082101561133b576000868152602090208201805485908290600490613e91908490600160201b90046001600160e01b031661561a565b92506101000a8154816001600160e01b0302191690836001600160e01b0316021790555082600101925050613e5a565b80546000908015613ef157613edb83612e2360018461529b565b54600160201b90046001600160e01b031661167a565b60009392505050565b600080613f088585856141ec565b915091505b935093915050565b60008160000151826020015163ffffffff16604051602001613f6292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b604051602081830303815290604052610a6290615771565b6000818152600183016020526040812054151561167a565b6000826000018281548110613fa957613fa96152ca565b9060005260206000200154905092915050565b6000806000613fcb8585614392565b91509150613fd8816143ff565b509392505050565b600061167a83836145ba565b60005b81831015613fd85760006140038484614609565b60008781526020902090915063ffffffff86169082015463ffffffff16111561402e5780925061403c565b6140398160016152b2565b93505b50613fef565b600061167a8383614624565b81546000908190818160058111156140ad57600061406b84614107565b614075908561529b565b60008981526020902090915081015463ffffffff908116908816101561409d578091506140ab565b6140a88160016152b2565b92505b505b60006140bb88888585613fec565b905080156140f3576140d288612e2360018461529b565b54600160201b90046001600160e01b03166140ee60018361529b565b6140f7565b6000805b95509550505050505b9250929050565b60008161411657506000919050565b6000600161412384614717565b901c6001901b9050600181848161413c5761413c615465565b048201901c9050600181848161415457614154615465565b048201901c9050600181848161416c5761416c615465565b048201901c9050600181848161418457614184615465565b048201901c9050600181848161419c5761419c615465565b048201901c905060018184816141b4576141b4615465565b048201901c905060018184816141cc576141cc615465565b048201901c905061167a818285816141e6576141e6615465565b046147ab565b82546000908190801561433957600061420a87612e2360018561529b565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b03166020840152919250908716101561428b5760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b657973000000000060448201526064016109c4565b8563ffffffff16816000015163ffffffff1614156142da57846142b388612e2360018661529b565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614329565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b602001519250839150613f0d9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b029190931617920191909155905081613f0d565b6000808251604114156143c95760208301516040840151606085015160001a6143bd878285856147c1565b94509450505050614100565b8251604014156143f357602083015160408401516143e88683836148ae565b935093505050614100565b50600090506002614100565b600081600481111561441357614413614e29565b141561441c5750565b600181600481111561443057614430614e29565b141561447e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109c4565b600281600481111561449257614492614e29565b14156144e05760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109c4565b60038160048111156144f4576144f4614e29565b141561454d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016109c4565b600481600481111561456157614561614e29565b14156109d65760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016109c4565b600081815260018301602052604081205461460157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a62565b506000610a62565b6000614618600284841861547b565b61167a908484166152b2565b6000818152600183016020526040812054801561470d57600061464860018361529b565b855490915060009061465c9060019061529b565b90508181146146c157600086600001828154811061467c5761467c6152ca565b906000526020600020015490508087600001848154811061469f5761469f6152ca565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806146d2576146d2615798565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a62565b6000915050610a62565b600080608083901c1561472c57608092831c92015b604083901c1561473e57604092831c92015b602083901c1561475057602092831c92015b601083901c1561476257601092831c92015b600883901c1561477457600892831c92015b600483901c1561478657600492831c92015b600283901c1561479857600292831c92015b600183901c15610a625760010192915050565b60008183106147ba578161167a565b5090919050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147f857506000905060036148a5565b8460ff16601b1415801561481057508460ff16601c14155b1561482157506000905060046148a5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614875573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661489e576000600192509250506148a5565b9150600090505b94509492505050565b6000806001600160ff1b038316816148cb60ff86901c601b6152b2565b90506148d9878288856147c1565b935093505050935093915050565b6001600160a01b03811681146109d657600080fd5b60008060006060848603121561491157600080fd5b833561491c816148e7565b95602085013595506040909401359392505050565b602080825282518282018190526000919060409081850190868401855b8281101561498a5761497a84835180516001600160a01b0316825260209081015163ffffffff16910152565b928401929085019060010161494e565b5091979650505050505050565b6000602082840312156149a957600080fd5b813561167a816148e7565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156149ec576149ec6149b4565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614a1a57614a1a6149b4565b604052919050565b803563ffffffff81168114614a3657600080fd5b919050565b6000808284036060811215614a4f57600080fd5b8335614a5a816148e7565b92506040601f1982011215614a6e57600080fd5b50604051604081018181106001600160401b0382111715614a9157614a916149b4565b6040526020840135614aa2816148e7565b8152614ab060408501614a22565b6020820152809150509250929050565b600060208284031215614ad257600080fd5b5035919050565b600080600060608486031215614aee57600080fd5b8335614af9816148e7565b92506020840135614b09816148e7565b929592945050506040919091013590565b60008083601f840112614b2c57600080fd5b5081356001600160401b03811115614b4357600080fd5b6020830191508360208260051b850101111561410057600080fd5b600060608284031215614b7057600080fd5b614b786149ca565b905081356001600160401b0380821115614b9157600080fd5b818401915084601f830112614ba557600080fd5b8135602082821115614bb957614bb96149b4565b614bcb601f8301601f191682016149f2565b92508183528681838601011115614be157600080fd5b818185018285013760008183850101528285528086013581860152505050506040820135604082015292915050565b60008060008060608587031215614c2657600080fd5b8435614c31816148e7565b935060208501356001600160401b0380821115614c4d57600080fd5b614c5988838901614b1a565b90955093506040870135915080821115614c7257600080fd5b50614c7f87828801614b5e565b91505092959194509250565b600080600060608486031215614ca057600080fd5b8335614cab816148e7565b92506020840135614cbb816148e7565b9150614cc960408501614a22565b90509250925092565b60008060008084860360a0811215614ce957600080fd5b8535614cf4816148e7565b94506040601f1982011215614d0857600080fd5b506020850192506060850135614d1d816148e7565b9150614d2b60808601614a22565b905092959194509250565b60008060408385031215614d4957600080fd5b8235614d54816148e7565b946020939093013593505050565b600080600080600060808688031215614d7a57600080fd5b8535614d85816148e7565b94506020860135614d95816148e7565b935060408601356001600160401b0380821115614db157600080fd5b614dbd89838a01614b1a565b90955093506060880135915080821115614dd657600080fd5b50614de388828901614b5e565b9150509295509295909350565b60008060408385031215614e0357600080fd5b8235614e0e816148e7565b91506020830135614e1e816148e7565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614e6157634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060608587031215614e7d57600080fd5b8435614e88816148e7565b935060208501356001600160401b0380821115614ea457600080fd5b614eb088838901614b1a565b90955093506040870135915080821115614ec957600080fd5b50850160608188031215614edc57600080fd5b939692955090935050565b600080600080600060608688031215614eff57600080fd5b8535614f0a816148e7565b945060208601356001600160401b0380821115614f2657600080fd5b614f3289838a01614b1a565b90965094506040880135915080821115614f4b57600080fd5b50614f5888828901614b1a565b969995985093965092949392505050565b600060208284031215614f7b57600080fd5b813560ff8116811461167a57600080fd5b60008060408385031215614f9f57600080fd5b8235614faa816148e7565b9150614fb860208401614a22565b90509250929050565b81516001600160a01b0316815260208083015163ffffffff169082015260408101610a62565b600080600080600060808688031215614fff57600080fd5b853561500a816148e7565b945060208601356001600160401b0381111561502557600080fd5b61503188828901614b1a565b9699909850959660408101359660609091013595509350505050565b6000806000806080858703121561506357600080fd5b843561506e816148e7565b9350602085013561507e816148e7565b93969395505050506040820135916060013590565b600080602083850312156150a657600080fd5b82356001600160401b03808211156150bd57600080fd5b818501915085601f8301126150d157600080fd5b8135818111156150e057600080fd5b8660208285010111156150f257600080fd5b60209290920196919550909350505050565b6000806020838503121561511757600080fd5b82356001600160401b0381111561512d57600080fd5b61513985828601614b1a565b90969095509350505050565b60008060008060006080868803121561515d57600080fd5b8535615168816148e7565b945061517660208701614a22565b935060408601356001600160401b0381111561519157600080fd5b61519d88828901614b1a565b909450925050606086013561ffff811681146151b857600080fd5b809150509295509295909350565b6000806000604084860312156151db57600080fd5b83356151e6816148e7565b925060208401356001600160401b0381111561520157600080fd5b61520d86828701614b1a565b9497909650939450505050565b6000806000806040858703121561523057600080fd5b84356001600160401b038082111561524757600080fd5b61525388838901614b1a565b9096509450602087013591508082111561526c57600080fd5b5061527987828801614b1a565b95989497509550505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156152ad576152ad615285565b500390565b600082198211156152c5576152c5615285565b500190565b634e487b7160e01b600052603260045260246000fd5b60006000198214156152f4576152f4615285565b5060010190565b60006020828403121561530d57600080fd5b815161167a816148e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600063ffffffff80831681851680830382111561538157615381615285565b01949350505050565b60006020828403121561539c57600080fd5b8151801515811461167a57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60006020828403121561543d57600080fd5b61167a82614a22565b600081600019048311821515161561546057615460615285565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261549857634e487b7160e01b600052601260045260246000fd5b500490565b60008235605e198336030181126154b357600080fd5b9190910192915050565b6000808335601e198436030181126154d457600080fd5b8301803591506001600160401b038211156154ee57600080fd5b6020019150600681901b360382131561410057600080fd5b60006001600160401b0380831681851680830382111561538157615381615285565b8183526000602080850194508260005b858110156155615763ffffffff61554e83614a22565b1687529582019590820190600101615538565b509495945050505050565b8681526001600160a01b038616602082015260a0604082018190526000906155979083018688615528565b60608301949094525060800152949350505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006001600160401b03838116908316818110156155fb576155fb615285565b039392505050565b60008161561257615612615285565b506000190190565b60006001600160e01b03838116908316818110156155fb576155fb615285565b6000808335601e1984360301811261565157600080fd5b8301803591506001600160401b0382111561566b57600080fd5b6020019150600581901b360382131561410057600080fd5b602081526000615697602083018486615528565b949350505050565b82815260006020604081840152835180604085015260005b818110156156d3578581018301518582016060015282016156b7565b818111156156e5576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561570e57600080fd5b81516001600160e01b03198116811461167a57600080fd5b60006020828403121561573857600080fd5b81356001600160401b038116811461167a57600080fd5b60006001600160e01b0382811684821680830382111561538157615381615285565b80516020808301519190811015615792576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052603160045260246000fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f4fa2646970667358221220513df02979800c403aae5cc96dc9610ab9fc2f9f49a7cd59e5a5b557da30581f64736f6c634300080c0033", } // AVSDirectoryABI is the input ABI used to generate the binding from. @@ -215,6 +222,37 @@ func (_AVSDirectory *AVSDirectoryTransactorRaw) Transact(opts *bind.TransactOpts return _AVSDirectory.Contract.contract.Transact(opts, method, params...) } +// ALLOCATIONDELAY is a free data retrieval call binding the contract method 0x6fbb031c. +// +// Solidity: function ALLOCATION_DELAY() view returns(uint32) +func (_AVSDirectory *AVSDirectoryCaller) ALLOCATIONDELAY(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _AVSDirectory.contract.Call(opts, &out, "ALLOCATION_DELAY") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// ALLOCATIONDELAY is a free data retrieval call binding the contract method 0x6fbb031c. +// +// Solidity: function ALLOCATION_DELAY() view returns(uint32) +func (_AVSDirectory *AVSDirectorySession) ALLOCATIONDELAY() (uint32, error) { + return _AVSDirectory.Contract.ALLOCATIONDELAY(&_AVSDirectory.CallOpts) +} + +// ALLOCATIONDELAY is a free data retrieval call binding the contract method 0x6fbb031c. +// +// Solidity: function ALLOCATION_DELAY() view returns(uint32) +func (_AVSDirectory *AVSDirectoryCallerSession) ALLOCATIONDELAY() (uint32, error) { + return _AVSDirectory.Contract.ALLOCATIONDELAY(&_AVSDirectory.CallOpts) +} + // DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. // // Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) @@ -525,6 +563,68 @@ func (_AVSDirectory *AVSDirectoryCallerSession) DomainSeparator() ([32]byte, err return _AVSDirectory.Contract.DomainSeparator(&_AVSDirectory.CallOpts) } +// FreeMagnitude is a free data retrieval call binding the contract method 0x5fd6abfd. +// +// Solidity: function freeMagnitude(address , address ) view returns(uint64) +func (_AVSDirectory *AVSDirectoryCaller) FreeMagnitude(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (uint64, error) { + var out []interface{} + err := _AVSDirectory.contract.Call(opts, &out, "freeMagnitude", arg0, arg1) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// FreeMagnitude is a free data retrieval call binding the contract method 0x5fd6abfd. +// +// Solidity: function freeMagnitude(address , address ) view returns(uint64) +func (_AVSDirectory *AVSDirectorySession) FreeMagnitude(arg0 common.Address, arg1 common.Address) (uint64, error) { + return _AVSDirectory.Contract.FreeMagnitude(&_AVSDirectory.CallOpts, arg0, arg1) +} + +// FreeMagnitude is a free data retrieval call binding the contract method 0x5fd6abfd. +// +// Solidity: function freeMagnitude(address , address ) view returns(uint64) +func (_AVSDirectory *AVSDirectoryCallerSession) FreeMagnitude(arg0 common.Address, arg1 common.Address) (uint64, error) { + return _AVSDirectory.Contract.FreeMagnitude(&_AVSDirectory.CallOpts, arg0, arg1) +} + +// GetSlashableBips is a free data retrieval call binding the contract method 0x33429a6a. +// +// Solidity: function getSlashableBips(address operator, (address,uint32) operatorSet, address strategy, uint32 timestamp) view returns(uint16) +func (_AVSDirectory *AVSDirectoryCaller) GetSlashableBips(opts *bind.CallOpts, operator common.Address, operatorSet IAVSDirectoryOperatorSet, strategy common.Address, timestamp uint32) (uint16, error) { + var out []interface{} + err := _AVSDirectory.contract.Call(opts, &out, "getSlashableBips", operator, operatorSet, strategy, timestamp) + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// GetSlashableBips is a free data retrieval call binding the contract method 0x33429a6a. +// +// Solidity: function getSlashableBips(address operator, (address,uint32) operatorSet, address strategy, uint32 timestamp) view returns(uint16) +func (_AVSDirectory *AVSDirectorySession) GetSlashableBips(operator common.Address, operatorSet IAVSDirectoryOperatorSet, strategy common.Address, timestamp uint32) (uint16, error) { + return _AVSDirectory.Contract.GetSlashableBips(&_AVSDirectory.CallOpts, operator, operatorSet, strategy, timestamp) +} + +// GetSlashableBips is a free data retrieval call binding the contract method 0x33429a6a. +// +// Solidity: function getSlashableBips(address operator, (address,uint32) operatorSet, address strategy, uint32 timestamp) view returns(uint16) +func (_AVSDirectory *AVSDirectoryCallerSession) GetSlashableBips(operator common.Address, operatorSet IAVSDirectoryOperatorSet, strategy common.Address, timestamp uint32) (uint16, error) { + return _AVSDirectory.Contract.GetSlashableBips(&_AVSDirectory.CallOpts, operator, operatorSet, strategy, timestamp) +} + // InTotalOperatorSets is a free data retrieval call binding the contract method 0xcbdf0e42. // // Solidity: function inTotalOperatorSets(address operator) view returns(uint256) @@ -649,6 +749,37 @@ func (_AVSDirectory *AVSDirectoryCallerSession) IsOperatorSetAVS(arg0 common.Add return _AVSDirectory.Contract.IsOperatorSetAVS(&_AVSDirectory.CallOpts, arg0) } +// IsOperatorSlashable is a free data retrieval call binding the contract method 0x1352c3e6. +// +// Solidity: function isOperatorSlashable(address operator, (address,uint32) operatorSet) view returns(bool) +func (_AVSDirectory *AVSDirectoryCaller) IsOperatorSlashable(opts *bind.CallOpts, operator common.Address, operatorSet IAVSDirectoryOperatorSet) (bool, error) { + var out []interface{} + err := _AVSDirectory.contract.Call(opts, &out, "isOperatorSlashable", operator, operatorSet) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsOperatorSlashable is a free data retrieval call binding the contract method 0x1352c3e6. +// +// Solidity: function isOperatorSlashable(address operator, (address,uint32) operatorSet) view returns(bool) +func (_AVSDirectory *AVSDirectorySession) IsOperatorSlashable(operator common.Address, operatorSet IAVSDirectoryOperatorSet) (bool, error) { + return _AVSDirectory.Contract.IsOperatorSlashable(&_AVSDirectory.CallOpts, operator, operatorSet) +} + +// IsOperatorSlashable is a free data retrieval call binding the contract method 0x1352c3e6. +// +// Solidity: function isOperatorSlashable(address operator, (address,uint32) operatorSet) view returns(bool) +func (_AVSDirectory *AVSDirectoryCallerSession) IsOperatorSlashable(operator common.Address, operatorSet IAVSDirectoryOperatorSet) (bool, error) { + return _AVSDirectory.Contract.IsOperatorSlashable(&_AVSDirectory.CallOpts, operator, operatorSet) +} + // OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5. // // Solidity: function operatorSaltIsSpent(address , bytes32 ) view returns(bool) @@ -711,6 +842,51 @@ func (_AVSDirectory *AVSDirectoryCallerSession) OperatorSetMemberCount(arg0 comm return _AVSDirectory.Contract.OperatorSetMemberCount(&_AVSDirectory.CallOpts, arg0, arg1) } +// OperatorSetStatus is a free data retrieval call binding the contract method 0x1e68134e. +// +// Solidity: function operatorSetStatus(address , address , uint32 ) view returns(bool registered, uint32 lastDeregisteredTimestamp) +func (_AVSDirectory *AVSDirectoryCaller) OperatorSetStatus(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address, arg2 uint32) (struct { + Registered bool + LastDeregisteredTimestamp uint32 +}, error) { + var out []interface{} + err := _AVSDirectory.contract.Call(opts, &out, "operatorSetStatus", arg0, arg1, arg2) + + outstruct := new(struct { + Registered bool + LastDeregisteredTimestamp uint32 + }) + if err != nil { + return *outstruct, err + } + + outstruct.Registered = *abi.ConvertType(out[0], new(bool)).(*bool) + outstruct.LastDeregisteredTimestamp = *abi.ConvertType(out[1], new(uint32)).(*uint32) + + return *outstruct, err + +} + +// OperatorSetStatus is a free data retrieval call binding the contract method 0x1e68134e. +// +// Solidity: function operatorSetStatus(address , address , uint32 ) view returns(bool registered, uint32 lastDeregisteredTimestamp) +func (_AVSDirectory *AVSDirectorySession) OperatorSetStatus(arg0 common.Address, arg1 common.Address, arg2 uint32) (struct { + Registered bool + LastDeregisteredTimestamp uint32 +}, error) { + return _AVSDirectory.Contract.OperatorSetStatus(&_AVSDirectory.CallOpts, arg0, arg1, arg2) +} + +// OperatorSetStatus is a free data retrieval call binding the contract method 0x1e68134e. +// +// Solidity: function operatorSetStatus(address , address , uint32 ) view returns(bool registered, uint32 lastDeregisteredTimestamp) +func (_AVSDirectory *AVSDirectoryCallerSession) OperatorSetStatus(arg0 common.Address, arg1 common.Address, arg2 uint32) (struct { + Registered bool + LastDeregisteredTimestamp uint32 +}, error) { + return _AVSDirectory.Contract.OperatorSetStatus(&_AVSDirectory.CallOpts, arg0, arg1, arg2) +} + // OperatorSetsMemberOf is a free data retrieval call binding the contract method 0x0d5387c5. // // Solidity: function operatorSetsMemberOf(address operator, uint256 start, uint256 length) view returns((address,uint32)[] operatorSets) @@ -897,6 +1073,27 @@ func (_AVSDirectory *AVSDirectoryCallerSession) PauserRegistry() (common.Address return _AVSDirectory.Contract.PauserRegistry(&_AVSDirectory.CallOpts) } +// Allocate is a paid mutator transaction binding the contract method 0x70196708. +// +// Solidity: function allocate(address operator, (address,(address,uint32)[],uint64[])[] allocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectory *AVSDirectoryTransactor) Allocate(opts *bind.TransactOpts, operator common.Address, allocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectory.contract.Transact(opts, "allocate", operator, allocations, operatorSignature) +} + +// Allocate is a paid mutator transaction binding the contract method 0x70196708. +// +// Solidity: function allocate(address operator, (address,(address,uint32)[],uint64[])[] allocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectory *AVSDirectorySession) Allocate(operator common.Address, allocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectory.Contract.Allocate(&_AVSDirectory.TransactOpts, operator, allocations, operatorSignature) +} + +// Allocate is a paid mutator transaction binding the contract method 0x70196708. +// +// Solidity: function allocate(address operator, (address,(address,uint32)[],uint64[])[] allocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectory *AVSDirectoryTransactorSession) Allocate(operator common.Address, allocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectory.Contract.Allocate(&_AVSDirectory.TransactOpts, operator, allocations, operatorSignature) +} + // BecomeOperatorSetAVS is a paid mutator transaction binding the contract method 0xaec205c5. // // Solidity: function becomeOperatorSetAVS() returns() @@ -939,6 +1136,27 @@ func (_AVSDirectory *AVSDirectoryTransactorSession) CancelSalt(salt [32]byte) (* return _AVSDirectory.Contract.CancelSalt(&_AVSDirectory.TransactOpts, salt) } +// CompleteDeallocations is a paid mutator transaction binding the contract method 0x5a922613. +// +// Solidity: function completeDeallocations(address operator, address[] strategies, (address,uint32)[][] operatorSets) returns() +func (_AVSDirectory *AVSDirectoryTransactor) CompleteDeallocations(opts *bind.TransactOpts, operator common.Address, strategies []common.Address, operatorSets [][]IAVSDirectoryOperatorSet) (*types.Transaction, error) { + return _AVSDirectory.contract.Transact(opts, "completeDeallocations", operator, strategies, operatorSets) +} + +// CompleteDeallocations is a paid mutator transaction binding the contract method 0x5a922613. +// +// Solidity: function completeDeallocations(address operator, address[] strategies, (address,uint32)[][] operatorSets) returns() +func (_AVSDirectory *AVSDirectorySession) CompleteDeallocations(operator common.Address, strategies []common.Address, operatorSets [][]IAVSDirectoryOperatorSet) (*types.Transaction, error) { + return _AVSDirectory.Contract.CompleteDeallocations(&_AVSDirectory.TransactOpts, operator, strategies, operatorSets) +} + +// CompleteDeallocations is a paid mutator transaction binding the contract method 0x5a922613. +// +// Solidity: function completeDeallocations(address operator, address[] strategies, (address,uint32)[][] operatorSets) returns() +func (_AVSDirectory *AVSDirectoryTransactorSession) CompleteDeallocations(operator common.Address, strategies []common.Address, operatorSets [][]IAVSDirectoryOperatorSet) (*types.Transaction, error) { + return _AVSDirectory.Contract.CompleteDeallocations(&_AVSDirectory.TransactOpts, operator, strategies, operatorSets) +} + // CreateOperatorSets is a paid mutator transaction binding the contract method 0xafe02ed5. // // Solidity: function createOperatorSets(uint32[] operatorSetIds) returns() @@ -960,27 +1178,6 @@ func (_AVSDirectory *AVSDirectoryTransactorSession) CreateOperatorSets(operatorS return _AVSDirectory.Contract.CreateOperatorSets(&_AVSDirectory.TransactOpts, operatorSetIds) } -// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. -// -// Solidity: function deregisterOperatorFromAVS(address operator) returns() -func (_AVSDirectory *AVSDirectoryTransactor) DeregisterOperatorFromAVS(opts *bind.TransactOpts, operator common.Address) (*types.Transaction, error) { - return _AVSDirectory.contract.Transact(opts, "deregisterOperatorFromAVS", operator) -} - -// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. -// -// Solidity: function deregisterOperatorFromAVS(address operator) returns() -func (_AVSDirectory *AVSDirectorySession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { - return _AVSDirectory.Contract.DeregisterOperatorFromAVS(&_AVSDirectory.TransactOpts, operator) -} - -// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. -// -// Solidity: function deregisterOperatorFromAVS(address operator) returns() -func (_AVSDirectory *AVSDirectoryTransactorSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { - return _AVSDirectory.Contract.DeregisterOperatorFromAVS(&_AVSDirectory.TransactOpts, operator) -} - // DeregisterOperatorFromOperatorSets is a paid mutator transaction binding the contract method 0xc1a8e2c5. // // Solidity: function deregisterOperatorFromOperatorSets(address operator, uint32[] operatorSetIds) returns() @@ -1107,25 +1304,25 @@ func (_AVSDirectory *AVSDirectoryTransactorSession) PauseAll() (*types.Transacti return _AVSDirectory.Contract.PauseAll(&_AVSDirectory.TransactOpts) } -// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// QueueDeallocate is a paid mutator transaction binding the contract method 0x4ef8c5d4. // -// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() -func (_AVSDirectory *AVSDirectoryTransactor) RegisterOperatorToAVS(opts *bind.TransactOpts, operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { - return _AVSDirectory.contract.Transact(opts, "registerOperatorToAVS", operator, operatorSignature) +// Solidity: function queueDeallocate(address operator, (address,(address,uint32)[],uint64[])[] deallocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectory *AVSDirectoryTransactor) QueueDeallocate(opts *bind.TransactOpts, operator common.Address, deallocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectory.contract.Transact(opts, "queueDeallocate", operator, deallocations, operatorSignature) } -// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// QueueDeallocate is a paid mutator transaction binding the contract method 0x4ef8c5d4. // -// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() -func (_AVSDirectory *AVSDirectorySession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { - return _AVSDirectory.Contract.RegisterOperatorToAVS(&_AVSDirectory.TransactOpts, operator, operatorSignature) +// Solidity: function queueDeallocate(address operator, (address,(address,uint32)[],uint64[])[] deallocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectory *AVSDirectorySession) QueueDeallocate(operator common.Address, deallocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectory.Contract.QueueDeallocate(&_AVSDirectory.TransactOpts, operator, deallocations, operatorSignature) } -// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// QueueDeallocate is a paid mutator transaction binding the contract method 0x4ef8c5d4. // -// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() -func (_AVSDirectory *AVSDirectoryTransactorSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { - return _AVSDirectory.Contract.RegisterOperatorToAVS(&_AVSDirectory.TransactOpts, operator, operatorSignature) +// Solidity: function queueDeallocate(address operator, (address,(address,uint32)[],uint64[])[] deallocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectory *AVSDirectoryTransactorSession) QueueDeallocate(operator common.Address, deallocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectory.Contract.QueueDeallocate(&_AVSDirectory.TransactOpts, operator, deallocations, operatorSignature) } // RegisterOperatorToOperatorSets is a paid mutator transaction binding the contract method 0x1e2199e2. @@ -1191,6 +1388,27 @@ func (_AVSDirectory *AVSDirectoryTransactorSession) SetPauserRegistry(newPauserR return _AVSDirectory.Contract.SetPauserRegistry(&_AVSDirectory.TransactOpts, newPauserRegistry) } +// SlashOperator is a paid mutator transaction binding the contract method 0xbd74a06c. +// +// Solidity: function slashOperator(address operator, uint32 operatorSetId, address[] strategies, uint16 bipsToSlash) returns() +func (_AVSDirectory *AVSDirectoryTransactor) SlashOperator(opts *bind.TransactOpts, operator common.Address, operatorSetId uint32, strategies []common.Address, bipsToSlash uint16) (*types.Transaction, error) { + return _AVSDirectory.contract.Transact(opts, "slashOperator", operator, operatorSetId, strategies, bipsToSlash) +} + +// SlashOperator is a paid mutator transaction binding the contract method 0xbd74a06c. +// +// Solidity: function slashOperator(address operator, uint32 operatorSetId, address[] strategies, uint16 bipsToSlash) returns() +func (_AVSDirectory *AVSDirectorySession) SlashOperator(operator common.Address, operatorSetId uint32, strategies []common.Address, bipsToSlash uint16) (*types.Transaction, error) { + return _AVSDirectory.Contract.SlashOperator(&_AVSDirectory.TransactOpts, operator, operatorSetId, strategies, bipsToSlash) +} + +// SlashOperator is a paid mutator transaction binding the contract method 0xbd74a06c. +// +// Solidity: function slashOperator(address operator, uint32 operatorSetId, address[] strategies, uint16 bipsToSlash) returns() +func (_AVSDirectory *AVSDirectoryTransactorSession) SlashOperator(operator common.Address, operatorSetId uint32, strategies []common.Address, bipsToSlash uint16) (*types.Transaction, error) { + return _AVSDirectory.Contract.SlashOperator(&_AVSDirectory.TransactOpts, operator, operatorSetId, strategies, bipsToSlash) +} + // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -1677,9 +1895,9 @@ func (_AVSDirectory *AVSDirectoryFilterer) ParseInitialized(log types.Log) (*AVS return event, nil } -// AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator is returned from FilterOperatorAVSRegistrationStatusUpdated and is used to iterate over the raw logs and unpacked data for OperatorAVSRegistrationStatusUpdated events raised by the AVSDirectory contract. -type AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator struct { - Event *AVSDirectoryOperatorAVSRegistrationStatusUpdated // Event containing the contract specifics and raw log +// AVSDirectoryMagnitudeAllocatedIterator is returned from FilterMagnitudeAllocated and is used to iterate over the raw logs and unpacked data for MagnitudeAllocated events raised by the AVSDirectory contract. +type AVSDirectoryMagnitudeAllocatedIterator struct { + Event *AVSDirectoryMagnitudeAllocated // 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 @@ -1693,7 +1911,7 @@ type AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator struct { // 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 *AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) Next() bool { +func (it *AVSDirectoryMagnitudeAllocatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1702,7 +1920,7 @@ func (it *AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) Next() bool if it.done { select { case log := <-it.logs: - it.Event = new(AVSDirectoryOperatorAVSRegistrationStatusUpdated) + it.Event = new(AVSDirectoryMagnitudeAllocated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1717,7 +1935,7 @@ func (it *AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) Next() bool // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(AVSDirectoryOperatorAVSRegistrationStatusUpdated) + it.Event = new(AVSDirectoryMagnitudeAllocated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1733,61 +1951,45 @@ func (it *AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) Next() bool } // Error returns any retrieval or parsing error occurred during filtering. -func (it *AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) Error() error { +func (it *AVSDirectoryMagnitudeAllocatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) Close() error { +func (it *AVSDirectoryMagnitudeAllocatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// AVSDirectoryOperatorAVSRegistrationStatusUpdated represents a OperatorAVSRegistrationStatusUpdated event raised by the AVSDirectory contract. -type AVSDirectoryOperatorAVSRegistrationStatusUpdated struct { - Operator common.Address - Avs common.Address - Status uint8 - Raw types.Log // Blockchain specific contextual infos +// AVSDirectoryMagnitudeAllocated represents a MagnitudeAllocated event raised by the AVSDirectory contract. +type AVSDirectoryMagnitudeAllocated struct { + Operator common.Address + Strategy common.Address + OperatorSet IAVSDirectoryOperatorSet + MagnitudeToAllocate uint64 + EffectTimestamp uint32 + Raw types.Log // Blockchain specific contextual infos } -// FilterOperatorAVSRegistrationStatusUpdated is a free log retrieval operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// FilterMagnitudeAllocated is a free log retrieval operation binding the contract event 0x6d7d0079582cb2c5e70d4135b37f36711415ee6c260778b716bd65e026eb4f1a. // -// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) -func (_AVSDirectory *AVSDirectoryFilterer) FilterOperatorAVSRegistrationStatusUpdated(opts *bind.FilterOpts, operator []common.Address, avs []common.Address) (*AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var avsRule []interface{} - for _, avsItem := range avs { - avsRule = append(avsRule, avsItem) - } +// Solidity: event MagnitudeAllocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToAllocate, uint32 effectTimestamp) +func (_AVSDirectory *AVSDirectoryFilterer) FilterMagnitudeAllocated(opts *bind.FilterOpts) (*AVSDirectoryMagnitudeAllocatedIterator, error) { - logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "MagnitudeAllocated") if err != nil { return nil, err } - return &AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator{contract: _AVSDirectory.contract, event: "OperatorAVSRegistrationStatusUpdated", logs: logs, sub: sub}, nil + return &AVSDirectoryMagnitudeAllocatedIterator{contract: _AVSDirectory.contract, event: "MagnitudeAllocated", logs: logs, sub: sub}, nil } -// WatchOperatorAVSRegistrationStatusUpdated is a free log subscription operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// WatchMagnitudeAllocated is a free log subscription operation binding the contract event 0x6d7d0079582cb2c5e70d4135b37f36711415ee6c260778b716bd65e026eb4f1a. // -// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) -func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorAVSRegistrationStatusUpdated(opts *bind.WatchOpts, sink chan<- *AVSDirectoryOperatorAVSRegistrationStatusUpdated, operator []common.Address, avs []common.Address) (event.Subscription, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var avsRule []interface{} - for _, avsItem := range avs { - avsRule = append(avsRule, avsItem) - } +// Solidity: event MagnitudeAllocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToAllocate, uint32 effectTimestamp) +func (_AVSDirectory *AVSDirectoryFilterer) WatchMagnitudeAllocated(opts *bind.WatchOpts, sink chan<- *AVSDirectoryMagnitudeAllocated) (event.Subscription, error) { - logs, sub, err := _AVSDirectory.contract.WatchLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + logs, sub, err := _AVSDirectory.contract.WatchLogs(opts, "MagnitudeAllocated") if err != nil { return nil, err } @@ -1797,8 +1999,8 @@ func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorAVSRegistrationStatusUpd select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(AVSDirectoryOperatorAVSRegistrationStatusUpdated) - if err := _AVSDirectory.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", log); err != nil { + event := new(AVSDirectoryMagnitudeAllocated) + if err := _AVSDirectory.contract.UnpackLog(event, "MagnitudeAllocated", log); err != nil { return err } event.Raw = log @@ -1819,21 +2021,21 @@ func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorAVSRegistrationStatusUpd }), nil } -// ParseOperatorAVSRegistrationStatusUpdated is a log parse operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// ParseMagnitudeAllocated is a log parse operation binding the contract event 0x6d7d0079582cb2c5e70d4135b37f36711415ee6c260778b716bd65e026eb4f1a. // -// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) -func (_AVSDirectory *AVSDirectoryFilterer) ParseOperatorAVSRegistrationStatusUpdated(log types.Log) (*AVSDirectoryOperatorAVSRegistrationStatusUpdated, error) { - event := new(AVSDirectoryOperatorAVSRegistrationStatusUpdated) - if err := _AVSDirectory.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", log); err != nil { +// Solidity: event MagnitudeAllocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToAllocate, uint32 effectTimestamp) +func (_AVSDirectory *AVSDirectoryFilterer) ParseMagnitudeAllocated(log types.Log) (*AVSDirectoryMagnitudeAllocated, error) { + event := new(AVSDirectoryMagnitudeAllocated) + if err := _AVSDirectory.contract.UnpackLog(event, "MagnitudeAllocated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// AVSDirectoryOperatorAddedToOperatorSetIterator is returned from FilterOperatorAddedToOperatorSet and is used to iterate over the raw logs and unpacked data for OperatorAddedToOperatorSet events raised by the AVSDirectory contract. -type AVSDirectoryOperatorAddedToOperatorSetIterator struct { - Event *AVSDirectoryOperatorAddedToOperatorSet // Event containing the contract specifics and raw log +// AVSDirectoryMagnitudeDeallocationCompletedIterator is returned from FilterMagnitudeDeallocationCompleted and is used to iterate over the raw logs and unpacked data for MagnitudeDeallocationCompleted events raised by the AVSDirectory contract. +type AVSDirectoryMagnitudeDeallocationCompletedIterator struct { + Event *AVSDirectoryMagnitudeDeallocationCompleted // 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 @@ -1847,7 +2049,7 @@ type AVSDirectoryOperatorAddedToOperatorSetIterator struct { // 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 *AVSDirectoryOperatorAddedToOperatorSetIterator) Next() bool { +func (it *AVSDirectoryMagnitudeDeallocationCompletedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1856,7 +2058,7 @@ func (it *AVSDirectoryOperatorAddedToOperatorSetIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(AVSDirectoryOperatorAddedToOperatorSet) + it.Event = new(AVSDirectoryMagnitudeDeallocationCompleted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1871,7 +2073,7 @@ func (it *AVSDirectoryOperatorAddedToOperatorSetIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(AVSDirectoryOperatorAddedToOperatorSet) + it.Event = new(AVSDirectoryMagnitudeDeallocationCompleted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1887,52 +2089,44 @@ func (it *AVSDirectoryOperatorAddedToOperatorSetIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *AVSDirectoryOperatorAddedToOperatorSetIterator) Error() error { +func (it *AVSDirectoryMagnitudeDeallocationCompletedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *AVSDirectoryOperatorAddedToOperatorSetIterator) Close() error { +func (it *AVSDirectoryMagnitudeDeallocationCompletedIterator) Close() error { it.sub.Unsubscribe() return nil } -// AVSDirectoryOperatorAddedToOperatorSet represents a OperatorAddedToOperatorSet event raised by the AVSDirectory contract. -type AVSDirectoryOperatorAddedToOperatorSet struct { - Operator common.Address - OperatorSet IAVSDirectoryOperatorSet - Raw types.Log // Blockchain specific contextual infos +// AVSDirectoryMagnitudeDeallocationCompleted represents a MagnitudeDeallocationCompleted event raised by the AVSDirectory contract. +type AVSDirectoryMagnitudeDeallocationCompleted struct { + Operator common.Address + Strategy common.Address + OperatorSet IAVSDirectoryOperatorSet + FreeMagnitudeAdded uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterOperatorAddedToOperatorSet is a free log retrieval operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e. +// FilterMagnitudeDeallocationCompleted is a free log retrieval operation binding the contract event 0x1e5c8e13c62c31d6252ac205e592477d643c7e95831d5b46d99a3c60c2fad8db. // -// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet) -func (_AVSDirectory *AVSDirectoryFilterer) FilterOperatorAddedToOperatorSet(opts *bind.FilterOpts, operator []common.Address) (*AVSDirectoryOperatorAddedToOperatorSetIterator, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } +// Solidity: event MagnitudeDeallocationCompleted(address operator, address strategy, (address,uint32) operatorSet, uint64 freeMagnitudeAdded) +func (_AVSDirectory *AVSDirectoryFilterer) FilterMagnitudeDeallocationCompleted(opts *bind.FilterOpts) (*AVSDirectoryMagnitudeDeallocationCompletedIterator, error) { - logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "OperatorAddedToOperatorSet", operatorRule) + logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "MagnitudeDeallocationCompleted") if err != nil { return nil, err } - return &AVSDirectoryOperatorAddedToOperatorSetIterator{contract: _AVSDirectory.contract, event: "OperatorAddedToOperatorSet", logs: logs, sub: sub}, nil + return &AVSDirectoryMagnitudeDeallocationCompletedIterator{contract: _AVSDirectory.contract, event: "MagnitudeDeallocationCompleted", logs: logs, sub: sub}, nil } -// WatchOperatorAddedToOperatorSet is a free log subscription operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e. +// WatchMagnitudeDeallocationCompleted is a free log subscription operation binding the contract event 0x1e5c8e13c62c31d6252ac205e592477d643c7e95831d5b46d99a3c60c2fad8db. // -// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet) -func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorAddedToOperatorSet(opts *bind.WatchOpts, sink chan<- *AVSDirectoryOperatorAddedToOperatorSet, operator []common.Address) (event.Subscription, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } +// Solidity: event MagnitudeDeallocationCompleted(address operator, address strategy, (address,uint32) operatorSet, uint64 freeMagnitudeAdded) +func (_AVSDirectory *AVSDirectoryFilterer) WatchMagnitudeDeallocationCompleted(opts *bind.WatchOpts, sink chan<- *AVSDirectoryMagnitudeDeallocationCompleted) (event.Subscription, error) { - logs, sub, err := _AVSDirectory.contract.WatchLogs(opts, "OperatorAddedToOperatorSet", operatorRule) + logs, sub, err := _AVSDirectory.contract.WatchLogs(opts, "MagnitudeDeallocationCompleted") if err != nil { return nil, err } @@ -1942,8 +2136,8 @@ func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorAddedToOperatorSet(opts select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(AVSDirectoryOperatorAddedToOperatorSet) - if err := _AVSDirectory.contract.UnpackLog(event, "OperatorAddedToOperatorSet", log); err != nil { + event := new(AVSDirectoryMagnitudeDeallocationCompleted) + if err := _AVSDirectory.contract.UnpackLog(event, "MagnitudeDeallocationCompleted", log); err != nil { return err } event.Raw = log @@ -1964,21 +2158,21 @@ func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorAddedToOperatorSet(opts }), nil } -// ParseOperatorAddedToOperatorSet is a log parse operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e. +// ParseMagnitudeDeallocationCompleted is a log parse operation binding the contract event 0x1e5c8e13c62c31d6252ac205e592477d643c7e95831d5b46d99a3c60c2fad8db. // -// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet) -func (_AVSDirectory *AVSDirectoryFilterer) ParseOperatorAddedToOperatorSet(log types.Log) (*AVSDirectoryOperatorAddedToOperatorSet, error) { - event := new(AVSDirectoryOperatorAddedToOperatorSet) - if err := _AVSDirectory.contract.UnpackLog(event, "OperatorAddedToOperatorSet", log); err != nil { +// Solidity: event MagnitudeDeallocationCompleted(address operator, address strategy, (address,uint32) operatorSet, uint64 freeMagnitudeAdded) +func (_AVSDirectory *AVSDirectoryFilterer) ParseMagnitudeDeallocationCompleted(log types.Log) (*AVSDirectoryMagnitudeDeallocationCompleted, error) { + event := new(AVSDirectoryMagnitudeDeallocationCompleted) + if err := _AVSDirectory.contract.UnpackLog(event, "MagnitudeDeallocationCompleted", log); err != nil { return nil, err } event.Raw = log return event, nil } -// AVSDirectoryOperatorMigratedToOperatorSetsIterator is returned from FilterOperatorMigratedToOperatorSets and is used to iterate over the raw logs and unpacked data for OperatorMigratedToOperatorSets events raised by the AVSDirectory contract. -type AVSDirectoryOperatorMigratedToOperatorSetsIterator struct { - Event *AVSDirectoryOperatorMigratedToOperatorSets // Event containing the contract specifics and raw log +// AVSDirectoryMagnitudeQueueDeallocatedIterator is returned from FilterMagnitudeQueueDeallocated and is used to iterate over the raw logs and unpacked data for MagnitudeQueueDeallocated events raised by the AVSDirectory contract. +type AVSDirectoryMagnitudeQueueDeallocatedIterator struct { + Event *AVSDirectoryMagnitudeQueueDeallocated // 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 @@ -1992,7 +2186,7 @@ type AVSDirectoryOperatorMigratedToOperatorSetsIterator struct { // 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 *AVSDirectoryOperatorMigratedToOperatorSetsIterator) Next() bool { +func (it *AVSDirectoryMagnitudeQueueDeallocatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2001,7 +2195,7 @@ func (it *AVSDirectoryOperatorMigratedToOperatorSetsIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(AVSDirectoryOperatorMigratedToOperatorSets) + it.Event = new(AVSDirectoryMagnitudeQueueDeallocated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2016,7 +2210,7 @@ func (it *AVSDirectoryOperatorMigratedToOperatorSetsIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(AVSDirectoryOperatorMigratedToOperatorSets) + it.Event = new(AVSDirectoryMagnitudeQueueDeallocated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2032,61 +2226,45 @@ func (it *AVSDirectoryOperatorMigratedToOperatorSetsIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *AVSDirectoryOperatorMigratedToOperatorSetsIterator) Error() error { +func (it *AVSDirectoryMagnitudeQueueDeallocatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *AVSDirectoryOperatorMigratedToOperatorSetsIterator) Close() error { +func (it *AVSDirectoryMagnitudeQueueDeallocatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// AVSDirectoryOperatorMigratedToOperatorSets represents a OperatorMigratedToOperatorSets event raised by the AVSDirectory contract. -type AVSDirectoryOperatorMigratedToOperatorSets struct { - Operator common.Address - Avs common.Address - OperatorSetIds []uint32 - Raw types.Log // Blockchain specific contextual infos +// AVSDirectoryMagnitudeQueueDeallocated represents a MagnitudeQueueDeallocated event raised by the AVSDirectory contract. +type AVSDirectoryMagnitudeQueueDeallocated struct { + Operator common.Address + Strategy common.Address + OperatorSet IAVSDirectoryOperatorSet + MagnitudeToDeallocate uint64 + CompletableTimestamp uint32 + Raw types.Log // Blockchain specific contextual infos } -// FilterOperatorMigratedToOperatorSets is a free log retrieval operation binding the contract event 0x54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01. +// FilterMagnitudeQueueDeallocated is a free log retrieval operation binding the contract event 0x2e68db1fe51107d7e451ae268d1631796989ab9d7925054e9b247854cb5be950. // -// Solidity: event OperatorMigratedToOperatorSets(address indexed operator, address indexed avs, uint32[] operatorSetIds) -func (_AVSDirectory *AVSDirectoryFilterer) FilterOperatorMigratedToOperatorSets(opts *bind.FilterOpts, operator []common.Address, avs []common.Address) (*AVSDirectoryOperatorMigratedToOperatorSetsIterator, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var avsRule []interface{} - for _, avsItem := range avs { - avsRule = append(avsRule, avsItem) - } +// Solidity: event MagnitudeQueueDeallocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToDeallocate, uint32 completableTimestamp) +func (_AVSDirectory *AVSDirectoryFilterer) FilterMagnitudeQueueDeallocated(opts *bind.FilterOpts) (*AVSDirectoryMagnitudeQueueDeallocatedIterator, error) { - logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "OperatorMigratedToOperatorSets", operatorRule, avsRule) + logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "MagnitudeQueueDeallocated") if err != nil { return nil, err } - return &AVSDirectoryOperatorMigratedToOperatorSetsIterator{contract: _AVSDirectory.contract, event: "OperatorMigratedToOperatorSets", logs: logs, sub: sub}, nil + return &AVSDirectoryMagnitudeQueueDeallocatedIterator{contract: _AVSDirectory.contract, event: "MagnitudeQueueDeallocated", logs: logs, sub: sub}, nil } -// WatchOperatorMigratedToOperatorSets is a free log subscription operation binding the contract event 0x54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01. +// WatchMagnitudeQueueDeallocated is a free log subscription operation binding the contract event 0x2e68db1fe51107d7e451ae268d1631796989ab9d7925054e9b247854cb5be950. // -// Solidity: event OperatorMigratedToOperatorSets(address indexed operator, address indexed avs, uint32[] operatorSetIds) -func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorMigratedToOperatorSets(opts *bind.WatchOpts, sink chan<- *AVSDirectoryOperatorMigratedToOperatorSets, operator []common.Address, avs []common.Address) (event.Subscription, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var avsRule []interface{} - for _, avsItem := range avs { - avsRule = append(avsRule, avsItem) - } +// Solidity: event MagnitudeQueueDeallocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToDeallocate, uint32 completableTimestamp) +func (_AVSDirectory *AVSDirectoryFilterer) WatchMagnitudeQueueDeallocated(opts *bind.WatchOpts, sink chan<- *AVSDirectoryMagnitudeQueueDeallocated) (event.Subscription, error) { - logs, sub, err := _AVSDirectory.contract.WatchLogs(opts, "OperatorMigratedToOperatorSets", operatorRule, avsRule) + logs, sub, err := _AVSDirectory.contract.WatchLogs(opts, "MagnitudeQueueDeallocated") if err != nil { return nil, err } @@ -2096,8 +2274,8 @@ func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorMigratedToOperatorSets(o select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(AVSDirectoryOperatorMigratedToOperatorSets) - if err := _AVSDirectory.contract.UnpackLog(event, "OperatorMigratedToOperatorSets", log); err != nil { + event := new(AVSDirectoryMagnitudeQueueDeallocated) + if err := _AVSDirectory.contract.UnpackLog(event, "MagnitudeQueueDeallocated", log); err != nil { return err } event.Raw = log @@ -2118,9 +2296,462 @@ func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorMigratedToOperatorSets(o }), nil } -// ParseOperatorMigratedToOperatorSets is a log parse operation binding the contract event 0x54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01. +// ParseMagnitudeQueueDeallocated is a log parse operation binding the contract event 0x2e68db1fe51107d7e451ae268d1631796989ab9d7925054e9b247854cb5be950. // -// Solidity: event OperatorMigratedToOperatorSets(address indexed operator, address indexed avs, uint32[] operatorSetIds) +// Solidity: event MagnitudeQueueDeallocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToDeallocate, uint32 completableTimestamp) +func (_AVSDirectory *AVSDirectoryFilterer) ParseMagnitudeQueueDeallocated(log types.Log) (*AVSDirectoryMagnitudeQueueDeallocated, error) { + event := new(AVSDirectoryMagnitudeQueueDeallocated) + if err := _AVSDirectory.contract.UnpackLog(event, "MagnitudeQueueDeallocated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator is returned from FilterOperatorAVSRegistrationStatusUpdated and is used to iterate over the raw logs and unpacked data for OperatorAVSRegistrationStatusUpdated events raised by the AVSDirectory contract. +type AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator struct { + Event *AVSDirectoryOperatorAVSRegistrationStatusUpdated // 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 *AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) 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(AVSDirectoryOperatorAVSRegistrationStatusUpdated) + 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(AVSDirectoryOperatorAVSRegistrationStatusUpdated) + 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 *AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryOperatorAVSRegistrationStatusUpdated represents a OperatorAVSRegistrationStatusUpdated event raised by the AVSDirectory contract. +type AVSDirectoryOperatorAVSRegistrationStatusUpdated struct { + Operator common.Address + Avs common.Address + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorAVSRegistrationStatusUpdated is a free log retrieval operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_AVSDirectory *AVSDirectoryFilterer) FilterOperatorAVSRegistrationStatusUpdated(opts *bind.FilterOpts, operator []common.Address, avs []common.Address) (*AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + if err != nil { + return nil, err + } + return &AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator{contract: _AVSDirectory.contract, event: "OperatorAVSRegistrationStatusUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorAVSRegistrationStatusUpdated is a free log subscription operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorAVSRegistrationStatusUpdated(opts *bind.WatchOpts, sink chan<- *AVSDirectoryOperatorAVSRegistrationStatusUpdated, operator []common.Address, avs []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectory.contract.WatchLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + 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(AVSDirectoryOperatorAVSRegistrationStatusUpdated) + if err := _AVSDirectory.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", 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 +} + +// ParseOperatorAVSRegistrationStatusUpdated is a log parse operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_AVSDirectory *AVSDirectoryFilterer) ParseOperatorAVSRegistrationStatusUpdated(log types.Log) (*AVSDirectoryOperatorAVSRegistrationStatusUpdated, error) { + event := new(AVSDirectoryOperatorAVSRegistrationStatusUpdated) + if err := _AVSDirectory.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AVSDirectoryOperatorAddedToOperatorSetIterator is returned from FilterOperatorAddedToOperatorSet and is used to iterate over the raw logs and unpacked data for OperatorAddedToOperatorSet events raised by the AVSDirectory contract. +type AVSDirectoryOperatorAddedToOperatorSetIterator struct { + Event *AVSDirectoryOperatorAddedToOperatorSet // 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 *AVSDirectoryOperatorAddedToOperatorSetIterator) 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(AVSDirectoryOperatorAddedToOperatorSet) + 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(AVSDirectoryOperatorAddedToOperatorSet) + 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 *AVSDirectoryOperatorAddedToOperatorSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryOperatorAddedToOperatorSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryOperatorAddedToOperatorSet represents a OperatorAddedToOperatorSet event raised by the AVSDirectory contract. +type AVSDirectoryOperatorAddedToOperatorSet struct { + Operator common.Address + OperatorSet IAVSDirectoryOperatorSet + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorAddedToOperatorSet is a free log retrieval operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e. +// +// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet) +func (_AVSDirectory *AVSDirectoryFilterer) FilterOperatorAddedToOperatorSet(opts *bind.FilterOpts, operator []common.Address) (*AVSDirectoryOperatorAddedToOperatorSetIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "OperatorAddedToOperatorSet", operatorRule) + if err != nil { + return nil, err + } + return &AVSDirectoryOperatorAddedToOperatorSetIterator{contract: _AVSDirectory.contract, event: "OperatorAddedToOperatorSet", logs: logs, sub: sub}, nil +} + +// WatchOperatorAddedToOperatorSet is a free log subscription operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e. +// +// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet) +func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorAddedToOperatorSet(opts *bind.WatchOpts, sink chan<- *AVSDirectoryOperatorAddedToOperatorSet, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _AVSDirectory.contract.WatchLogs(opts, "OperatorAddedToOperatorSet", 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(AVSDirectoryOperatorAddedToOperatorSet) + if err := _AVSDirectory.contract.UnpackLog(event, "OperatorAddedToOperatorSet", 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 +} + +// ParseOperatorAddedToOperatorSet is a log parse operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e. +// +// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet) +func (_AVSDirectory *AVSDirectoryFilterer) ParseOperatorAddedToOperatorSet(log types.Log) (*AVSDirectoryOperatorAddedToOperatorSet, error) { + event := new(AVSDirectoryOperatorAddedToOperatorSet) + if err := _AVSDirectory.contract.UnpackLog(event, "OperatorAddedToOperatorSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AVSDirectoryOperatorMigratedToOperatorSetsIterator is returned from FilterOperatorMigratedToOperatorSets and is used to iterate over the raw logs and unpacked data for OperatorMigratedToOperatorSets events raised by the AVSDirectory contract. +type AVSDirectoryOperatorMigratedToOperatorSetsIterator struct { + Event *AVSDirectoryOperatorMigratedToOperatorSets // 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 *AVSDirectoryOperatorMigratedToOperatorSetsIterator) 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(AVSDirectoryOperatorMigratedToOperatorSets) + 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(AVSDirectoryOperatorMigratedToOperatorSets) + 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 *AVSDirectoryOperatorMigratedToOperatorSetsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryOperatorMigratedToOperatorSetsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryOperatorMigratedToOperatorSets represents a OperatorMigratedToOperatorSets event raised by the AVSDirectory contract. +type AVSDirectoryOperatorMigratedToOperatorSets struct { + Operator common.Address + Avs common.Address + OperatorSetIds []uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorMigratedToOperatorSets is a free log retrieval operation binding the contract event 0x54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01. +// +// Solidity: event OperatorMigratedToOperatorSets(address indexed operator, address indexed avs, uint32[] operatorSetIds) +func (_AVSDirectory *AVSDirectoryFilterer) FilterOperatorMigratedToOperatorSets(opts *bind.FilterOpts, operator []common.Address, avs []common.Address) (*AVSDirectoryOperatorMigratedToOperatorSetsIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "OperatorMigratedToOperatorSets", operatorRule, avsRule) + if err != nil { + return nil, err + } + return &AVSDirectoryOperatorMigratedToOperatorSetsIterator{contract: _AVSDirectory.contract, event: "OperatorMigratedToOperatorSets", logs: logs, sub: sub}, nil +} + +// WatchOperatorMigratedToOperatorSets is a free log subscription operation binding the contract event 0x54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01. +// +// Solidity: event OperatorMigratedToOperatorSets(address indexed operator, address indexed avs, uint32[] operatorSetIds) +func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorMigratedToOperatorSets(opts *bind.WatchOpts, sink chan<- *AVSDirectoryOperatorMigratedToOperatorSets, operator []common.Address, avs []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectory.contract.WatchLogs(opts, "OperatorMigratedToOperatorSets", operatorRule, avsRule) + 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(AVSDirectoryOperatorMigratedToOperatorSets) + if err := _AVSDirectory.contract.UnpackLog(event, "OperatorMigratedToOperatorSets", 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 +} + +// ParseOperatorMigratedToOperatorSets is a log parse operation binding the contract event 0x54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01. +// +// Solidity: event OperatorMigratedToOperatorSets(address indexed operator, address indexed avs, uint32[] operatorSetIds) func (_AVSDirectory *AVSDirectoryFilterer) ParseOperatorMigratedToOperatorSets(log types.Log) (*AVSDirectoryOperatorMigratedToOperatorSets, error) { event := new(AVSDirectoryOperatorMigratedToOperatorSets) if err := _AVSDirectory.contract.UnpackLog(event, "OperatorMigratedToOperatorSets", log); err != nil { @@ -2409,6 +3040,143 @@ func (_AVSDirectory *AVSDirectoryFilterer) ParseOperatorSetCreated(log types.Log return event, nil } +// AVSDirectoryOperatorSlashedIterator is returned from FilterOperatorSlashed and is used to iterate over the raw logs and unpacked data for OperatorSlashed events raised by the AVSDirectory contract. +type AVSDirectoryOperatorSlashedIterator struct { + Event *AVSDirectoryOperatorSlashed // 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 *AVSDirectoryOperatorSlashedIterator) 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(AVSDirectoryOperatorSlashed) + 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(AVSDirectoryOperatorSlashed) + 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 *AVSDirectoryOperatorSlashedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryOperatorSlashedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryOperatorSlashed represents a OperatorSlashed event raised by the AVSDirectory contract. +type AVSDirectoryOperatorSlashed struct { + Operator common.Address + OperatorSetId uint32 + Strategy common.Address + BipsToSlash uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSlashed is a free log retrieval operation binding the contract event 0xe672839d3c371691acdb52de9fefc94b3dbf407dc0920ef566c7c059ad575b1c. +// +// Solidity: event OperatorSlashed(address operator, uint32 operatorSetId, address strategy, uint16 bipsToSlash) +func (_AVSDirectory *AVSDirectoryFilterer) FilterOperatorSlashed(opts *bind.FilterOpts) (*AVSDirectoryOperatorSlashedIterator, error) { + + logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "OperatorSlashed") + if err != nil { + return nil, err + } + return &AVSDirectoryOperatorSlashedIterator{contract: _AVSDirectory.contract, event: "OperatorSlashed", logs: logs, sub: sub}, nil +} + +// WatchOperatorSlashed is a free log subscription operation binding the contract event 0xe672839d3c371691acdb52de9fefc94b3dbf407dc0920ef566c7c059ad575b1c. +// +// Solidity: event OperatorSlashed(address operator, uint32 operatorSetId, address strategy, uint16 bipsToSlash) +func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorSlashed(opts *bind.WatchOpts, sink chan<- *AVSDirectoryOperatorSlashed) (event.Subscription, error) { + + logs, sub, err := _AVSDirectory.contract.WatchLogs(opts, "OperatorSlashed") + 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(AVSDirectoryOperatorSlashed) + if err := _AVSDirectory.contract.UnpackLog(event, "OperatorSlashed", 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 +} + +// ParseOperatorSlashed is a log parse operation binding the contract event 0xe672839d3c371691acdb52de9fefc94b3dbf407dc0920ef566c7c059ad575b1c. +// +// Solidity: event OperatorSlashed(address operator, uint32 operatorSetId, address strategy, uint16 bipsToSlash) +func (_AVSDirectory *AVSDirectoryFilterer) ParseOperatorSlashed(log types.Log) (*AVSDirectoryOperatorSlashed, error) { + event := new(AVSDirectoryOperatorSlashed) + if err := _AVSDirectory.contract.UnpackLog(event, "OperatorSlashed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // AVSDirectoryOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the AVSDirectory contract. type AVSDirectoryOwnershipTransferredIterator struct { Event *AVSDirectoryOwnershipTransferred // Event containing the contract specifics and raw log diff --git a/pkg/bindings/AVSDirectoryStorage/binding.go b/pkg/bindings/AVSDirectoryStorage/binding.go index 9b1379db5..feb06e090 100644 --- a/pkg/bindings/AVSDirectoryStorage/binding.go +++ b/pkg/bindings/AVSDirectoryStorage/binding.go @@ -29,6 +29,13 @@ var ( _ = abi.ConvertType ) +// IAVSDirectoryMagnitudeAdjustment is an auto generated low-level Go binding around an user-defined struct. +type IAVSDirectoryMagnitudeAdjustment struct { + Strategy common.Address + OperatorSets []IAVSDirectoryOperatorSet + MagnitudeDiffs []uint64 +} + // IAVSDirectoryOperatorSet is an auto generated low-level Go binding around an user-defined struct. type IAVSDirectoryOperatorSet struct { Avs common.Address @@ -44,7 +51,7 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct { // AVSDirectoryStorageMetaData contains all meta data concerning the AVSDirectoryStorage contract. var AVSDirectoryStorageMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"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\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"becomeOperatorSetAVS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"calculateOperatorSetForceDeregistrationTypehash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorSetRegistrationDigestHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"createOperatorSets\",\"inputs\":[{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"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\":\"deregisterOperatorFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"forceDeregisterFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"isMember\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSetAVS\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"migrateOperatorsToOperatorSets\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetMemberCount\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"registerOperatorToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"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\":\"AVSMigratedToOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"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\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMigratedToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"indexed\":false,\"internalType\":\"uint32[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false}]", + ABI: "[{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"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\":\"allocate\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allocations\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.MagnitudeAdjustment[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.OperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"magnitudeDiffs\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]},{\"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\":\"avsOperatorStatus\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"becomeOperatorSetAVS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"calculateOperatorSetForceDeregistrationTypehash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorSetRegistrationDigestHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"completeDeallocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"operatorSets\",\"type\":\"tuple[][]\",\"internalType\":\"structIAVSDirectory.OperatorSet[][]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"forceDeregisterFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"freeMagnitude\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashableBips\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"timestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMember\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSetAVS\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSlashable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"migrateOperatorsToOperatorSets\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetMemberCount\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetStatus\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"registered\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"lastDeregisteredTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueDeallocate\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"deallocations\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.MagnitudeAdjustment[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.OperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"magnitudeDiffs\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]},{\"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\":\"registerOperatorToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"slashOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"bipsToSlash\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"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\":\"AVSMigratedToOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MagnitudeAllocated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"magnitudeToAllocate\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MagnitudeDeallocationCompleted\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"freeMagnitudeAdded\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MagnitudeQueueDeallocated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"magnitudeToDeallocate\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"completableTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"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\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMigratedToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"indexed\":false,\"internalType\":\"uint32[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"bipsToSlash\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false}]", } // AVSDirectoryStorageABI is the input ABI used to generate the binding from. @@ -503,6 +510,68 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) DomainSeparator() return _AVSDirectoryStorage.Contract.DomainSeparator(&_AVSDirectoryStorage.CallOpts) } +// FreeMagnitude is a free data retrieval call binding the contract method 0x5fd6abfd. +// +// Solidity: function freeMagnitude(address , address ) view returns(uint64) +func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) FreeMagnitude(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (uint64, error) { + var out []interface{} + err := _AVSDirectoryStorage.contract.Call(opts, &out, "freeMagnitude", arg0, arg1) + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// FreeMagnitude is a free data retrieval call binding the contract method 0x5fd6abfd. +// +// Solidity: function freeMagnitude(address , address ) view returns(uint64) +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) FreeMagnitude(arg0 common.Address, arg1 common.Address) (uint64, error) { + return _AVSDirectoryStorage.Contract.FreeMagnitude(&_AVSDirectoryStorage.CallOpts, arg0, arg1) +} + +// FreeMagnitude is a free data retrieval call binding the contract method 0x5fd6abfd. +// +// Solidity: function freeMagnitude(address , address ) view returns(uint64) +func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) FreeMagnitude(arg0 common.Address, arg1 common.Address) (uint64, error) { + return _AVSDirectoryStorage.Contract.FreeMagnitude(&_AVSDirectoryStorage.CallOpts, arg0, arg1) +} + +// GetSlashableBips is a free data retrieval call binding the contract method 0x33429a6a. +// +// Solidity: function getSlashableBips(address operator, (address,uint32) operatorSet, address strategy, uint32 timestamp) view returns(uint16) +func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) GetSlashableBips(opts *bind.CallOpts, operator common.Address, operatorSet IAVSDirectoryOperatorSet, strategy common.Address, timestamp uint32) (uint16, error) { + var out []interface{} + err := _AVSDirectoryStorage.contract.Call(opts, &out, "getSlashableBips", operator, operatorSet, strategy, timestamp) + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// GetSlashableBips is a free data retrieval call binding the contract method 0x33429a6a. +// +// Solidity: function getSlashableBips(address operator, (address,uint32) operatorSet, address strategy, uint32 timestamp) view returns(uint16) +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) GetSlashableBips(operator common.Address, operatorSet IAVSDirectoryOperatorSet, strategy common.Address, timestamp uint32) (uint16, error) { + return _AVSDirectoryStorage.Contract.GetSlashableBips(&_AVSDirectoryStorage.CallOpts, operator, operatorSet, strategy, timestamp) +} + +// GetSlashableBips is a free data retrieval call binding the contract method 0x33429a6a. +// +// Solidity: function getSlashableBips(address operator, (address,uint32) operatorSet, address strategy, uint32 timestamp) view returns(uint16) +func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) GetSlashableBips(operator common.Address, operatorSet IAVSDirectoryOperatorSet, strategy common.Address, timestamp uint32) (uint16, error) { + return _AVSDirectoryStorage.Contract.GetSlashableBips(&_AVSDirectoryStorage.CallOpts, operator, operatorSet, strategy, timestamp) +} + // IsMember is a free data retrieval call binding the contract method 0xda2ff05d. // // Solidity: function isMember(address operator, (address,uint32) operatorSet) view returns(bool) @@ -596,6 +665,37 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) IsOperatorSetAVS(a return _AVSDirectoryStorage.Contract.IsOperatorSetAVS(&_AVSDirectoryStorage.CallOpts, arg0) } +// IsOperatorSlashable is a free data retrieval call binding the contract method 0x1352c3e6. +// +// Solidity: function isOperatorSlashable(address operator, (address,uint32) operatorSet) view returns(bool) +func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) IsOperatorSlashable(opts *bind.CallOpts, operator common.Address, operatorSet IAVSDirectoryOperatorSet) (bool, error) { + var out []interface{} + err := _AVSDirectoryStorage.contract.Call(opts, &out, "isOperatorSlashable", operator, operatorSet) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsOperatorSlashable is a free data retrieval call binding the contract method 0x1352c3e6. +// +// Solidity: function isOperatorSlashable(address operator, (address,uint32) operatorSet) view returns(bool) +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) IsOperatorSlashable(operator common.Address, operatorSet IAVSDirectoryOperatorSet) (bool, error) { + return _AVSDirectoryStorage.Contract.IsOperatorSlashable(&_AVSDirectoryStorage.CallOpts, operator, operatorSet) +} + +// IsOperatorSlashable is a free data retrieval call binding the contract method 0x1352c3e6. +// +// Solidity: function isOperatorSlashable(address operator, (address,uint32) operatorSet) view returns(bool) +func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) IsOperatorSlashable(operator common.Address, operatorSet IAVSDirectoryOperatorSet) (bool, error) { + return _AVSDirectoryStorage.Contract.IsOperatorSlashable(&_AVSDirectoryStorage.CallOpts, operator, operatorSet) +} + // OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5. // // Solidity: function operatorSaltIsSpent(address , bytes32 ) view returns(bool) @@ -658,6 +758,72 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) OperatorSetMemberC return _AVSDirectoryStorage.Contract.OperatorSetMemberCount(&_AVSDirectoryStorage.CallOpts, arg0, arg1) } +// OperatorSetStatus is a free data retrieval call binding the contract method 0x1e68134e. +// +// Solidity: function operatorSetStatus(address , address , uint32 ) view returns(bool registered, uint32 lastDeregisteredTimestamp) +func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) OperatorSetStatus(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address, arg2 uint32) (struct { + Registered bool + LastDeregisteredTimestamp uint32 +}, error) { + var out []interface{} + err := _AVSDirectoryStorage.contract.Call(opts, &out, "operatorSetStatus", arg0, arg1, arg2) + + outstruct := new(struct { + Registered bool + LastDeregisteredTimestamp uint32 + }) + if err != nil { + return *outstruct, err + } + + outstruct.Registered = *abi.ConvertType(out[0], new(bool)).(*bool) + outstruct.LastDeregisteredTimestamp = *abi.ConvertType(out[1], new(uint32)).(*uint32) + + return *outstruct, err + +} + +// OperatorSetStatus is a free data retrieval call binding the contract method 0x1e68134e. +// +// Solidity: function operatorSetStatus(address , address , uint32 ) view returns(bool registered, uint32 lastDeregisteredTimestamp) +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) OperatorSetStatus(arg0 common.Address, arg1 common.Address, arg2 uint32) (struct { + Registered bool + LastDeregisteredTimestamp uint32 +}, error) { + return _AVSDirectoryStorage.Contract.OperatorSetStatus(&_AVSDirectoryStorage.CallOpts, arg0, arg1, arg2) +} + +// OperatorSetStatus is a free data retrieval call binding the contract method 0x1e68134e. +// +// Solidity: function operatorSetStatus(address , address , uint32 ) view returns(bool registered, uint32 lastDeregisteredTimestamp) +func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) OperatorSetStatus(arg0 common.Address, arg1 common.Address, arg2 uint32) (struct { + Registered bool + LastDeregisteredTimestamp uint32 +}, error) { + return _AVSDirectoryStorage.Contract.OperatorSetStatus(&_AVSDirectoryStorage.CallOpts, arg0, arg1, arg2) +} + +// Allocate is a paid mutator transaction binding the contract method 0x70196708. +// +// Solidity: function allocate(address operator, (address,(address,uint32)[],uint64[])[] allocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactor) Allocate(opts *bind.TransactOpts, operator common.Address, allocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectoryStorage.contract.Transact(opts, "allocate", operator, allocations, operatorSignature) +} + +// Allocate is a paid mutator transaction binding the contract method 0x70196708. +// +// Solidity: function allocate(address operator, (address,(address,uint32)[],uint64[])[] allocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) Allocate(operator common.Address, allocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.Allocate(&_AVSDirectoryStorage.TransactOpts, operator, allocations, operatorSignature) +} + +// Allocate is a paid mutator transaction binding the contract method 0x70196708. +// +// Solidity: function allocate(address operator, (address,(address,uint32)[],uint64[])[] allocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) Allocate(operator common.Address, allocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.Allocate(&_AVSDirectoryStorage.TransactOpts, operator, allocations, operatorSignature) +} + // BecomeOperatorSetAVS is a paid mutator transaction binding the contract method 0xaec205c5. // // Solidity: function becomeOperatorSetAVS() returns() @@ -700,6 +866,27 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) CancelSalt(sal return _AVSDirectoryStorage.Contract.CancelSalt(&_AVSDirectoryStorage.TransactOpts, salt) } +// CompleteDeallocations is a paid mutator transaction binding the contract method 0x5a922613. +// +// Solidity: function completeDeallocations(address operator, address[] strategies, (address,uint32)[][] operatorSets) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactor) CompleteDeallocations(opts *bind.TransactOpts, operator common.Address, strategies []common.Address, operatorSets [][]IAVSDirectoryOperatorSet) (*types.Transaction, error) { + return _AVSDirectoryStorage.contract.Transact(opts, "completeDeallocations", operator, strategies, operatorSets) +} + +// CompleteDeallocations is a paid mutator transaction binding the contract method 0x5a922613. +// +// Solidity: function completeDeallocations(address operator, address[] strategies, (address,uint32)[][] operatorSets) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) CompleteDeallocations(operator common.Address, strategies []common.Address, operatorSets [][]IAVSDirectoryOperatorSet) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.CompleteDeallocations(&_AVSDirectoryStorage.TransactOpts, operator, strategies, operatorSets) +} + +// CompleteDeallocations is a paid mutator transaction binding the contract method 0x5a922613. +// +// Solidity: function completeDeallocations(address operator, address[] strategies, (address,uint32)[][] operatorSets) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) CompleteDeallocations(operator common.Address, strategies []common.Address, operatorSets [][]IAVSDirectoryOperatorSet) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.CompleteDeallocations(&_AVSDirectoryStorage.TransactOpts, operator, strategies, operatorSets) +} + // CreateOperatorSets is a paid mutator transaction binding the contract method 0xafe02ed5. // // Solidity: function createOperatorSets(uint32[] operatorSetIds) returns() @@ -721,27 +908,6 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) CreateOperator return _AVSDirectoryStorage.Contract.CreateOperatorSets(&_AVSDirectoryStorage.TransactOpts, operatorSetIds) } -// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. -// -// Solidity: function deregisterOperatorFromAVS(address operator) returns() -func (_AVSDirectoryStorage *AVSDirectoryStorageTransactor) DeregisterOperatorFromAVS(opts *bind.TransactOpts, operator common.Address) (*types.Transaction, error) { - return _AVSDirectoryStorage.contract.Transact(opts, "deregisterOperatorFromAVS", operator) -} - -// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. -// -// Solidity: function deregisterOperatorFromAVS(address operator) returns() -func (_AVSDirectoryStorage *AVSDirectoryStorageSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { - return _AVSDirectoryStorage.Contract.DeregisterOperatorFromAVS(&_AVSDirectoryStorage.TransactOpts, operator) -} - -// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. -// -// Solidity: function deregisterOperatorFromAVS(address operator) returns() -func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { - return _AVSDirectoryStorage.Contract.DeregisterOperatorFromAVS(&_AVSDirectoryStorage.TransactOpts, operator) -} - // DeregisterOperatorFromOperatorSets is a paid mutator transaction binding the contract method 0xc1a8e2c5. // // Solidity: function deregisterOperatorFromOperatorSets(address operator, uint32[] operatorSetIds) returns() @@ -805,25 +971,25 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) MigrateOperato return _AVSDirectoryStorage.Contract.MigrateOperatorsToOperatorSets(&_AVSDirectoryStorage.TransactOpts, operators, operatorSetIds) } -// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// QueueDeallocate is a paid mutator transaction binding the contract method 0x4ef8c5d4. // -// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() -func (_AVSDirectoryStorage *AVSDirectoryStorageTransactor) RegisterOperatorToAVS(opts *bind.TransactOpts, operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { - return _AVSDirectoryStorage.contract.Transact(opts, "registerOperatorToAVS", operator, operatorSignature) +// Solidity: function queueDeallocate(address operator, (address,(address,uint32)[],uint64[])[] deallocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactor) QueueDeallocate(opts *bind.TransactOpts, operator common.Address, deallocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectoryStorage.contract.Transact(opts, "queueDeallocate", operator, deallocations, operatorSignature) } -// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// QueueDeallocate is a paid mutator transaction binding the contract method 0x4ef8c5d4. // -// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() -func (_AVSDirectoryStorage *AVSDirectoryStorageSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { - return _AVSDirectoryStorage.Contract.RegisterOperatorToAVS(&_AVSDirectoryStorage.TransactOpts, operator, operatorSignature) +// Solidity: function queueDeallocate(address operator, (address,(address,uint32)[],uint64[])[] deallocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) QueueDeallocate(operator common.Address, deallocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.QueueDeallocate(&_AVSDirectoryStorage.TransactOpts, operator, deallocations, operatorSignature) } -// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// QueueDeallocate is a paid mutator transaction binding the contract method 0x4ef8c5d4. // -// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() -func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { - return _AVSDirectoryStorage.Contract.RegisterOperatorToAVS(&_AVSDirectoryStorage.TransactOpts, operator, operatorSignature) +// Solidity: function queueDeallocate(address operator, (address,(address,uint32)[],uint64[])[] deallocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) QueueDeallocate(operator common.Address, deallocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.QueueDeallocate(&_AVSDirectoryStorage.TransactOpts, operator, deallocations, operatorSignature) } // RegisterOperatorToOperatorSets is a paid mutator transaction binding the contract method 0x1e2199e2. @@ -847,6 +1013,27 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) RegisterOperat return _AVSDirectoryStorage.Contract.RegisterOperatorToOperatorSets(&_AVSDirectoryStorage.TransactOpts, operator, operatorSetIds, operatorSignature) } +// SlashOperator is a paid mutator transaction binding the contract method 0xbd74a06c. +// +// Solidity: function slashOperator(address operator, uint32 operatorSetId, address[] strategies, uint16 bipsToSlash) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactor) SlashOperator(opts *bind.TransactOpts, operator common.Address, operatorSetId uint32, strategies []common.Address, bipsToSlash uint16) (*types.Transaction, error) { + return _AVSDirectoryStorage.contract.Transact(opts, "slashOperator", operator, operatorSetId, strategies, bipsToSlash) +} + +// SlashOperator is a paid mutator transaction binding the contract method 0xbd74a06c. +// +// Solidity: function slashOperator(address operator, uint32 operatorSetId, address[] strategies, uint16 bipsToSlash) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) SlashOperator(operator common.Address, operatorSetId uint32, strategies []common.Address, bipsToSlash uint16) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.SlashOperator(&_AVSDirectoryStorage.TransactOpts, operator, operatorSetId, strategies, bipsToSlash) +} + +// SlashOperator is a paid mutator transaction binding the contract method 0xbd74a06c. +// +// Solidity: function slashOperator(address operator, uint32 operatorSetId, address[] strategies, uint16 bipsToSlash) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) SlashOperator(operator common.Address, operatorSetId uint32, strategies []common.Address, bipsToSlash uint16) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.SlashOperator(&_AVSDirectoryStorage.TransactOpts, operator, operatorSetId, strategies, bipsToSlash) +} + // UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. // // Solidity: function updateAVSMetadataURI(string metadataURI) returns() @@ -1157,9 +1344,9 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseAVSMigratedToOpera return event, nil } -// AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator is returned from FilterOperatorAVSRegistrationStatusUpdated and is used to iterate over the raw logs and unpacked data for OperatorAVSRegistrationStatusUpdated events raised by the AVSDirectoryStorage contract. -type AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator struct { - Event *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated // Event containing the contract specifics and raw log +// AVSDirectoryStorageMagnitudeAllocatedIterator is returned from FilterMagnitudeAllocated and is used to iterate over the raw logs and unpacked data for MagnitudeAllocated events raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageMagnitudeAllocatedIterator struct { + Event *AVSDirectoryStorageMagnitudeAllocated // 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 @@ -1173,7 +1360,7 @@ type AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator struct { // 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 *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator) Next() bool { +func (it *AVSDirectoryStorageMagnitudeAllocatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1182,7 +1369,7 @@ func (it *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator) Next( if it.done { select { case log := <-it.logs: - it.Event = new(AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated) + it.Event = new(AVSDirectoryStorageMagnitudeAllocated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1197,7 +1384,7 @@ func (it *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator) Next( // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated) + it.Event = new(AVSDirectoryStorageMagnitudeAllocated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1213,61 +1400,45 @@ func (it *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator) Next( } // Error returns any retrieval or parsing error occurred during filtering. -func (it *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator) Error() error { +func (it *AVSDirectoryStorageMagnitudeAllocatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator) Close() error { +func (it *AVSDirectoryStorageMagnitudeAllocatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated represents a OperatorAVSRegistrationStatusUpdated event raised by the AVSDirectoryStorage contract. -type AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated struct { - Operator common.Address - Avs common.Address - Status uint8 - Raw types.Log // Blockchain specific contextual infos +// AVSDirectoryStorageMagnitudeAllocated represents a MagnitudeAllocated event raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageMagnitudeAllocated struct { + Operator common.Address + Strategy common.Address + OperatorSet IAVSDirectoryOperatorSet + MagnitudeToAllocate uint64 + EffectTimestamp uint32 + Raw types.Log // Blockchain specific contextual infos } -// FilterOperatorAVSRegistrationStatusUpdated is a free log retrieval operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// FilterMagnitudeAllocated is a free log retrieval operation binding the contract event 0x6d7d0079582cb2c5e70d4135b37f36711415ee6c260778b716bd65e026eb4f1a. // -// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) -func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) FilterOperatorAVSRegistrationStatusUpdated(opts *bind.FilterOpts, operator []common.Address, avs []common.Address) (*AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var avsRule []interface{} - for _, avsItem := range avs { - avsRule = append(avsRule, avsItem) - } +// Solidity: event MagnitudeAllocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToAllocate, uint32 effectTimestamp) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) FilterMagnitudeAllocated(opts *bind.FilterOpts) (*AVSDirectoryStorageMagnitudeAllocatedIterator, error) { - logs, sub, err := _AVSDirectoryStorage.contract.FilterLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + logs, sub, err := _AVSDirectoryStorage.contract.FilterLogs(opts, "MagnitudeAllocated") if err != nil { return nil, err } - return &AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator{contract: _AVSDirectoryStorage.contract, event: "OperatorAVSRegistrationStatusUpdated", logs: logs, sub: sub}, nil + return &AVSDirectoryStorageMagnitudeAllocatedIterator{contract: _AVSDirectoryStorage.contract, event: "MagnitudeAllocated", logs: logs, sub: sub}, nil } -// WatchOperatorAVSRegistrationStatusUpdated is a free log subscription operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// WatchMagnitudeAllocated is a free log subscription operation binding the contract event 0x6d7d0079582cb2c5e70d4135b37f36711415ee6c260778b716bd65e026eb4f1a. // -// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) -func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorAVSRegistrationStatusUpdated(opts *bind.WatchOpts, sink chan<- *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated, operator []common.Address, avs []common.Address) (event.Subscription, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var avsRule []interface{} - for _, avsItem := range avs { - avsRule = append(avsRule, avsItem) - } +// Solidity: event MagnitudeAllocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToAllocate, uint32 effectTimestamp) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchMagnitudeAllocated(opts *bind.WatchOpts, sink chan<- *AVSDirectoryStorageMagnitudeAllocated) (event.Subscription, error) { - logs, sub, err := _AVSDirectoryStorage.contract.WatchLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + logs, sub, err := _AVSDirectoryStorage.contract.WatchLogs(opts, "MagnitudeAllocated") if err != nil { return nil, err } @@ -1277,8 +1448,8 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorAVSRegistr select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated) - if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", log); err != nil { + event := new(AVSDirectoryStorageMagnitudeAllocated) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "MagnitudeAllocated", log); err != nil { return err } event.Raw = log @@ -1299,21 +1470,21 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorAVSRegistr }), nil } -// ParseOperatorAVSRegistrationStatusUpdated is a log parse operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// ParseMagnitudeAllocated is a log parse operation binding the contract event 0x6d7d0079582cb2c5e70d4135b37f36711415ee6c260778b716bd65e026eb4f1a. // -// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) -func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseOperatorAVSRegistrationStatusUpdated(log types.Log) (*AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated, error) { - event := new(AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated) - if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", log); err != nil { +// Solidity: event MagnitudeAllocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToAllocate, uint32 effectTimestamp) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseMagnitudeAllocated(log types.Log) (*AVSDirectoryStorageMagnitudeAllocated, error) { + event := new(AVSDirectoryStorageMagnitudeAllocated) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "MagnitudeAllocated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// AVSDirectoryStorageOperatorAddedToOperatorSetIterator is returned from FilterOperatorAddedToOperatorSet and is used to iterate over the raw logs and unpacked data for OperatorAddedToOperatorSet events raised by the AVSDirectoryStorage contract. -type AVSDirectoryStorageOperatorAddedToOperatorSetIterator struct { - Event *AVSDirectoryStorageOperatorAddedToOperatorSet // Event containing the contract specifics and raw log +// AVSDirectoryStorageMagnitudeDeallocationCompletedIterator is returned from FilterMagnitudeDeallocationCompleted and is used to iterate over the raw logs and unpacked data for MagnitudeDeallocationCompleted events raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageMagnitudeDeallocationCompletedIterator struct { + Event *AVSDirectoryStorageMagnitudeDeallocationCompleted // 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 @@ -1327,7 +1498,7 @@ type AVSDirectoryStorageOperatorAddedToOperatorSetIterator struct { // 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 *AVSDirectoryStorageOperatorAddedToOperatorSetIterator) Next() bool { +func (it *AVSDirectoryStorageMagnitudeDeallocationCompletedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1336,7 +1507,7 @@ func (it *AVSDirectoryStorageOperatorAddedToOperatorSetIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(AVSDirectoryStorageOperatorAddedToOperatorSet) + it.Event = new(AVSDirectoryStorageMagnitudeDeallocationCompleted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1351,7 +1522,7 @@ func (it *AVSDirectoryStorageOperatorAddedToOperatorSetIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(AVSDirectoryStorageOperatorAddedToOperatorSet) + it.Event = new(AVSDirectoryStorageMagnitudeDeallocationCompleted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1367,52 +1538,44 @@ func (it *AVSDirectoryStorageOperatorAddedToOperatorSetIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *AVSDirectoryStorageOperatorAddedToOperatorSetIterator) Error() error { +func (it *AVSDirectoryStorageMagnitudeDeallocationCompletedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *AVSDirectoryStorageOperatorAddedToOperatorSetIterator) Close() error { +func (it *AVSDirectoryStorageMagnitudeDeallocationCompletedIterator) Close() error { it.sub.Unsubscribe() return nil } -// AVSDirectoryStorageOperatorAddedToOperatorSet represents a OperatorAddedToOperatorSet event raised by the AVSDirectoryStorage contract. -type AVSDirectoryStorageOperatorAddedToOperatorSet struct { - Operator common.Address - OperatorSet IAVSDirectoryOperatorSet - Raw types.Log // Blockchain specific contextual infos +// AVSDirectoryStorageMagnitudeDeallocationCompleted represents a MagnitudeDeallocationCompleted event raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageMagnitudeDeallocationCompleted struct { + Operator common.Address + Strategy common.Address + OperatorSet IAVSDirectoryOperatorSet + FreeMagnitudeAdded uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterOperatorAddedToOperatorSet is a free log retrieval operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e. +// FilterMagnitudeDeallocationCompleted is a free log retrieval operation binding the contract event 0x1e5c8e13c62c31d6252ac205e592477d643c7e95831d5b46d99a3c60c2fad8db. // -// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet) -func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) FilterOperatorAddedToOperatorSet(opts *bind.FilterOpts, operator []common.Address) (*AVSDirectoryStorageOperatorAddedToOperatorSetIterator, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } +// Solidity: event MagnitudeDeallocationCompleted(address operator, address strategy, (address,uint32) operatorSet, uint64 freeMagnitudeAdded) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) FilterMagnitudeDeallocationCompleted(opts *bind.FilterOpts) (*AVSDirectoryStorageMagnitudeDeallocationCompletedIterator, error) { - logs, sub, err := _AVSDirectoryStorage.contract.FilterLogs(opts, "OperatorAddedToOperatorSet", operatorRule) + logs, sub, err := _AVSDirectoryStorage.contract.FilterLogs(opts, "MagnitudeDeallocationCompleted") if err != nil { return nil, err } - return &AVSDirectoryStorageOperatorAddedToOperatorSetIterator{contract: _AVSDirectoryStorage.contract, event: "OperatorAddedToOperatorSet", logs: logs, sub: sub}, nil + return &AVSDirectoryStorageMagnitudeDeallocationCompletedIterator{contract: _AVSDirectoryStorage.contract, event: "MagnitudeDeallocationCompleted", logs: logs, sub: sub}, nil } -// WatchOperatorAddedToOperatorSet is a free log subscription operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e. +// WatchMagnitudeDeallocationCompleted is a free log subscription operation binding the contract event 0x1e5c8e13c62c31d6252ac205e592477d643c7e95831d5b46d99a3c60c2fad8db. // -// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet) -func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorAddedToOperatorSet(opts *bind.WatchOpts, sink chan<- *AVSDirectoryStorageOperatorAddedToOperatorSet, operator []common.Address) (event.Subscription, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } +// Solidity: event MagnitudeDeallocationCompleted(address operator, address strategy, (address,uint32) operatorSet, uint64 freeMagnitudeAdded) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchMagnitudeDeallocationCompleted(opts *bind.WatchOpts, sink chan<- *AVSDirectoryStorageMagnitudeDeallocationCompleted) (event.Subscription, error) { - logs, sub, err := _AVSDirectoryStorage.contract.WatchLogs(opts, "OperatorAddedToOperatorSet", operatorRule) + logs, sub, err := _AVSDirectoryStorage.contract.WatchLogs(opts, "MagnitudeDeallocationCompleted") if err != nil { return nil, err } @@ -1422,8 +1585,8 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorAddedToOpe select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(AVSDirectoryStorageOperatorAddedToOperatorSet) - if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorAddedToOperatorSet", log); err != nil { + event := new(AVSDirectoryStorageMagnitudeDeallocationCompleted) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "MagnitudeDeallocationCompleted", log); err != nil { return err } event.Raw = log @@ -1444,21 +1607,21 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorAddedToOpe }), nil } -// ParseOperatorAddedToOperatorSet is a log parse operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e. +// ParseMagnitudeDeallocationCompleted is a log parse operation binding the contract event 0x1e5c8e13c62c31d6252ac205e592477d643c7e95831d5b46d99a3c60c2fad8db. // -// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet) -func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseOperatorAddedToOperatorSet(log types.Log) (*AVSDirectoryStorageOperatorAddedToOperatorSet, error) { - event := new(AVSDirectoryStorageOperatorAddedToOperatorSet) - if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorAddedToOperatorSet", log); err != nil { +// Solidity: event MagnitudeDeallocationCompleted(address operator, address strategy, (address,uint32) operatorSet, uint64 freeMagnitudeAdded) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseMagnitudeDeallocationCompleted(log types.Log) (*AVSDirectoryStorageMagnitudeDeallocationCompleted, error) { + event := new(AVSDirectoryStorageMagnitudeDeallocationCompleted) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "MagnitudeDeallocationCompleted", log); err != nil { return nil, err } event.Raw = log return event, nil } -// AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator is returned from FilterOperatorMigratedToOperatorSets and is used to iterate over the raw logs and unpacked data for OperatorMigratedToOperatorSets events raised by the AVSDirectoryStorage contract. -type AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator struct { - Event *AVSDirectoryStorageOperatorMigratedToOperatorSets // Event containing the contract specifics and raw log +// AVSDirectoryStorageMagnitudeQueueDeallocatedIterator is returned from FilterMagnitudeQueueDeallocated and is used to iterate over the raw logs and unpacked data for MagnitudeQueueDeallocated events raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageMagnitudeQueueDeallocatedIterator struct { + Event *AVSDirectoryStorageMagnitudeQueueDeallocated // 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 @@ -1472,7 +1635,7 @@ type AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator struct { // 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 *AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator) Next() bool { +func (it *AVSDirectoryStorageMagnitudeQueueDeallocatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1481,7 +1644,7 @@ func (it *AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator) Next() bool if it.done { select { case log := <-it.logs: - it.Event = new(AVSDirectoryStorageOperatorMigratedToOperatorSets) + it.Event = new(AVSDirectoryStorageMagnitudeQueueDeallocated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1496,7 +1659,7 @@ func (it *AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator) Next() bool // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(AVSDirectoryStorageOperatorMigratedToOperatorSets) + it.Event = new(AVSDirectoryStorageMagnitudeQueueDeallocated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1512,61 +1675,45 @@ func (it *AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator) Next() bool } // Error returns any retrieval or parsing error occurred during filtering. -func (it *AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator) Error() error { +func (it *AVSDirectoryStorageMagnitudeQueueDeallocatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator) Close() error { +func (it *AVSDirectoryStorageMagnitudeQueueDeallocatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// AVSDirectoryStorageOperatorMigratedToOperatorSets represents a OperatorMigratedToOperatorSets event raised by the AVSDirectoryStorage contract. -type AVSDirectoryStorageOperatorMigratedToOperatorSets struct { - Operator common.Address - Avs common.Address - OperatorSetIds []uint32 - Raw types.Log // Blockchain specific contextual infos +// AVSDirectoryStorageMagnitudeQueueDeallocated represents a MagnitudeQueueDeallocated event raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageMagnitudeQueueDeallocated struct { + Operator common.Address + Strategy common.Address + OperatorSet IAVSDirectoryOperatorSet + MagnitudeToDeallocate uint64 + CompletableTimestamp uint32 + Raw types.Log // Blockchain specific contextual infos } -// FilterOperatorMigratedToOperatorSets is a free log retrieval operation binding the contract event 0x54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01. +// FilterMagnitudeQueueDeallocated is a free log retrieval operation binding the contract event 0x2e68db1fe51107d7e451ae268d1631796989ab9d7925054e9b247854cb5be950. // -// Solidity: event OperatorMigratedToOperatorSets(address indexed operator, address indexed avs, uint32[] operatorSetIds) -func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) FilterOperatorMigratedToOperatorSets(opts *bind.FilterOpts, operator []common.Address, avs []common.Address) (*AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var avsRule []interface{} - for _, avsItem := range avs { - avsRule = append(avsRule, avsItem) - } +// Solidity: event MagnitudeQueueDeallocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToDeallocate, uint32 completableTimestamp) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) FilterMagnitudeQueueDeallocated(opts *bind.FilterOpts) (*AVSDirectoryStorageMagnitudeQueueDeallocatedIterator, error) { - logs, sub, err := _AVSDirectoryStorage.contract.FilterLogs(opts, "OperatorMigratedToOperatorSets", operatorRule, avsRule) + logs, sub, err := _AVSDirectoryStorage.contract.FilterLogs(opts, "MagnitudeQueueDeallocated") if err != nil { return nil, err } - return &AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator{contract: _AVSDirectoryStorage.contract, event: "OperatorMigratedToOperatorSets", logs: logs, sub: sub}, nil + return &AVSDirectoryStorageMagnitudeQueueDeallocatedIterator{contract: _AVSDirectoryStorage.contract, event: "MagnitudeQueueDeallocated", logs: logs, sub: sub}, nil } -// WatchOperatorMigratedToOperatorSets is a free log subscription operation binding the contract event 0x54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01. +// WatchMagnitudeQueueDeallocated is a free log subscription operation binding the contract event 0x2e68db1fe51107d7e451ae268d1631796989ab9d7925054e9b247854cb5be950. // -// Solidity: event OperatorMigratedToOperatorSets(address indexed operator, address indexed avs, uint32[] operatorSetIds) -func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorMigratedToOperatorSets(opts *bind.WatchOpts, sink chan<- *AVSDirectoryStorageOperatorMigratedToOperatorSets, operator []common.Address, avs []common.Address) (event.Subscription, error) { - - var operatorRule []interface{} - for _, operatorItem := range operator { - operatorRule = append(operatorRule, operatorItem) - } - var avsRule []interface{} - for _, avsItem := range avs { - avsRule = append(avsRule, avsItem) - } +// Solidity: event MagnitudeQueueDeallocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToDeallocate, uint32 completableTimestamp) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchMagnitudeQueueDeallocated(opts *bind.WatchOpts, sink chan<- *AVSDirectoryStorageMagnitudeQueueDeallocated) (event.Subscription, error) { - logs, sub, err := _AVSDirectoryStorage.contract.WatchLogs(opts, "OperatorMigratedToOperatorSets", operatorRule, avsRule) + logs, sub, err := _AVSDirectoryStorage.contract.WatchLogs(opts, "MagnitudeQueueDeallocated") if err != nil { return nil, err } @@ -1576,8 +1723,8 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorMigratedTo select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(AVSDirectoryStorageOperatorMigratedToOperatorSets) - if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorMigratedToOperatorSets", log); err != nil { + event := new(AVSDirectoryStorageMagnitudeQueueDeallocated) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "MagnitudeQueueDeallocated", log); err != nil { return err } event.Raw = log @@ -1598,21 +1745,21 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorMigratedTo }), nil } -// ParseOperatorMigratedToOperatorSets is a log parse operation binding the contract event 0x54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01. +// ParseMagnitudeQueueDeallocated is a log parse operation binding the contract event 0x2e68db1fe51107d7e451ae268d1631796989ab9d7925054e9b247854cb5be950. // -// Solidity: event OperatorMigratedToOperatorSets(address indexed operator, address indexed avs, uint32[] operatorSetIds) -func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseOperatorMigratedToOperatorSets(log types.Log) (*AVSDirectoryStorageOperatorMigratedToOperatorSets, error) { - event := new(AVSDirectoryStorageOperatorMigratedToOperatorSets) - if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorMigratedToOperatorSets", log); err != nil { +// Solidity: event MagnitudeQueueDeallocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToDeallocate, uint32 completableTimestamp) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseMagnitudeQueueDeallocated(log types.Log) (*AVSDirectoryStorageMagnitudeQueueDeallocated, error) { + event := new(AVSDirectoryStorageMagnitudeQueueDeallocated) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "MagnitudeQueueDeallocated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// AVSDirectoryStorageOperatorRemovedFromOperatorSetIterator is returned from FilterOperatorRemovedFromOperatorSet and is used to iterate over the raw logs and unpacked data for OperatorRemovedFromOperatorSet events raised by the AVSDirectoryStorage contract. -type AVSDirectoryStorageOperatorRemovedFromOperatorSetIterator struct { - Event *AVSDirectoryStorageOperatorRemovedFromOperatorSet // Event containing the contract specifics and raw log +// AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator is returned from FilterOperatorAVSRegistrationStatusUpdated and is used to iterate over the raw logs and unpacked data for OperatorAVSRegistrationStatusUpdated events raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator struct { + Event *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated // 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 @@ -1626,7 +1773,7 @@ type AVSDirectoryStorageOperatorRemovedFromOperatorSetIterator struct { // 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 *AVSDirectoryStorageOperatorRemovedFromOperatorSetIterator) Next() bool { +func (it *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1635,7 +1782,7 @@ func (it *AVSDirectoryStorageOperatorRemovedFromOperatorSetIterator) Next() bool if it.done { select { case log := <-it.logs: - it.Event = new(AVSDirectoryStorageOperatorRemovedFromOperatorSet) + it.Event = new(AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1650,7 +1797,7 @@ func (it *AVSDirectoryStorageOperatorRemovedFromOperatorSetIterator) Next() bool // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(AVSDirectoryStorageOperatorRemovedFromOperatorSet) + it.Event = new(AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1666,7 +1813,460 @@ func (it *AVSDirectoryStorageOperatorRemovedFromOperatorSetIterator) Next() bool } // Error returns any retrieval or parsing error occurred during filtering. -func (it *AVSDirectoryStorageOperatorRemovedFromOperatorSetIterator) Error() error { +func (it *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated represents a OperatorAVSRegistrationStatusUpdated event raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated struct { + Operator common.Address + Avs common.Address + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorAVSRegistrationStatusUpdated is a free log retrieval operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) FilterOperatorAVSRegistrationStatusUpdated(opts *bind.FilterOpts, operator []common.Address, avs []common.Address) (*AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectoryStorage.contract.FilterLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + if err != nil { + return nil, err + } + return &AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator{contract: _AVSDirectoryStorage.contract, event: "OperatorAVSRegistrationStatusUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorAVSRegistrationStatusUpdated is a free log subscription operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorAVSRegistrationStatusUpdated(opts *bind.WatchOpts, sink chan<- *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated, operator []common.Address, avs []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectoryStorage.contract.WatchLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + 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(AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", 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 +} + +// ParseOperatorAVSRegistrationStatusUpdated is a log parse operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseOperatorAVSRegistrationStatusUpdated(log types.Log) (*AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated, error) { + event := new(AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AVSDirectoryStorageOperatorAddedToOperatorSetIterator is returned from FilterOperatorAddedToOperatorSet and is used to iterate over the raw logs and unpacked data for OperatorAddedToOperatorSet events raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageOperatorAddedToOperatorSetIterator struct { + Event *AVSDirectoryStorageOperatorAddedToOperatorSet // 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 *AVSDirectoryStorageOperatorAddedToOperatorSetIterator) 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(AVSDirectoryStorageOperatorAddedToOperatorSet) + 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(AVSDirectoryStorageOperatorAddedToOperatorSet) + 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 *AVSDirectoryStorageOperatorAddedToOperatorSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryStorageOperatorAddedToOperatorSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryStorageOperatorAddedToOperatorSet represents a OperatorAddedToOperatorSet event raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageOperatorAddedToOperatorSet struct { + Operator common.Address + OperatorSet IAVSDirectoryOperatorSet + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorAddedToOperatorSet is a free log retrieval operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e. +// +// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) FilterOperatorAddedToOperatorSet(opts *bind.FilterOpts, operator []common.Address) (*AVSDirectoryStorageOperatorAddedToOperatorSetIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _AVSDirectoryStorage.contract.FilterLogs(opts, "OperatorAddedToOperatorSet", operatorRule) + if err != nil { + return nil, err + } + return &AVSDirectoryStorageOperatorAddedToOperatorSetIterator{contract: _AVSDirectoryStorage.contract, event: "OperatorAddedToOperatorSet", logs: logs, sub: sub}, nil +} + +// WatchOperatorAddedToOperatorSet is a free log subscription operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e. +// +// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorAddedToOperatorSet(opts *bind.WatchOpts, sink chan<- *AVSDirectoryStorageOperatorAddedToOperatorSet, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _AVSDirectoryStorage.contract.WatchLogs(opts, "OperatorAddedToOperatorSet", 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(AVSDirectoryStorageOperatorAddedToOperatorSet) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorAddedToOperatorSet", 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 +} + +// ParseOperatorAddedToOperatorSet is a log parse operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e. +// +// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseOperatorAddedToOperatorSet(log types.Log) (*AVSDirectoryStorageOperatorAddedToOperatorSet, error) { + event := new(AVSDirectoryStorageOperatorAddedToOperatorSet) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorAddedToOperatorSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator is returned from FilterOperatorMigratedToOperatorSets and is used to iterate over the raw logs and unpacked data for OperatorMigratedToOperatorSets events raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator struct { + Event *AVSDirectoryStorageOperatorMigratedToOperatorSets // 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 *AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator) 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(AVSDirectoryStorageOperatorMigratedToOperatorSets) + 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(AVSDirectoryStorageOperatorMigratedToOperatorSets) + 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 *AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryStorageOperatorMigratedToOperatorSets represents a OperatorMigratedToOperatorSets event raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageOperatorMigratedToOperatorSets struct { + Operator common.Address + Avs common.Address + OperatorSetIds []uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorMigratedToOperatorSets is a free log retrieval operation binding the contract event 0x54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01. +// +// Solidity: event OperatorMigratedToOperatorSets(address indexed operator, address indexed avs, uint32[] operatorSetIds) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) FilterOperatorMigratedToOperatorSets(opts *bind.FilterOpts, operator []common.Address, avs []common.Address) (*AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectoryStorage.contract.FilterLogs(opts, "OperatorMigratedToOperatorSets", operatorRule, avsRule) + if err != nil { + return nil, err + } + return &AVSDirectoryStorageOperatorMigratedToOperatorSetsIterator{contract: _AVSDirectoryStorage.contract, event: "OperatorMigratedToOperatorSets", logs: logs, sub: sub}, nil +} + +// WatchOperatorMigratedToOperatorSets is a free log subscription operation binding the contract event 0x54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01. +// +// Solidity: event OperatorMigratedToOperatorSets(address indexed operator, address indexed avs, uint32[] operatorSetIds) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorMigratedToOperatorSets(opts *bind.WatchOpts, sink chan<- *AVSDirectoryStorageOperatorMigratedToOperatorSets, operator []common.Address, avs []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectoryStorage.contract.WatchLogs(opts, "OperatorMigratedToOperatorSets", operatorRule, avsRule) + 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(AVSDirectoryStorageOperatorMigratedToOperatorSets) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorMigratedToOperatorSets", 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 +} + +// ParseOperatorMigratedToOperatorSets is a log parse operation binding the contract event 0x54f33cfdd1ca703d795986b986fd47d742eab1904ecd2a5fdb8d6595e5904a01. +// +// Solidity: event OperatorMigratedToOperatorSets(address indexed operator, address indexed avs, uint32[] operatorSetIds) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseOperatorMigratedToOperatorSets(log types.Log) (*AVSDirectoryStorageOperatorMigratedToOperatorSets, error) { + event := new(AVSDirectoryStorageOperatorMigratedToOperatorSets) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorMigratedToOperatorSets", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AVSDirectoryStorageOperatorRemovedFromOperatorSetIterator is returned from FilterOperatorRemovedFromOperatorSet and is used to iterate over the raw logs and unpacked data for OperatorRemovedFromOperatorSet events raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageOperatorRemovedFromOperatorSetIterator struct { + Event *AVSDirectoryStorageOperatorRemovedFromOperatorSet // 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 *AVSDirectoryStorageOperatorRemovedFromOperatorSetIterator) 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(AVSDirectoryStorageOperatorRemovedFromOperatorSet) + 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(AVSDirectoryStorageOperatorRemovedFromOperatorSet) + 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 *AVSDirectoryStorageOperatorRemovedFromOperatorSetIterator) Error() error { return it.fail } @@ -1888,3 +2488,140 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseOperatorSetCreated event.Raw = log return event, nil } + +// AVSDirectoryStorageOperatorSlashedIterator is returned from FilterOperatorSlashed and is used to iterate over the raw logs and unpacked data for OperatorSlashed events raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageOperatorSlashedIterator struct { + Event *AVSDirectoryStorageOperatorSlashed // 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 *AVSDirectoryStorageOperatorSlashedIterator) 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(AVSDirectoryStorageOperatorSlashed) + 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(AVSDirectoryStorageOperatorSlashed) + 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 *AVSDirectoryStorageOperatorSlashedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryStorageOperatorSlashedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryStorageOperatorSlashed represents a OperatorSlashed event raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageOperatorSlashed struct { + Operator common.Address + OperatorSetId uint32 + Strategy common.Address + BipsToSlash uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSlashed is a free log retrieval operation binding the contract event 0xe672839d3c371691acdb52de9fefc94b3dbf407dc0920ef566c7c059ad575b1c. +// +// Solidity: event OperatorSlashed(address operator, uint32 operatorSetId, address strategy, uint16 bipsToSlash) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) FilterOperatorSlashed(opts *bind.FilterOpts) (*AVSDirectoryStorageOperatorSlashedIterator, error) { + + logs, sub, err := _AVSDirectoryStorage.contract.FilterLogs(opts, "OperatorSlashed") + if err != nil { + return nil, err + } + return &AVSDirectoryStorageOperatorSlashedIterator{contract: _AVSDirectoryStorage.contract, event: "OperatorSlashed", logs: logs, sub: sub}, nil +} + +// WatchOperatorSlashed is a free log subscription operation binding the contract event 0xe672839d3c371691acdb52de9fefc94b3dbf407dc0920ef566c7c059ad575b1c. +// +// Solidity: event OperatorSlashed(address operator, uint32 operatorSetId, address strategy, uint16 bipsToSlash) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorSlashed(opts *bind.WatchOpts, sink chan<- *AVSDirectoryStorageOperatorSlashed) (event.Subscription, error) { + + logs, sub, err := _AVSDirectoryStorage.contract.WatchLogs(opts, "OperatorSlashed") + 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(AVSDirectoryStorageOperatorSlashed) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorSlashed", 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 +} + +// ParseOperatorSlashed is a log parse operation binding the contract event 0xe672839d3c371691acdb52de9fefc94b3dbf407dc0920ef566c7c059ad575b1c. +// +// Solidity: event OperatorSlashed(address operator, uint32 operatorSetId, address strategy, uint16 bipsToSlash) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseOperatorSlashed(log types.Log) (*AVSDirectoryStorageOperatorSlashed, error) { + event := new(AVSDirectoryStorageOperatorSlashed) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorSlashed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/Checkpoints/binding.go b/pkg/bindings/Checkpoints/binding.go new file mode 100644 index 000000000..9551a029c --- /dev/null +++ b/pkg/bindings/Checkpoints/binding.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package Checkpoints + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// CheckpointsMetaData contains all meta data concerning the Checkpoints contract. +var CheckpointsMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca31e0d00f504c105d8b4b092cf9490b0ce1216e3cff5831d294815cff0357bf64736f6c634300080c0033", +} + +// CheckpointsABI is the input ABI used to generate the binding from. +// Deprecated: Use CheckpointsMetaData.ABI instead. +var CheckpointsABI = CheckpointsMetaData.ABI + +// CheckpointsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use CheckpointsMetaData.Bin instead. +var CheckpointsBin = CheckpointsMetaData.Bin + +// DeployCheckpoints deploys a new Ethereum contract, binding an instance of Checkpoints to it. +func DeployCheckpoints(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Checkpoints, error) { + parsed, err := CheckpointsMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(CheckpointsBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Checkpoints{CheckpointsCaller: CheckpointsCaller{contract: contract}, CheckpointsTransactor: CheckpointsTransactor{contract: contract}, CheckpointsFilterer: CheckpointsFilterer{contract: contract}}, nil +} + +// Checkpoints is an auto generated Go binding around an Ethereum contract. +type Checkpoints struct { + CheckpointsCaller // Read-only binding to the contract + CheckpointsTransactor // Write-only binding to the contract + CheckpointsFilterer // Log filterer for contract events +} + +// CheckpointsCaller is an auto generated read-only Go binding around an Ethereum contract. +type CheckpointsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CheckpointsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type CheckpointsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CheckpointsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type CheckpointsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// CheckpointsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type CheckpointsSession struct { + Contract *Checkpoints // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// CheckpointsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type CheckpointsCallerSession struct { + Contract *CheckpointsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// CheckpointsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type CheckpointsTransactorSession struct { + Contract *CheckpointsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// CheckpointsRaw is an auto generated low-level Go binding around an Ethereum contract. +type CheckpointsRaw struct { + Contract *Checkpoints // Generic contract binding to access the raw methods on +} + +// CheckpointsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type CheckpointsCallerRaw struct { + Contract *CheckpointsCaller // Generic read-only contract binding to access the raw methods on +} + +// CheckpointsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type CheckpointsTransactorRaw struct { + Contract *CheckpointsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewCheckpoints creates a new instance of Checkpoints, bound to a specific deployed contract. +func NewCheckpoints(address common.Address, backend bind.ContractBackend) (*Checkpoints, error) { + contract, err := bindCheckpoints(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Checkpoints{CheckpointsCaller: CheckpointsCaller{contract: contract}, CheckpointsTransactor: CheckpointsTransactor{contract: contract}, CheckpointsFilterer: CheckpointsFilterer{contract: contract}}, nil +} + +// NewCheckpointsCaller creates a new read-only instance of Checkpoints, bound to a specific deployed contract. +func NewCheckpointsCaller(address common.Address, caller bind.ContractCaller) (*CheckpointsCaller, error) { + contract, err := bindCheckpoints(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &CheckpointsCaller{contract: contract}, nil +} + +// NewCheckpointsTransactor creates a new write-only instance of Checkpoints, bound to a specific deployed contract. +func NewCheckpointsTransactor(address common.Address, transactor bind.ContractTransactor) (*CheckpointsTransactor, error) { + contract, err := bindCheckpoints(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &CheckpointsTransactor{contract: contract}, nil +} + +// NewCheckpointsFilterer creates a new log filterer instance of Checkpoints, bound to a specific deployed contract. +func NewCheckpointsFilterer(address common.Address, filterer bind.ContractFilterer) (*CheckpointsFilterer, error) { + contract, err := bindCheckpoints(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &CheckpointsFilterer{contract: contract}, nil +} + +// bindCheckpoints binds a generic wrapper to an already deployed contract. +func bindCheckpoints(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := CheckpointsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Checkpoints *CheckpointsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Checkpoints.Contract.CheckpointsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Checkpoints *CheckpointsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Checkpoints.Contract.CheckpointsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Checkpoints *CheckpointsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Checkpoints.Contract.CheckpointsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Checkpoints *CheckpointsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Checkpoints.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Checkpoints *CheckpointsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Checkpoints.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Checkpoints *CheckpointsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Checkpoints.Contract.contract.Transact(opts, method, params...) +} diff --git a/pkg/bindings/IAVSDirectory/binding.go b/pkg/bindings/IAVSDirectory/binding.go index 2d2b818b6..a33843b8c 100644 --- a/pkg/bindings/IAVSDirectory/binding.go +++ b/pkg/bindings/IAVSDirectory/binding.go @@ -29,6 +29,13 @@ var ( _ = abi.ConvertType ) +// IAVSDirectoryMagnitudeAdjustment is an auto generated low-level Go binding around an user-defined struct. +type IAVSDirectoryMagnitudeAdjustment struct { + Strategy common.Address + OperatorSets []IAVSDirectoryOperatorSet + MagnitudeDiffs []uint64 +} + // IAVSDirectoryOperatorSet is an auto generated low-level Go binding around an user-defined struct. type IAVSDirectoryOperatorSet struct { Avs common.Address @@ -44,7 +51,7 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct { // IAVSDirectoryMetaData contains all meta data concerning the IAVSDirectory contract. var IAVSDirectoryMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_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\":\"becomeOperatorSetAVS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"calculateOperatorSetForceDeregistrationTypehash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorSetRegistrationDigestHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"createOperatorSets\",\"inputs\":[{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"forceDeregisterFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"isMember\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSetAVS\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"migrateOperatorsToOperatorSets\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"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\":\"registerOperatorToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"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\":\"AVSMigratedToOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"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\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMigratedToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"indexed\":false,\"internalType\":\"uint32[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false}]", + ABI: "[{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_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\":\"allocate\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allocations\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.MagnitudeAdjustment[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.OperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"magnitudeDiffs\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]},{\"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\":\"becomeOperatorSetAVS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"calculateOperatorSetForceDeregistrationTypehash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorSetRegistrationDigestHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"completeDeallocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"operatorSets\",\"type\":\"tuple[][]\",\"internalType\":\"structIAVSDirectory.OperatorSet[][]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"forceDeregisterFromOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"getSlashableBips\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"timestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isMember\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSetAVS\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSlashable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"migrateOperatorsToOperatorSets\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueDeallocate\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"deallocations\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.MagnitudeAdjustment[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structIAVSDirectory.OperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"magnitudeDiffs\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]},{\"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\":\"registerOperatorToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"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\":\"slashOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"bipsToSlash\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"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\":\"AVSMigratedToOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MagnitudeAllocated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"magnitudeToAllocate\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MagnitudeDeallocationCompleted\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"freeMagnitudeAdded\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MagnitudeQueueDeallocated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"magnitudeToDeallocate\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"completableTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"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\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMigratedToOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"indexed\":false,\"internalType\":\"uint32[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"bipsToSlash\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false}]", } // IAVSDirectoryABI is the input ABI used to generate the binding from. @@ -379,6 +386,37 @@ func (_IAVSDirectory *IAVSDirectoryCallerSession) DomainSeparator() ([32]byte, e return _IAVSDirectory.Contract.DomainSeparator(&_IAVSDirectory.CallOpts) } +// GetSlashableBips is a free data retrieval call binding the contract method 0x33429a6a. +// +// Solidity: function getSlashableBips(address operator, (address,uint32) operatorSet, address strategy, uint32 timestamp) view returns(uint16) +func (_IAVSDirectory *IAVSDirectoryCaller) GetSlashableBips(opts *bind.CallOpts, operator common.Address, operatorSet IAVSDirectoryOperatorSet, strategy common.Address, timestamp uint32) (uint16, error) { + var out []interface{} + err := _IAVSDirectory.contract.Call(opts, &out, "getSlashableBips", operator, operatorSet, strategy, timestamp) + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// GetSlashableBips is a free data retrieval call binding the contract method 0x33429a6a. +// +// Solidity: function getSlashableBips(address operator, (address,uint32) operatorSet, address strategy, uint32 timestamp) view returns(uint16) +func (_IAVSDirectory *IAVSDirectorySession) GetSlashableBips(operator common.Address, operatorSet IAVSDirectoryOperatorSet, strategy common.Address, timestamp uint32) (uint16, error) { + return _IAVSDirectory.Contract.GetSlashableBips(&_IAVSDirectory.CallOpts, operator, operatorSet, strategy, timestamp) +} + +// GetSlashableBips is a free data retrieval call binding the contract method 0x33429a6a. +// +// Solidity: function getSlashableBips(address operator, (address,uint32) operatorSet, address strategy, uint32 timestamp) view returns(uint16) +func (_IAVSDirectory *IAVSDirectoryCallerSession) GetSlashableBips(operator common.Address, operatorSet IAVSDirectoryOperatorSet, strategy common.Address, timestamp uint32) (uint16, error) { + return _IAVSDirectory.Contract.GetSlashableBips(&_IAVSDirectory.CallOpts, operator, operatorSet, strategy, timestamp) +} + // IsMember is a free data retrieval call binding the contract method 0xda2ff05d. // // Solidity: function isMember(address operator, (address,uint32) operatorSet) view returns(bool) @@ -472,6 +510,37 @@ func (_IAVSDirectory *IAVSDirectoryCallerSession) IsOperatorSetAVS(avs common.Ad return _IAVSDirectory.Contract.IsOperatorSetAVS(&_IAVSDirectory.CallOpts, avs) } +// IsOperatorSlashable is a free data retrieval call binding the contract method 0x1352c3e6. +// +// Solidity: function isOperatorSlashable(address operator, (address,uint32) operatorSet) view returns(bool) +func (_IAVSDirectory *IAVSDirectoryCaller) IsOperatorSlashable(opts *bind.CallOpts, operator common.Address, operatorSet IAVSDirectoryOperatorSet) (bool, error) { + var out []interface{} + err := _IAVSDirectory.contract.Call(opts, &out, "isOperatorSlashable", operator, operatorSet) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsOperatorSlashable is a free data retrieval call binding the contract method 0x1352c3e6. +// +// Solidity: function isOperatorSlashable(address operator, (address,uint32) operatorSet) view returns(bool) +func (_IAVSDirectory *IAVSDirectorySession) IsOperatorSlashable(operator common.Address, operatorSet IAVSDirectoryOperatorSet) (bool, error) { + return _IAVSDirectory.Contract.IsOperatorSlashable(&_IAVSDirectory.CallOpts, operator, operatorSet) +} + +// IsOperatorSlashable is a free data retrieval call binding the contract method 0x1352c3e6. +// +// Solidity: function isOperatorSlashable(address operator, (address,uint32) operatorSet) view returns(bool) +func (_IAVSDirectory *IAVSDirectoryCallerSession) IsOperatorSlashable(operator common.Address, operatorSet IAVSDirectoryOperatorSet) (bool, error) { + return _IAVSDirectory.Contract.IsOperatorSlashable(&_IAVSDirectory.CallOpts, operator, operatorSet) +} + // OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5. // // Solidity: function operatorSaltIsSpent(address operator, bytes32 salt) view returns(bool) @@ -503,6 +572,27 @@ func (_IAVSDirectory *IAVSDirectoryCallerSession) OperatorSaltIsSpent(operator c return _IAVSDirectory.Contract.OperatorSaltIsSpent(&_IAVSDirectory.CallOpts, operator, salt) } +// Allocate is a paid mutator transaction binding the contract method 0x70196708. +// +// Solidity: function allocate(address operator, (address,(address,uint32)[],uint64[])[] allocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_IAVSDirectory *IAVSDirectoryTransactor) Allocate(opts *bind.TransactOpts, operator common.Address, allocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _IAVSDirectory.contract.Transact(opts, "allocate", operator, allocations, operatorSignature) +} + +// Allocate is a paid mutator transaction binding the contract method 0x70196708. +// +// Solidity: function allocate(address operator, (address,(address,uint32)[],uint64[])[] allocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_IAVSDirectory *IAVSDirectorySession) Allocate(operator common.Address, allocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _IAVSDirectory.Contract.Allocate(&_IAVSDirectory.TransactOpts, operator, allocations, operatorSignature) +} + +// Allocate is a paid mutator transaction binding the contract method 0x70196708. +// +// Solidity: function allocate(address operator, (address,(address,uint32)[],uint64[])[] allocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_IAVSDirectory *IAVSDirectoryTransactorSession) Allocate(operator common.Address, allocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _IAVSDirectory.Contract.Allocate(&_IAVSDirectory.TransactOpts, operator, allocations, operatorSignature) +} + // BecomeOperatorSetAVS is a paid mutator transaction binding the contract method 0xaec205c5. // // Solidity: function becomeOperatorSetAVS() returns() @@ -545,6 +635,27 @@ func (_IAVSDirectory *IAVSDirectoryTransactorSession) CancelSalt(salt [32]byte) return _IAVSDirectory.Contract.CancelSalt(&_IAVSDirectory.TransactOpts, salt) } +// CompleteDeallocations is a paid mutator transaction binding the contract method 0x5a922613. +// +// Solidity: function completeDeallocations(address operator, address[] strategies, (address,uint32)[][] operatorSets) returns() +func (_IAVSDirectory *IAVSDirectoryTransactor) CompleteDeallocations(opts *bind.TransactOpts, operator common.Address, strategies []common.Address, operatorSets [][]IAVSDirectoryOperatorSet) (*types.Transaction, error) { + return _IAVSDirectory.contract.Transact(opts, "completeDeallocations", operator, strategies, operatorSets) +} + +// CompleteDeallocations is a paid mutator transaction binding the contract method 0x5a922613. +// +// Solidity: function completeDeallocations(address operator, address[] strategies, (address,uint32)[][] operatorSets) returns() +func (_IAVSDirectory *IAVSDirectorySession) CompleteDeallocations(operator common.Address, strategies []common.Address, operatorSets [][]IAVSDirectoryOperatorSet) (*types.Transaction, error) { + return _IAVSDirectory.Contract.CompleteDeallocations(&_IAVSDirectory.TransactOpts, operator, strategies, operatorSets) +} + +// CompleteDeallocations is a paid mutator transaction binding the contract method 0x5a922613. +// +// Solidity: function completeDeallocations(address operator, address[] strategies, (address,uint32)[][] operatorSets) returns() +func (_IAVSDirectory *IAVSDirectoryTransactorSession) CompleteDeallocations(operator common.Address, strategies []common.Address, operatorSets [][]IAVSDirectoryOperatorSet) (*types.Transaction, error) { + return _IAVSDirectory.Contract.CompleteDeallocations(&_IAVSDirectory.TransactOpts, operator, strategies, operatorSets) +} + // CreateOperatorSets is a paid mutator transaction binding the contract method 0xafe02ed5. // // Solidity: function createOperatorSets(uint32[] operatorSetIds) returns() @@ -566,27 +677,6 @@ func (_IAVSDirectory *IAVSDirectoryTransactorSession) CreateOperatorSets(operato return _IAVSDirectory.Contract.CreateOperatorSets(&_IAVSDirectory.TransactOpts, operatorSetIds) } -// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. -// -// Solidity: function deregisterOperatorFromAVS(address operator) returns() -func (_IAVSDirectory *IAVSDirectoryTransactor) DeregisterOperatorFromAVS(opts *bind.TransactOpts, operator common.Address) (*types.Transaction, error) { - return _IAVSDirectory.contract.Transact(opts, "deregisterOperatorFromAVS", operator) -} - -// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. -// -// Solidity: function deregisterOperatorFromAVS(address operator) returns() -func (_IAVSDirectory *IAVSDirectorySession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { - return _IAVSDirectory.Contract.DeregisterOperatorFromAVS(&_IAVSDirectory.TransactOpts, operator) -} - -// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. -// -// Solidity: function deregisterOperatorFromAVS(address operator) returns() -func (_IAVSDirectory *IAVSDirectoryTransactorSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { - return _IAVSDirectory.Contract.DeregisterOperatorFromAVS(&_IAVSDirectory.TransactOpts, operator) -} - // DeregisterOperatorFromOperatorSets is a paid mutator transaction binding the contract method 0xc1a8e2c5. // // Solidity: function deregisterOperatorFromOperatorSets(address operator, uint32[] operatorSetIds) returns() @@ -650,25 +740,25 @@ func (_IAVSDirectory *IAVSDirectoryTransactorSession) MigrateOperatorsToOperator return _IAVSDirectory.Contract.MigrateOperatorsToOperatorSets(&_IAVSDirectory.TransactOpts, operators, operatorSetIds) } -// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// QueueDeallocate is a paid mutator transaction binding the contract method 0x4ef8c5d4. // -// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() -func (_IAVSDirectory *IAVSDirectoryTransactor) RegisterOperatorToAVS(opts *bind.TransactOpts, operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { - return _IAVSDirectory.contract.Transact(opts, "registerOperatorToAVS", operator, operatorSignature) +// Solidity: function queueDeallocate(address operator, (address,(address,uint32)[],uint64[])[] deallocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_IAVSDirectory *IAVSDirectoryTransactor) QueueDeallocate(opts *bind.TransactOpts, operator common.Address, deallocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _IAVSDirectory.contract.Transact(opts, "queueDeallocate", operator, deallocations, operatorSignature) } -// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// QueueDeallocate is a paid mutator transaction binding the contract method 0x4ef8c5d4. // -// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() -func (_IAVSDirectory *IAVSDirectorySession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { - return _IAVSDirectory.Contract.RegisterOperatorToAVS(&_IAVSDirectory.TransactOpts, operator, operatorSignature) +// Solidity: function queueDeallocate(address operator, (address,(address,uint32)[],uint64[])[] deallocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_IAVSDirectory *IAVSDirectorySession) QueueDeallocate(operator common.Address, deallocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _IAVSDirectory.Contract.QueueDeallocate(&_IAVSDirectory.TransactOpts, operator, deallocations, operatorSignature) } -// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// QueueDeallocate is a paid mutator transaction binding the contract method 0x4ef8c5d4. // -// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() -func (_IAVSDirectory *IAVSDirectoryTransactorSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { - return _IAVSDirectory.Contract.RegisterOperatorToAVS(&_IAVSDirectory.TransactOpts, operator, operatorSignature) +// Solidity: function queueDeallocate(address operator, (address,(address,uint32)[],uint64[])[] deallocations, (bytes,bytes32,uint256) operatorSignature) returns() +func (_IAVSDirectory *IAVSDirectoryTransactorSession) QueueDeallocate(operator common.Address, deallocations []IAVSDirectoryMagnitudeAdjustment, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _IAVSDirectory.Contract.QueueDeallocate(&_IAVSDirectory.TransactOpts, operator, deallocations, operatorSignature) } // RegisterOperatorToOperatorSets is a paid mutator transaction binding the contract method 0x1e2199e2. @@ -692,6 +782,27 @@ func (_IAVSDirectory *IAVSDirectoryTransactorSession) RegisterOperatorToOperator return _IAVSDirectory.Contract.RegisterOperatorToOperatorSets(&_IAVSDirectory.TransactOpts, operator, operatorSetIds, operatorSignature) } +// SlashOperator is a paid mutator transaction binding the contract method 0xbd74a06c. +// +// Solidity: function slashOperator(address operator, uint32 operatorSetId, address[] strategies, uint16 bipsToSlash) returns() +func (_IAVSDirectory *IAVSDirectoryTransactor) SlashOperator(opts *bind.TransactOpts, operator common.Address, operatorSetId uint32, strategies []common.Address, bipsToSlash uint16) (*types.Transaction, error) { + return _IAVSDirectory.contract.Transact(opts, "slashOperator", operator, operatorSetId, strategies, bipsToSlash) +} + +// SlashOperator is a paid mutator transaction binding the contract method 0xbd74a06c. +// +// Solidity: function slashOperator(address operator, uint32 operatorSetId, address[] strategies, uint16 bipsToSlash) returns() +func (_IAVSDirectory *IAVSDirectorySession) SlashOperator(operator common.Address, operatorSetId uint32, strategies []common.Address, bipsToSlash uint16) (*types.Transaction, error) { + return _IAVSDirectory.Contract.SlashOperator(&_IAVSDirectory.TransactOpts, operator, operatorSetId, strategies, bipsToSlash) +} + +// SlashOperator is a paid mutator transaction binding the contract method 0xbd74a06c. +// +// Solidity: function slashOperator(address operator, uint32 operatorSetId, address[] strategies, uint16 bipsToSlash) returns() +func (_IAVSDirectory *IAVSDirectoryTransactorSession) SlashOperator(operator common.Address, operatorSetId uint32, strategies []common.Address, bipsToSlash uint16) (*types.Transaction, error) { + return _IAVSDirectory.Contract.SlashOperator(&_IAVSDirectory.TransactOpts, operator, operatorSetId, strategies, bipsToSlash) +} + // UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. // // Solidity: function updateAVSMetadataURI(string metadataURI) returns() @@ -1002,6 +1113,419 @@ func (_IAVSDirectory *IAVSDirectoryFilterer) ParseAVSMigratedToOperatorSets(log return event, nil } +// IAVSDirectoryMagnitudeAllocatedIterator is returned from FilterMagnitudeAllocated and is used to iterate over the raw logs and unpacked data for MagnitudeAllocated events raised by the IAVSDirectory contract. +type IAVSDirectoryMagnitudeAllocatedIterator struct { + Event *IAVSDirectoryMagnitudeAllocated // 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 *IAVSDirectoryMagnitudeAllocatedIterator) 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(IAVSDirectoryMagnitudeAllocated) + 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(IAVSDirectoryMagnitudeAllocated) + 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 *IAVSDirectoryMagnitudeAllocatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IAVSDirectoryMagnitudeAllocatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IAVSDirectoryMagnitudeAllocated represents a MagnitudeAllocated event raised by the IAVSDirectory contract. +type IAVSDirectoryMagnitudeAllocated struct { + Operator common.Address + Strategy common.Address + OperatorSet IAVSDirectoryOperatorSet + MagnitudeToAllocate uint64 + EffectTimestamp uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMagnitudeAllocated is a free log retrieval operation binding the contract event 0x6d7d0079582cb2c5e70d4135b37f36711415ee6c260778b716bd65e026eb4f1a. +// +// Solidity: event MagnitudeAllocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToAllocate, uint32 effectTimestamp) +func (_IAVSDirectory *IAVSDirectoryFilterer) FilterMagnitudeAllocated(opts *bind.FilterOpts) (*IAVSDirectoryMagnitudeAllocatedIterator, error) { + + logs, sub, err := _IAVSDirectory.contract.FilterLogs(opts, "MagnitudeAllocated") + if err != nil { + return nil, err + } + return &IAVSDirectoryMagnitudeAllocatedIterator{contract: _IAVSDirectory.contract, event: "MagnitudeAllocated", logs: logs, sub: sub}, nil +} + +// WatchMagnitudeAllocated is a free log subscription operation binding the contract event 0x6d7d0079582cb2c5e70d4135b37f36711415ee6c260778b716bd65e026eb4f1a. +// +// Solidity: event MagnitudeAllocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToAllocate, uint32 effectTimestamp) +func (_IAVSDirectory *IAVSDirectoryFilterer) WatchMagnitudeAllocated(opts *bind.WatchOpts, sink chan<- *IAVSDirectoryMagnitudeAllocated) (event.Subscription, error) { + + logs, sub, err := _IAVSDirectory.contract.WatchLogs(opts, "MagnitudeAllocated") + 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(IAVSDirectoryMagnitudeAllocated) + if err := _IAVSDirectory.contract.UnpackLog(event, "MagnitudeAllocated", 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 +} + +// ParseMagnitudeAllocated is a log parse operation binding the contract event 0x6d7d0079582cb2c5e70d4135b37f36711415ee6c260778b716bd65e026eb4f1a. +// +// Solidity: event MagnitudeAllocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToAllocate, uint32 effectTimestamp) +func (_IAVSDirectory *IAVSDirectoryFilterer) ParseMagnitudeAllocated(log types.Log) (*IAVSDirectoryMagnitudeAllocated, error) { + event := new(IAVSDirectoryMagnitudeAllocated) + if err := _IAVSDirectory.contract.UnpackLog(event, "MagnitudeAllocated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IAVSDirectoryMagnitudeDeallocationCompletedIterator is returned from FilterMagnitudeDeallocationCompleted and is used to iterate over the raw logs and unpacked data for MagnitudeDeallocationCompleted events raised by the IAVSDirectory contract. +type IAVSDirectoryMagnitudeDeallocationCompletedIterator struct { + Event *IAVSDirectoryMagnitudeDeallocationCompleted // 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 *IAVSDirectoryMagnitudeDeallocationCompletedIterator) 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(IAVSDirectoryMagnitudeDeallocationCompleted) + 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(IAVSDirectoryMagnitudeDeallocationCompleted) + 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 *IAVSDirectoryMagnitudeDeallocationCompletedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IAVSDirectoryMagnitudeDeallocationCompletedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IAVSDirectoryMagnitudeDeallocationCompleted represents a MagnitudeDeallocationCompleted event raised by the IAVSDirectory contract. +type IAVSDirectoryMagnitudeDeallocationCompleted struct { + Operator common.Address + Strategy common.Address + OperatorSet IAVSDirectoryOperatorSet + FreeMagnitudeAdded uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMagnitudeDeallocationCompleted is a free log retrieval operation binding the contract event 0x1e5c8e13c62c31d6252ac205e592477d643c7e95831d5b46d99a3c60c2fad8db. +// +// Solidity: event MagnitudeDeallocationCompleted(address operator, address strategy, (address,uint32) operatorSet, uint64 freeMagnitudeAdded) +func (_IAVSDirectory *IAVSDirectoryFilterer) FilterMagnitudeDeallocationCompleted(opts *bind.FilterOpts) (*IAVSDirectoryMagnitudeDeallocationCompletedIterator, error) { + + logs, sub, err := _IAVSDirectory.contract.FilterLogs(opts, "MagnitudeDeallocationCompleted") + if err != nil { + return nil, err + } + return &IAVSDirectoryMagnitudeDeallocationCompletedIterator{contract: _IAVSDirectory.contract, event: "MagnitudeDeallocationCompleted", logs: logs, sub: sub}, nil +} + +// WatchMagnitudeDeallocationCompleted is a free log subscription operation binding the contract event 0x1e5c8e13c62c31d6252ac205e592477d643c7e95831d5b46d99a3c60c2fad8db. +// +// Solidity: event MagnitudeDeallocationCompleted(address operator, address strategy, (address,uint32) operatorSet, uint64 freeMagnitudeAdded) +func (_IAVSDirectory *IAVSDirectoryFilterer) WatchMagnitudeDeallocationCompleted(opts *bind.WatchOpts, sink chan<- *IAVSDirectoryMagnitudeDeallocationCompleted) (event.Subscription, error) { + + logs, sub, err := _IAVSDirectory.contract.WatchLogs(opts, "MagnitudeDeallocationCompleted") + 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(IAVSDirectoryMagnitudeDeallocationCompleted) + if err := _IAVSDirectory.contract.UnpackLog(event, "MagnitudeDeallocationCompleted", 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 +} + +// ParseMagnitudeDeallocationCompleted is a log parse operation binding the contract event 0x1e5c8e13c62c31d6252ac205e592477d643c7e95831d5b46d99a3c60c2fad8db. +// +// Solidity: event MagnitudeDeallocationCompleted(address operator, address strategy, (address,uint32) operatorSet, uint64 freeMagnitudeAdded) +func (_IAVSDirectory *IAVSDirectoryFilterer) ParseMagnitudeDeallocationCompleted(log types.Log) (*IAVSDirectoryMagnitudeDeallocationCompleted, error) { + event := new(IAVSDirectoryMagnitudeDeallocationCompleted) + if err := _IAVSDirectory.contract.UnpackLog(event, "MagnitudeDeallocationCompleted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IAVSDirectoryMagnitudeQueueDeallocatedIterator is returned from FilterMagnitudeQueueDeallocated and is used to iterate over the raw logs and unpacked data for MagnitudeQueueDeallocated events raised by the IAVSDirectory contract. +type IAVSDirectoryMagnitudeQueueDeallocatedIterator struct { + Event *IAVSDirectoryMagnitudeQueueDeallocated // 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 *IAVSDirectoryMagnitudeQueueDeallocatedIterator) 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(IAVSDirectoryMagnitudeQueueDeallocated) + 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(IAVSDirectoryMagnitudeQueueDeallocated) + 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 *IAVSDirectoryMagnitudeQueueDeallocatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IAVSDirectoryMagnitudeQueueDeallocatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IAVSDirectoryMagnitudeQueueDeallocated represents a MagnitudeQueueDeallocated event raised by the IAVSDirectory contract. +type IAVSDirectoryMagnitudeQueueDeallocated struct { + Operator common.Address + Strategy common.Address + OperatorSet IAVSDirectoryOperatorSet + MagnitudeToDeallocate uint64 + CompletableTimestamp uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMagnitudeQueueDeallocated is a free log retrieval operation binding the contract event 0x2e68db1fe51107d7e451ae268d1631796989ab9d7925054e9b247854cb5be950. +// +// Solidity: event MagnitudeQueueDeallocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToDeallocate, uint32 completableTimestamp) +func (_IAVSDirectory *IAVSDirectoryFilterer) FilterMagnitudeQueueDeallocated(opts *bind.FilterOpts) (*IAVSDirectoryMagnitudeQueueDeallocatedIterator, error) { + + logs, sub, err := _IAVSDirectory.contract.FilterLogs(opts, "MagnitudeQueueDeallocated") + if err != nil { + return nil, err + } + return &IAVSDirectoryMagnitudeQueueDeallocatedIterator{contract: _IAVSDirectory.contract, event: "MagnitudeQueueDeallocated", logs: logs, sub: sub}, nil +} + +// WatchMagnitudeQueueDeallocated is a free log subscription operation binding the contract event 0x2e68db1fe51107d7e451ae268d1631796989ab9d7925054e9b247854cb5be950. +// +// Solidity: event MagnitudeQueueDeallocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToDeallocate, uint32 completableTimestamp) +func (_IAVSDirectory *IAVSDirectoryFilterer) WatchMagnitudeQueueDeallocated(opts *bind.WatchOpts, sink chan<- *IAVSDirectoryMagnitudeQueueDeallocated) (event.Subscription, error) { + + logs, sub, err := _IAVSDirectory.contract.WatchLogs(opts, "MagnitudeQueueDeallocated") + 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(IAVSDirectoryMagnitudeQueueDeallocated) + if err := _IAVSDirectory.contract.UnpackLog(event, "MagnitudeQueueDeallocated", 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 +} + +// ParseMagnitudeQueueDeallocated is a log parse operation binding the contract event 0x2e68db1fe51107d7e451ae268d1631796989ab9d7925054e9b247854cb5be950. +// +// Solidity: event MagnitudeQueueDeallocated(address operator, address strategy, (address,uint32) operatorSet, uint64 magnitudeToDeallocate, uint32 completableTimestamp) +func (_IAVSDirectory *IAVSDirectoryFilterer) ParseMagnitudeQueueDeallocated(log types.Log) (*IAVSDirectoryMagnitudeQueueDeallocated, error) { + event := new(IAVSDirectoryMagnitudeQueueDeallocated) + if err := _IAVSDirectory.contract.UnpackLog(event, "MagnitudeQueueDeallocated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // IAVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator is returned from FilterOperatorAVSRegistrationStatusUpdated and is used to iterate over the raw logs and unpacked data for OperatorAVSRegistrationStatusUpdated events raised by the IAVSDirectory contract. type IAVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator struct { Event *IAVSDirectoryOperatorAVSRegistrationStatusUpdated // Event containing the contract specifics and raw log @@ -1733,3 +2257,140 @@ func (_IAVSDirectory *IAVSDirectoryFilterer) ParseOperatorSetCreated(log types.L event.Raw = log return event, nil } + +// IAVSDirectoryOperatorSlashedIterator is returned from FilterOperatorSlashed and is used to iterate over the raw logs and unpacked data for OperatorSlashed events raised by the IAVSDirectory contract. +type IAVSDirectoryOperatorSlashedIterator struct { + Event *IAVSDirectoryOperatorSlashed // 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 *IAVSDirectoryOperatorSlashedIterator) 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(IAVSDirectoryOperatorSlashed) + 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(IAVSDirectoryOperatorSlashed) + 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 *IAVSDirectoryOperatorSlashedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IAVSDirectoryOperatorSlashedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IAVSDirectoryOperatorSlashed represents a OperatorSlashed event raised by the IAVSDirectory contract. +type IAVSDirectoryOperatorSlashed struct { + Operator common.Address + OperatorSetId uint32 + Strategy common.Address + BipsToSlash uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSlashed is a free log retrieval operation binding the contract event 0xe672839d3c371691acdb52de9fefc94b3dbf407dc0920ef566c7c059ad575b1c. +// +// Solidity: event OperatorSlashed(address operator, uint32 operatorSetId, address strategy, uint16 bipsToSlash) +func (_IAVSDirectory *IAVSDirectoryFilterer) FilterOperatorSlashed(opts *bind.FilterOpts) (*IAVSDirectoryOperatorSlashedIterator, error) { + + logs, sub, err := _IAVSDirectory.contract.FilterLogs(opts, "OperatorSlashed") + if err != nil { + return nil, err + } + return &IAVSDirectoryOperatorSlashedIterator{contract: _IAVSDirectory.contract, event: "OperatorSlashed", logs: logs, sub: sub}, nil +} + +// WatchOperatorSlashed is a free log subscription operation binding the contract event 0xe672839d3c371691acdb52de9fefc94b3dbf407dc0920ef566c7c059ad575b1c. +// +// Solidity: event OperatorSlashed(address operator, uint32 operatorSetId, address strategy, uint16 bipsToSlash) +func (_IAVSDirectory *IAVSDirectoryFilterer) WatchOperatorSlashed(opts *bind.WatchOpts, sink chan<- *IAVSDirectoryOperatorSlashed) (event.Subscription, error) { + + logs, sub, err := _IAVSDirectory.contract.WatchLogs(opts, "OperatorSlashed") + 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(IAVSDirectoryOperatorSlashed) + if err := _IAVSDirectory.contract.UnpackLog(event, "OperatorSlashed", 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 +} + +// ParseOperatorSlashed is a log parse operation binding the contract event 0xe672839d3c371691acdb52de9fefc94b3dbf407dc0920ef566c7c059ad575b1c. +// +// Solidity: event OperatorSlashed(address operator, uint32 operatorSetId, address strategy, uint16 bipsToSlash) +func (_IAVSDirectory *IAVSDirectoryFilterer) ParseOperatorSlashed(log types.Log) (*IAVSDirectoryOperatorSlashed, error) { + event := new(IAVSDirectoryOperatorSlashed) + if err := _IAVSDirectory.contract.UnpackLog(event, "OperatorSlashed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/MagnitudeCheckpoints/binding.go b/pkg/bindings/MagnitudeCheckpoints/binding.go new file mode 100644 index 000000000..9a5a2ef52 --- /dev/null +++ b/pkg/bindings/MagnitudeCheckpoints/binding.go @@ -0,0 +1,203 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package MagnitudeCheckpoints + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// MagnitudeCheckpointsMetaData contains all meta data concerning the MagnitudeCheckpoints contract. +var MagnitudeCheckpointsMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d403c7152d652d1a100c83daf55d72392c025180800bf29f79d386c0af19a05d64736f6c634300080c0033", +} + +// MagnitudeCheckpointsABI is the input ABI used to generate the binding from. +// Deprecated: Use MagnitudeCheckpointsMetaData.ABI instead. +var MagnitudeCheckpointsABI = MagnitudeCheckpointsMetaData.ABI + +// MagnitudeCheckpointsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use MagnitudeCheckpointsMetaData.Bin instead. +var MagnitudeCheckpointsBin = MagnitudeCheckpointsMetaData.Bin + +// DeployMagnitudeCheckpoints deploys a new Ethereum contract, binding an instance of MagnitudeCheckpoints to it. +func DeployMagnitudeCheckpoints(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *MagnitudeCheckpoints, error) { + parsed, err := MagnitudeCheckpointsMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(MagnitudeCheckpointsBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &MagnitudeCheckpoints{MagnitudeCheckpointsCaller: MagnitudeCheckpointsCaller{contract: contract}, MagnitudeCheckpointsTransactor: MagnitudeCheckpointsTransactor{contract: contract}, MagnitudeCheckpointsFilterer: MagnitudeCheckpointsFilterer{contract: contract}}, nil +} + +// MagnitudeCheckpoints is an auto generated Go binding around an Ethereum contract. +type MagnitudeCheckpoints struct { + MagnitudeCheckpointsCaller // Read-only binding to the contract + MagnitudeCheckpointsTransactor // Write-only binding to the contract + MagnitudeCheckpointsFilterer // Log filterer for contract events +} + +// MagnitudeCheckpointsCaller is an auto generated read-only Go binding around an Ethereum contract. +type MagnitudeCheckpointsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MagnitudeCheckpointsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type MagnitudeCheckpointsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MagnitudeCheckpointsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type MagnitudeCheckpointsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MagnitudeCheckpointsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type MagnitudeCheckpointsSession struct { + Contract *MagnitudeCheckpoints // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MagnitudeCheckpointsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type MagnitudeCheckpointsCallerSession struct { + Contract *MagnitudeCheckpointsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// MagnitudeCheckpointsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type MagnitudeCheckpointsTransactorSession struct { + Contract *MagnitudeCheckpointsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MagnitudeCheckpointsRaw is an auto generated low-level Go binding around an Ethereum contract. +type MagnitudeCheckpointsRaw struct { + Contract *MagnitudeCheckpoints // Generic contract binding to access the raw methods on +} + +// MagnitudeCheckpointsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type MagnitudeCheckpointsCallerRaw struct { + Contract *MagnitudeCheckpointsCaller // Generic read-only contract binding to access the raw methods on +} + +// MagnitudeCheckpointsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type MagnitudeCheckpointsTransactorRaw struct { + Contract *MagnitudeCheckpointsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewMagnitudeCheckpoints creates a new instance of MagnitudeCheckpoints, bound to a specific deployed contract. +func NewMagnitudeCheckpoints(address common.Address, backend bind.ContractBackend) (*MagnitudeCheckpoints, error) { + contract, err := bindMagnitudeCheckpoints(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &MagnitudeCheckpoints{MagnitudeCheckpointsCaller: MagnitudeCheckpointsCaller{contract: contract}, MagnitudeCheckpointsTransactor: MagnitudeCheckpointsTransactor{contract: contract}, MagnitudeCheckpointsFilterer: MagnitudeCheckpointsFilterer{contract: contract}}, nil +} + +// NewMagnitudeCheckpointsCaller creates a new read-only instance of MagnitudeCheckpoints, bound to a specific deployed contract. +func NewMagnitudeCheckpointsCaller(address common.Address, caller bind.ContractCaller) (*MagnitudeCheckpointsCaller, error) { + contract, err := bindMagnitudeCheckpoints(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &MagnitudeCheckpointsCaller{contract: contract}, nil +} + +// NewMagnitudeCheckpointsTransactor creates a new write-only instance of MagnitudeCheckpoints, bound to a specific deployed contract. +func NewMagnitudeCheckpointsTransactor(address common.Address, transactor bind.ContractTransactor) (*MagnitudeCheckpointsTransactor, error) { + contract, err := bindMagnitudeCheckpoints(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &MagnitudeCheckpointsTransactor{contract: contract}, nil +} + +// NewMagnitudeCheckpointsFilterer creates a new log filterer instance of MagnitudeCheckpoints, bound to a specific deployed contract. +func NewMagnitudeCheckpointsFilterer(address common.Address, filterer bind.ContractFilterer) (*MagnitudeCheckpointsFilterer, error) { + contract, err := bindMagnitudeCheckpoints(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &MagnitudeCheckpointsFilterer{contract: contract}, nil +} + +// bindMagnitudeCheckpoints binds a generic wrapper to an already deployed contract. +func bindMagnitudeCheckpoints(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := MagnitudeCheckpointsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_MagnitudeCheckpoints *MagnitudeCheckpointsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _MagnitudeCheckpoints.Contract.MagnitudeCheckpointsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_MagnitudeCheckpoints *MagnitudeCheckpointsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _MagnitudeCheckpoints.Contract.MagnitudeCheckpointsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_MagnitudeCheckpoints *MagnitudeCheckpointsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _MagnitudeCheckpoints.Contract.MagnitudeCheckpointsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_MagnitudeCheckpoints *MagnitudeCheckpointsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _MagnitudeCheckpoints.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_MagnitudeCheckpoints *MagnitudeCheckpointsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _MagnitudeCheckpoints.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_MagnitudeCheckpoints *MagnitudeCheckpointsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _MagnitudeCheckpoints.Contract.contract.Transact(opts, method, params...) +} diff --git a/pkg/bindings/RewardsCoordinator/binding.go b/pkg/bindings/RewardsCoordinator/binding.go index cee380094..284f9a7cd 100644 --- a/pkg/bindings/RewardsCoordinator/binding.go +++ b/pkg/bindings/RewardsCoordinator/binding.go @@ -95,7 +95,7 @@ type IRewardsCoordinatorTokenTreeMerkleLeaf struct { // RewardsCoordinatorMetaData contains all meta data concerning the RewardsCoordinator contract. var RewardsCoordinatorMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_avsDirectory\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"},{\"name\":\"_CALCULATION_INTERVAL_SECONDS\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_MAX_REWARDS_DURATION\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_MAX_RETROACTIVE_LENGTH\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_MAX_FUTURE_LENGTH\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_GENESIS_REWARDS_TIMESTAMP\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_OPERATOR_SET_MAX_RETROACTIVE_LENGTH\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"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\":\"OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_SET_MAX_RETROACTIVE_LENGTH\",\"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\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateEarnerLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.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\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"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\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentClaimableDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"getOperatorCommissionBips\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"rewardType\",\"type\":\"uint8\",\"internalType\":\"enumIRewardsCoordinator.RewardType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorCommissionUpdateHistoryLength\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"rewardType\",\"type\":\"uint8\",\"internalType\":\"enumIRewardsCoordinator.RewardType\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalOperatorCommissionBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_globalCommissionBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isAVSRewardsSubmissionHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsSubmissionForAllHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorCommissionUpdates\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIRewardsCoordinator.RewardType\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"commissionBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"effectTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"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\":\"processClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"structIRewardsCoordinator.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\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardOperatorSetForRange\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.OperatorSetRewardsSubmission[]\",\"components\":[{\"name\":\"rewardType\",\"type\":\"uint8\",\"internalType\":\"enumIRewardsCoordinator.RewardType\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.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\":\"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\":\"setGlobalOperatorCommission\",\"inputs\":[{\"name\":\"_globalCommissionBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorCommissionBips\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"rewardType\",\"type\":\"uint8\",\"internalType\":\"enumIRewardsCoordinator.RewardType\"},{\"name\":\"commissionBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[{\"name\":\"effectTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"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\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submissionNonce\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submitRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"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\":\"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\":\"structIRewardsCoordinator.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.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\":\"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\":\"GlobalCommissionBipsSet\",\"inputs\":[{\"name\":\"oldGlobalCommissionBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newGlobalCommissionBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorCommissionUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":true,\"internalType\":\"structIAVSDirectory.OperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"rewardType\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIRewardsCoordinator.RewardType\"},{\"name\":\"newCommissionBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"effectTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetRewardCreated\",\"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\":\"structIRewardsCoordinator.OperatorSetRewardsSubmission\",\"components\":[{\"name\":\"rewardType\",\"type\":\"uint8\",\"internalType\":\"enumIRewardsCoordinator.RewardType\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.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\":\"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\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"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\":\"structIRewardsCoordinator.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.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\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x6101e06040523480156200001257600080fd5b506040516200511f3803806200511f8339810160408190526200003591620003c0565b898989898989898989896200004b878462000497565b63ffffffff1615620000f05760405162461bcd60e51b815260206004820152606060248201527f52657761726473436f6f7264696e61746f723a2047454e455349535f5245574160448201527f5244535f54494d455354414d50206d7573742062652061206d756c7469706c6560648201527f206f662043414c43554c4154494f4e5f494e54455256414c5f5345434f4e4453608482015260a4015b60405180910390fd5b620000ff620151808862000497565b63ffffffff1615620001a05760405162461bcd60e51b815260206004820152605760248201527f52657761726473436f6f7264696e61746f723a2043414c43554c4154494f4e5f60448201527f494e54455256414c5f5345434f4e4453206d7573742062652061206d756c746960648201527f706c65206f6620534e415053484f545f434144454e4345000000000000000000608482015260a401620000e7565b620001ac878362000497565b63ffffffff1615620002635760405162461bcd60e51b815260206004820152606d60248201527f52657761726473436f6f7264696e61746f723a204f50455241544f525f53455460448201527f5f47454e455349535f524557415244535f54494d455354414d50206d7573742060648201527f62652061206d756c7469706c65206f662043414c43554c4154494f4e5f494e5460848201526c455256414c5f5345434f4e445360981b60a482015260c401620000e7565b6001600160a01b03998a166101605297891661018052959097166101a05263ffffffff93841660805291831660a052821661010052811660c05292831660e0528216610120521661014052620002b8620002ce565b5050466101c05250620004c99650505050505050565b600054610100900460ff1615620003385760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401620000e7565b60005460ff90811610156200038b576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620003a357600080fd5b50565b805163ffffffff81168114620003bb57600080fd5b919050565b6000806000806000806000806000806101408b8d031215620003e157600080fd5b8a51620003ee816200038d565b60208c0151909a5062000401816200038d565b60408c015190995062000414816200038d565b97506200042460608c01620003a6565b96506200043460808c01620003a6565b95506200044460a08c01620003a6565b94506200045460c08c01620003a6565b93506200046460e08c01620003a6565b9250620004756101008c01620003a6565b9150620004866101208c01620003a6565b90509295989b9194979a5092959850565b600063ffffffff80841680620004bd57634e487b7160e01b600052601260045260246000fd5b92169190910692915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c051614b896200059660003960006124e80152600081816106970152610e1c01526000818161059d01526130d9015260006108e801526000818161053c0152610f930152600081816108750152610fb4015260008181610576015261124701526000818161048d01526112680152600081816103b90152612fd601526000818161080d0152612cda0152600081816107b301528181612d8a0152612e540152614b896000f3fe608060405234801561001057600080fd5b50600436106103775760003560e01c8063715018a6116101d3578063c46db60611610104578063f2fde38b116100a2578063f96abf2e1161007c578063f96abf2e14610938578063fabc1cbc1461094b578063fbf1e2c11461095e578063fce36c7d1461097157600080fd5b8063f2fde38b1461090a578063f698da251461091d578063f8cd84481461092557600080fd5b8063de02e503116100de578063de02e503146108aa578063e221b245146108bd578063e810ce21146108d0578063ea4d3c9b146108e357600080fd5b8063c46db60614610842578063d11e9ae514610870578063d4540a551461089757600080fd5b80639104c31911610171578063a0169ddd1161014b578063a0169ddd146107d5578063bb7e451f146107e8578063bf21a8aa14610808578063c336f19d1461082f57600080fd5b80639104c3191461078b5780639be3d4e4146107a65780639d45c281146107ae57600080fd5b8063863cb9a9116101ad578063863cb9a914610729578063865c69531461073c578063886f1195146107675780638da5cb5b1461077a57600080fd5b8063715018a6146106e75780637adace91146106ef5780637b8f8b051461072157600080fd5b806339b70e38116102ad57806358baaa3e1161024b5780635c975abb116102255780635c975abb146106775780635e9d83481461067f5780636b3aa72e146106925780636d21117e146106b957600080fd5b806358baaa3e14610639578063595c6a671461064c5780635ac86ab71461065457600080fd5b80633ccc861d116102875780633ccc861d146105e95780633efe1db6146105fc5780634d18cc351461060f5780634d7a80d41461062657600080fd5b806339b70e38146105985780633a8c0786146105bf5780633c8fcf7c146105d657600080fd5b8063136439dd1161031a5780632c9c60cf116102f45780632c9c60cf146105245780633486e32e1461053757806336af41fa1461055e57806337838ed01461057157600080fd5b8063136439dd146104af578063149bc872146104c25780632b9f64a4146104e357600080fd5b80630e9a53cf116103565780630e9a53cf146104185780630eb383451461046057806310d67a2f14610475578063131433b41461048857600080fd5b806218572c1461037c57806304a0c502146103b4578063092db007146103f0575b600080fd5b61039f61038a366004613f70565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103ab565b60cb5461040590600160e01b900461ffff1681565b60405161ffff90911681526020016103ab565b610420610984565b604080518251815260208084015163ffffffff908116918301919091528383015116918101919091526060918201511515918101919091526080016103ab565b61047361046e366004613f9b565b610a63565b005b610473610483366004613f70565b610ae5565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6104736104bd366004613fd4565b610ba1565b6104d56104d0366004614005565b610ce0565b6040519081526020016103ab565b61050c6104f1366004613f70565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103ab565b61047361053236600461406d565b610d56565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b61047361056c36600461406d565b61109e565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b61050c7f000000000000000000000000000000000000000000000000000000000000000081565b60cb546103db90600160a01b900463ffffffff1681565b6103db6105e43660046140d5565b611336565b6104736105f736600461412c565b6115c4565b61047361060a366004614187565b611986565b60cb546103db90600160c01b900463ffffffff1681565b6104056106343660046141b3565b611c57565b6104736106473660046141f0565b611e06565b610473611e17565b61039f61066236600461420b565b606654600160ff9092169190911b9081161490565b6066546104d5565b61039f61068d36600461422e565b611ede565b61050c7f000000000000000000000000000000000000000000000000000000000000000081565b61039f6106c7366004614263565b60cf60209081526000928352604080842090915290825290205460ff1681565b610473611f6b565b6107026106fd36600461428f565b611f7f565b6040805161ffff909316835263ffffffff9091166020830152016103ab565b60ca546104d5565b610473610737366004613f70565b611fe7565b6104d561074a3660046142ef565b60cd60209081526000928352604080842090915290825290205481565b60655461050c906001600160a01b031681565b6033546001600160a01b031661050c565b61050c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610420611ff8565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6104736107e3366004613f70565b612096565b6104d56107f6366004613f70565b60ce6020526000908152604090205481565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6104d561083d3660046141b3565b6120f5565b61039f610850366004614263565b60d060209081526000928352604080842090915290825290205460ff1681565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6104736108a536600461431d565b6121a8565b6104206108b8366004613fd4565b6122f0565b6104736108cb366004614390565b612382565b6103db6108de366004613fd4565b612393565b61050c7f000000000000000000000000000000000000000000000000000000000000000081565b610473610918366004613f70565b61246e565b6104d56124e4565b6104d5610933366004614005565b612522565b6104736109463660046141f0565b612533565b610473610959366004613fd4565b612769565b60cb5461050c906001600160a01b031681565b61047361097f36600461406d565b6128c5565b60408051608081018252600080825260208201819052918101829052606081019190915260ca545b8015610a5f57600060ca6109c16001846143c1565b815481106109d1576109d16143d8565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610a415750806040015163ffffffff164210155b15610a4c5792915050565b5080610a57816143ee565b9150506109ac565b5090565b610a6b612a42565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5c9190614405565b6001600160a01b0316336001600160a01b031614610b955760405162461bcd60e51b8152600401610b8c90614422565b60405180910390fd5b610b9e81612a9c565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0d919061446c565b610c295760405162461bcd60e51b8152600401610b8c90614489565b60665481811614610ca25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b8c565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610cf06020840184613f70565b8360200135604051602001610d399392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60665460049060109081161415610d7f5760405162461bcd60e51b8152600401610b8c906144d1565b60026097541415610da25760405162461bcd60e51b8152600401610b8c90614508565b600260975560005b828110156110935736848483818110610dc557610dc56143d8565b9050602002810190610dd7919061453f565b33600081815260ce60209081526040808320549051949550939192610e0292909185918791016146fc565b6040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166384d76f7b33856020016020810190610e5d91906141f0565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015263ffffffff166024820152604401602060405180830381865afa158015610eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed0919061446c565b610f4c5760405162461bcd60e51b815260206004820152604160248201527f52657761726473436f6f7264696e61746f722e7265776172644f70657261746f60448201527f72536574466f7252616e67653a20696e76616c6964206f70657261746f7253656064820152601d60fa1b608482015260a401610b8c565b610fd8610f5c604085018561472c565b610f6c6080870160608801613f70565b6080870135610f8160c0890160a08a016141f0565b610f9160e08a0160c08b016141f0565b7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612b93565b33600090815260cf602090815260408083208484529091529020805460ff1916600190811790915561100b908390614776565b33600081815260ce602052604090819020929092559051829184917f29a8ee4f31259a5f344a2cca256440ea6638a3278972b1ee9a7aab99b00aa3b29061105390889061478e565b60405180910390a46110853330608086018035906110749060608901613f70565b6001600160a01b03169291906132ab565b836001019350505050610daa565b505060016097555050565b606654600190600290811614156110c75760405162461bcd60e51b8152600401610b8c906144d1565b33600090815260d1602052604090205460ff166111665760405162461bcd60e51b815260206004820152605160248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260648201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608482015260a401610b8c565b600260975414156111895760405162461bcd60e51b8152600401610b8c90614508565b600260975560005b8281101561109357368484838181106111ac576111ac6143d8565b90506020028101906111be91906147a1565b33600081815260ce602090815260408083205490519495509391926111e99290918591879101614836565b60408051601f198184030181529190528051602090910120905061128c611210848061472c565b6112206040870160208801613f70565b60408701356112356080890160608a016141f0565b61124560a08a0160808b016141f0565b7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612b93565b33600090815260d0602090815260408083208484529091529020805460ff191660019081179091556112bf908390614776565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061130790889061485d565b60405180910390a46113283330604086018035906110749060208901613f70565b836001019350505050611191565b600061271061ffff831611156113c25760405162461bcd60e51b815260206004820152604560248201527f52657761726473436f6f7264696e61746f722e7365744f70657261746f72436f60448201527f6d6d697373696f6e426970733a20636f6d6d697373696f6e4269707320746f6f606482015264040d0d2ced60db1b608482015260a401610b8c565b6113cf62093a8042614776565b33600090815260d360209081526040822092935090919082906113f490880188613f70565b6001600160a01b03166001600160a01b03168152602001908152602001600020600086602001602081019061142991906141f0565b63ffffffff1663ffffffff16815260200190815260200160002060008560008111156114575761145761455f565b80156114655761146561455f565b8152602081019190915260400160002080549091508015806114c0575063ffffffff8316826114956001846143c1565b815481106114a5576114a56143d8565b60009182526020909120015462010000900463ffffffff1614155b15611523576040805180820190915261ffff808616825263ffffffff808616602080850191825286546001810188556000888152919091209451940180549151909216620100000265ffffffffffff199091169390921692909217179055611560565b83826115306001846143c1565b81548110611540576115406143d8565b6000918252602090912001805461ffff191661ffff929092169190911790555b8560405161156e9190614870565b6040518091039020336001600160a01b03167f811b77cd39953efa46bbcbf8afd10756fac937e63667afdd6bab4dd69c788dba8787876040516115b3939291906148a8565b60405180910390a350509392505050565b606654600290600490811614156115ed5760405162461bcd60e51b8152600401610b8c906144d1565b600260975414156116105760405162461bcd60e51b8152600401610b8c90614508565b6002609755600060ca61162660208601866141f0565b63ffffffff168154811061163c5761163c6143d8565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152905061169d848261331c565b60006116af6080860160608701613f70565b6001600160a01b03808216600090815260cc602052604090205491925016806116d55750805b336001600160a01b038216146117535760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d6572000000006064820152608401610b8c565b60005b61176360a08801886148d4565b9050811015611978573661177a60e089018961472c565b8381811061178a5761178a6143d8565b6001600160a01b038716600090815260cd6020908152604080832093029490940194509290915082906117bf90850185613f70565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050808260200135116118795760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a401610b8c565b60006118898260208501356143c1565b6001600160a01b038716600090815260cd602090815260408220929350850180359291906118b79087613f70565b6001600160a01b03168152602080820192909252604001600020919091556118f9908a9083906118e990870187613f70565b6001600160a01b031691906135ed565b86516001600160a01b03808b1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061193d6020890189613f70565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050806119719061491e565b9050611756565b505060016097555050505050565b606654600390600890811614156119af5760405162461bcd60e51b8152600401610b8c906144d1565b60cb546001600160a01b031633146119d95760405162461bcd60e51b8152600401610b8c90614939565b60cb5463ffffffff600160c01b909104811690831611611a755760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a401610b8c565b428263ffffffff1610611b0e5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a401610b8c565b60ca5460cb54600090611b2e90600160a01b900463ffffffff164261498d565b6040805160808101825287815263ffffffff878116602080840182815286841685870181815260006060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b60cb546001600160a01b038416600090815260d36020908152604082209192600160e01b900461ffff169183918290611c9290880188613f70565b6001600160a01b03166001600160a01b031681526020019081526020016000206000866020016020810190611cc791906141f0565b63ffffffff1663ffffffff1681526020019081526020016000206000856000811115611cf557611cf561455f565b8015611d0357611d0361455f565b8152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611d77576000848152602090819020604080518082019091529084015461ffff8116825262010000900463ffffffff1681830152825260019092019101611d31565b5050825192935050505b8015611df95763ffffffff421682611d9a6001846143c1565b81518110611daa57611daa6143d8565b60200260200101516020015163ffffffff1611611df05781611dcd6001836143c1565b81518110611ddd57611ddd6143d8565b6020026020010151600001519250611df9565b60001901611d81565b50909150505b9392505050565b611e0e612a42565b610b9e8161361d565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e83919061446c565b611e9f5760405162461bcd60e51b8152600401610b8c90614489565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000611f638260ca611ef360208301836141f0565b63ffffffff1681548110611f0957611f096143d8565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015261331c565b506001919050565b611f73612a42565b611f7d600061368e565b565b60d36020528460005260406000206020528360005260406000206020528260005260406000206020528160005260406000208181548110611fbf57600080fd5b60009182526020909120015461ffff8116955062010000900463ffffffff1693508592505050565b611fef612a42565b610b9e816136e0565b60408051608081018252600080825260208201819052918101829052606081019190915260ca805461202c906001906143c1565b8154811061203c5761203c6143d8565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b6001600160a01b038316600090815260d360209081526040822090829061211e90860186613f70565b6001600160a01b03166001600160a01b03168152602001908152602001600020600084602001602081019061215391906141f0565b63ffffffff1663ffffffff16815260200190815260200160002060008360008111156121815761218161455f565b801561218f5761218f61455f565b8152602081019190915260400160002054949350505050565b600054610100900460ff16158080156121c85750600054600160ff909116105b806121e25750303b1580156121e2575060005460ff166001145b6122455760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b8c565b6000805460ff191660011790558015612268576000805461ff0019166101001790555b61227061373c565b60c95561227d86866137d3565b6122868761368e565b61228f846136e0565b6122988361361d565b6122a1826138bd565b80156122e7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260ca8281548110612327576123276143d8565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b61238a612a42565b610b9e816138bd565b60ca546000905b63ffffffff8116156123ff578260ca6123b46001846149b5565b63ffffffff16815481106123ca576123ca6143d8565b90600052602060002090600202016000015414156123ed57611dff6001826149b5565b806123f7816149da565b91505061239a565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e640000000000000000006064820152608401610b8c565b612476612a42565b6001600160a01b0381166124db5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b8c565b610b9e8161368e565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612515575060c95490565b61251d61373c565b905090565b60006001610cf06020840184613f70565b6066546003906008908116141561255c5760405162461bcd60e51b8152600401610b8c906144d1565b60cb546001600160a01b031633146125865760405162461bcd60e51b8152600401610b8c90614939565b60ca5463ffffffff8316106125f75760405162461bcd60e51b815260206004820152603160248201527f52657761726473436f6f7264696e61746f722e64697361626c65526f6f743a206044820152700d2dcecc2d8d2c840e4dedee892dcc8caf607b1b6064820152608401610b8c565b600060ca8363ffffffff1681548110612612576126126143d8565b906000526020600020906002020190508060010160089054906101000a900460ff161561269f5760405162461bcd60e51b815260206004820152603560248201527f52657761726473436f6f7264696e61746f722e64697361626c65526f6f743a206044820152741c9bdbdd08185b1c9958591e48191a5cd8589b1959605a1b6064820152608401610b8c565b6001810154600160201b900463ffffffff16421061271e5760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e64697361626c65526f6f743a206044820152751c9bdbdd08185b1c9958591e481858dd1a5d985d195960521b6064820152608401610b8c565b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e90600090a2505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e09190614405565b6001600160a01b0316336001600160a01b0316146128105760405162461bcd60e51b8152600401610b8c90614422565b60665419811960665419161461288e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b8c565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610cd5565b606654600090600190811614156128ee5760405162461bcd60e51b8152600401610b8c906144d1565b600260975414156129115760405162461bcd60e51b8152600401610b8c90614508565b600260975560005b828110156110935736848483818110612934576129346143d8565b905060200281019061294691906147a1565b33600081815260ce602090815260408083205490519495509391926129719290918591879101614836565b60408051601f1981840301815291905280516020909101209050612998611210848061472c565b33600090815260cf602090815260408083208484529091529020805460ff191660019081179091556129cb908390614776565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190612a1390889061485d565b60405180910390a4612a343330604086018035906110749060208901613f70565b836001019350505050612919565b6033546001600160a01b03163314611f7d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b8c565b6001600160a01b038116612b2a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b8c565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b86612bf6576040805162461bcd60e51b8152602060048201526024810191909152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a206e6f2073747261746567696573207365746064820152608401610b8c565b60008511612c645760405162461bcd60e51b81526020600482015260416024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a401610b8c565b6f4b3b4ca85a86c47a098a223fffffffff851115612cd85760405162461bcd60e51b815260206004820152603f6024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c61726765006064820152608401610b8c565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168363ffffffff161115612d855760405162461bcd60e51b81526020600482015260546024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e20657863656564732060648201527326a0ac2fa922aba0a92229afa22aa920aa24a7a760611b608482015260a401610b8c565b612daf7f000000000000000000000000000000000000000000000000000000000000000084614a10565b63ffffffff1615612e4f5760405162461bcd60e51b815260206004820152606a6024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e206d7573742062652060648201527f61206d756c7469706c65206f662043414c43554c4154494f4e5f494e54455256608482015269414c5f5345434f4e445360b01b60a482015260c401610b8c565b612e797f000000000000000000000000000000000000000000000000000000000000000085614a10565b63ffffffff1615612f1f5760405162461bcd60e51b81526020600482015260706024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d70206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c401610b8c565b8363ffffffff168263ffffffff1642612f3891906143c1565b11158015612f5257508363ffffffff168163ffffffff1611155b612fcc5760405162461bcd60e51b81526020600482015260516024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152701bc819985c881a5b881d1a19481c185cdd607a1b608482015260a401610b8c565b612ffc63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614776565b8463ffffffff1611156130815760405162461bcd60e51b81526020600482015260536024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a401610b8c565b6000805b8881101561329f5760008a8a838181106130a1576130a16143d8565b6130b79260206040909202019081019150613f70565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa158015613122573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613146919061446c565b8061316d57506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b6131e05760405162461bcd60e51b815260206004820152604a6024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a20696e76616c69642073747261746567792060648201526918dbdb9cda59195c995960b21b608482015260a401610b8c565b806001600160a01b0316836001600160a01b03161061328d5760405162461bcd60e51b81526020600482015260696024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a2073747261746567696573206d757374206260648201527f6520696e20617363656e64696e67206f7264657220746f2068616e646c65206460848201526875706c69636174657360b81b60a482015260c401610b8c565b91506132988161491e565b9050613085565b50505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526133169085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613928565b50505050565b8060600151156133755760405162461bcd60e51b81526020600482015260306024820152600080516020614b1483398151915260448201526f1c9bdbdd081a5cc8191a5cd8589b195960821b6064820152608401610b8c565b806040015163ffffffff164210156133dc5760405162461bcd60e51b81526020600482015260366024820152600080516020614b148339815191526044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b6064820152608401610b8c565b6133e960c08301836148d4565b90506133f860a08401846148d4565b9050146134705760405162461bcd60e51b815260206004820152604c6024820152600080516020614b1483398151915260448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a401610b8c565b61347d60e083018361472c565b905061348c60c08401846148d4565b9050146135025760405162461bcd60e51b815260206004820152604a6024820152600080516020614b1483398151915260448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610b8c565b805161352e9061351860408501602086016141f0565b6135256040860186614a33565b866060016139fa565b60005b61353e60a08401846148d4565b90508110156135e8576135d8608084013561355c60a08601866148d4565b8481811061356c5761356c6143d8565b905060200201602081019061358191906141f0565b61358e60c08701876148d4565b8581811061359e5761359e6143d8565b90506020028101906135b09190614a33565b6135bd60e089018961472c565b878181106135cd576135cd6143d8565b905060400201613b6e565b6135e18161491e565b9050613531565b505050565b6040516001600160a01b0383166024820152604481018290526135e890849063a9059cbb60e01b906064016132df565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b03161580156137f457506001600160a01b03821615155b6138765760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b8c565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26138b982612a9c565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b600061397d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613cbf9092919063ffffffff16565b8051909150156135e8578080602001905181019061399b919061446c565b6135e85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b8c565b613a05602083614a7a565b6001901b8463ffffffff1610613a8f5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a401610b8c565b6000613a9a82610ce0565b9050613ae584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916613cd6565b613b665760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a401610b8c565b505050505050565b613b79602083614a7a565b6001901b8463ffffffff1610613bf75760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e646578000000006064820152608401610b8c565b6000613c0282612522565b9050613c4d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916613cd6565b613b665760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f66006064820152608401610b8c565b6060613cce8484600085613cee565b949350505050565b600083613ce4868585613e1f565b1495945050505050565b606082471015613d4f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b8c565b6001600160a01b0385163b613da65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b8c565b600080866001600160a01b03168587604051613dc29190614aba565b60006040518083038185875af1925050503d8060008114613dff576040519150601f19603f3d011682016040523d82523d6000602084013e613e04565b606091505b5091509150613e14828286613f22565b979650505050505050565b600060208451613e2f9190614acc565b15613eb65760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a401610b8c565b8260205b85518111613f1957613ecd600285614acc565b613eee57816000528086015160205260406000209150600284049350613f07565b8086015160005281602052604060002091506002840493505b613f12602082614776565b9050613eba565b50949350505050565b60608315613f31575081611dff565b825115613f415782518084602001fd5b8160405162461bcd60e51b8152600401610b8c9190614ae0565b6001600160a01b0381168114610b9e57600080fd5b600060208284031215613f8257600080fd5b8135611dff81613f5b565b8015158114610b9e57600080fd5b60008060408385031215613fae57600080fd5b8235613fb981613f5b565b91506020830135613fc981613f8d565b809150509250929050565b600060208284031215613fe657600080fd5b5035919050565b600060408284031215613fff57600080fd5b50919050565b60006040828403121561401757600080fd5b611dff8383613fed565b60008083601f84011261403357600080fd5b50813567ffffffffffffffff81111561404b57600080fd5b6020830191508360208260051b850101111561406657600080fd5b9250929050565b6000806020838503121561408057600080fd5b823567ffffffffffffffff81111561409757600080fd5b6140a385828601614021565b90969095509350505050565b8035600181106140be57600080fd5b919050565b803561ffff811681146140be57600080fd5b6000806000608084860312156140ea57600080fd5b6140f48585613fed565b9250614102604085016140af565b9150614110606085016140c3565b90509250925092565b60006101008284031215613fff57600080fd5b6000806040838503121561413f57600080fd5b823567ffffffffffffffff81111561415657600080fd5b61416285828601614119565b9250506020830135613fc981613f5b565b803563ffffffff811681146140be57600080fd5b6000806040838503121561419a57600080fd5b823591506141aa60208401614173565b90509250929050565b6000806000608084860312156141c857600080fd5b83356141d381613f5b565b92506141e28560208601613fed565b9150614110606085016140af565b60006020828403121561420257600080fd5b611dff82614173565b60006020828403121561421d57600080fd5b813560ff81168114611dff57600080fd5b60006020828403121561424057600080fd5b813567ffffffffffffffff81111561425757600080fd5b613cce84828501614119565b6000806040838503121561427657600080fd5b823561428181613f5b565b946020939093013593505050565b600080600080600060a086880312156142a757600080fd5b85356142b281613f5b565b945060208601356142c281613f5b565b93506142d060408701614173565b92506142de606087016140af565b949793965091946080013592915050565b6000806040838503121561430257600080fd5b823561430d81613f5b565b91506020830135613fc981613f5b565b60008060008060008060c0878903121561433657600080fd5b863561434181613f5b565b9550602087013561435181613f5b565b945060408701359350606087013561436881613f5b565b925061437660808801614173565b915061438460a088016140c3565b90509295509295509295565b6000602082840312156143a257600080fd5b611dff826140c3565b634e487b7160e01b600052601160045260246000fd5b6000828210156143d3576143d36143ab565b500390565b634e487b7160e01b600052603260045260246000fd5b6000816143fd576143fd6143ab565b506000190190565b60006020828403121561441757600080fd5b8151611dff81613f5b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561447e57600080fd5b8151611dff81613f8d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000823560de1983360301811261455557600080fd5b9190910192915050565b634e487b7160e01b600052602160045260246000fd5b6001811061459357634e487b7160e01b600052602160045260246000fd5b9052565b6000808335601e198436030181126145ae57600080fd5b830160208101925035905067ffffffffffffffff8111156145ce57600080fd5b8060061b360383131561406657600080fd5b818352600060208085019450826000805b8681101561464557823561460481613f5b565b6001600160a01b03168852828401356bffffffffffffffffffffffff811680821461462d578384fd5b898601525060409788019792909201916001016145f1565b50959695505050505050565b6146638261465e836140af565b614575565b600061467160208301614173565b63ffffffff808216602086015261468b6040850185614597565b925060e060408701526146a260e0870184836145e0565b92505060608401356146b381613f5b565b6001600160a01b0316606086015260808481013590860152806146d860a08601614173565b1660a0860152806146eb60c08601614173565b1660c0860152508091505092915050565b60018060a01b03841681528260208201526060604082015260006147236060830184614651565b95945050505050565b6000808335601e1984360301811261474357600080fd5b83018035915067ffffffffffffffff82111561475e57600080fd5b6020019150600681901b360382131561406657600080fd5b60008219821115614789576147896143ab565b500190565b602081526000611dff6020830184614651565b60008235609e1983360301811261455557600080fd5b60006147c38283614597565b60a085526147d560a0860182846145e0565b91505060208301356147e681613f5b565b6001600160a01b031660208501526040838101359085015261480a60608401614173565b63ffffffff80821660608701528061482460808701614173565b16608087015250508091505092915050565b60018060a01b038416815282602082015260606040820152600061472360608301846147b7565b602081526000611dff60208301846147b7565b6000823561487d81613f5b565b6001600160a01b0316825263ffffffff61489960208501614173565b16602083015250604001919050565b606081016148b68286614575565b61ffff8416602083015263ffffffff83166040830152949350505050565b6000808335601e198436030181126148eb57600080fd5b83018035915067ffffffffffffffff82111561490657600080fd5b6020019150600581901b360382131561406657600080fd5b6000600019821415614932576149326143ab565b5060010190565b60208082526034908201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6040820152733a103a3432903932bbb0b93239aab83230ba32b960611b606082015260800190565b600063ffffffff8083168185168083038211156149ac576149ac6143ab565b01949350505050565b600063ffffffff838116908316818110156149d2576149d26143ab565b039392505050565b600063ffffffff8216806149f0576149f06143ab565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff80841680614a2757614a276149fa565b92169190910692915050565b6000808335601e19843603018112614a4a57600080fd5b83018035915067ffffffffffffffff821115614a6557600080fd5b60200191503681900382131561406657600080fd5b600082614a8957614a896149fa565b500490565b60005b83811015614aa9578181015183820152602001614a91565b838111156133165750506000910152565b60008251614555818460208701614a8e565b600082614adb57614adb6149fa565b500690565b6020815260008251806020840152614aff816040850160208701614a8e565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2052657761726473436f6f7264696e61746f722e5f76616c696461746552657761a26469706673582212204047dcb7a569e168411c0a9473fad0f726f1bfb3712ad0226c47b7a8e770dbe564736f6c634300080c0033", + Bin: "0x6101e06040523480156200001257600080fd5b506040516200511f3803806200511f8339810160408190526200003591620003c0565b898989898989898989896200004b878462000497565b63ffffffff1615620000f05760405162461bcd60e51b815260206004820152606060248201527f52657761726473436f6f7264696e61746f723a2047454e455349535f5245574160448201527f5244535f54494d455354414d50206d7573742062652061206d756c7469706c6560648201527f206f662043414c43554c4154494f4e5f494e54455256414c5f5345434f4e4453608482015260a4015b60405180910390fd5b620000ff620151808862000497565b63ffffffff1615620001a05760405162461bcd60e51b815260206004820152605760248201527f52657761726473436f6f7264696e61746f723a2043414c43554c4154494f4e5f60448201527f494e54455256414c5f5345434f4e4453206d7573742062652061206d756c746960648201527f706c65206f6620534e415053484f545f434144454e4345000000000000000000608482015260a401620000e7565b620001ac878362000497565b63ffffffff1615620002635760405162461bcd60e51b815260206004820152606d60248201527f52657761726473436f6f7264696e61746f723a204f50455241544f525f53455460448201527f5f47454e455349535f524557415244535f54494d455354414d50206d7573742060648201527f62652061206d756c7469706c65206f662043414c43554c4154494f4e5f494e5460848201526c455256414c5f5345434f4e445360981b60a482015260c401620000e7565b6001600160a01b03998a166101605297891661018052959097166101a05263ffffffff93841660805291831660a052821661010052811660c05292831660e0528216610120521661014052620002b8620002ce565b5050466101c05250620004c99650505050505050565b600054610100900460ff1615620003385760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401620000e7565b60005460ff90811610156200038b576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620003a357600080fd5b50565b805163ffffffff81168114620003bb57600080fd5b919050565b6000806000806000806000806000806101408b8d031215620003e157600080fd5b8a51620003ee816200038d565b60208c0151909a5062000401816200038d565b60408c015190995062000414816200038d565b97506200042460608c01620003a6565b96506200043460808c01620003a6565b95506200044460a08c01620003a6565b94506200045460c08c01620003a6565b93506200046460e08c01620003a6565b9250620004756101008c01620003a6565b9150620004866101208c01620003a6565b90509295989b9194979a5092959850565b600063ffffffff80841680620004bd57634e487b7160e01b600052601260045260246000fd5b92169190910692915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c051614b896200059660003960006124e80152600081816106970152610e1c01526000818161059d01526130d9015260006108e801526000818161053c0152610f930152600081816108750152610fb4015260008181610576015261124701526000818161048d01526112680152600081816103b90152612fd601526000818161080d0152612cda0152600081816107b301528181612d8a0152612e540152614b896000f3fe608060405234801561001057600080fd5b50600436106103775760003560e01c8063715018a6116101d3578063c46db60611610104578063f2fde38b116100a2578063f96abf2e1161007c578063f96abf2e14610938578063fabc1cbc1461094b578063fbf1e2c11461095e578063fce36c7d1461097157600080fd5b8063f2fde38b1461090a578063f698da251461091d578063f8cd84481461092557600080fd5b8063de02e503116100de578063de02e503146108aa578063e221b245146108bd578063e810ce21146108d0578063ea4d3c9b146108e357600080fd5b8063c46db60614610842578063d11e9ae514610870578063d4540a551461089757600080fd5b80639104c31911610171578063a0169ddd1161014b578063a0169ddd146107d5578063bb7e451f146107e8578063bf21a8aa14610808578063c336f19d1461082f57600080fd5b80639104c3191461078b5780639be3d4e4146107a65780639d45c281146107ae57600080fd5b8063863cb9a9116101ad578063863cb9a914610729578063865c69531461073c578063886f1195146107675780638da5cb5b1461077a57600080fd5b8063715018a6146106e75780637adace91146106ef5780637b8f8b051461072157600080fd5b806339b70e38116102ad57806358baaa3e1161024b5780635c975abb116102255780635c975abb146106775780635e9d83481461067f5780636b3aa72e146106925780636d21117e146106b957600080fd5b806358baaa3e14610639578063595c6a671461064c5780635ac86ab71461065457600080fd5b80633ccc861d116102875780633ccc861d146105e95780633efe1db6146105fc5780634d18cc351461060f5780634d7a80d41461062657600080fd5b806339b70e38146105985780633a8c0786146105bf5780633c8fcf7c146105d657600080fd5b8063136439dd1161031a5780632c9c60cf116102f45780632c9c60cf146105245780633486e32e1461053757806336af41fa1461055e57806337838ed01461057157600080fd5b8063136439dd146104af578063149bc872146104c25780632b9f64a4146104e357600080fd5b80630e9a53cf116103565780630e9a53cf146104185780630eb383451461046057806310d67a2f14610475578063131433b41461048857600080fd5b806218572c1461037c57806304a0c502146103b4578063092db007146103f0575b600080fd5b61039f61038a366004613f70565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103ab565b60cb5461040590600160e01b900461ffff1681565b60405161ffff90911681526020016103ab565b610420610984565b604080518251815260208084015163ffffffff908116918301919091528383015116918101919091526060918201511515918101919091526080016103ab565b61047361046e366004613f9b565b610a63565b005b610473610483366004613f70565b610ae5565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6104736104bd366004613fd4565b610ba1565b6104d56104d0366004614005565b610ce0565b6040519081526020016103ab565b61050c6104f1366004613f70565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103ab565b61047361053236600461406d565b610d56565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b61047361056c36600461406d565b61109e565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b61050c7f000000000000000000000000000000000000000000000000000000000000000081565b60cb546103db90600160a01b900463ffffffff1681565b6103db6105e43660046140d5565b611336565b6104736105f736600461412c565b6115c4565b61047361060a366004614187565b611986565b60cb546103db90600160c01b900463ffffffff1681565b6104056106343660046141b3565b611c57565b6104736106473660046141f0565b611e06565b610473611e17565b61039f61066236600461420b565b606654600160ff9092169190911b9081161490565b6066546104d5565b61039f61068d36600461422e565b611ede565b61050c7f000000000000000000000000000000000000000000000000000000000000000081565b61039f6106c7366004614263565b60cf60209081526000928352604080842090915290825290205460ff1681565b610473611f6b565b6107026106fd36600461428f565b611f7f565b6040805161ffff909316835263ffffffff9091166020830152016103ab565b60ca546104d5565b610473610737366004613f70565b611fe7565b6104d561074a3660046142ef565b60cd60209081526000928352604080842090915290825290205481565b60655461050c906001600160a01b031681565b6033546001600160a01b031661050c565b61050c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610420611ff8565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6104736107e3366004613f70565b612096565b6104d56107f6366004613f70565b60ce6020526000908152604090205481565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6104d561083d3660046141b3565b6120f5565b61039f610850366004614263565b60d060209081526000928352604080842090915290825290205460ff1681565b6103db7f000000000000000000000000000000000000000000000000000000000000000081565b6104736108a536600461431d565b6121a8565b6104206108b8366004613fd4565b6122f0565b6104736108cb366004614390565b612382565b6103db6108de366004613fd4565b612393565b61050c7f000000000000000000000000000000000000000000000000000000000000000081565b610473610918366004613f70565b61246e565b6104d56124e4565b6104d5610933366004614005565b612522565b6104736109463660046141f0565b612533565b610473610959366004613fd4565b612769565b60cb5461050c906001600160a01b031681565b61047361097f36600461406d565b6128c5565b60408051608081018252600080825260208201819052918101829052606081019190915260ca545b8015610a5f57600060ca6109c16001846143c1565b815481106109d1576109d16143d8565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610a415750806040015163ffffffff164210155b15610a4c5792915050565b5080610a57816143ee565b9150506109ac565b5090565b610a6b612a42565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5c9190614405565b6001600160a01b0316336001600160a01b031614610b955760405162461bcd60e51b8152600401610b8c90614422565b60405180910390fd5b610b9e81612a9c565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0d919061446c565b610c295760405162461bcd60e51b8152600401610b8c90614489565b60665481811614610ca25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b8c565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610cf06020840184613f70565b8360200135604051602001610d399392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60665460049060109081161415610d7f5760405162461bcd60e51b8152600401610b8c906144d1565b60026097541415610da25760405162461bcd60e51b8152600401610b8c90614508565b600260975560005b828110156110935736848483818110610dc557610dc56143d8565b9050602002810190610dd7919061453f565b33600081815260ce60209081526040808320549051949550939192610e0292909185918791016146fc565b6040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166384d76f7b33856020016020810190610e5d91906141f0565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015263ffffffff166024820152604401602060405180830381865afa158015610eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed0919061446c565b610f4c5760405162461bcd60e51b815260206004820152604160248201527f52657761726473436f6f7264696e61746f722e7265776172644f70657261746f60448201527f72536574466f7252616e67653a20696e76616c6964206f70657261746f7253656064820152601d60fa1b608482015260a401610b8c565b610fd8610f5c604085018561472c565b610f6c6080870160608801613f70565b6080870135610f8160c0890160a08a016141f0565b610f9160e08a0160c08b016141f0565b7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612b93565b33600090815260cf602090815260408083208484529091529020805460ff1916600190811790915561100b908390614776565b33600081815260ce602052604090819020929092559051829184917f29a8ee4f31259a5f344a2cca256440ea6638a3278972b1ee9a7aab99b00aa3b29061105390889061478e565b60405180910390a46110853330608086018035906110749060608901613f70565b6001600160a01b03169291906132ab565b836001019350505050610daa565b505060016097555050565b606654600190600290811614156110c75760405162461bcd60e51b8152600401610b8c906144d1565b33600090815260d1602052604090205460ff166111665760405162461bcd60e51b815260206004820152605160248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260648201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608482015260a401610b8c565b600260975414156111895760405162461bcd60e51b8152600401610b8c90614508565b600260975560005b8281101561109357368484838181106111ac576111ac6143d8565b90506020028101906111be91906147a1565b33600081815260ce602090815260408083205490519495509391926111e99290918591879101614836565b60408051601f198184030181529190528051602090910120905061128c611210848061472c565b6112206040870160208801613f70565b60408701356112356080890160608a016141f0565b61124560a08a0160808b016141f0565b7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612b93565b33600090815260d0602090815260408083208484529091529020805460ff191660019081179091556112bf908390614776565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061130790889061485d565b60405180910390a46113283330604086018035906110749060208901613f70565b836001019350505050611191565b600061271061ffff831611156113c25760405162461bcd60e51b815260206004820152604560248201527f52657761726473436f6f7264696e61746f722e7365744f70657261746f72436f60448201527f6d6d697373696f6e426970733a20636f6d6d697373696f6e4269707320746f6f606482015264040d0d2ced60db1b608482015260a401610b8c565b6113cf62093a8042614776565b33600090815260d360209081526040822092935090919082906113f490880188613f70565b6001600160a01b03166001600160a01b03168152602001908152602001600020600086602001602081019061142991906141f0565b63ffffffff1663ffffffff16815260200190815260200160002060008560008111156114575761145761455f565b80156114655761146561455f565b8152602081019190915260400160002080549091508015806114c0575063ffffffff8316826114956001846143c1565b815481106114a5576114a56143d8565b60009182526020909120015462010000900463ffffffff1614155b15611523576040805180820190915261ffff808616825263ffffffff808616602080850191825286546001810188556000888152919091209451940180549151909216620100000265ffffffffffff199091169390921692909217179055611560565b83826115306001846143c1565b81548110611540576115406143d8565b6000918252602090912001805461ffff191661ffff929092169190911790555b8560405161156e9190614870565b6040518091039020336001600160a01b03167f811b77cd39953efa46bbcbf8afd10756fac937e63667afdd6bab4dd69c788dba8787876040516115b3939291906148a8565b60405180910390a350509392505050565b606654600290600490811614156115ed5760405162461bcd60e51b8152600401610b8c906144d1565b600260975414156116105760405162461bcd60e51b8152600401610b8c90614508565b6002609755600060ca61162660208601866141f0565b63ffffffff168154811061163c5761163c6143d8565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152905061169d848261331c565b60006116af6080860160608701613f70565b6001600160a01b03808216600090815260cc602052604090205491925016806116d55750805b336001600160a01b038216146117535760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d6572000000006064820152608401610b8c565b60005b61176360a08801886148d4565b9050811015611978573661177a60e089018961472c565b8381811061178a5761178a6143d8565b6001600160a01b038716600090815260cd6020908152604080832093029490940194509290915082906117bf90850185613f70565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050808260200135116118795760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a401610b8c565b60006118898260208501356143c1565b6001600160a01b038716600090815260cd602090815260408220929350850180359291906118b79087613f70565b6001600160a01b03168152602080820192909252604001600020919091556118f9908a9083906118e990870187613f70565b6001600160a01b031691906135ed565b86516001600160a01b03808b1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061193d6020890189613f70565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050806119719061491e565b9050611756565b505060016097555050505050565b606654600390600890811614156119af5760405162461bcd60e51b8152600401610b8c906144d1565b60cb546001600160a01b031633146119d95760405162461bcd60e51b8152600401610b8c90614939565b60cb5463ffffffff600160c01b909104811690831611611a755760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a401610b8c565b428263ffffffff1610611b0e5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a401610b8c565b60ca5460cb54600090611b2e90600160a01b900463ffffffff164261498d565b6040805160808101825287815263ffffffff878116602080840182815286841685870181815260006060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b60cb546001600160a01b038416600090815260d36020908152604082209192600160e01b900461ffff169183918290611c9290880188613f70565b6001600160a01b03166001600160a01b031681526020019081526020016000206000866020016020810190611cc791906141f0565b63ffffffff1663ffffffff1681526020019081526020016000206000856000811115611cf557611cf561455f565b8015611d0357611d0361455f565b8152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611d77576000848152602090819020604080518082019091529084015461ffff8116825262010000900463ffffffff1681830152825260019092019101611d31565b5050825192935050505b8015611df95763ffffffff421682611d9a6001846143c1565b81518110611daa57611daa6143d8565b60200260200101516020015163ffffffff1611611df05781611dcd6001836143c1565b81518110611ddd57611ddd6143d8565b6020026020010151600001519250611df9565b60001901611d81565b50909150505b9392505050565b611e0e612a42565b610b9e8161361d565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e83919061446c565b611e9f5760405162461bcd60e51b8152600401610b8c90614489565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000611f638260ca611ef360208301836141f0565b63ffffffff1681548110611f0957611f096143d8565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015261331c565b506001919050565b611f73612a42565b611f7d600061368e565b565b60d36020528460005260406000206020528360005260406000206020528260005260406000206020528160005260406000208181548110611fbf57600080fd5b60009182526020909120015461ffff8116955062010000900463ffffffff1693508592505050565b611fef612a42565b610b9e816136e0565b60408051608081018252600080825260208201819052918101829052606081019190915260ca805461202c906001906143c1565b8154811061203c5761203c6143d8565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b6001600160a01b038316600090815260d360209081526040822090829061211e90860186613f70565b6001600160a01b03166001600160a01b03168152602001908152602001600020600084602001602081019061215391906141f0565b63ffffffff1663ffffffff16815260200190815260200160002060008360008111156121815761218161455f565b801561218f5761218f61455f565b8152602081019190915260400160002054949350505050565b600054610100900460ff16158080156121c85750600054600160ff909116105b806121e25750303b1580156121e2575060005460ff166001145b6122455760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b8c565b6000805460ff191660011790558015612268576000805461ff0019166101001790555b61227061373c565b60c95561227d86866137d3565b6122868761368e565b61228f846136e0565b6122988361361d565b6122a1826138bd565b80156122e7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260ca8281548110612327576123276143d8565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b61238a612a42565b610b9e816138bd565b60ca546000905b63ffffffff8116156123ff578260ca6123b46001846149b5565b63ffffffff16815481106123ca576123ca6143d8565b90600052602060002090600202016000015414156123ed57611dff6001826149b5565b806123f7816149da565b91505061239a565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e640000000000000000006064820152608401610b8c565b612476612a42565b6001600160a01b0381166124db5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b8c565b610b9e8161368e565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612515575060c95490565b61251d61373c565b905090565b60006001610cf06020840184613f70565b6066546003906008908116141561255c5760405162461bcd60e51b8152600401610b8c906144d1565b60cb546001600160a01b031633146125865760405162461bcd60e51b8152600401610b8c90614939565b60ca5463ffffffff8316106125f75760405162461bcd60e51b815260206004820152603160248201527f52657761726473436f6f7264696e61746f722e64697361626c65526f6f743a206044820152700d2dcecc2d8d2c840e4dedee892dcc8caf607b1b6064820152608401610b8c565b600060ca8363ffffffff1681548110612612576126126143d8565b906000526020600020906002020190508060010160089054906101000a900460ff161561269f5760405162461bcd60e51b815260206004820152603560248201527f52657761726473436f6f7264696e61746f722e64697361626c65526f6f743a206044820152741c9bdbdd08185b1c9958591e48191a5cd8589b1959605a1b6064820152608401610b8c565b6001810154600160201b900463ffffffff16421061271e5760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e64697361626c65526f6f743a206044820152751c9bdbdd08185b1c9958591e481858dd1a5d985d195960521b6064820152608401610b8c565b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e90600090a2505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e09190614405565b6001600160a01b0316336001600160a01b0316146128105760405162461bcd60e51b8152600401610b8c90614422565b60665419811960665419161461288e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b8c565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610cd5565b606654600090600190811614156128ee5760405162461bcd60e51b8152600401610b8c906144d1565b600260975414156129115760405162461bcd60e51b8152600401610b8c90614508565b600260975560005b828110156110935736848483818110612934576129346143d8565b905060200281019061294691906147a1565b33600081815260ce602090815260408083205490519495509391926129719290918591879101614836565b60408051601f1981840301815291905280516020909101209050612998611210848061472c565b33600090815260cf602090815260408083208484529091529020805460ff191660019081179091556129cb908390614776565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190612a1390889061485d565b60405180910390a4612a343330604086018035906110749060208901613f70565b836001019350505050612919565b6033546001600160a01b03163314611f7d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b8c565b6001600160a01b038116612b2a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b8c565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b86612bf6576040805162461bcd60e51b8152602060048201526024810191909152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a206e6f2073747261746567696573207365746064820152608401610b8c565b60008511612c645760405162461bcd60e51b81526020600482015260416024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a401610b8c565b6f4b3b4ca85a86c47a098a223fffffffff851115612cd85760405162461bcd60e51b815260206004820152603f6024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c61726765006064820152608401610b8c565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168363ffffffff161115612d855760405162461bcd60e51b81526020600482015260546024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e20657863656564732060648201527326a0ac2fa922aba0a92229afa22aa920aa24a7a760611b608482015260a401610b8c565b612daf7f000000000000000000000000000000000000000000000000000000000000000084614a10565b63ffffffff1615612e4f5760405162461bcd60e51b815260206004820152606a6024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e206d7573742062652060648201527f61206d756c7469706c65206f662043414c43554c4154494f4e5f494e54455256608482015269414c5f5345434f4e445360b01b60a482015260c401610b8c565b612e797f000000000000000000000000000000000000000000000000000000000000000085614a10565b63ffffffff1615612f1f5760405162461bcd60e51b81526020600482015260706024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d70206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c401610b8c565b8363ffffffff168263ffffffff1642612f3891906143c1565b11158015612f5257508363ffffffff168163ffffffff1611155b612fcc5760405162461bcd60e51b81526020600482015260516024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152701bc819985c881a5b881d1a19481c185cdd607a1b608482015260a401610b8c565b612ffc63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614776565b8463ffffffff1611156130815760405162461bcd60e51b81526020600482015260536024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a401610b8c565b6000805b8881101561329f5760008a8a838181106130a1576130a16143d8565b6130b79260206040909202019081019150613f70565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa158015613122573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613146919061446c565b8061316d57506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b6131e05760405162461bcd60e51b815260206004820152604a6024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a20696e76616c69642073747261746567792060648201526918dbdb9cda59195c995960b21b608482015260a401610b8c565b806001600160a01b0316836001600160a01b03161061328d5760405162461bcd60e51b81526020600482015260696024820152600080516020614b3483398151915260448201527f7264735375626d697373696f6e3a2073747261746567696573206d757374206260648201527f6520696e20617363656e64696e67206f7264657220746f2068616e646c65206460848201526875706c69636174657360b81b60a482015260c401610b8c565b91506132988161491e565b9050613085565b50505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526133169085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613928565b50505050565b8060600151156133755760405162461bcd60e51b81526020600482015260306024820152600080516020614b1483398151915260448201526f1c9bdbdd081a5cc8191a5cd8589b195960821b6064820152608401610b8c565b806040015163ffffffff164210156133dc5760405162461bcd60e51b81526020600482015260366024820152600080516020614b148339815191526044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b6064820152608401610b8c565b6133e960c08301836148d4565b90506133f860a08401846148d4565b9050146134705760405162461bcd60e51b815260206004820152604c6024820152600080516020614b1483398151915260448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a401610b8c565b61347d60e083018361472c565b905061348c60c08401846148d4565b9050146135025760405162461bcd60e51b815260206004820152604a6024820152600080516020614b1483398151915260448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610b8c565b805161352e9061351860408501602086016141f0565b6135256040860186614a33565b866060016139fa565b60005b61353e60a08401846148d4565b90508110156135e8576135d8608084013561355c60a08601866148d4565b8481811061356c5761356c6143d8565b905060200201602081019061358191906141f0565b61358e60c08701876148d4565b8581811061359e5761359e6143d8565b90506020028101906135b09190614a33565b6135bd60e089018961472c565b878181106135cd576135cd6143d8565b905060400201613b6e565b6135e18161491e565b9050613531565b505050565b6040516001600160a01b0383166024820152604481018290526135e890849063a9059cbb60e01b906064016132df565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b03161580156137f457506001600160a01b03821615155b6138765760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b8c565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26138b982612a9c565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b600061397d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613cbf9092919063ffffffff16565b8051909150156135e8578080602001905181019061399b919061446c565b6135e85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b8c565b613a05602083614a7a565b6001901b8463ffffffff1610613a8f5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a401610b8c565b6000613a9a82610ce0565b9050613ae584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916613cd6565b613b665760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a401610b8c565b505050505050565b613b79602083614a7a565b6001901b8463ffffffff1610613bf75760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e646578000000006064820152608401610b8c565b6000613c0282612522565b9050613c4d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916613cd6565b613b665760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f66006064820152608401610b8c565b6060613cce8484600085613cee565b949350505050565b600083613ce4868585613e1f565b1495945050505050565b606082471015613d4f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b8c565b6001600160a01b0385163b613da65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b8c565b600080866001600160a01b03168587604051613dc29190614aba565b60006040518083038185875af1925050503d8060008114613dff576040519150601f19603f3d011682016040523d82523d6000602084013e613e04565b606091505b5091509150613e14828286613f22565b979650505050505050565b600060208451613e2f9190614acc565b15613eb65760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a401610b8c565b8260205b85518111613f1957613ecd600285614acc565b613eee57816000528086015160205260406000209150600284049350613f07565b8086015160005281602052604060002091506002840493505b613f12602082614776565b9050613eba565b50949350505050565b60608315613f31575081611dff565b825115613f415782518084602001fd5b8160405162461bcd60e51b8152600401610b8c9190614ae0565b6001600160a01b0381168114610b9e57600080fd5b600060208284031215613f8257600080fd5b8135611dff81613f5b565b8015158114610b9e57600080fd5b60008060408385031215613fae57600080fd5b8235613fb981613f5b565b91506020830135613fc981613f8d565b809150509250929050565b600060208284031215613fe657600080fd5b5035919050565b600060408284031215613fff57600080fd5b50919050565b60006040828403121561401757600080fd5b611dff8383613fed565b60008083601f84011261403357600080fd5b50813567ffffffffffffffff81111561404b57600080fd5b6020830191508360208260051b850101111561406657600080fd5b9250929050565b6000806020838503121561408057600080fd5b823567ffffffffffffffff81111561409757600080fd5b6140a385828601614021565b90969095509350505050565b8035600181106140be57600080fd5b919050565b803561ffff811681146140be57600080fd5b6000806000608084860312156140ea57600080fd5b6140f48585613fed565b9250614102604085016140af565b9150614110606085016140c3565b90509250925092565b60006101008284031215613fff57600080fd5b6000806040838503121561413f57600080fd5b823567ffffffffffffffff81111561415657600080fd5b61416285828601614119565b9250506020830135613fc981613f5b565b803563ffffffff811681146140be57600080fd5b6000806040838503121561419a57600080fd5b823591506141aa60208401614173565b90509250929050565b6000806000608084860312156141c857600080fd5b83356141d381613f5b565b92506141e28560208601613fed565b9150614110606085016140af565b60006020828403121561420257600080fd5b611dff82614173565b60006020828403121561421d57600080fd5b813560ff81168114611dff57600080fd5b60006020828403121561424057600080fd5b813567ffffffffffffffff81111561425757600080fd5b613cce84828501614119565b6000806040838503121561427657600080fd5b823561428181613f5b565b946020939093013593505050565b600080600080600060a086880312156142a757600080fd5b85356142b281613f5b565b945060208601356142c281613f5b565b93506142d060408701614173565b92506142de606087016140af565b949793965091946080013592915050565b6000806040838503121561430257600080fd5b823561430d81613f5b565b91506020830135613fc981613f5b565b60008060008060008060c0878903121561433657600080fd5b863561434181613f5b565b9550602087013561435181613f5b565b945060408701359350606087013561436881613f5b565b925061437660808801614173565b915061438460a088016140c3565b90509295509295509295565b6000602082840312156143a257600080fd5b611dff826140c3565b634e487b7160e01b600052601160045260246000fd5b6000828210156143d3576143d36143ab565b500390565b634e487b7160e01b600052603260045260246000fd5b6000816143fd576143fd6143ab565b506000190190565b60006020828403121561441757600080fd5b8151611dff81613f5b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561447e57600080fd5b8151611dff81613f8d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000823560de1983360301811261455557600080fd5b9190910192915050565b634e487b7160e01b600052602160045260246000fd5b6001811061459357634e487b7160e01b600052602160045260246000fd5b9052565b6000808335601e198436030181126145ae57600080fd5b830160208101925035905067ffffffffffffffff8111156145ce57600080fd5b8060061b360383131561406657600080fd5b818352600060208085019450826000805b8681101561464557823561460481613f5b565b6001600160a01b03168852828401356bffffffffffffffffffffffff811680821461462d578384fd5b898601525060409788019792909201916001016145f1565b50959695505050505050565b6146638261465e836140af565b614575565b600061467160208301614173565b63ffffffff808216602086015261468b6040850185614597565b925060e060408701526146a260e0870184836145e0565b92505060608401356146b381613f5b565b6001600160a01b0316606086015260808481013590860152806146d860a08601614173565b1660a0860152806146eb60c08601614173565b1660c0860152508091505092915050565b60018060a01b03841681528260208201526060604082015260006147236060830184614651565b95945050505050565b6000808335601e1984360301811261474357600080fd5b83018035915067ffffffffffffffff82111561475e57600080fd5b6020019150600681901b360382131561406657600080fd5b60008219821115614789576147896143ab565b500190565b602081526000611dff6020830184614651565b60008235609e1983360301811261455557600080fd5b60006147c38283614597565b60a085526147d560a0860182846145e0565b91505060208301356147e681613f5b565b6001600160a01b031660208501526040838101359085015261480a60608401614173565b63ffffffff80821660608701528061482460808701614173565b16608087015250508091505092915050565b60018060a01b038416815282602082015260606040820152600061472360608301846147b7565b602081526000611dff60208301846147b7565b6000823561487d81613f5b565b6001600160a01b0316825263ffffffff61489960208501614173565b16602083015250604001919050565b606081016148b68286614575565b61ffff8416602083015263ffffffff83166040830152949350505050565b6000808335601e198436030181126148eb57600080fd5b83018035915067ffffffffffffffff82111561490657600080fd5b6020019150600581901b360382131561406657600080fd5b6000600019821415614932576149326143ab565b5060010190565b60208082526034908201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6040820152733a103a3432903932bbb0b93239aab83230ba32b960611b606082015260800190565b600063ffffffff8083168185168083038211156149ac576149ac6143ab565b01949350505050565b600063ffffffff838116908316818110156149d2576149d26143ab565b039392505050565b600063ffffffff8216806149f0576149f06143ab565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff80841680614a2757614a276149fa565b92169190910692915050565b6000808335601e19843603018112614a4a57600080fd5b83018035915067ffffffffffffffff821115614a6557600080fd5b60200191503681900382131561406657600080fd5b600082614a8957614a896149fa565b500490565b60005b83811015614aa9578181015183820152602001614a91565b838111156133165750506000910152565b60008251614555818460208701614a8e565b600082614adb57614adb6149fa565b500690565b6020815260008251806020840152614aff816040850160208701614a8e565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2052657761726473436f6f7264696e61746f722e5f76616c696461746552657761a264697066735822122010892b05a833a0e115ced50038fba8193fec81d477271f5b0697dba3d14b61b964736f6c634300080c0033", } // RewardsCoordinatorABI is the input ABI used to generate the binding from.