0 txs
0 calls
constructor
constructor(address feeReceiver_)
functions
checkIsPair
viewfunction checkIsPair(address pair) view returns (bool isPair)
cumulativeInfos
viewfunction cumulativeInfos(address) view returns (address factory, uint256 amount)
decodeRet2Address
purefunction decodeRet2Address(bytes input) pure returns (address)
feeReceiver
viewfunction feeReceiver() view returns (address)
fees
viewfunction fees(bytes32 nameHash) view returns (string name, uint256 lockFee, address lockFeeToken, uint24 lpFee)
getTokenLocks
viewfunction getTokenLocks(address token) view returns (uint256[] lockIds)
getUserLpLocks
viewfunction getUserLpLocks(address user) view returns (uint256[] lockIds)
getUserNormalLocks
viewfunction getUserNormalLocks(address user) view returns (uint256[] lockIds)
locks
viewfunction locks(uint256 lockId) view returns (uint256 lockId, address token, bool isLpToken, address pendingOwner, address owner, uint24 tgeBps, uint24 cycleBps, uint256 amount, uint256 startTime, uint256 endTime, uint256 cycle, uint256 unlockedAmount, bytes32 feeNameHash)
nextLockId
viewfunction nextLockId() view returns (uint256)
owner
viewfunction owner() view returns (address)
safeCallFactory
viewfunction safeCallFactory(address factory, address token0, address token1) view returns (address addr)
safeCallPair
viewfunction safeCallPair(address pair, bytes4 selector) view returns (address addr)
withdrawableTokens
viewfunction withdrawableTokens(uint256 lockId_) view returns (uint256)
acceptLock
nonpayablefunction acceptLock(uint256 lockId_)
addOrUpdateFee
nonpayablefunction addOrUpdateFee(string name_, uint24 lpFee_, uint256 lockFee_, address lockFeeToken_, bool isLp)
lock
payablefunction lock(address token_, string feeName_, address owner_, uint256 amount_, uint256 endTime_) payable returns (uint256 lockId)
lockWithPermit
payablefunction lockWithPermit(address token_, string feeName_, address owner_, uint256 amount_, uint256 endTime_, uint256 deadline_, uint8 v, bytes32 r, bytes32 s) payable returns (uint256 lockId)
renounceOwnership
nonpayablefunction renounceOwnership()
transferLock
nonpayablefunction transferLock(uint256 lockId_, address newOwner_)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unlock
nonpayablefunction unlock(uint256 lockId_)
updateFeeReceiver
nonpayablefunction updateFeeReceiver(address feeReceiver_)
updateLock
payablefunction updateLock(uint256 lockId_, uint256 moreAmount_, uint256 newEndTime_) payable
updateLockWitPermit
payablefunction updateLockWitPermit(uint256 lockId_, uint256 moreAmount_, uint256 newEndTime_, uint256 deadline_, uint8 v, bytes32 r, bytes32 s) payable
vestingLock
payablefunction vestingLock(tuple params, string feeName_) payable returns (uint256 lockId)
vestingLockWithPermit
payablefunction vestingLockWithPermit(tuple params, string feeName_, uint256 deadline_, uint8 v, bytes32 r, bytes32 s) payable returns (uint256 lockId)
events
FeeReceiverUpdated
event FeeReceiverUpdated(address feeReceiver)
OnAddFee
event OnAddFee(bytes32 nameHash, string name, uint256 lockFee, address lockFeeToken, uint24 lpFee, bool isLp)
OnEditFee
event OnEditFee(bytes32 nameHash, string name, uint256 lockFee, address lockFeeToken, uint24 lpFee, bool isLp)
OnLock
event OnLock(uint256 indexed lockId, address token, address owner, uint256 amount, uint256 endTime)
OnLockPendingTransfer
event OnLockPendingTransfer(uint256 indexed lockId, address previousOwner, address newOwner)
OnLockTransferred
event OnLockTransferred(uint256 indexed lockId, address previousOwner, address newOwner)
OnLockVested
event OnLockVested(uint256 indexed lockId, address token, address owner, uint256 unlockAmount, uint256 left, uint256 vestTime)
OnUnlock
event OnUnlock(uint256 indexed lockId, address token, address owner, uint256 amount, uint256 unlockedTime)
OnUpdated
event OnUpdated(uint256 indexed lockId, address token, address owner, uint256 newAmount, uint256 newEndTime)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
creation bytecode
0x608060405260016002553480156200001657600080fd5b5060405162003f7e38038062003f7e83398101604081905262000039916200044d565b33806200006157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200006c8162000131565b5060018055600f80546001600160a01b0319166001600160a01b0383161790556040805180820190915260058152642a27a5a2a760d91b6020820152620000c09060006701aa535d3d0c0000818062000181565b6040805180820190915260078152664c505f4f4e4c5960c81b6020820152620000f0906032600080600162000181565b60408051808201909152600a815269098a0be829c88be8aa8960b31b60208201526200012a90601966d529ae9e8600006000600162000181565b50620006bf565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200018b620003a5565b600085604051602001620001a09190620004a5565b604051602081830303815290604052805190602001209050600a612710620001c99190620004c3565b8562ffffff161115620002075760405162461bcd60e51b81526020600482015260056024820152646c7046656560d81b604482015260640162000058565b6040805160808101825287815260208082018790526001600160a01b0386168284015262ffffff881660608301526000848152600e90915291909120815182919081906200025690826200058b565b506020820151600182015560408201516002909101805460609093015162ffffff16600160a01b026001600160b81b03199093166001600160a01b0390921691909117919091179055620002ac600883620003d6565b15620002fb577f0a7d3afe54eef1f9109b60edfcfb123680120be241b66118aac1614443a11ec2828887878a88604051620002ed9695949392919062000657565b60405180910390a16200034d565b62000308600883620003f3565b507fe227bb9a0fa8f0896cc2fa7b614b73f628eeb33026709d35a89ca4faca2ff6f6828887878a88604051620003449695949392919062000657565b60405180910390a15b82156200037b5762000361600c83620003d6565b620003755762000373600c83620003f3565b505b6200039c565b62000388600a83620003d6565b6200039c576200039a600a83620003f3565b505b50505050505050565b6000546001600160a01b03163314620003d45760405163118cdaa760e01b815233600482015260240162000058565b565b600081815260018301602052604081205415155b90505b92915050565b6000620003ea838360008181526001830160205260408120546200044457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620003ed565b506000620003ed565b6000602082840312156200046057600080fd5b81516001600160a01b03811681146200047857600080fd5b9392505050565b60005b838110156200049c57818101518382015260200162000482565b50506000910152565b60008251620004b98184602087016200047f565b9190910192915050565b600082620004e157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200051157607f821691505b6020821081036200053257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200058657600081815260208120601f850160051c81016020861015620005615750805b601f850160051c820191505b8181101562000582578281556001016200056d565b5050505b505050565b81516001600160401b03811115620005a757620005a7620004e6565b620005bf81620005b88454620004fc565b8462000538565b602080601f831160018114620005f75760008415620005de5750858301515b600019600386901b1c1916600185901b17855562000582565b600085815260208120601f198616915b82811015620006285788860151825594840194600190910190840162000607565b5085821015620006475787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b86815260c06020820152600086518060c08401526200067e8160e0850160208b016200047f565b6040830196909652506001600160a01b0393909316606084015262ffffff919091166080830152151560a082015260e0601f909201601f1916010192915050565b6138af80620006cf6000396000f3fe60806040526004361061019c5760003560e01c80638da5cb5b116100ec578063c69bebe41161008a578063f2fde38b11610064578063f2fde38b146104b5578063f357dc08146104d5578063f4dadc61146104f5578063f979ef561461060a57600080fd5b8063c69bebe414610445578063cdb5661f14610465578063ec2d0b7f1461049557600080fd5b8063aea5255f116100c6578063aea5255f146103d2578063b1fa9f0d146103e5578063b3f0067414610405578063b48dd3be1461042557600080fd5b80638da5cb5b146103745780639a83c26214610392578063ab3b54f1146103a557600080fd5b80633e8af20c116101595780636dbdeab3116101335780636dbdeab3146102fc5780636eb6516e1461031c578063715018a61461034c578063778aad2e1461036157600080fd5b80633e8af20c146102675780636198e339146102c65780636518a0b3146102e657600080fd5b80630413fd80146101a1578063093cf391146101b65780630e9ea2ea146101d65780631af9093b146102135780631e59e937146102345780633170b9cc14610254575b600080fd5b6101b46101af366004612de6565b61062a565b005b3480156101c257600080fd5b506101b46101d1366004612e42565b610772565b3480156101e257600080fd5b506101f66101f1366004612e70565b61095a565b6040516001600160a01b0390911681526020015b60405180910390f35b610226610221366004612f67565b610a82565b60405190815260200161020a565b34801561024057600080fd5b506101f661024f36600461300b565b610ba9565b610226610262366004613108565b610cb7565b34801561027357600080fd5b506102a7610282366004613188565b600760205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b03909316835260208301919091520161020a565b3480156102d257600080fd5b506101b46102e1366004612e42565b610d9b565b3480156102f257600080fd5b5061022660025481565b34801561030857600080fd5b50610226610317366004612e42565b610e4a565b34801561032857600080fd5b5061033c610337366004613188565b610f18565b604051901515815260200161020a565b34801561035857600080fd5b506101b4610fc7565b6101b461036f3660046131a5565b610fdb565b34801561038057600080fd5b506000546001600160a01b03166101f6565b6102266103a03660046131d1565b61109b565b3480156103b157600080fd5b506103c56103c0366004613188565b611145565b60405161020a9190613245565b6102266103e0366004613289565b61116f565b3480156103f157600080fd5b506101b46104003660046132e7565b6111d9565b34801561041157600080fd5b50600f546101f6906001600160a01b031681565b34801561043157600080fd5b506101b4610440366004613366565b6113db565b34801561045157600080fd5b506101b4610460366004613188565b6114ab565b34801561047157600080fd5b50610485610480366004612e42565b61154c565b60405161020a94939291906133db565b3480156104a157600080fd5b506103c56104b0366004613188565b61160d565b3480156104c157600080fd5b506101b46104d0366004613188565b611631565b3480156104e157600080fd5b506103c56104f0366004613188565b61166f565b34801561050157600080fd5b50610591610510366004612e42565b6003602081905260009182526040909120805460018201546002830154938301546004840154600585015460068601546007870154600888015460099098015496986001600160a01b0380881699600160a01b9889900460ff1699928216989188169791820462ffffff90811697600160b81b90930416959194919391928d565b604080519d8e526001600160a01b039c8d1660208f01529a15159a8d019a909a52978a1660608c01529890951660808a015262ffffff93841660a08a01529290911660c088015260e08701526101008601526101208501526101408401929092526101608301919091526101808201526101a00161020a565b34801561061657600080fd5b506101f6610625366004613418565b611693565b8660025481106106555760405162461bcd60e51b815260040161064c90613469565b60405180910390fd5b600081815260036020819052604090912001546001600160a01b0316331461068f5760405162461bcd60e51b815260040161064c90613491565b6106976116a9565b600087116106d95760405162461bcd60e51b815260206004820152600f60248201526e04d6f7265416d6f756e74206973203608c1b604482015260640161064c565b6000888152600360205260409020600101546001600160a01b031663d505accf33308a898989896040518863ffffffff1660e01b815260040161072297969594939291906134b9565b600060405180830381600087803b15801561073c57600080fd5b505af1158015610750573d6000803e3d6000fd5b5050505061075f8888886116d3565b61076860018055565b5050505050505050565b60025481106107935760405162461bcd60e51b815260040161064c90613469565b60008181526003602052604090206002015433906001600160a01b031681146107f15760405162461bcd60e51b815260206004820152601060248201526f2737ba103832b73234b733a7bbb732b960811b604482015260640161064c565b6000828152600360208181526040928390209091015482516001600160a01b0391821681529084169181019190915283917f977f200b2646b170d74b50cb3968700a2cc1884b0f7918d49efdb96302cb1854910160405180910390a2600082815260036020526040902060010154600160a01b900460ff16156108c7576000828152600360208181526040808420909201546001600160a01b0316835260059052902061089e908361186e565b506001600160a01b03811660009081526005602052604090206108c1908361187a565b5061091c565b6000828152600360208181526040808420909201546001600160a01b031683526004905290206108f7908361186e565b506001600160a01b038116600090815260046020526040902061091a908361187a565b505b60009182526003602081905260409092206002810180546001600160a01b0319908116909155920180549092166001600160a01b0391909116179055565b604080516001600160a01b03848116602483015283811660448084019190915283518084039091018152606490920183526020820180516001600160e01b031663e6a4390560e01b179052915160009283928392918816916109bc91906134fa565b600060405180830381855afa9150503d80600081146109f7576040519150601f19603f3d011682016040523d82523d6000602084013e6109fc565b606091505b5091509150818015610a1057506020815110155b15610a7957604051637cbcf7ab60e11b8152309063f979ef5690610a38908490600401613516565b602060405180830381865afa925050508015610a71575060408051601f3d908101601f19168201909252610a6e91810190613529565b60015b15610a795792505b50509392505050565b6000610a8c6116a9565b6001600160a01b038a16610ab25760405162461bcd60e51b815260040161064c90613546565b428611610afa5760405162461bcd60e51b8152602060048201526016602482015275456e6454696d65203c3d2063757272656e7454696d6560501b604482015260640161064c565b60008711610b1a5760405162461bcd60e51b815260040161064c9061356d565b60405163d505accf60e01b81526001600160a01b038b169063d505accf90610b5290339030908c908b908b908b908b906004016134b9565b600060405180830381600087803b158015610b6c57600080fd5b505af1158015610b80573d6000803e3d6000fd5b50505050610b918a8a8a8a8a611886565b9050610b9c60018055565b9998505050505050505050565b60408051600481526024810182526020810180516001600160e01b03166001600160e01b031985161790529051600091829182916001600160a01b03871691610bf291906134fa565b600060405180830381855afa9150503d8060008114610c2d576040519150601f19603f3d011682016040523d82523d6000602084013e610c32565b606091505b5091509150818015610c4657506020815110155b15610caf57604051637cbcf7ab60e11b8152309063f979ef5690610c6e908490600401613516565b602060405180830381865afa925050508015610ca7575060408051601f3d908101601f19168201909252610ca491810190613529565b60015b15610caf5792505b505092915050565b6000610cc16116a9565b86516001600160a01b0316610ce85760405162461bcd60e51b815260040161064c90613546565b6000876080015111610d0c5760405162461bcd60e51b815260040161064c9061356d565b8651608088015160405163d505accf60e01b81526001600160a01b039092169163d505accf91610d4a91339130918b908b908b908b906004016134b9565b600060405180830381600087803b158015610d6457600080fd5b505af1158015610d78573d6000803e3d6000fd5b50505050610d8687876119d6565b9050610d9160018055565b9695505050505050565b806002548110610dbd5760405162461bcd60e51b815260040161064c90613469565b600081815260036020819052604090912001546001600160a01b03163314610df75760405162461bcd60e51b815260040161064c90613491565b610dff6116a9565b600082815260036020819052604090912090810154600160a01b900462ffffff1615610e3357610e2e81611c2a565b610e3c565b610e3c81611f15565b50610e4660018055565b5050565b600081815260036020818152604080842081516101a0810183528154815260018201546001600160a01b038082169583019590955260ff600160a01b918290041615159382019390935260028201548416606082015293810154928316608085015262ffffff918304821660a0850152600160b81b9092041660c0830152600481015460e0830152600581015461010083015260068101546101208301526007810154610140830152600881015461016083015260090154610180820152610f11816120b9565b9392505050565b600080610f2c8363c45a015560e01b610ba9565b90506001600160a01b038116610f455750600092915050565b6000610f5884630dfe168160e01b610ba9565b90506001600160a01b038116610f72575060009392505050565b6000610f858563d21220a760e01b610ba9565b90506001600160a01b038116610fa057506000949350505050565b6000610fad84848461095a565b6001600160a01b0396871696169590951495945050505050565b610fcf6121cf565b610fd960006121fc565b565b826002548110610ffd5760405162461bcd60e51b815260040161064c90613469565b600081815260036020819052604090912001546001600160a01b031633146110375760405162461bcd60e51b815260040161064c90613491565b61103f6116a9565b600083116110815760405162461bcd60e51b815260206004820152600f60248201526e04d6f7265416d6f756e74206973203608c1b604482015260640161064c565b61108c8484846116d3565b61109560018055565b50505050565b60006110a56116a9565b6001600160a01b0386166110cb5760405162461bcd60e51b815260040161064c90613546565b4282116111045760405162461bcd60e51b8152602060048201526007602482015266456e6454696d6560c81b604482015260640161064c565b600083116111245760405162461bcd60e51b815260040161064c9061356d565b6111318686868686611886565b905061113c60018055565b95945050505050565b6001600160a01b03811660009081526004602052604090206060906111699061224c565b92915050565b60006111796116a9565b82516001600160a01b03166111a05760405162461bcd60e51b815260040161064c90613546565b60008360800151116111c45760405162461bcd60e51b815260040161064c9061356d565b6111ce83836119d6565b905061116960018055565b6111e16121cf565b6000856040516020016111f491906134fa565b604051602081830303815290604052805190602001209050600a61271061121b91906135a8565b8562ffffff1611156112575760405162461bcd60e51b81526020600482015260056024820152646c7046656560d81b604482015260640161064c565b6040805160808101825287815260208082018790526001600160a01b0386168284015262ffffff881660608301526000848152600e90915291909120815182919081906112a4908261364a565b506020820151600182015560408201516002909101805460609093015162ffffff16600160a01b026001600160b81b03199093166001600160a01b03909216919091179190911790556112f8600883612259565b15611343577f0a7d3afe54eef1f9109b60edfcfb123680120be241b66118aac1614443a11ec2828887878a886040516113369695949392919061370a565b60405180910390a1611391565b61134e60088361187a565b507fe227bb9a0fa8f0896cc2fa7b614b73f628eeb33026709d35a89ca4faca2ff6f6828887878a886040516113889695949392919061370a565b60405180910390a15b82156113b8576113a2600c83612259565b6113b3576113b1600c8361187a565b505b6113d2565b6113c3600a83612259565b6113d257610768600a8361187a565b50505050505050565b8160025481106113fd5760405162461bcd60e51b815260040161064c90613469565b600081815260036020819052604090912001546001600160a01b031633146114375760405162461bcd60e51b815260040161064c90613491565b600083815260036020526040902060020180546001600160a01b0319166001600160a01b038416179055827f2ab916445cd7f71b7d22f037187a5e1b6086c455fa944619946ca72b62030ca233604080516001600160a01b03928316815291861660208301520160405180910390a2505050565b6114b36121cf565b6001600160a01b0381166114f85760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b604482015260640161064c565b600f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f27aae5db36d94179909d019ae0b1ac7c16d96d953148f63c0f6a0a9c8ead79ee9060200160405180910390a150565b600e60205260009081526040902080548190611567906135ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611593906135ca565b80156115e05780601f106115b5576101008083540402835291602001916115e0565b820191906000526020600020905b8154815290600101906020018083116115c357829003601f168201915b5050505060018301546002909301549192916001600160a01b0381169150600160a01b900462ffffff1684565b6001600160a01b03811660009081526005602052604090206060906111699061224c565b6116396121cf565b6001600160a01b03811661166357604051631e4fbdf760e01b81526000600482015260240161064c565b61166c816121fc565b50565b6001600160a01b03811660009081526006602052604090206060906111699061224c565b6000818060200190518101906111699190613529565b6002600154036116cc57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b600083815260036020526040902060088101541561171e5760405162461bcd60e51b8152602060048201526008602482015267155b9b1bd8dad95960c21b604482015260640161064c565b80600601548211801561173057504282115b61177c5760405162461bcd60e51b815260206004820152601760248201527f4e657720456e6454696d65206e6f7420616c6c6f776564000000000000000000604482015260640161064c565b60018101543390611797906001600160a01b03168286612271565b600182015460098301546000916117bb916001600160a01b039091169087906123b6565b915050808360040160008282546117d29190613758565b9091555050600683018490556001808401546001600160a01b03166000908152600760205260408120909101805483929061180e908490613758565b90915550506001830154600484015460405188927f22e71a177060c6128a3ec547d172d3e91ec74923801310d08729f22d8f1acdad9261185e926001600160a01b03909216918791908a9061376b565b60405180910390a2505050505050565b6000610f1183836126d4565b6000610f1183836127ce565b6000611893863385612271565b6000856040516020016118a691906134fa565b6040516020818303038152906040528051906020012090506000806118cc8987856123b6565b915091506118e3898389848960008060008b61281d565b93508115611913576001600160a01b038716600090815260056020526040902061190d908561187a565b50611937565b6001600160a01b0387166000908152600460205260409020611935908561187a565b505b6001600160a01b0389166000908152600660205260409020611959908561187a565b506001600160a01b03891660009081526007602052604081206001018054839290611985908490613758565b92505081905550837fc1d62c166ce7dbf25ddb2c2746bfe7d0a3a9c465f1190f5b2c1148177508b6618a8984896040516119c2949392919061376b565b60405180910390a250505095945050505050565b6000428360a0015111611a245760405162461bcd60e51b815260206004820152601660248201527574676554696d65203c3d2063757272656e7454696d6560501b604482015260640161064c565b6000836020015162ffffff16118015611a4657506000836040015162ffffff16115b8015611a6c575061271083604001518460200151611a649190613794565b62ffffff1611155b611aa75760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206269707360a01b604482015260640161064c565b8251611ab890338560800151612271565b600082604051602001611acb91906134fa565b604051602081830303815290604052805190602001209050600080611af986600001518760800151856123b6565b91509150611b268660000151838860600151848a60a001518b60c001518c602001518d604001518b61281d565b93508115611b5a5760608601516001600160a01b03166000908152600560205260409020611b54908561187a565b50611b82565b60608601516001600160a01b03166000908152600460205260409020611b80908561187a565b505b85516001600160a01b03166000908152600660205260409020611ba5908561187a565b5085516001600160a01b031660009081526007602052604081206001018054839290611bd2908490613758565b90915550508551606087015160a088015160405187937fc1d62c166ce7dbf25ddb2c2746bfe7d0a3a9c465f1190f5b2c1148177508b66193611c199391929091879161376b565b60405180910390a250505092915050565b604080516101a0810182528254815260018301546001600160a01b03808216602084015260ff600160a01b92839004161515938301939093526002840154831660608301526003840154928316608083015262ffffff908304811660a0830152600160b81b90920490911660c0820152600482015460e082015260058201546101008201526006820154610120820152600782015461014082015260088201546101608201526009820154610180820152600090611ce7906120b9565b90506000818360080154611cfb9190613758565b9050600082118015611d11575082600401548111155b611d515760405162461bcd60e51b81526020600482015260116024820152704e6f7468696e6720746f20756e6c6f636b60781b604482015260640161064c565b6000818460040154611d6391906137b0565b905080600003611e5657600060048501819055845460018601546001600160a01b0316825260066020526040909120611d9b9161186e565b506001840154600160a01b900460ff1615611ddd57835460038501546001600160a01b03166000908152600560205260409020611dd79161186e565b50611e06565b835460038501546001600160a01b03166000908152600460205260409020611e049161186e565b505b835460018501546040517f06a836071c6165bacd22e75784531ba1b39497da0eef7565d7f9c90eed81263091611e4d916001600160a01b039091169033908790429061376b565b60405180910390a25b6008840182905560018401546003850154611e7e916001600160a01b03908116911685612a1c565b6001808501546001600160a01b031660009081526007602052604081209091018054859290611eae9084906137b0565b909155505083546001850154604080516001600160a01b03909216825233602083015281810186905260608201849052426080830152517f93c1d15bc9a8cc3068840baf04b78dc4409a7719bd98a669d98511c89769a56b9181900360a00190a250505050565b8060060154421015611f5a5760405162461bcd60e51b815260206004820152600e60248201526d4265666f726520656e6454696d6560901b604482015260640161064c565b6001810154600160a01b900460ff1615611f9b57805460038201546001600160a01b03166000908152600560205260409020611f959161186e565b50611fc4565b805460038201546001600160a01b03166000908152600460205260409020611fc29161186e565b505b805460018201546001600160a01b03166000908152600660205260409020611feb9161186e565b50600181015460038201546004830154612012926001600160a01b03908116921690612a1c565b60048101546001808301546001600160a01b0316600090815260076020526040812090910180549091906120479084906137b0565b909155505080546001820154600383015460048401546040517f06a836071c6165bacd22e75784531ba1b39497da0eef7565d7f9c90eed8126309361209c936001600160a01b0391821693911691429061376b565b60405180910390a260048101805460089092019190915560009055565b60008160e001516000036120cf57506000919050565b8160e00151826101600151106120e757506000919050565b8161012001514210156120fc57506000919050565b81610140015160000361211157506000919050565b600061212d8360e001518460a0015162ffffff16612710612b15565b9050600061214b8460e001518560c0015162ffffff16612710612b15565b9050600084610120015142106121955782828661014001518761012001514261217491906137b0565b61217e91906135a8565b61218891906137c3565b6121929190613758565b90505b60008560e001518211156121bf578561016001518660e001516121b891906137b0565b905061113c565b610160860151610d9190836137b0565b6000546001600160a01b03163314610fd95760405163118cdaa760e01b815233600482015260240161064c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60606000610f1183612bc2565b60008181526001830160205260408120541515610f11565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156122b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122dc91906137da565b90506122ea84843085612c1e565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015612331573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235591906137da565b90508261236283836137b0565b146123af5760405162461bcd60e51b815260206004820152601a60248201527f526563656976656420616d6f756e74206e6f7420656e6f756768000000000000604482015260640161064c565b5050505050565b6000806123c285610f18565b91508115612430576123d5600c84612259565b61242b5760405162461bcd60e51b815260206004820152602160248201527f4665654e616d65206e6f7420737570706f7274656420666f72206c70546f6b656044820152603760f91b606482015260840161064c565b612487565b61243b600a84612259565b6124875760405162461bcd60e51b815260206004820152601f60248201527f4665654e616d65206e6f7420737570706f7274656420666f7220546f6b656e00604482015260640161064c565b506000828152600e602052604080822081516080810190925280548693929190829082906124b4906135ca565b80601f01602080910402602001604051908101604052809291908181526020018280546124e0906135ca565b801561252d5780601f106125025761010080835404028352916020019161252d565b820191906000526020600020905b81548152906001019060200180831161251057829003601f168201915b5050509183525050600182015460208201526002909101546001600160a01b0381166040830152600160a01b900462ffffff16606090910152905082801561257e57506000816060015162ffffff16115b15612633576000612710826060015162ffffff168761259d91906137c3565b6125a791906135a8565b90506125b381876137b0565b92506125c0878883612a1c565b600f5460405163226bf2d160e21b81526001600160a01b039182166004820152908816906389afcb449060240160408051808303816000875af115801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f91906137f3565b5050505b6020810151156126cb5760408101516001600160a01b03166126a357806020015134146126885760405162461bcd60e51b815260206004820152600360248201526246656560e81b604482015260640161064c565b600f5461269e906001600160a01b031634612d28565b6126cb565b6126cb81604001516126b23390565b600f5460208501516001600160a01b0390911690612c1e565b50935093915050565b600081815260018301602052604081205480156127bd5760006126f86001836137b0565b855490915060009061270c906001906137b0565b905080821461277157600086600001828154811061272c5761272c613817565b906000526020600020015490508087600001848154811061274f5761274f613817565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806127825761278261382d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611169565b6000915050611169565b5092915050565b600081815260018301602052604081205461281557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611169565b506000611169565b60006002549050604051806101a001604052808281526020018b6001600160a01b031681526020018a1515815260200160006001600160a01b03168152602001896001600160a01b031681526020018562ffffff1681526020018462ffffff1681526020018881526020014281526020018781526020018681526020016000815260200183815250600360008381526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548160ff02191690831515021790555060608201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060808201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160030160146101000a81548162ffffff021916908362ffffff16021790555060c08201518160030160176101000a81548162ffffff021916908362ffffff16021790555060e082015181600401556101008201518160050155610120820151816006015561014082015181600701556101608201518160080155610180820151816009015590505060026000815480929190612a0a90613843565b91905055509998505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691612a7891906134fa565b6000604051808303816000865af19150503d8060008114612ab5576040519150601f19603f3d011682016040523d82523d6000602084013e612aba565b606091505b5091509150818015612ae4575080511580612ae4575080806020019051810190612ae4919061385c565b6123af5760405162461bcd60e51b815260206004820152600260248201526114d560f21b604482015260640161064c565b6000808060001985870985870292508281108382030391505080600003612b4e5760008411612b4357600080fd5b508290049050610f11565b808411612b5a57600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b606081600001805480602002602001604051908101604052809291908181526020018280548015612c1257602002820191906000526020600020905b815481526020019060010190808311612bfe575b50505050509050919050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691612c8291906134fa565b6000604051808303816000865af19150503d8060008114612cbf576040519150601f19603f3d011682016040523d82523d6000602084013e612cc4565b606091505b5091509150818015612cee575080511580612cee575080806020019051810190612cee919061385c565b612d205760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015260640161064c565b505050505050565b604080516000808252602082019092526001600160a01b038416908390604051612d5291906134fa565b60006040518083038185875af1925050503d8060008114612d8f576040519150601f19603f3d011682016040523d82523d6000602084013e612d94565b606091505b5050905080612dcb5760405162461bcd60e51b815260206004820152600360248201526253544560e81b604482015260640161064c565b505050565b803560ff81168114612de157600080fd5b919050565b600080600080600080600060e0888a031215612e0157600080fd5b87359650602088013595506040880135945060608801359350612e2660808901612dd0565b925060a0880135915060c0880135905092959891949750929550565b600060208284031215612e5457600080fd5b5035919050565b6001600160a01b038116811461166c57600080fd5b600080600060608486031215612e8557600080fd5b8335612e9081612e5b565b92506020840135612ea081612e5b565b91506040840135612eb081612e5b565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115612eec57612eec612ebb565b604051601f8501601f19908116603f01168101908282118183101715612f1457612f14612ebb565b81604052809350858152868686011115612f2d57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612f5857600080fd5b610f1183833560208501612ed1565b60008060008060008060008060006101208a8c031215612f8657600080fd5b8935612f9181612e5b565b985060208a013567ffffffffffffffff811115612fad57600080fd5b612fb98c828d01612f47565b98505060408a0135612fca81612e5b565b965060608a0135955060808a0135945060a08a01359350612fed60c08b01612dd0565b925060e08a013591506101008a013590509295985092959850929598565b6000806040838503121561301e57600080fd5b823561302981612e5b565b915060208301356001600160e01b03198116811461304657600080fd5b809150509250929050565b803562ffffff81168114612de157600080fd5b600060e0828403121561307657600080fd5b60405160e0810181811067ffffffffffffffff8211171561309957613099612ebb565b60405290508082356130aa81612e5b565b81526130b860208401613051565b60208201526130c960408401613051565b604082015260608301356130dc81612e5b565b806060830152506080830135608082015260a083013560a082015260c083013560c08201525092915050565b600080600080600080610180878903121561312257600080fd5b61312c8888613064565b955060e087013567ffffffffffffffff81111561314857600080fd5b61315489828a01612f47565b955050610100870135935061316c6101208801612dd0565b9250610140870135915061016087013590509295509295509295565b60006020828403121561319a57600080fd5b8135610f1181612e5b565b6000806000606084860312156131ba57600080fd5b505081359360208301359350604090920135919050565b600080600080600060a086880312156131e957600080fd5b85356131f481612e5b565b9450602086013567ffffffffffffffff81111561321057600080fd5b61321c88828901612f47565b945050604086013561322d81612e5b565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b8181101561327d57835183529284019291840191600101613261565b50909695505050505050565b600080610100838503121561329d57600080fd5b6132a78484613064565b915060e083013567ffffffffffffffff8111156132c357600080fd5b6132cf85828601612f47565b9150509250929050565b801515811461166c57600080fd5b600080600080600060a086880312156132ff57600080fd5b853567ffffffffffffffff81111561331657600080fd5b61332288828901612f47565b95505061333160208701613051565b935060408601359250606086013561334881612e5b565b91506080860135613358816132d9565b809150509295509295909350565b6000806040838503121561337957600080fd5b82359150602083013561304681612e5b565b60005b838110156133a657818101518382015260200161338e565b50506000910152565b600081518084526133c781602086016020860161338b565b601f01601f19169290920160200192915050565b6080815260006133ee60808301876133af565b6020830195909552506001600160a01b0392909216604083015262ffffff16606090910152919050565b60006020828403121561342a57600080fd5b813567ffffffffffffffff81111561344157600080fd5b8201601f8101841361345257600080fd5b61346184823560208401612ed1565b949350505050565b6020808252600e908201526d125b9d985b1a59081b1bd8dad25960921b604082015260600190565b6020808252600e908201526d2737ba103637b1b59037bbb732b960911b604082015260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6000825161350c81846020870161338b565b9190910192915050565b602081526000610f1160208301846133af565b60006020828403121561353b57600080fd5b8151610f1181612e5b565b6020808252600d908201526c24b73b30b634b2103a37b5b2b760991b604082015260600190565b6020808252600b908201526a0416d6f756e7420697320360ac1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826135c557634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806135de57607f821691505b6020821081036135fe57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115612dcb57600081815260208120601f850160051c8101602086101561362b5750805b601f850160051c820191505b81811015612d2057828155600101613637565b815167ffffffffffffffff81111561366457613664612ebb565b6136788161367284546135ca565b84613604565b602080601f8311600181146136ad57600084156136955750858301515b600019600386901b1c1916600185901b178555612d20565b600085815260208120601f198616915b828110156136dc578886015182559484019460019091019084016136bd565b50858210156136fa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b86815260c06020820152600061372360c08301886133af565b6040830196909652506001600160a01b0393909316606084015262ffffff919091166080830152151560a09091015292915050565b8082018082111561116957611169613592565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b62ffffff8181168382160190808211156127c7576127c7613592565b8181038181111561116957611169613592565b808202811582820484141761116957611169613592565b6000602082840312156137ec57600080fd5b5051919050565b6000806040838503121561380657600080fd5b505080516020909101519092909150565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006001820161385557613855613592565b5060010190565b60006020828403121561386e57600080fd5b8151610f11816132d956fea26469706673582212206f141341a39c5a8f2aa5ced7bc0f8c306113f6df16f1917faf5aad7ae531f06c64736f6c63430008140033000000000000000000000000521faacdfa097ad35a32387727e468f7fd032fd6