0 txs
0 calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address _account) view returns (uint256)
boostController
viewfunction boostController() view returns (address)
delegatorPool
viewfunction delegatorPool() view returns (address)
effectiveBalanceOf
viewfunction effectiveBalanceOf(address _account) view returns (uint256)
getApproved
viewfunction getApproved(uint256 _lockId) view returns (address)
getLockIdsByOwner
viewfunction getLockIdsByOwner(address _owner) view returns (uint256[])
getLocks
viewfunction getLocks(uint256[] _lockIds) view returns (tuple[])
isApprovedForAll
viewfunction isApprovedForAll(address _owner, address _operator) view returns (bool)
isTokenSupported
viewfunction isTokenSupported(address _token) view returns (bool)
lastLockId
viewfunction lastLockId() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 _lockId) view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
sdlToken
viewfunction sdlToken() view returns (address)
staked
viewfunction staked(address _account) view returns (uint256)
supportedTokens
viewfunction supportedTokens() view returns (address[])
supportsInterface
viewfunction supportsInterface(bytes4 _interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenBalances
viewfunction tokenBalances() view returns (address[], uint256[])
tokenPools
viewfunction tokenPools(address) view returns (address)
tokenURI
viewfunction tokenURI(uint256) view returns (string)
totalEffectiveBalance
viewfunction totalEffectiveBalance() view returns (uint256)
totalStaked
viewfunction totalStaked() view returns (uint256)
withdrawableRewards
viewfunction withdrawableRewards(address _account) view returns (uint256[])
__RewardsPoolController_init
nonpayablefunction __RewardsPoolController_init()
addToken
nonpayablefunction addToken(address _token, address _rewardsPool)
approve
nonpayablefunction approve(address _to, uint256 _lockId)
distributeToken
nonpayablefunction distributeToken(address _token)
distributeTokens
nonpayablefunction distributeTokens(address[] _tokens)
extendLockDuration
nonpayablefunction extendLockDuration(uint256 _lockId, uint64 _lockingDuration)
initialize
nonpayablefunction initialize(string _name, string _symbol, address _sdlToken, address _boostController, address _delegatorPool)
initiateUnlock
nonpayablefunction initiateUnlock(uint256 _lockId)
migrate
nonpayablefunction migrate(address _sender, uint256 _amount, uint64 _lockingDuration)
onTokenTransfer
nonpayablefunction onTokenTransfer(address _sender, uint256 _value, bytes _calldata)
removeToken
nonpayablefunction removeToken(address _token)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address _from, address _to, uint256 _lockId, bytes _data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address _from, address _to, uint256 _lockId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address _operator, bool _approved)
setBoostController
nonpayablefunction setBoostController(address _boostController)
transferFrom
nonpayablefunction transferFrom(address _from, address _to, uint256 _lockId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(uint256 _lockId, uint256 _amount)
withdrawRewards
nonpayablefunction withdrawRewards(address[] _tokens)
events
AddToken
event AddToken(address indexed token, address rewardsPool)
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
CreateLock
event CreateLock(address indexed owner, uint256 indexed lockId, uint256 amount, uint256 boostAmount, uint64 lockingDuration)
Initialized
event Initialized(uint8 version)
InitiateUnlock
event InitiateUnlock(address indexed owner, uint256 indexed lockId, uint64 expiry)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RemoveToken
event RemoveToken(address indexed token, address rewardsPool)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
UpdateLock
event UpdateLock(address indexed owner, uint256 indexed lockId, uint256 amount, uint256 boostAmount, uint64 lockingDuration)
Upgraded
event Upgraded(address indexed implementation)
Withdraw
event Withdraw(address indexed owner, uint256 indexed lockId, uint256 amount)
WithdrawRewards
event WithdrawRewards(address indexed account)
errors
ApprovalToCaller
error ApprovalToCaller()
ApprovalToCurrentOwner
error ApprovalToCurrentOwner()
ContractNotFound
error ContractNotFound()
DuplicateContract
error DuplicateContract()
HalfDurationNotElapsed
error HalfDurationNotElapsed()
InsufficientBalance
error InsufficientBalance()
InvalidLockId
error InvalidLockId()
InvalidLockingDuration
error InvalidLockingDuration()
InvalidParams
error InvalidParams()
InvalidValue
error InvalidValue()
SenderNotAuthorized
error SenderNotAuthorized()
TotalDurationNotElapsed
error TotalDurationNotElapsed()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransferToNonERC721Implementer
error TransferToNonERC721Implementer()
TransferToZeroAddress
error TransferToZeroAddress()
UnauthorizedToken
error UnauthorizedToken()
UnlockAlreadyInitiated
error UnlockAlreadyInitiated()
UnlockNotInitiated
error UnlockNotInitiated()
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161405f6200011f60003960008181610f9901528181610fe201528181611498015281816114d8015261156b015261405f6000f3fe6080604052600436106102885760003560e01c806376a19e5b1161015a578063a4c0ed36116100c1578063d0cb39c61161007a578063d0cb39c6146107eb578063db0ed6a014610801578063dd0228f514610821578063e231db7614610841578063e985e9c514610861578063f2fde38b1461088157600080fd5b8063a4c0ed3614610725578063b002249d14610745578063b88d4fde14610767578063c3d2c3c114610787578063c7a64723146106af578063c87b56dd146107bd57600080fd5b8063896760731161011357806389676073146106665780638da5cb5b1461067c57806395d89b411461069a57806398807d84146106af5780639b4140cc146106e5578063a22cb4651461070557600080fd5b806376a19e5b146105bc5780637c898895146105dc5780637c9097de146105fc578063817b1cd21461061157806386d7403714610626578063889513521461064657600080fd5b8063441a3e70116101fe5780635fa7b584116101b75780635fa7b584146104f157806362d76d06146105115780636352211e1461053157806370a0823114610551578063715018a61461058757806375151b631461059c57600080fd5b8063441a3e701461042e5780634a374d4d1461044e5780634f1ef2861461047b57806352d1902d1461048e5780635476bd72146104b15780635deb761f146104d157600080fd5b80630f14b4d6116102505780630f14b4d6146103615780631b23009d1461038e57806323b872dd146103ae5780632dc075e1146103ce5780633659cfe6146103ee57806342842e0e1461040e57600080fd5b806301ffc9a71461028d57806306fdde03146102c2578063081812fc146102e4578063095ea7b31461031c5780630e3bc9741461033e575b600080fd5b34801561029957600080fd5b506102ad6102a836600461342e565b6108a1565b60405190151581526020015b60405180910390f35b3480156102ce57600080fd5b506102d76108f3565b6040516102b991906134a3565b3480156102f057600080fd5b506103046102ff3660046134b6565b610981565b6040516001600160a01b0390911681526020016102b9565b34801561032857600080fd5b5061033c6103373660046134eb565b6109d2565b005b34801561034a57600080fd5b50610353610aab565b6040516102b9929190613589565b34801561036d57600080fd5b5061038161037c3660046135ae565b610c24565b6040516102b991906135c9565b34801561039a57600080fd5b5061033c6103a93660046135ae565b610d54565b3480156103ba57600080fd5b5061033c6103c93660046135dc565b610d7e565b3480156103da57600080fd5b5061033c6103e93660046134b6565b610db5565b3480156103fa57600080fd5b5061033c6104093660046135ae565b610f8f565b34801561041a57600080fd5b5061033c6104293660046135dc565b611077565b34801561043a57600080fd5b5061033c610449366004613618565b611092565b34801561045a57600080fd5b5061046e61046936600461363a565b61131d565b6040516102b991906136ae565b61033c6104893660046137df565b61148e565b34801561049a57600080fd5b506104a361155e565b6040519081526020016102b9565b3480156104bd57600080fd5b5061033c6104cc36600461382c565b611611565b3480156104dd57600080fd5b5060d754610304906001600160a01b031681565b3480156104fd57600080fd5b5061033c61050c3660046135ae565b611786565b34801561051d57600080fd5b5061033c61052c36600461385f565b61194b565b34801561053d57600080fd5b5061030461054c3660046134b6565b611a26565b34801561055d57600080fd5b506104a361056c3660046135ae565b6001600160a01b0316600090815260d4602052604090205490565b34801561059357600080fd5b5061033c611a5c565b3480156105a857600080fd5b506102ad6105b73660046135ae565b611a70565b3480156105c857600080fd5b5061033c6105d7366004613922565b611aa0565b3480156105e857600080fd5b5060d054610304906001600160a01b031681565b34801561060857600080fd5b5061033c611af4565b34801561061d57600080fd5b5060d5546104a3565b34801561063257600080fd5b5061033c6106413660046135ae565b611b2b565b34801561065257600080fd5b5061033c61066136600461385f565b611ccb565b34801561067257600080fd5b506104a360d55481565b34801561068857600080fd5b506097546001600160a01b0316610304565b3480156106a657600080fd5b506102d7611d09565b3480156106bb57600080fd5b506104a36106ca3660046135ae565b6001600160a01b0316600090815260d6602052604090205490565b3480156106f157600080fd5b5060cf54610304906001600160a01b031681565b34801561071157600080fd5b5061033c61072036600461396c565b611d16565b34801561073157600080fd5b5061033c6107403660046139a3565b611dad565b34801561075157600080fd5b5061075a611e6b565b6040516102b99190613a29565b34801561077357600080fd5b5061033c610782366004613a3c565b611ecd565b34801561079357600080fd5b506103046107a23660046135ae565b60c9602052600090815260409020546001600160a01b031681565b3480156107c957600080fd5b506102d76107d83660046134b6565b5060408051602081019091526000815290565b3480156107f757600080fd5b506104a360d15481565b34801561080d57600080fd5b5061033c61081c366004613aa3565b611f28565b34801561082d57600080fd5b5061038161083c3660046135ae565b612094565b34801561084d57600080fd5b5061033c61085c366004613b38565b61218b565b34801561086d57600080fd5b506102ad61087c36600461382c565b6121c2565b34801561088d57600080fd5b5061033c61089c3660046135ae565b6121f0565b60006001600160e01b031982166380ac58cd60e01b14806108d257506001600160e01b03198216635b5e139f60e01b145b806108ed57506001600160e01b031982166301ffc9a760e01b145b92915050565b60cb805461090090613b5b565b80601f016020809104026020016040519081016040528092919081815260200182805461092c90613b5b565b80156109795780601f1061094e57610100808354040283529160200191610979565b820191906000526020600020905b81548152906001019060200180831161095c57829003601f168201915b505050505081565b600081815260d360205260408120546001600160a01b03166109b65760405163aefe60c360e01b815260040160405180910390fd5b50600090815260ce60205260409020546001600160a01b031690565b60006109dd82611a26565b9050806001600160a01b0316836001600160a01b031603610a115760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b03821614801590610a315750610a2f81336121c2565b155b15610a4f576040516379d1e58f60e01b815260040160405180910390fd5b600082815260ce602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b606080600060ca805490506001600160401b03811115610acd57610acd61372a565b604051908082528060200260200182016040528015610af6578160200160208202803683370190505b50905060005b60ca54811015610bbb5760ca8181548110610b1957610b19613b95565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8e9190613bab565b828281518110610ba057610ba0613b95565b6020908102919091010152610bb481613bda565b9050610afc565b5060ca8181805480602002602001604051908101604052809291908181526020018280548015610c1457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bf6575b5050505050915092509250509091565b60ca546060906000906001600160401b03811115610c4457610c4461372a565b604051908082528060200260200182016040528015610c6d578160200160208202803683370190505b50905060005b60ca54811015610d4d5760c9600060ca8381548110610c9457610c94613b95565b6000918252602080832091909101546001600160a01b039081168452908301939093526040918201902054905163078a5a6b60e11b81528683166004820152911690630f14b4d690602401602060405180830381865afa158015610cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d209190613bab565b828281518110610d3257610d32613b95565b6020908102919091010152610d4681613bda565b9050610c73565b5092915050565b610d5c612266565b60d080546001600160a01b0319166001600160a01b0392909216919091179055565b610d8833826122c0565b610da5576040516379d1e58f60e01b815260040160405180910390fd5b610db083838361231f565b505050565b8033610dc082611a26565b6001600160a01b0316816001600160a01b031614610df1576040516379d1e58f60e01b815260040160405180910390fd5b33610dfb816124e4565b600084815260d26020526040902060020154600160801b90046001600160401b031615610e3b576040516305d89a4360e11b815260040160405180910390fd5b600084815260d260205260408120600290810154610e699190600160401b90046001600160401b0316613bf3565b600086815260d260205260409020600201549091504290610e949083906001600160401b0316613c27565b6001600160401b03161115610ebc5760405163ce14619d60e01b815260040160405180910390fd5b6000610ec88242613c27565b600087815260d26020908152604080832060028101805467ffffffffffffffff60801b1916600160801b6001600160401b0388160217905560010180549084905533845260d6909252822080549394509092839290610f28908490613c52565b925050819055508060d56000828254610f419190613c52565b90915550506040516001600160401b0383168152879033907f07728a9afd9c9ac8253019aedb66f63530f4fdeb57357c7eb64c601b528e64579060200160405180910390a350505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610fe05760405162461bcd60e51b8152600401610fd790613c69565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611029600080516020613fe3833981519152546001600160a01b031690565b6001600160a01b03161461104f5760405162461bcd60e51b8152600401610fd790613cb5565b61105881612596565b604080516000808252602082019092526110749183919061259e565b50565b610db083838360405180602001604052806000815250611ecd565b813361109d82611a26565b6001600160a01b0316816001600160a01b0316146110ce576040516379d1e58f60e01b815260040160405180910390fd5b336110d8816124e4565b600085815260d260205260409020600201546001600160401b03161561116757600085815260d26020526040812060020154600160801b90046001600160401b03169081900361113b57604051635b89f32f60e11b815260040160405180910390fd5b42816001600160401b0316111561116557604051636e56f29360e01b815260040160405180910390fd5b505b600085815260d260205260409020548085111561119757604051631e9acf1760e31b815260040160405180910390fd5b604051858152869033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689060200160405180910390a38085036112a757600086815260d2602090815260408083208381556001808201859055600290910180546001600160c01b031916905560d3835281842080546001600160a01b031916905533845260d49092528220805491929091611234908490613c52565b9091555050600086815260ce60205260409020546001600160a01b03161561127357600086815260ce6020526040902080546001600160a01b03191690555b604051869060009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a46112c1565b6112b18582613c52565b600087815260d260205260409020555b33600090815260d66020526040812080548792906112e0908490613c52565b925050819055508460d560008282546112f99190613c52565b909155505060cf54611315906001600160a01b03163387612709565b505050505050565b60606000826001600160401b038111156113395761133961372a565b60405190808252806020026020018201604052801561139257816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816113575790505b50905060005b838110156114865760008585838181106113b4576113b4613b95565b60209081029290920135600081815260d3909352604090922054919250506001600160a01b03166113f85760405163aefe60c360e01b815260040160405180910390fd5b600081815260d26020908152604091829020825160a08101845281548152600182015492810192909252600201546001600160401b0380821693830193909352600160401b810483166060830152600160801b90049091166080820152835184908490811061146957611469613b95565b6020026020010181905250508061147f90613bda565b9050611398565b509392505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114d65760405162461bcd60e51b8152600401610fd790613c69565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661151f600080516020613fe3833981519152546001600160a01b031690565b6001600160a01b0316146115455760405162461bcd60e51b8152600401610fd790613cb5565b61154e82612596565b61155a8282600161259e565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115fe5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610fd7565b50600080516020613fe383398151915290565b611619612266565b61162282611a70565b1561166f5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e20697320616c726561647920737570706f727465640000000000006044820152606401610fd7565b6001600160a01b03828116600081815260c9602052604080822080549486166001600160a01b031995861617905560ca80546001810182559083527f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee1018054909416831790935591516370a0823160e01b81523060048201526370a0823190602401602060405180830381865afa15801561170e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117329190613bab565b11156117415761174182611b2b565b6040516001600160a01b0382811682528316907fdbf34b45b47a653cf4940cccbec765f72d4d63de3237306905bfc0ee28832362906020015b60405180910390a25050565b61178e612266565b61179781611a70565b6117dc5760405162461bcd60e51b8152602060048201526016602482015275151bdad95b881a5cc81b9bdd081cdd5c1c1bdc9d195960521b6044820152606401610fd7565b6001600160a01b03808216600090815260c96020526040812080546001600160a01b03198116909155909116905b60ca5481101561190d57826001600160a01b031660ca828154811061183157611831613b95565b6000918252602090912001546001600160a01b0316036118fd5760ca805461185b90600190613c52565b8154811061186b5761186b613b95565b60009182526020909120015460ca80546001600160a01b03909216918390811061189757611897613b95565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060ca8054806118d6576118d6613d01565b600082815260209020810160001990810180546001600160a01b031916905501905561190d565b61190681613bda565b905061180a565b506040516001600160a01b0382811682528316907f39dcd754ec63af4b82c4c569ff1b6b4e55a8038e6545844747e54f2f2d4e8e509060200161177a565b60005b81518110156119f75760c9600083838151811061196d5761196d613b95565b6020908102919091018101516001600160a01b0390811683529082019290925260409081016000205490516351cff8d960e01b81523360048201529116906351cff8d990602401600060405180830381600087803b1580156119ce57600080fd5b505af11580156119e2573d6000803e3d6000fd5b50505050806119f090613bda565b905061194e565b5060405133907feeab3fd62be4cb59cbdc42d5b0f676a3597ff387b9a85e62330cc17c2a3603db90600090a250565b600081815260d360205260408120546001600160a01b0316806108ed5760405163aefe60c360e01b815260040160405180910390fd5b611a64612266565b611a6e600061276c565b565b6001600160a01b03818116600090815260c96020526040812054909116611a985760006108ed565b600192915050565b60d7546001600160a01b03163314611acb576040516379d1e58f60e01b815260040160405180910390fd5b60d75460cf54611ae9916001600160a01b03918216911630856127be565b610db08383836127f6565b600054610100900460ff16611b1b5760405162461bcd60e51b8152600401610fd790613d17565b611b23612a9f565b611a6e612ace565b611b3481611a70565b611b765760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606401610fd7565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be39190613bab565b905060008111611c355760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742064697374726962757465207a65726f2062616c616e636500006044820152606401610fd7565b6001600160a01b03808416600090815260c96020526040902054611c5e91848116911683612709565b6001600160a01b03808416600090815260c960205260408082205481516306f4a2cd60e41b81529151931692636f4a2cd09260048084019391929182900301818387803b158015611cae57600080fd5b505af1158015611cc2573d6000803e3d6000fd5b50505050505050565b60005b815181101561155a57611cf9828281518110611cec57611cec613b95565b6020026020010151611b2b565b611d0281613bda565b9050611cce565b60cc805461090090613b5b565b336001600160a01b0383168103611d40576040516320c5195360e21b815260040160405180910390fd5b6001600160a01b03818116600081815260cd6020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60cf546001600160a01b03163314801590611dce5750611dcc33611a70565b155b15611dec57604051637e5f934960e01b815260040160405180910390fd5b82600003611e0d57604051632a9ffab760e21b815260040160405180910390fd5b60cf546001600160a01b03163303611e5c57600080611e2e83850185613b38565b90925090508115611e4a57611e4586838784612af5565b611e55565b611e558686836127f6565b5050611e65565b611e6533611b2b565b50505050565b606060ca805480602002602001604051908101604052809291908181526020018280548015611ec357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ea5575b5050505050905090565b611ed733836122c0565b611ef4576040516379d1e58f60e01b815260040160405180910390fd5b611eff84848461231f565b611f0b84848484612ee4565b611e6557604051630433c1a560e41b815260040160405180910390fd5b600054610100900460ff1615808015611f485750600054600160ff909116105b80611f625750303b158015611f62575060005460ff166001145b611fc55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610fd7565b6000805460ff191660011790558015611fe8576000805461ff0019166101001790555b611ff0611af4565b60cb611ffc8782613da8565b5060cc6120098682613da8565b5060cf80546001600160a01b038087166001600160a01b03199283161790925560d0805486841690831617905560d78054928516929091169190911790558015611315576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b60d15460609060006120bb846001600160a01b0316600090815260d4602052604090205490565b9050600080826001600160401b038111156120d8576120d861372a565b604051908082528060200260200182016040528015612101578160200160208202803683370190505b50905060015b84811161217257600081815260d360205260409020546001600160a01b03808916911603612162578082848151811061214257612142613b95565b60209081029190910101528261215781613bda565b935050838314612172575b61216b81613bda565b9050612107565b5082821461218257612182613e67565b95945050505050565b806001600160401b03166000036121b557604051635bf6323f60e11b815260040160405180910390fd5b61155a3383600084612af5565b6001600160a01b03918216600090815260cd6020908152604080832093909416825291909152205460ff1690565b6121f8612266565b6001600160a01b03811661225d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610fd7565b6110748161276c565b6097546001600160a01b03163314611a6e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610fd7565b6000806122cc83611a26565b9050806001600160a01b0316846001600160a01b031614806122f357506122f381856121c2565b806123175750836001600160a01b031661230c84610981565b6001600160a01b0316145b949350505050565b61232881611a26565b6001600160a01b0316836001600160a01b0316146123585760405162a1148160e81b815260040160405180910390fd5b6001600160a01b03821661237f57604051633a954ecd60e21b815260040160405180910390fd5b600081815260ce6020526040902080546001600160a01b03191690556123a4836124e4565b6123ad826124e4565b600081815260d260205260408120600181015490546123cc9190613e7d565b6001600160a01b038516600090815260d660205260408120805492935083929091906123f9908490613c52565b90915550506001600160a01b038316600090815260d6602052604081208054839290612426908490613e7d565b90915550506001600160a01b038416600090815260d460205260408120805460019290612454908490613c52565b90915550506001600160a01b038316600090815260d460205260408120805460019290612482908490613e7d565b9091555050600082815260d3602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a450505050565b60005b60ca5481101561155a5760c9600060ca838154811061250857612508613b95565b6000918252602080832091909101546001600160a01b039081168452908301939093526040918201902054905163632447c960e01b8152848316600482015291169063632447c990602401600060405180830381600087803b15801561256d57600080fd5b505af1158015612581573d6000803e3d6000fd5b505050508061258f90613bda565b90506124e7565b611074612266565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156125d157610db083612fe6565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561262b575060408051601f3d908101601f1916820190925261262891810190613bab565b60015b61268e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610fd7565b600080516020613fe383398151915281146126fd5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610fd7565b50610db0838383613082565b6040516001600160a01b038316602482015260448101829052610db090849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526130a7565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052611e659085906323b872dd60e01b90608401612735565b82612800816124e4565b60d054604051632fe9ced760e11b8152600481018590526001600160401b03841660248201526000916001600160a01b031690635fd39dae90604401602060405180830381865afa158015612859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287d9190613bab565b9050600061288b8286613e7d565b90506000846001600160401b03166000036128a75760006128a9565b425b9050600060d15460016128bc9190613e7d565b6040805160a08101825289815260208082018881526001600160401b038088168486019081528c82166060860190815260006080870181815289825260d28752888220975188559451600180890191909155925160029097018054925195518516600160801b0267ffffffffffffffff60801b19968616600160401b026fffffffffffffffffffffffffffffffff19909416989095169790971791909117939093169190911790935560d3825283812080546001600160a01b038f166001600160a01b03199091168117909155815260d4909152918220805493945090929091906129a8908490613e7d565b909155505060d180549060006129bd83613bda565b90915550506001600160a01b038816600090815260d66020526040812080548592906129ea908490613e7d565b925050819055508260d56000828254612a039190613e7d565b909155505060408051888152602081018690526001600160401b03881681830152905182916001600160a01b038b16917f0bd0744e02d09668fbdaf7745e9ae454f27484fcf18308ebc65d8508f21d59129181900360600190a360405181906001600160a01b038a16906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050505050505050565b600054610100900460ff16612ac65760405162461bcd60e51b8152600401610fd790613d17565b611a6e61317c565b600054610100900460ff16611a6e5760405162461bcd60e51b8152600401610fd790613d17565b8284612b0082611a26565b6001600160a01b0316816001600160a01b031614612b31576040516379d1e58f60e01b815260040160405180910390fd5b85612b3b816124e4565b600086815260d260205260409020600201546001600160401b03600160401b8204811691600160801b900416801580612b7c575042816001600160401b0316115b8015612b995750816001600160401b0316866001600160401b0316105b15612bb757604051635bf6323f60e11b815260040160405180910390fd5b600088815260d2602052604081205490612bd18983613e7d565b60d054604051632fe9ced760e11b8152600481018390526001600160401b038b1660248201529192506000916001600160a01b0390911690635fd39dae90604401602060405180830381865afa158015612c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c539190613bab565b90508915612c6d5760008b815260d2602052604090208290555b846001600160401b0316896001600160401b031614612cc05760008b815260d26020526040902060020180546fffffffffffffffff00000000000000001916600160401b6001600160401b038c16021790555b6001600160401b03891615612cff5760008b815260d260205260409020600201805467ffffffffffffffff1916426001600160401b0316179055612d2f565b6001600160401b03851615612d2f5760008b815260d260205260409020600201805467ffffffffffffffff191690555b60008b815260d26020526040902060020154600160801b90046001600160401b031615612d7a5760008b815260d260205260409020600201805467ffffffffffffffff60801b191690555b60008b815260d26020526040812060010154612d969085613e7d565b612da08385613e7d565b612daa9190613e95565b90506000811315612e01576001600160a01b038d16600090815260d6602052604081208054839290612ddd908490613e7d565b925050819055508060d56000828254612df69190613e7d565b90915550612e679050565b6000811215612e6757612e1681600019613ed4565b6001600160a01b038e16600090815260d6602052604081208054909190612e3e908490613c52565b90915550612e50905081600019613ed4565b60d56000828254612e619190613c52565b90915550505b60008c815260d2602090815260409182902060010184905581518581529081018490526001600160401b038c16918101919091528c906001600160a01b038f16907f8dbb057b85ca29d98e176658d7a7843f454205d9d623e5f2e7c93919334b09959060600160405180910390a350505050505050505050505050565b60006001600160a01b0384163b15612fdb57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612f28903390899088908890600401613f59565b6020604051808303816000875af1925050508015612f63575060408051601f3d908101601f19168201909252612f6091810190613f8c565b60015b612fc1573d808015612f91576040519150601f19603f3d011682016040523d82523d6000602084013e612f96565b606091505b508051600003612fb957604051630433c1a560e41b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612317565b506001949350505050565b6001600160a01b0381163b6130535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610fd7565b600080516020613fe383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61308b836131ac565b6000825111806130985750805b15610db057611e6583836131ec565b60006130fc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166132189092919063ffffffff16565b905080516000148061311d57508080602001905181019061311d9190613fa9565b610db05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610fd7565b600054610100900460ff166131a35760405162461bcd60e51b8152600401610fd790613d17565b611a6e3361276c565b6131b581612fe6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060613211838360405180606001604052806027815260200161400360279139613227565b9392505050565b6060612317848460008561329f565b6060600080856001600160a01b0316856040516132449190613fc6565b600060405180830381855af49150503d806000811461327f576040519150601f19603f3d011682016040523d82523d6000602084013e613284565b606091505b50915091506132958683838761337a565b9695505050505050565b6060824710156133005760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610fd7565b600080866001600160a01b0316858760405161331c9190613fc6565b60006040518083038185875af1925050503d8060008114613359576040519150601f19603f3d011682016040523d82523d6000602084013e61335e565b606091505b509150915061336f8783838761337a565b979650505050505050565b606083156133e95782516000036133e2576001600160a01b0385163b6133e25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610fd7565b5081612317565b61231783838151156133fe5781518083602001fd5b8060405162461bcd60e51b8152600401610fd791906134a3565b6001600160e01b03198116811461107457600080fd5b60006020828403121561344057600080fd5b813561321181613418565b60005b8381101561346657818101518382015260200161344e565b83811115611e655750506000910152565b6000815180845261348f81602086016020860161344b565b601f01601f19169290920160200192915050565b6020815260006132116020830184613477565b6000602082840312156134c857600080fd5b5035919050565b80356001600160a01b03811681146134e657600080fd5b919050565b600080604083850312156134fe57600080fd5b613507836134cf565b946020939093013593505050565b600081518084526020808501945080840160005b8381101561354e5781516001600160a01b031687529582019590820190600101613529565b509495945050505050565b600081518084526020808501945080840160005b8381101561354e5781518752958201959082019060010161356d565b60408152600061359c6040830185613515565b82810360208401526121828185613559565b6000602082840312156135c057600080fd5b613211826134cf565b6020815260006132116020830184613559565b6000806000606084860312156135f157600080fd5b6135fa846134cf565b9250613608602085016134cf565b9150604084013590509250925092565b6000806040838503121561362b57600080fd5b50508035926020909101359150565b6000806020838503121561364d57600080fd5b82356001600160401b038082111561366457600080fd5b818501915085601f83011261367857600080fd5b81358181111561368757600080fd5b8660208260051b850101111561369c57600080fd5b60209290920196919550909350505050565b602080825282518282018190526000919060409081850190868401855b8281101561371d578151805185528681015187860152858101516001600160401b0390811687870152606080830151821690870152608091820151169085015260a090930192908501906001016136cb565b5091979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156137685761376861372a565b604052919050565b600082601f83011261378157600080fd5b81356001600160401b0381111561379a5761379a61372a565b6137ad601f8201601f1916602001613740565b8181528460208386010111156137c257600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156137f257600080fd5b6137fb836134cf565b915060208301356001600160401b0381111561381657600080fd5b61382285828601613770565b9150509250929050565b6000806040838503121561383f57600080fd5b613848836134cf565b9150613856602084016134cf565b90509250929050565b6000602080838503121561387257600080fd5b82356001600160401b038082111561388957600080fd5b818501915085601f83011261389d57600080fd5b8135818111156138af576138af61372a565b8060051b91506138c0848301613740565b81815291830184019184810190888411156138da57600080fd5b938501935b838510156138ff576138f0856134cf565b825293850193908501906138df565b98975050505050505050565b80356001600160401b03811681146134e657600080fd5b60008060006060848603121561393757600080fd5b613940846134cf565b9250602084013591506139556040850161390b565b90509250925092565b801515811461107457600080fd5b6000806040838503121561397f57600080fd5b613988836134cf565b915060208301356139988161395e565b809150509250929050565b600080600080606085870312156139b957600080fd5b6139c2856134cf565b93506020850135925060408501356001600160401b03808211156139e557600080fd5b818701915087601f8301126139f957600080fd5b813581811115613a0857600080fd5b886020828501011115613a1a57600080fd5b95989497505060200194505050565b6020815260006132116020830184613515565b60008060008060808587031215613a5257600080fd5b613a5b856134cf565b9350613a69602086016134cf565b92506040850135915060608501356001600160401b03811115613a8b57600080fd5b613a9787828801613770565b91505092959194509250565b600080600080600060a08688031215613abb57600080fd5b85356001600160401b0380821115613ad257600080fd5b613ade89838a01613770565b96506020880135915080821115613af457600080fd5b50613b0188828901613770565b945050613b10604087016134cf565b9250613b1e606087016134cf565b9150613b2c608087016134cf565b90509295509295909350565b60008060408385031215613b4b57600080fd5b823591506138566020840161390b565b600181811c90821680613b6f57607f821691505b602082108103613b8f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613bbd57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600060018201613bec57613bec613bc4565b5060010190565b60006001600160401b0380841680613c1b57634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b60006001600160401b03808316818516808303821115613c4957613c49613bc4565b01949350505050565b600082821015613c6457613c64613bc4565b500390565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f821115610db057600081815260208120601f850160051c81016020861015613d895750805b601f850160051c820191505b8181101561131557828155600101613d95565b81516001600160401b03811115613dc157613dc161372a565b613dd581613dcf8454613b5b565b84613d62565b602080601f831160018114613e0a5760008415613df25750858301515b600019600386901b1c1916600185901b178555611315565b600085815260208120601f198616915b82811015613e3957888601518255948401946001909101908401613e1a565b5085821015613e575787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052600160045260246000fd5b60008219821115613e9057613e90613bc4565b500190565b60008083128015600160ff1b850184121615613eb357613eb3613bc4565b6001600160ff1b0384018313811615613ece57613ece613bc4565b50500390565b60006001600160ff1b0381841382841380821686840486111615613efa57613efa613bc4565b600160ff1b6000871282811687830589121615613f1957613f19613bc4565b60008712925087820587128484161615613f3557613f35613bc4565b87850587128184161615613f4b57613f4b613bc4565b505050929093029392505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061329590830184613477565b600060208284031215613f9e57600080fd5b815161321181613418565b600060208284031215613fbb57600080fd5b81516132118161395e565b60008251613fd881846020870161344b565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200ca1e6bb1aeec8bbb3fe2825c6e824e09c49564b69bceab61ecd9e1fed75e8d664736f6c634300080f0033