0 txs
0 calls
constructor
constructor()
functions
canDeposit
viewfunction canDeposit() view returns (uint256)
canWithdraw
viewfunction canWithdraw() view returns (uint256)
getDepositChange
viewfunction getDepositChange() view returns (int256)
getFees
viewfunction getFees() view returns (tuple[])
getMaxDeposits
viewfunction getMaxDeposits() view returns (uint256)
getMinDeposits
viewfunction getMinDeposits() view returns (uint256)
getOperatorRewards
viewfunction getOperatorRewards() view returns (uint256, uint256)
getPendingFees
viewfunction getPendingFees() view returns (uint256)
getTotalDeposits
viewfunction getTotalDeposits() view returns (uint256)
getVaultDepositLimits
viewfunction getVaultDepositLimits() view returns (uint256, uint256)
getVaults
viewfunction getVaults() view returns (address[])
indexOfLastFullVault
viewfunction indexOfLastFullVault() view returns (uint256)
maxDepositSizeBP
viewfunction maxDepositSizeBP() view returns (uint256)
operatorRewardPercentage
viewfunction operatorRewardPercentage() view returns (uint256)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
stakeController
viewfunction stakeController() view returns (address)
stakingPool
viewfunction stakingPool() view returns (address)
token
viewfunction token() view returns (address)
totalPrincipalDeposits
viewfunction totalPrincipalDeposits() view returns (uint256)
vaultImplementation
viewfunction vaultImplementation() view returns (address)
withdraw
viewfunction withdraw(uint256) view
__Strategy_init
nonpayablefunction __Strategy_init(address _token, address _stakingPool)
__VaultControllerStrategy_init
nonpayablefunction __VaultControllerStrategy_init(address _token, address _stakingPool, address _stakeController, address _vaultImplementation, tuple[] _fees, uint256 _maxDepositSizeBP)
addFee
nonpayablefunction addFee(address _receiver, uint256 _feeBasisPoints)
addVault
nonpayablefunction addVault(address _operator, address _rewardsReceiver, address _pfAlertsController)
deposit
nonpayablefunction deposit(uint256 _amount)
initialize
nonpayablefunction initialize(address _token, address _stakingPool, address _stakeController, address _vaultImplementation, tuple[] _fees, uint256 _maxDepositSizeBP, uint256 _operatorRewardPercentage)
onTokenTransfer
nonpayablefunction onTokenTransfer(address, uint256, bytes)
renounceOwnership
nonpayablefunction renounceOwnership()
setMaxDepositSizeBP
nonpayablefunction setMaxDepositSizeBP(uint256 _maxDepositSizeBP)
setOperator
nonpayablefunction setOperator(uint256 _index, address _operator)
setOperatorRewardPercentage
nonpayablefunction setOperatorRewardPercentage(uint256 _operatorRewardPercentage)
setRewardsReceiver
nonpayablefunction setRewardsReceiver(uint256 _index, address _rewardsReceiver)
setVaultImplementation
nonpayablefunction setVaultImplementation(address _vaultImplementation)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateDeposits
nonpayablefunction updateDeposits(bytes _data) returns (int256 depositChange, address[] receivers, uint256[] amounts)
updateFee
nonpayablefunction updateFee(uint256 _index, address _receiver, uint256 _feeBasisPoints)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
upgradeVaults
nonpayablefunction upgradeVaults(uint256 _startIndex, uint256 _numVaults, bytes _data)
withdrawOperatorRewards
nonpayablefunction withdrawOperatorRewards(address _receiver, uint256 _amount) returns (uint256)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SetMaxDepositSizeBP
event SetMaxDepositSizeBP(uint256 maxDepositSizeBP)
SetOperatorRewardPercentage
event SetOperatorRewardPercentage(uint256 rewardPercentage)
SetVaultImplementation
event SetVaultImplementation(address vaultImplementation)
Upgraded
event Upgraded(address indexed implementation)
UpgradedVaults
event UpgradedVaults(uint256 startIndex, uint256 numVaults, bytes data)
VaultAdded
event VaultAdded(address indexed operator)
WithdrawExtraRewards
event WithdrawExtraRewards(address indexed receiver, uint256 amount)
errors
InvalidBasisPoints
error InvalidBasisPoints()
InvalidPercentage
error InvalidPercentage()
NoExtraRewards
error NoExtraRewards()
SenderNotAuthorized
error SenderNotAuthorized()
UnauthorizedToken
error UnauthorizedToken()
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516146d16200011f60003960008181610ae701528181610b2a01528181610e7001528181610eb3015261104401526146d16000f3fe608060405260043610620002835760003560e01c80638da5cb5b1162000153578063cea7728e11620000c5578063e84709881162000084578063e84709881462000740578063eb47dc8f14620002c7578063eb6342101462000765578063f2fde38b1462000787578063f7f460c714620007ac578063fc0c546a14620007d157600080fd5b8063cea7728e146200069f578063db8d55f114620006b7578063e61fbf3c14620006de578063e78a58751462000703578063e7a1c1c0146200071b57600080fd5b8063b51459fe1162000112578063b51459fe1462000610578063b6b55f251462000628578063b7b7a408146200064d578063bba48a901462000665578063c51c2d0e146200068757600080fd5b80638da5cb5b14620005585780639566355b1462000578578063a4c0ed361462000590578063af51e6a514620005b5578063b47529c514620005eb57600080fd5b80634f1ef28611620001f957806369feab4911620001b857806369feab4914620004ae5780636fac5bd114620004c6578063715018a614620004de57806371cf77e414620004f65780637718238f146200050e5780638956451c146200053357600080fd5b80634f1ef2861462000410578063506cd187146200042757806352d1902d146200044c57806353e78b6b146200046457806365fd87ad146200048957600080fd5b806334a6a931116200024657806334a6a93114620003555780633659cfe6146200037a578063396a8b83146200039f57806343ae8a5f14620003c457806344d00f8214620003e957600080fd5b80630c56ae3b1462000288578063168a482214620002c75780632000940514620002e857806321aca42414620003005780632e1a7d4d146200032e575b600080fd5b3480156200029557600080fd5b5060ca54620002aa906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620002d457600080fd5b5060cf545b604051908152602001620002be565b348015620002f557600080fd5b50620002d960d05481565b3480156200030d57600080fd5b5062000318620007f3565b60408051928352602083019190915201620002be565b3480156200033b57600080fd5b50620003536200034d366004620032c2565b62000874565b005b3480156200036257600080fd5b50620003536200037436600462003431565b620008f3565b3480156200038757600080fd5b506200035362000399366004620034d7565b62000add565b348015620003ac57600080fd5b5062000353620003be3660046200356d565b62000bc8565b348015620003d157600080fd5b5062000353620003e3366004620035c0565b62000c4a565b348015620003f657600080fd5b506200040162000e02565b604051620002be91906200365b565b6200035362000421366004620036aa565b62000e66565b3480156200043457600080fd5b50620002d962000446366004620036ff565b62000f42565b3480156200045957600080fd5b50620002d962001037565b3480156200047157600080fd5b506200035362000483366004620034d7565b620010ed565b3480156200049657600080fd5b5062000353620004a8366004620032c2565b620011a6565b348015620004bb57600080fd5b50620002d962001214565b348015620004d357600080fd5b50620002d960d15481565b348015620004eb57600080fd5b50620003536200135a565b3480156200050357600080fd5b50620002d960dc5481565b3480156200051b57600080fd5b50620003536200052d366004620036ff565b62001372565b3480156200054057600080fd5b5062000353620005523660046200372e565b6200143d565b3480156200056557600080fd5b506097546001600160a01b0316620002aa565b3480156200058557600080fd5b5062000318620014cc565b3480156200059d57600080fd5b5062000353620005af366004620037ac565b6200153d565b348015620005c257600080fd5b50620005da620005d43660046200380d565b6200156f565b604051620002be939291906200388f565b348015620005f857600080fd5b50620003536200060a366004620038fd565b62001b88565b3480156200061d57600080fd5b50620002d962001d53565b3480156200063557600080fd5b506200035362000647366004620032c2565b62001d8a565b3480156200065a57600080fd5b50620002d962001f84565b3480156200067257600080fd5b5060cd54620002aa906001600160a01b031681565b3480156200069457600080fd5b50620002d962001f95565b348015620006ac57600080fd5b50620002d960d25481565b348015620006c457600080fd5b50620006cf620020ea565b604051620002be919062003938565b348015620006eb57600080fd5b5062000353620006fd36600462003992565b62002161565b3480156200071057600080fd5b50620002d9620021cf565b3480156200072857600080fd5b50620003536200073a3660046200372e565b6200220e565b3480156200074d57600080fd5b50620003536200075f366004620032c2565b6200226a565b3480156200077257600080fd5b5060cb54620002aa906001600160a01b031681565b3480156200079457600080fd5b5062000353620007a6366004620034d7565b620022ce565b348015620007b957600080fd5b5062000353620007cb366004620039c5565b6200234a565b348015620007de57600080fd5b5060c954620002aa906001600160a01b031681565b60dd5460ca546040516370a0823160e01b8152306004820152600092839290916001600160a01b03909116906370a0823190602401602060405180830381865afa15801562000846573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200086c919062003a17565b915091509091565b60ca546001600160a01b03163314620008aa5760405162461bcd60e51b8152600401620008a19062003a31565b60405180910390fd5b60405162461bcd60e51b815260206004820152601f60248201527f7769746864726177616c73206e6f742079657420696d706c656d656e746564006044820152606401620008a1565b600054600290610100900460ff1615801562000916575060005460ff8083169116105b6200097b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620008a1565b6000805461ffff191660ff83161761010017905560c9546001600160a01b0316620009b657620009b088888888888862000c4a565b62000a69565b60dc5460d055600060d181905560cb80546001600160a01b03808a166001600160a01b03199283161790925560cd80549289169290911691909117905560d28490555b60ce5481101562000a6757600160de600060ce848154811062000a205762000a2062003a5b565b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905562000a5f8162003a87565b9050620009f9565b505b61271082111562000a8d57604051631f3b85d360e01b815260040160405180910390fd5b60dc8290556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300362000b285760405162461bcd60e51b8152600401620008a19062003aa3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662000b7360008051602062004655833981519152546001600160a01b031690565b6001600160a01b03161462000b9c5760405162461bcd60e51b8152600401620008a19062003aef565b62000ba781620024e5565b6040805160008082526020820190925262000bc591839190620024ef565b50565b62000bd262002667565b825b62000be0838562003b3b565b81101562000c075762000bf48183620026c3565b62000bff8162003a87565b905062000bd4565b507f71ddb05108536dca4ade6ad9f2cec5fd3e84727523ab1e86b135ea47f79dfe8e83838360405162000c3d9392919062003bb3565b60405180910390a1505050565b600054610100900460ff1662000c745760405162461bcd60e51b8152600401620008a19062003bd4565b62000c80868662002161565b60cb80546001600160a01b0319166001600160a01b038616179055823b62000d0a5760405162461bcd60e51b815260206004820152603660248201527f5661756c7420696d706c656d656e746174696f6e2061646472657373206d75736044820152751d0818995b1bdb99c81d1bc8184818dbdb9d1c9858dd60521b6064820152608401620008a1565b60cd80546001600160a01b0319166001600160a01b03851617905560005b825181101562000da55760cc83828151811062000d495762000d4962003a5b565b602090810291909101810151825460018082018555600094855293839020825160029092020180546001600160a01b0319166001600160a01b0390921691909117815591015191015562000d9d8162003a87565b905062000d28565b5061138862000db362002799565b111562000dd45760405162461bcd60e51b8152600401620008a19062003c1f565b61271081111562000df85760405163800c7e9160e01b815260040160405180910390fd5b60d2555050505050565b606060ce80548060200260200160405190810160405280929190818152602001828054801562000e5c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000e3d575b5050505050905090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300362000eb15760405162461bcd60e51b8152600401620008a19062003aa3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662000efc60008051602062004655833981519152546001600160a01b031690565b6001600160a01b03161462000f255760405162461bcd60e51b8152600401620008a19062003aef565b62000f3082620024e5565b62000f3e82826001620024ef565b5050565b33600090815260de602052604081205460ff1662000f73576040516379d1e58f60e01b815260040160405180910390fd5b60ca546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa15801562000fc1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fe7919062003a17565b9050600081851162000ffa578462000ffc565b815b90508060dd600082825462001012919062003c56565b909155506200102e90506001600160a01b0384168783620027fa565b95945050505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620010d95760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401620008a1565b506000805160206200465583398151915290565b620010f762002667565b803b620011515760405162461bcd60e51b815260206004820152602160248201527f41646472657373206d7573742062656c6f6e6720746f206120636f6e747261636044820152601d60fa1b6064820152608401620008a1565b60cd80546001600160a01b0319166001600160a01b0383169081179091556040519081527f028cd482b99a4d21fe2c757cd8fc155d8dcce718854d0f63e40819069339a49d906020015b60405180910390a150565b620011b062002667565b612710811115620011d457604051631f3b85d360e01b815260040160405180910390fd5b620011de6200285f565b60dc8190556040518181527f28846a985f226dec4a1c41ecb80eee6e5d321e346c9348a70ab014e0faac213a906020016200119b565b60c9546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa15801562001262573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001288919062003a17565b905060005b60ce54811015620013445760ce8181548110620012ae57620012ae62003a5b565b6000918252602091829020015460408051630b45241160e11b815290516001600160a01b039092169263168a4822926004808401938290030181865afa158015620012fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001323919062003a17565b6200132f908362003b3b565b91506200133c8162003a87565b90506200128d565b5060cf5462001354908262003c70565b91505090565b6200136462002667565b62001370600062002994565b565b6200137c62002667565b604080518082019091526001600160a01b0383811682526020820183815260cc805460018101825560009190915292517f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebe600290940293840180546001600160a01b0319169190931617909155517f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebf909101556113886200141c62002799565b111562000f3e5760405162461bcd60e51b8152600401620008a19062003c1f565b6200144762002667565b60ce82815481106200145d576200145d62003a5b565b60009182526020909120015460405163130cac1360e11b81526001600160a01b038381166004830152909116906326195826906024015b600060405180830381600087803b158015620014af57600080fd5b505af1158015620014c4573d6000803e3d6000fd5b505050505050565b60cb5460408051636277b91560e11b8152815160009384936001600160a01b039091169263c4ef722a92600480830193928290030181865afa15801562001517573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200086c919062003cb5565b60ca546001600160a01b031633146200156957604051637e5f934960e01b815260040160405180910390fd5b50505050565b60ca5460009060609081906001600160a01b03163314620015a45760405162461bcd60e51b8152600401620008a19062003a31565b60008415620015c157620015bb85870187620032c2565b620015c4565b60005b60cf5460ce5491925090600090819030825b82811015620016b15760008060ce8381548110620015f857620015f862003a5b565b60009182526020909120015460405163244cd47d60e01b8152600481018b90526001600160a01b0386811660248301529091169063244cd47d9060440160408051808303816000875af115801562001654573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200167a919062003cb5565b90925090506200168b828862003b3b565b965062001699818762003b3b565b9550505080620016a99062003a87565b9050620015d6565b5060c9546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015620016fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001722919062003a17565b60cf5490915062001734828762003b3b565b62001740919062003c70565b995083156200186f5760008a136200175a5760006200175e565b60cc545b6200176b90600162003b3b565b6001600160401b03811115620017855762001785620032f2565b604051908082528060200260200182016040528015620017af578160200160208202803683370190505b50985088516001600160401b03811115620017ce57620017ce620032f2565b604051908082528060200260200182016040528015620017f8578160200160208202803683370190505b509750308960008151811062001812576200181262003a5b565b60200260200101906001600160a01b031690816001600160a01b031681525050838860008151811062001849576200184962003a5b565b6020026020010181815250508360dd600082825462001869919062003b3b565b90915550505b60008a131562001b1757620018858a8762003b3b565b9550885160000362001a195760cc546001600160401b03811115620018ae57620018ae620032f2565b604051908082528060200260200182016040528015620018d8578160200160208202803683370190505b50985088516001600160401b03811115620018f757620018f7620032f2565b60405190808252806020026020018201604052801562001921578160200160208202803683370190505b50975060005b895181101562001a125760cc818154811062001947576200194762003a5b565b60009182526020909120600290910201548a516001600160a01b03909116908b90839081106200197b576200197b62003a5b565b60200260200101906001600160a01b031690816001600160a01b03168152505061271060cc8281548110620019b457620019b462003a5b565b9060005260206000209060020201600101548c620019d3919062003cda565b620019df919062003cfc565b898281518110620019f457620019f462003a5b565b602090810291909101015262001a0a8162003a87565b905062001927565b5062001b3e565b60015b895181101562001a125760cc62001a3560018362003c56565b8154811062001a485762001a4862003a5b565b60009182526020909120600290910201548a516001600160a01b03909116908b908390811062001a7c5762001a7c62003a5b565b6001600160a01b039092166020928302919091019091015261271060cc62001aa660018462003c56565b8154811062001ab95762001ab962003a5b565b9060005260206000209060020201600101548c62001ad8919062003cda565b62001ae4919062003cfc565b89828151811062001af95762001af962003a5b565b602090810291909101015262001b0f8162003a87565b905062001a1c565b60008a121562001b3e5762001b2f8a60001962003d1f565b62001b3b908762003c56565b95505b801562001b735760ca5460c95462001b64916001600160a01b03918216911683620027fa565b62001b70818762003c56565b95505b8560cf81905550505050505050509250925092565b62001b9262002667565b60cc54831062001bda5760405162461bcd60e51b815260206004820152601260248201527111995948191bd95cc81b9bdd08195e1a5cdd60721b6044820152606401620008a1565b8060000362001ca75760cc805462001bf59060019062003c56565b8154811062001c085762001c0862003a5b565b906000526020600020906002020160cc848154811062001c2c5762001c2c62003a5b565b60009182526020909120825460029092020180546001600160a01b0319166001600160a01b0390921691909117815560019182015491015560cc80548062001c785762001c7862003db0565b60008281526020812060026000199093019283020180546001600160a01b031916815560010155905562001d20565b8160cc848154811062001cbe5762001cbe62003a5b565b906000526020600020906002020160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060cc848154811062001d0a5762001d0a62003a5b565b9060005260206000209060020201600101819055505b61138862001d2d62002799565b111562001d4e5760405162461bcd60e51b8152600401620008a19062003c1f565b505050565b60008062001d6060cf5490565b905062001d6c60cf5490565b811162001d7b57600091505090565b60cf5462001354908262003c56565b60ca546001600160a01b0316331462001db75760405162461bcd60e51b8152600401620008a19062003a31565b60c95462001dd1906001600160a01b0316333084620029e6565b60008062001dde620014cc565b91509150600060d154600162001df5919062003b3b565b90508160ce60008154811062001e0f5762001e0f62003a5b565b6000918252602091829020015460408051631ae665a560e01b815290516001600160a01b0390921692631ae665a5926004808401938290030181865afa15801562001e5e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e84919062003a17565b101562001e8f575060005b60c9546040516370a0823160e01b815230600482015260009162001f0e9184916001600160a01b0316906370a0823190602401602060405180830381865afa15801562001ee0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f06919062003a17565b868662002a20565b90508060cf600082825462001f24919062003b3b565b925050819055508060d0600082825462001f3f919062003b3b565b909155505080851462001f7d5760ca5462001f7d906001600160a01b031662001f69838862003c56565b60c9546001600160a01b03169190620027fa565b5050505050565b600062001f9060cf5490565b905090565b60ce546000908190815b81811015620020545760ce818154811062001fbe5762001fbe62003a5b565b6000918252602091829020015460408051636cb10fcf60e11b815290516001600160a01b039092169263d9621f9e926004808401938290030181865afa1580156200200d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002033919062003a17565b6200203f908462003b3b565b92506200204c8162003a87565b905062001f9f565b5060006200206162001214565b90506000811315620020e25760005b60cc54811015620020e05761271060cc828154811062002094576200209462003a5b565b90600052602060002090600202016001015483620020b3919062003cda565b620020bf919062003cfc565b620020cb908562003b3b565b9350620020d88162003a87565b905062002070565b505b509092915050565b606060cc805480602002602001604051908101604052809291908181526020016000905b8282101562002158576000848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016200210e565b50505050905090565b600054610100900460ff166200218b5760405162461bcd60e51b8152600401620008a19062003bd4565b60c980546001600160a01b038085166001600160a01b03199283161790925560ca805492841692909116919091179055620021c562002c28565b62000f3e62002c5c565b600080620021dc60cf5490565b9050620021e862001f84565b8110620021f757600091505090565b806200220262001f84565b62001354919062003c56565b6200221862002667565b60ce82815481106200222e576200222e62003a5b565b60009182526020909120015460405163b3ab15fb60e01b81526001600160a01b0383811660048301529091169063b3ab15fb9060240162001494565b6200227462002667565b612710811115620022985760405163800c7e9160e01b815260040160405180910390fd5b60d28190556040518181527fc3a64d8ad419db097a8d7e9ab60fad0d91ad6158cdd00de7ec455531ae72d426906020016200119b565b620022d862002667565b6001600160a01b0381166200233f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620008a1565b62000bc58162002994565b6200235462002667565b60c95460cb5460408051635f0f4c8360e01b815290516000936001600160a01b039081169330939116918291635f0f4c839160048083019260209291908290030181865afa158015620023ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023d1919062003dc6565b6040516001600160a01b039485166024820152928416604484015290831660648301528216608482015281841660a482015281861660c482015290841660e48201526101040160408051601f198184030181529190526020810180516001600160e01b0316631ac3b23b60e11b17905290506200244e8162002c86565b600160de600060ce600160ce805490506200246a919062003c56565b815481106200247d576200247d62003a5b565b6000918252602080832091909101546001600160a01b0390811684529083019390935260409182018120805460ff19169415159490941790935551908616917f7b7ef7a864d96a85497a1ed846adb39940dd6ccef678ff6ac8d55505e09b8cc491a250505050565b62000bc562002667565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615620025255762001d4e8362002d42565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562002582575060408051601f3d908101601f191682019092526200257f9181019062003a17565b60015b620025e75760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401620008a1565b600080516020620046558339815191528114620026595760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401620008a1565b5062001d4e83838362002de1565b6097546001600160a01b03163314620013705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620008a1565b600060ce8381548110620026db57620026db62003a5b565b600091825260208220015483516001600160a01b0390911692509003620027635760cd54604051631b2ce7f360e11b81526001600160a01b03918216600482015290821690633659cfe6906024015b600060405180830381600087803b1580156200274557600080fd5b505af11580156200275a573d6000803e3d6000fd5b50505050505050565b60cd5460405163278f794360e11b81526001600160a01b0383811692634f1ef286926200272a9290911690869060040162003de6565b60008060005b60cc54811015620027f45760cc8181548110620027c057620027c062003a5b565b90600052602060002090600202016001015482620027df919062003b3b565b9150620027ec8162003a87565b90506200279f565b50919050565b6040516001600160a01b03831660248201526044810182905262001d4e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262002e0c565b60ca546040805163b49a60bb60e01b815290516000926001600160a01b03169163b49a60bb91600480830192869291908290030181865afa158015620028a9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620028d3919081019062003e0c565b9050600081516001600160401b03811115620028f357620028f3620032f2565b6040519080825280602002602001820160405280156200291d578160200160208202803683370190505b50905060005b825181101562002961578082828151811062002943576200294362003a5b565b6020908102919091010152620029598162003a87565b905062002923565b5060ca546040516399b8964b60e01b81526001600160a01b03909116906399b8964b906200149490849060040162003eb0565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052620015699085906323b872dd60e01b9060840162002827565b60008381865b60ce5481101562002c0957600060ce828154811062002a495762002a4962003a5b565b600091825260208083209091015460408051631ae665a560e01b815290516001600160a01b0390921694508492631ae665a5926004808401938290030181865afa15801562002a9c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ac2919062003a17565b9050600062002ad2828962003c56565b9050888210801562002aee575062002aeb828a62003c56565b86105b1562002afd5750505062002c09565b8086111562002b7d5760405163b6b55f2560e01b81526004810182905293945084936001600160a01b0384169063b6b55f2590602401600060405180830381600087803b15801562002b4e57600080fd5b505af115801562002b63573d6000803e3d6000fd5b50505050808662002b75919062003c56565b955062002bf2565b80860362002b89578394505b60405163b6b55f2560e01b8152600481018790526001600160a01b0384169063b6b55f2590602401600060405180830381600087803b15801562002bcc57600080fd5b505af115801562002be1573d6000803e3d6000fd5b505050506000955050505062002c09565b5050508062002c019062003a87565b905062002a26565b5060d181905562002c1b828762003c56565b925050505b949350505050565b600054610100900460ff1662002c525760405162461bcd60e51b8152600401620008a19062003bd4565b6200137062002ee8565b600054610100900460ff16620013705760405162461bcd60e51b8152600401620008a19062003bd4565b60cd546040516000916001600160a01b031690839062002ca690620032b4565b62002cb392919062003de6565b604051809103906000f08015801562002cd0573d6000803e3d6000fd5b5060c95490915062002cef906001600160a01b03168260001962002f1d565b60ce80546001810182556000919091527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a0180546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b62002db15760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620008a1565b6000805160206200465583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62002dec836200303a565b60008251118062002dfa5750805b1562001d4e576200156983836200307c565b600062002e63826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620030ab9092919063ffffffff16565b905080516000148062002e8757508080602001905181019062002e87919062003edc565b62001d4e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620008a1565b600054610100900460ff1662002f125760405162461bcd60e51b8152600401620008a19062003bd4565b620013703362002994565b80158062002f9b5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562002f73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f99919062003a17565b155b620030085760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401620008a1565b6040516001600160a01b03831660248201526044810182905262001d4e90849063095ea7b360e01b9060640162002827565b620030458162002d42565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620030a483836040518060600160405280602781526020016200467560279139620030bc565b9392505050565b606062002c2084846000856200313a565b6060600080856001600160a01b031685604051620030db919062003f00565b600060405180830381855af49150503d806000811462003118576040519150601f19603f3d011682016040523d82523d6000602084013e6200311d565b606091505b509150915062003130868383876200320d565b9695505050505050565b6060824710156200319d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401620008a1565b600080866001600160a01b03168587604051620031bb919062003f00565b60006040518083038185875af1925050503d8060008114620031fa576040519150601f19603f3d011682016040523d82523d6000602084013e620031ff565b606091505b509150915062002c1b878383875b606083156200328157825160000362003279576001600160a01b0385163b620032795760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620008a1565b508162002c20565b62002c208383815115620032985781518083602001fd5b8060405162461bcd60e51b8152600401620008a1919062003f1e565b6107218062003f3483390190565b600060208284031215620032d557600080fd5b5035919050565b6001600160a01b038116811462000bc557600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156200332d576200332d620032f2565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200335e576200335e620032f2565b604052919050565b60006001600160401b03821115620033825762003382620032f2565b5060051b60200190565b600082601f8301126200339e57600080fd5b81356020620033b7620033b18362003366565b62003333565b82815260069290921b84018101918181019086841115620033d757600080fd5b8286015b84811015620034265760408189031215620033f65760008081fd5b6200340062003308565b81356200340d81620032dc565b81528185013585820152835291830191604001620033db565b509695505050505050565b600080600080600080600060e0888a0312156200344d57600080fd5b87356200345a81620032dc565b965060208801356200346c81620032dc565b955060408801356200347e81620032dc565b945060608801356200349081620032dc565b935060808801356001600160401b03811115620034ac57600080fd5b620034ba8a828b016200338c565b93505060a0880135915060c0880135905092959891949750929550565b600060208284031215620034ea57600080fd5b8135620030a481620032dc565b600082601f8301126200350957600080fd5b81356001600160401b03811115620035255762003525620032f2565b6200353a601f8201601f191660200162003333565b8181528460208386010111156200355057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156200358357600080fd5b833592506020840135915060408401356001600160401b03811115620035a857600080fd5b620035b686828701620034f7565b9150509250925092565b60008060008060008060c08789031215620035da57600080fd5b8635620035e781620032dc565b95506020870135620035f981620032dc565b945060408701356200360b81620032dc565b935060608701356200361d81620032dc565b925060808701356001600160401b038111156200363957600080fd5b6200364789828a016200338c565b92505060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b818110156200369e5783516001600160a01b03168352928401929184019160010162003677565b50909695505050505050565b60008060408385031215620036be57600080fd5b8235620036cb81620032dc565b915060208301356001600160401b03811115620036e757600080fd5b620036f585828601620034f7565b9150509250929050565b600080604083850312156200371357600080fd5b82356200372081620032dc565b946020939093013593505050565b600080604083850312156200374257600080fd5b8235915060208301356200375681620032dc565b809150509250929050565b60008083601f8401126200377457600080fd5b5081356001600160401b038111156200378c57600080fd5b602083019150836020828501011115620037a557600080fd5b9250929050565b60008060008060608587031215620037c357600080fd5b8435620037d081620032dc565b93506020850135925060408501356001600160401b03811115620037f357600080fd5b620038018782880162003761565b95989497509550505050565b600080602083850312156200382157600080fd5b82356001600160401b038111156200383857600080fd5b620038468582860162003761565b90969095509350505050565b600081518084526020808501945080840160005b83811015620038845781518752958201959082019060010162003866565b509495945050505050565b6000606082018583526020606081850152818651808452608086019150828801935060005b81811015620038db5784516001600160a01b031683529383019391830191600101620038b4565b50508481036040860152620038f1818762003852565b98975050505050505050565b6000806000606084860312156200391357600080fd5b8335925060208401356200392781620032dc565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156200398557815180516001600160a01b0316855286015186850152928401929085019060010162003955565b5091979650505050505050565b60008060408385031215620039a657600080fd5b8235620039b381620032dc565b915060208301356200375681620032dc565b600080600060608486031215620039db57600080fd5b8335620039e881620032dc565b92506020840135620039fa81620032dc565b9150604084013562003a0c81620032dc565b809150509250925092565b60006020828403121562003a2a57600080fd5b5051919050565b60208082526010908201526f5374616b696e67506f6f6c206f6e6c7960801b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162003a9c5762003a9c62003a71565b5060010190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000821982111562003b515762003b5162003a71565b500190565b60005b8381101562003b7357818101518382015260200162003b59565b83811115620015695750506000910152565b6000815180845262003b9f81602086016020860162003b56565b601f01601f19169290920160200192915050565b8381528260208201526060604082015260006200102e606083018462003b85565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526019908201527f546f74616c2066656573206d757374206265203c3d2035302500000000000000604082015260600190565b60008282101562003c6b5762003c6b62003a71565b500390565b60008083128015600160ff1b85018412161562003c915762003c9162003a71565b6001600160ff1b038401831381161562003caf5762003caf62003a71565b50500390565b6000806040838503121562003cc957600080fd5b505080516020909101519092909150565b600081600019048311821515161562003cf75762003cf762003a71565b500290565b60008262003d1a57634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160ff1b038184138284138082168684048611161562003d485762003d4862003a71565b600160ff1b600087128281168783058912161562003d6a5762003d6a62003a71565b6000871292508782058712848416161562003d895762003d8962003a71565b8785058712818416161562003da25762003da262003a71565b505050929093029392505050565b634e487b7160e01b600052603160045260246000fd5b60006020828403121562003dd957600080fd5b8151620030a481620032dc565b6001600160a01b038316815260406020820181905260009062002c209083018462003b85565b6000602080838503121562003e2057600080fd5b82516001600160401b0381111562003e3757600080fd5b8301601f8101851362003e4957600080fd5b805162003e5a620033b18262003366565b81815260059190911b8201830190838101908783111562003e7a57600080fd5b928401925b8284101562003ea557835162003e9581620032dc565b8252928401929084019062003e7f565b979650505050505050565b60408152600062003ec5604083018462003852565b828103602093840152600081529190910192915050565b60006020828403121562003eef57600080fd5b81518015158114620030a457600080fd5b6000825162003f1481846020870162003b56565b9190910192915050565b602081526000620030a4602083018462003b8556fe608060405260405161072138038061072183398101604081905261002291610314565b61002e82826000610035565b5050610431565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106fa602791396101a9565b9392505050565b6100ea8161028760201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61029660201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6102115760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610148565b600080856001600160a01b03168560405161022c91906103e2565b600060405180830381855af49150503d8060008114610267576040519150601f19603f3d011682016040523d82523d6000602084013e61026c565b606091505b50909250905061027d828286610299565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a85750816100d0565b8251156102b85782518084602001fd5b8160405162461bcd60e51b815260040161014891906103fe565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103035781810151838201526020016102eb565b838111156100645750506000910152565b6000806040838503121561032757600080fd5b82516001600160a01b038116811461033e57600080fd5b60208401519092506001600160401b038082111561035b57600080fd5b818501915085601f83011261036f57600080fd5b815181811115610381576103816102d2565b604051601f8201601f19908116603f011681019083821181831017156103a9576103a96102d2565b816040528281528860208487010111156103c257600080fd5b6103d38360208301602088016102e8565b80955050505050509250929050565b600082516103f48184602087016102e8565b9190910192915050565b602081526000825180602084015261041d8160408501602087016102e8565b601f01601f19169190910160400192915050565b6102ba806104406000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122015c575a1d4aa5f6221f50862bdd76e39e9fc0eff20f628e8308027fc8124232e64736f6c634300080f0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220121370208ad52c11e0c88ce68fe2766c52fa7a3fa8afd5d9f313531a806c6d0164736f6c634300080f0033