0 txs
0 calls
constructor
constructor(address eigenPodManager, address eigenDelegationManager, address avsDirectory)
functions
authority
viewfunction authority() view returns (address)
AVS_DIRECTORY
viewfunction AVS_DIRECTORY() view returns (address)
bitmapToChainIDs
viewfunction bitmapToChainIDs(uint256 bitmap) view returns (uint256[])
EIGEN_DELEGATION_MANAGER
viewfunction EIGEN_DELEGATION_MANAGER() view returns (address)
EIGEN_POD_MANAGER
viewfunction EIGEN_POD_MANAGER() view returns (address)
getBitmapIndex
viewfunction getBitmapIndex(uint256 chainID) view returns (uint8)
getChainID
viewfunction getChainID(uint8 index) view returns (uint256)
getDeregistrationDelay
viewfunction getDeregistrationDelay() view returns (uint64)
getOperator
viewfunction getOperator(address operator) view returns (tuple)
getValidator
viewfunction getValidator(bytes32 blsPubKeyHash) view returns (tuple)
getValidator
viewfunction getValidator(uint256 validatorIndex) view returns (tuple)
getValidators
viewfunction getValidators(bytes32[] blsPubKeyHashes) view returns (tuple[])
isConsumingScheduledOp
viewfunction isConsumingScheduledOp() view returns (bytes4)
isValidatorInChainId
viewfunction isValidatorInChainId(bytes32 blsPubKeyHash, uint256 chainId) view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
deregisterValidators
nonpayablefunction deregisterValidators(bytes32[] blsPubKeyHashes)
finishDeregisterOperator
nonpayablefunction finishDeregisterOperator()
initialize
nonpayablefunction initialize(address accessManager, uint64 initialDeregistrationDelay)
registerOperator
nonpayablefunction registerOperator(tuple operatorSignature)
registerOperatorWithCommitment
nonpayablefunction registerOperatorWithCommitment(tuple operatorSignature, tuple initialCommitment)
registerValidators
nonpayablefunction registerValidators(address podOwner, bytes32[] blsPubKeyHashes)
setAuthority
nonpayablefunction setAuthority(address newAuthority)
setChainID
nonpayablefunction setChainID(uint8 index, uint256 chainID)
setDeregistrationDelay
nonpayablefunction setDeregistrationDelay(uint64 newDelay)
setOperatorCommitment
nonpayablefunction setOperatorCommitment(tuple newCommitment)
startDeregisterOperator
nonpayablefunction startDeregisterOperator()
updateOperatorCommitment
nonpayablefunction updateOperatorCommitment()
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AuthorityUpdated
event AuthorityUpdated(address authority)
ChainIDSet
event ChainIDSet(uint8 index, uint256 chainID)
DeregistrationDelaySet
event DeregistrationDelaySet(uint64 oldDelay, uint64 newDelay)
Initialized
event Initialized(uint64 version)
OperatorCommitmentChangeInitiated
event OperatorCommitmentChangeInitiated(address indexed operator, (bytes delegateKey, uint256 chainIDBitMap) oldCommitment, (bytes delegateKey, uint256 chainIDBitMap) newCommitment, uint128 validAfter)
OperatorCommitmentSet
event OperatorCommitmentSet(address indexed operator, (bytes delegateKey, uint256 chainIDBitMap) oldCommitment, (bytes delegateKey, uint256 chainIDBitMap) newCommitment)
OperatorDeregistered
event OperatorDeregistered(address indexed operator)
OperatorDeregisterStarted
event OperatorDeregisterStarted(address indexed operator)
OperatorRegistered
event OperatorRegistered(address indexed operator)
OperatorRegisteredWithCommitment
event OperatorRegisteredWithCommitment(address indexed operator, (bytes delegateKey, uint256 chainIDBitMap) commitment)
Upgraded
event Upgraded(address indexed implementation)
ValidatorDeregistered
event ValidatorDeregistered(address indexed operator, bytes32 blsPubKeyHash)
ValidatorRegistered
event ValidatorRegistered(address indexed podOwner, address indexed operator, bytes delegateKey, bytes32 blsPubKeyHash, uint256 validatorIndex)
errors
AccessManagedInvalidAuthority
error AccessManagedInvalidAuthority(address authority)
AccessManagedRequiredDelay
error AccessManagedRequiredDelay(address caller, uint32 delay)
AccessManagedUnauthorized
error AccessManagedUnauthorized(address caller)
AddressEmptyCode
error AddressEmptyCode(address target)
CommitmentChangeNotReady
error CommitmentChangeNotReady()
DelegateKeyNotSet
error DelegateKeyNotSet()
DeregistrationAlreadyStarted
error DeregistrationAlreadyStarted()
DeregistrationDelayNotElapsed
error DeregistrationDelayNotElapsed()
DeregistrationNotStarted
error DeregistrationNotStarted()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
IndexOutOfBounds
error IndexOutOfBounds()
InvalidInitialization
error InvalidInitialization()
NoEigenPod
error NoEigenPod()
NotDelegatedToOperator
error NotDelegatedToOperator()
NotInitializing
error NotInitializing()
NotOperator
error NotOperator()
NotValidatorOperator
error NotValidatorOperator()
OperatorAlreadyRegistered
error OperatorAlreadyRegistered()
OperatorHasValidators
error OperatorHasValidators()
OperatorNotRegistered
error OperatorNotRegistered()
Unauthorized
error Unauthorized()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
ValidatorAlreadyDeregistered
error ValidatorAlreadyDeregistered()
ValidatorAlreadyRegistered
error ValidatorAlreadyRegistered()
ValidatorNotActive
error ValidatorNotActive()
ValidatorNotFound
error ValidatorNotFound()
creation bytecode
0x61010060405230608052348015610014575f80fd5b50604051613bc3380380613bc383398101604081905261003391610122565b6001600160a01b0380841660a05282811660c052811660e05261005461005c565b50505061016c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100ac5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161461010b5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6001600160a01b038116811461010b575f80fd5b5f805f60608486031215610134575f80fd5b835161013f8161010e565b60208501519093506101508161010e565b60408501519092506101618161010e565b809150509250925092565b60805160a05160c05160e0516139bb6102085f395f81816105070152818161096601528181610dcc015281816110990152818161115f015281816116b001528181611bf301528181611d5701526122eb01525f818161064a015281816114a3015281816115f7015261258101525f81816101cf01528181611550015261184701525f8181611fd401528181611ffd015261214401526139bb5ff3fe6080604052600436106101ba575f3560e01c80638495feab116100f2578063b5d8962711610092578063d4d7358911610062578063d4d73589146105e7578063d5f20ff614610606578063e367216314610625578063f2251b0f14610639575f80fd5b8063b5d8962714610529578063bf7e214f14610555578063c5a444cd14610569578063c8fee66914610588575f80fd5b80638fb36037116100cd5780638fb360371461046057806396c0fa5f1461048d578063ad3cb1cc146104b9578063ad656c56146104f6575f80fd5b80638495feab146103dc57806384a3f19b14610422578063858b539d14610441575f80fd5b806352d1902d1161015d5780636a01b2c9116101385780636a01b2c914610353578063786ffbc2146103725780637a9e5e4b1461039e5780638317781d146103bd575f80fd5b806352d1902d146102e45780635865c60c146102f8578063619b908014610324575f80fd5b8063389517e411610198578063389517e41461024e578063435ee6b0146102625780634d9739bf146102bd5780634f1ef286146102d1575f80fd5b80630a732358146101be5780631798de811461020e57806329d6786d1461022f575b5f80fd5b3480156101c9575f80fd5b506101f17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610219575f80fd5b5061022d610228366004612bf5565b61066c565b005b34801561023a575f80fd5b5061022d610249366004612c73565b610782565b348015610259575f80fd5b5061022d61093f565b34801561026d575f80fd5b506102af61027c366004612cc6565b60ff165f9081527ffee41a6d2b86b757dd00cd2166d8727686a349977cbc2b6b6a2ca1c3e7215004602052604090205490565b604051908152602001610205565b3480156102c8575f80fd5b5061022d610ae6565b61022d6102df366004612d7c565b610c9b565b3480156102ef575f80fd5b506102af610cba565b348015610303575f80fd5b50610317610312366004612dc8565b610cd5565b6040516102059190612e39565b34801561032f575f80fd5b5061034361033e366004612ec3565b610cec565b6040519015158152602001610205565b34801561035e575f80fd5b5061022d61036d366004612f50565b610da5565b34801561037d575f80fd5b5061039161038c366004612c73565b610f43565b604051610205919061304f565b3480156103a9575f80fd5b5061022d6103b8366004612dc8565b610ff2565b3480156103c8575f80fd5b5061022d6103d7366004613129565b611079565b3480156103e7575f80fd5b507ffee41a6d2b86b757dd00cd2166d8727686a349977cbc2b6b6a2ca1c3e7215003546040516001600160401b039091168152602001610205565b34801561042d575f80fd5b5061022d61043c36600461315a565b61112a565b34801561044c575f80fd5b5061022d61045b366004613175565b61113f565b34801561046b575f80fd5b50610474611245565b6040516001600160e01b03199091168152602001610205565b348015610498575f80fd5b506104ac6104a73660046131ce565b61127b565b60405161020591906131e5565b3480156104c4575f80fd5b506104e9604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102059190613227565b348015610501575f80fd5b506101f17f000000000000000000000000000000000000000000000000000000000000000081565b348015610534575f80fd5b506105486105433660046131ce565b61133c565b6040516102059190613239565b348015610560575f80fd5b506101f1611391565b348015610574575f80fd5b5061022d61058336600461324b565b6113ac565b348015610593575f80fd5b506105d56105a23660046131ce565b5f9081527ffee41a6d2b86b757dd00cd2166d8727686a349977cbc2b6b6a2ca1c3e7215005602052604090205460ff1690565b60405160ff9091168152602001610205565b3480156105f2575f80fd5b5061022d610601366004613273565b61148c565b348015610611575f80fd5b506105486106203660046131ce565b611bbb565b348015610630575f80fd5b5061022d611bcc565b348015610644575f80fd5b506101f17f000000000000000000000000000000000000000000000000000000000000000081565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156106b05750825b90505f826001600160401b031660011480156106cb5750303b155b9050811580156106d9575080155b156106f75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561072157845460ff60401b1916600160401b1785555b61072a87611e30565b61073386611e41565b831561077957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b61078e335b5f36611ecb565b7ffee41a6d2b86b757dd00cd2166d8727686a349977cbc2b6b6a2ca1c3e7215003545f805160206139668339815191529082906001600160401b03165f5b828110156108e7575f8686838181106107e7576107e76132c3565b602090810292909201355f8181529288905260409092206001810154929350916001600160a01b0316905033811461083257604051630856901f60e41b815260040160405180910390fd5b6001820154600160a01b90046001600160401b03908116146108675760405163195be16360e11b815260040160405180910390fd5b61087185436132eb565b8260010160146101000a8154816001600160401b0302191690836001600160401b03160217905550806001600160a01b03167f9100d6f32d745f208c0e70d0679e591d81509157db766dc5eb3d092ac047f067846040516108d491815260200190565b60405180910390a25050506001016107cc565b50335f908152600284016020526040812060040180548492906109149084906001600160801b031661330a565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050505050565b335f6040516349075da360e01b81523060048201526001600160a01b0383811660248301527f000000000000000000000000000000000000000000000000000000000000000016906349075da390604401602060405180830381865afa1580156109ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cf9190613329565b60018111156109e0576109e0612f81565b036109fe576040516325ec6c1f60e01b815260040160405180910390fd5b610a0733610787565b335f9081525f805160206139268339815191526020526040902060048101545f8051602061396683398151915291906001600160801b031615610a5d57604051630801412160e21b815260040160405180910390fd5b6004810154600160801b90046001600160401b031615610a9057604051630ebf7f5960e31b815260040160405180910390fd5b60048101805467ffffffffffffffff60801b1916600160801b436001600160401b03160217905560405133907f34e20e11f51d19d6e90f5aaea605cb369f34ad23805c51d2e77d05c8208c8585905f90a2505050565b610aef33610787565b335f9081525f805160206139268339815191526020526040902060048101545f805160206139668339815191529190600160c01b90046001600160401b03161580610b4d57506004810154600160c01b90046001600160401b031643105b15610b6b57604051636ba3a96b60e01b815260040160405180910390fd5b5f815f016040518060400160405290815f82018054610b8990613347565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb590613347565b8015610c005780601f10610bd757610100808354040283529160200191610c00565b820191905f5260205f20905b815481529060010190602001808311610be357829003601f168201915b5050509183525050600191909101546020909101529050600282018280610c2783826133ca565b50600191820154910155600282015f610c408282612add565b505f600191909101556004820180546001600160c01b0316905560405133907f7a8fb671d54b440e1e9cdf2a99020b77bdb1e7b8d217302483cfc00558be658890610c8e9084908690613534565b60405180910390a2505050565b610ca3611fc9565b610cac8261206f565b610cb68282612078565b5050565b5f610cc3612139565b505f8051602061394683398151915290565b610cdd612b14565b610ce682612182565b92915050565b5f8281525f805160206139668339815191526020819052604082208054600160a01b90046001600160401b03168303610d29575f92505050610ce6565b60018101546001600160a01b03165f908152600283016020526040812090610d5082612371565b5f87815260058601602052604081205491925060ff90911690819003610d7d575f95505050505050610ce6565b610d88600182613558565b60ff166001901b8260200151165f14159550505050505092915050565b335f6040516349075da360e01b81523060048201526001600160a01b0383811660248301527f000000000000000000000000000000000000000000000000000000000000000016906349075da390604401602060405180830381865afa158015610e11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e359190613329565b6001811115610e4657610e46612f81565b03610e64576040516325ec6c1f60e01b815260040160405180910390fd5b610e6d33610787565b335f9081525f805160206139268339815191526020526040902082515f805160206139668339815191529190849060028301908190610eac9082613571565b50602091909101516001909101556003820154610ed2906001600160401b0316436132eb565b6004820180546001600160c01b0316600160c01b6001600160401b039384168102919091179182905560405133937fbeb3e5f671ae7d66f24476749e90eea4117fd593dc77a9e8405f0199cd4dafd993610f359387938b93919092041690613623565b60405180910390a250505050565b60605f826001600160401b03811115610f5e57610f5e612cdf565b604051908082528060200260200182016040528015610f9757816020015b610f84612b73565b815260200190600190039081610f7c5790505b5090505f5b83811015610fea57610fc5858583818110610fb957610fb96132c3565b9050602002013561248d565b828281518110610fd757610fd76132c3565b6020908102919091010152600101610f9c565b509392505050565b33610ffb611391565b6001600160a01b0316816001600160a01b03161461103b5760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b5f03611070576040516361798f2f60e11b81526001600160a01b0383166004820152602401611032565b610cb68261274a565b61108233610787565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d906110d09033908590600401613661565b5f604051808303815f87803b1580156110e7575f80fd5b505af11580156110f9573d5f803e3d5ffd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e591505f90a250565b61113333610787565b61113c81611e41565b50565b61114833610787565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d906111969033908690600401613661565b5f604051808303815f87803b1580156111ad575f80fd5b505af11580156111bf573d5f803e3d5ffd5b505050505f6111d85f8051602061396683398151915290565b335f90815260028201602052604090208351919250908390829081906111fe9082613571565b5060208201518160010155905050336001600160a01b03167fc4dd9a1c9f9fdfb9b1ec214ecaa456e160eeb015e9a68f5d241f896158d2cab884604051610f3591906136ab565b5f8051602061390683398151915280545f9190600160a01b900460ff1661126c575f611275565b638fb3603760e01b5b91505090565b6040805161010080825261202082019092526060915f80516020613966833981519152915f9160208201612000803683370190505090505f805b60ff8160ff161015611332576112cc8160016136bd565b60ff166001901b86165f1461132a57600484015f6112eb8360016136bd565b60ff1660ff1681526020019081526020015f2054838381518110611311576113116132c3565b602090810291909101015281611326816136d6565b9250505b6001016112b5565b5081529392505050565b611344612b73565b5f8281527ffee41a6d2b86b757dd00cd2166d8727686a349977cbc2b6b6a2ca1c3e721500160205260409020545f80516020613966833981519152906113898161248d565b949350505050565b5f80516020613906833981519152546001600160a01b031690565b6113b533610787565b8160ff165f036113d857604051634e23d03560e01b815260040160405180910390fd5b60ff82165f8181527ffee41a6d2b86b757dd00cd2166d8727686a349977cbc2b6b6a2ca1c3e7215004602090815260408083208590558483527ffee41a6d2b86b757dd00cd2166d8727686a349977cbc2b6b6a2ca1c3e7215005825291829020805460ff191684179055815192835282018390525f80516020613966833981519152917f593f668a875f6d1f8fdcff32e09eba9648a341ac0bad6168933dd5ebd545513c91015b60405180910390a1505050565b6040516336b87bd760e11b815233600482015283907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636d70f7ae90602401602060405180830381865afa1580156114f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151491906136fd565b61153157604051631f0853c160e21b815260040160405180910390fd5b604051633da1234960e21b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f6848d2490602401602060405180830381865afa158015611595573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b991906136fd565b6115d657604051635dd90f1760e01b815260040160405180910390fd5b604051631976849960e21b81526001600160a01b03828116600483015233917f0000000000000000000000000000000000000000000000000000000000000000909116906365da126490602401602060405180830381865afa15801561163e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116629190613716565b6001600160a01b0316146116895760405163bb54d47b60e01b815260040160405180910390fd5b335f6040516349075da360e01b81523060048201526001600160a01b0383811660248301527f000000000000000000000000000000000000000000000000000000000000000016906349075da390604401602060405180830381865afa1580156116f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117199190613329565b600181111561172a5761172a612f81565b03611748576040516325ec6c1f60e01b815260040160405180910390fd5b61175133610787565b335f9081525f805160206139268339815191526020526040812080545f8051602061396683398151915292919061178790613347565b80601f01602080910402602001604051908101604052809291908181526020018280546117b390613347565b80156117fe5780601f106117d5576101008083540402835291602001916117fe565b820191905f5260205f20905b8154815290600101906020018083116117e157829003601f168201915b5050505050905080515f036118265760405163ddcd95ef60e01b815260040160405180910390fd5b60405163a38406a360e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a38406a390602401602060405180830381865afa15801561188e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118b29190613716565b9050855f5b81811015611b49575f8989838181106118d2576118d26132c3565b9050602002013590505f846001600160a01b0316636fcd0e53836040518263ffffffff1660e01b815260040161190a91815260200190565b608060405180830381865afa158015611925573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119499190613731565b905060018160600151600281111561196357611963612f81565b14611981576040516353670afb60e11b815260040160405180910390fd5b5f82815260208890526040902054600160a01b90046001600160401b0316156119bd5760405163132e7efb60e31b815260040160405180910390fd5b6040518060800160405280866001600160a01b03168152602001825f01516001600160401b03168152602001336001600160a01b031681526020016001600160401b038016815250875f015f8481526020019081526020015f205f820151815f015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506020820151815f0160146101000a8154816001600160401b0302191690836001600160401b031602179055506040820151816001015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160010160146101000a8154816001600160401b0302191690836001600160401b0316021790555090505081876001015f835f01516001600160401b031681526020019081526020015f2081905550336001600160a01b03168c6001600160a01b03167f28e80e6d7e989497bd036ed5c5484b9b46fe0d438a8ea0918e31d3cc59817f658885855f0151604051611b37939291906137b8565b60405180910390a350506001016118b7565b50335f908152600285016020526040812060048101805491928492611b789084906001600160801b03166137e9565b82546001600160801b039182166101009390930a928302919092021990911617905550600401805467ffffffffffffffff60801b19169055505050505050505050565b611bc3612b73565b610ce68261248d565b335f6040516349075da360e01b81523060048201526001600160a01b0383811660248301527f000000000000000000000000000000000000000000000000000000000000000016906349075da390604401602060405180830381865afa158015611c38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5c9190613329565b6001811115611c6d57611c6d612f81565b03611c8b576040516325ec6c1f60e01b815260040160405180910390fd5b611c9433610787565b335f9081525f805160206139268339815191526020526040812060048101545f8051602061396683398151915292600160801b9091046001600160401b03169003611cf25760405163a9e6e7eb60e01b815260040160405180910390fd5b60038201546004820154611d19916001600160401b0390811691600160801b9004166132eb565b6001600160401b0316431015611d425760405163207c116160e01b815260040160405180910390fd5b6040516351b27a6d60e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a364f4da906024015f604051808303815f87803b158015611da0575f80fd5b505af1158015611db2573d5f803e3d5ffd5b5050335f9081526002850160205260408120925090508181611dd48282612add565b505f6001919091018190556002830190611dee8282612add565b505f6001919091018190556004929092018290555060405133917f6dd4ca66565fb3dee8076c654634c6c4ad949022d809d0394308617d6791218d91a2505050565b611e386127aa565b61113c816127f3565b7ffee41a6d2b86b757dd00cd2166d8727686a349977cbc2b6b6a2ca1c3e721500380546001600160401b0383811667ffffffffffffffff1983168117909355604080519190921680825260208201939093525f8051602061396683398151915292917f7d9c9ce14fd1f11f09bf0faca4d408d3bb5815ceb44368d65b408ebc4401165c910161147f565b5f805160206139068339815191525f80611f03611ee6611391565b8730611ef560045f8a8c613808565b611efe9161382f565b612804565b9150915081611fc15763ffffffff811615611f9e57825460ff60a01b1916600160a01b178355611f31611391565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401611f6093929190613867565b5f604051808303815f87803b158015611f77575f80fd5b505af1158015611f89573d5f803e3d5ffd5b5050845460ff60a01b1916855550611fc19050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401611032565b505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061204f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166120435f80516020613946833981519152546001600160a01b031690565b6001600160a01b031614155b1561206d5760405163703e46dd60e11b815260040160405180910390fd5b565b61113c33610787565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156120d2575060408051601f3d908101601f191682019092526120cf918101906138a6565b60015b6120fa57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611032565b5f80516020613946833981519152811461212a57604051632a87526960e21b815260048101829052602401611032565b612134838361290c565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461206d5760405163703e46dd60e11b815260040160405180910390fd5b61218a612b14565b6001600160a01b0382165f9081525f80516020613926833981519152602052604081205f80516020613966833981519152916121c582612371565b90506040518060c00160405280828152602001836002016040518060400160405290815f820180546121f690613347565b80601f016020809104026020016040519081016040528092919081815260200182805461222290613347565b801561226d5780601f106122445761010080835404028352916020019161226d565b820191905f5260205f20905b81548152906001019060200180831161225057829003601f168201915b505050918352505060019182015460209182015291835260048601546001600160801b038116928401929092526001600160401b03600160801b830481166040850152600160c01b90920490911660608301526080909101906040516349075da360e01b81523060048201526001600160a01b0389811660248301527f000000000000000000000000000000000000000000000000000000000000000016906349075da390604401602060405180830381865afa158015612330573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123549190613329565b600181111561236557612365612f81565b14905295945050505050565b60408051808201909152606081525f60208201526004820154600160c01b90046001600160401b0316158015906123bc57506004820154600160c01b90046001600160401b03164310155b1561247057816002016040518060400160405290815f820180546123df90613347565b80601f016020809104026020016040519081016040528092919081815260200182805461240b90613347565b80156124565780601f1061242d57610100808354040283529160200191612456565b820191905f5260205f20905b81548152906001019060200180831161243957829003601f168201915b505050505081526020016001820154815250509050919050565b815f016040518060400160405290815f820180546123df90613347565b612495612b73565b5f8281525f805160206139668339815191526020818152604092839020835160808101855281546001600160a01b0380821683526001600160401b03600160a01b9283900481169584018690526001909401549081169683019690965290940416606084015290919015612743578051604051636fcd0e5360e01b8152600481018690525f906001600160a01b03831690636fcd0e5390602401608060405180830381865afa15801561254a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061256e9190613731565b90505f83604001516001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365da1264856001600160a01b0316630b18ff666040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061260e9190613716565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612650573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126749190613716565b6040808701516001600160a01b039081165f90815260028a016020529182209216929092149250906126a582612371565b905060405180610100016040528087604001516001600160a01b03168152602001875f01516001600160a01b03168152602001855f01516001600160401b031681526020018560600151600281111561270057612700612f81565b8152602001825f0151815260200182602001518152602001841515815260200187606001516001600160401b031643101515815250975050505050505050919050565b5050919050565b5f8051602061390683398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661206d57604051631afcd79f60e31b815260040160405180910390fd5b6127fb6127aa565b61113c8161274a565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161287291906138bd565b5f60405180830381855afa9150503d805f81146128aa576040519150601f19603f3d011682016040523d82523d5f602084013e6128af565b606091505b509150915081156129015760408151106128e157808060200190518101906128d791906138d3565b9094509250612901565b602081511061290157808060200190518101906128fe91906136fd565b93505b505094509492505050565b61291582612961565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156129595761213482826129c4565b610cb6612a36565b806001600160a01b03163b5f0361299657604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611032565b5f8051602061394683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516129e091906138bd565b5f60405180830381855af49150503d805f8114612a18576040519150601f19603f3d011682016040523d82523d5f602084013e612a1d565b606091505b5091509150612a2d858383612a55565b95945050505050565b341561206d5760405163b398979f60e01b815260040160405180910390fd5b606082612a6a57612a6582612ab4565b612aad565b8151158015612a8157506001600160a01b0384163b155b15612aaa57604051639996b31560e01b81526001600160a01b0385166004820152602401611032565b50805b9392505050565b805115612ac45780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054612ae990613347565b5f825580601f10612af8575050565b601f0160209004905f5260205f209081019061113c9190612bb5565b604080516101008101909152606060c082019081525f60e083015281908152602001612b526040518060400160405280606081526020015f81525090565b81525f60208201819052604082018190526060820181905260809091015290565b60408051610100810182525f808252602082018190529181018290526060808201839052608082015260a0810182905260c0810182905260e081019190915290565b5b80821115612bc9575f8155600101612bb6565b5090565b6001600160a01b038116811461113c575f80fd5b6001600160401b038116811461113c575f80fd5b5f8060408385031215612c06575f80fd5b8235612c1181612bcd565b91506020830135612c2181612be1565b809150509250929050565b5f8083601f840112612c3c575f80fd5b5081356001600160401b03811115612c52575f80fd5b6020830191508360208260051b8501011115612c6c575f80fd5b9250929050565b5f8060208385031215612c84575f80fd5b82356001600160401b03811115612c99575f80fd5b612ca585828601612c2c565b90969095509350505050565b803560ff81168114612cc1575f80fd5b919050565b5f60208284031215612cd6575f80fd5b612aad82612cb1565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112612d02575f80fd5b81356001600160401b03811115612d1b57612d1b612cdf565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612d4957612d49612cdf565b604052818152838201602001851015612d60575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215612d8d575f80fd5b8235612d9881612bcd565b915060208301356001600160401b03811115612db2575f80fd5b612dbe85828601612cf3565b9150509250929050565b5f60208284031215612dd8575f80fd5b8135612aad81612bcd565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f815160408452612e256040850182612de3565b602093840151949093019390935250919050565b602081525f825160c06020840152612e5460e0840182612e11565b90506020840151601f19848303016040850152612e718282612e11565b9150506001600160801b0360408501511660608401526001600160801b0360608501511660808401526001600160801b0360808501511660a084015260a0840151151560c08401528091505092915050565b5f8060408385031215612ed4575f80fd5b50508035926020909101359150565b5f60408284031215612ef3575f80fd5b604080519081016001600160401b0381118282101715612f1557612f15612cdf565b60405290508082356001600160401b03811115612f30575f80fd5b612f3c85828601612cf3565b825250602092830135920191909152919050565b5f60208284031215612f60575f80fd5b81356001600160401b03811115612f75575f80fd5b61138984828501612ee3565b634e487b7160e01b5f52602160045260245ffd5b60038110612fb157634e487b7160e01b5f52602160045260245ffd5b9052565b80516001600160a01b039081168352602080830151909116908301526040808201515f91612fed908501826001600160401b03169052565b5060608201516130006060850182612f95565b506080820151610100608085015261301c610100850182612de3565b905060a083015160a085015260c083015161303b60c086018215159052565b5060e0830151610fea60e086018215159052565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156130a657603f19878603018452613091858351612fb5565b94506020938401939190910190600101613075565b50929695505050505050565b5f606082840312156130c2575f80fd5b604051606081016001600160401b03811182821017156130e4576130e4612cdf565b60405290508082356001600160401b038111156130ff575f80fd5b61310b85828601612cf3565b82525060208381013590820152604092830135920191909152919050565b5f60208284031215613139575f80fd5b81356001600160401b0381111561314e575f80fd5b611389848285016130b2565b5f6020828403121561316a575f80fd5b8135612aad81612be1565b5f8060408385031215613186575f80fd5b82356001600160401b0381111561319b575f80fd5b6131a7858286016130b2565b92505060208301356001600160401b038111156131c2575f80fd5b612dbe85828601612ee3565b5f602082840312156131de575f80fd5b5035919050565b602080825282518282018190525f918401906040840190835b8181101561321c5783518352602093840193909201916001016131fe565b509095945050505050565b602081525f612aad6020830184612de3565b602081525f612aad6020830184612fb5565b5f806040838503121561325c575f80fd5b61326583612cb1565b946020939093013593505050565b5f805f60408486031215613285575f80fd5b833561329081612bcd565b925060208401356001600160401b038111156132aa575f80fd5b6132b686828701612c2c565b9497909650939450505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610ce657610ce66132d7565b6001600160801b038281168282160390811115610ce657610ce66132d7565b5f60208284031215613339575f80fd5b815160028110612aad575f80fd5b600181811c9082168061335b57607f821691505b60208210810361337957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561213457805f5260205f20601f840160051c810160208510156133a45750805b601f840160051c820191505b818110156133c3575f81556001016133b0565b5050505050565b8181036133d5575050565b6133df8254613347565b6001600160401b038111156133f6576133f6612cdf565b61340a816134048454613347565b8461337f565b5f601f82116001811461343e575f83156134245750848201545b600184901b5f19600386901b1c198216175b8555506133c3565b5f8581526020808220868352908220601f198616925b838110156134745782860154825560019586019590910190602001613454565b508583101561349157818501545f19600388901b60f8161c191681555b5050505050600190811b01905550565b604082525f8082546134b281613347565b806040870152600182165f81146134d057600181146134ec5761351d565b60ff1983166060880152606082151560051b880101935061351d565b855f5260205f205f5b83811015613514578154898201606001526001909101906020016134f5565b88016060019450505b505050600183015460208501528091505092915050565b604081525f6135466040830185612e11565b8281036020840152612a2d81856134a1565b60ff8281168282160390811115610ce657610ce66132d7565b81516001600160401b0381111561358a5761358a612cdf565b613598816134048454613347565b6020601f8211600181146135c8575f8315613424575081850151600184901b5f19600386901b1c19821617613436565b5f84815260208120601f198516915b828110156135f757878501518255602094850194600190920191016135d7565b508482101561361457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f61363560608301866134a1565b82810360208401526136478186612e11565b9150506001600160401b0383166040830152949350505050565b60018060a01b0383168152604060208201525f82516060604084015261368a60a0840182612de3565b90506020840151606084015260408401516080840152809150509392505050565b602081525f612aad6020830184612e11565b60ff8181168382160190811115610ce657610ce66132d7565b5f600182016136e7576136e76132d7565b5060010190565b80518015158114612cc1575f80fd5b5f6020828403121561370d575f80fd5b612aad826136ee565b5f60208284031215613726575f80fd5b8151612aad81612bcd565b5f6080828403128015613742575f80fd5b50604051608081016001600160401b038111828210171561376557613765612cdf565b604052825161377381612be1565b8152602083015161378381612be1565b6020820152604083015161379681612be1565b60408201526060830151600381106137ac575f80fd5b60608201529392505050565b606081525f6137ca6060830186612de3565b90508360208301526001600160401b0383166040830152949350505050565b6001600160801b038181168382160190811115610ce657610ce66132d7565b5f8085851115613816575f80fd5b83861115613822575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015613860576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f602082840312156138b6575f80fd5b5051919050565b5f82518060208501845e5f920191825250919050565b5f80604083850312156138e4575f80fd5b6138ed836136ee565b9150602083015163ffffffff81168114612c21575f80fdfef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00fee41a6d2b86b757dd00cd2166d8727686a349977cbc2b6b6a2ca1c3e7215002360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcfee41a6d2b86b757dd00cd2166d8727686a349977cbc2b6b6a2ca1c3e7215000a2646970667358221220a2189f06ab8399d465475121446012191af31d9e8c306d52c4623b15084bbb4064736f6c634300081a003300000000000000000000000091e677b07f7af907ec9a428aafa9fc14a0d3a33800000000000000000000000039053d51b77dc0d36036fc1fcc8cb819df8ef37a000000000000000000000000135dda560e946695d6f155dacafc6f1f25c1f5af