32 txs
4.6k calls
constructor
constructor(address _core, address _accounting, address _receiptToken, address _stakedToken, address _lockingModule)
functions
accounting
viewfunction accounting() view returns (address)
canEnterOrExitStakedToken
viewfunction canEnterOrExitStakedToken() view returns (bool)
core
viewfunction core() view returns (address)
escrow
viewfunction escrow() view returns (address)
interpolationDuration
viewfunction interpolationDuration() view returns (uint256)
liquidReturnMultiplier
viewfunction liquidReturnMultiplier() view returns (uint256)
lockingModule
viewfunction lockingModule() view returns (address)
MAX_PERFORMANCE_FEE
viewfunction MAX_PERFORMANCE_FEE() view returns (uint256)
paused
viewfunction paused() view returns (bool)
performanceFee
viewfunction performanceFee() view returns (uint256)
performanceFeeRecipient
viewfunction performanceFeeRecipient() view returns (address)
point
viewfunction point() view returns (uint32 lastAccrued, uint32 lastClaimed, uint208 rate)
receiptToken
viewfunction receiptToken() view returns (address)
safetyBufferSize
viewfunction safetyBufferSize() view returns (uint256)
stakedReceiptTokenCache
viewfunction stakedReceiptTokenCache() view returns (uint48 blockTimestamp, uint208 amount)
stakedToken
viewfunction stakedToken() view returns (address)
targetIlliquidRatio
viewfunction targetIlliquidRatio() view returns (uint256)
unaccruedYield
viewfunction unaccruedYield() view returns (int256)
vested
viewfunction vested() view returns (uint256)
vesting
viewfunction vesting() view returns (uint256)
accrue
nonpayablefunction accrue()
distributeInterpolationRewards
nonpayablefunction distributeInterpolationRewards()
emergencyAction
payablefunction emergencyAction(tuple[] calls) payable returns (bytes[] returnData)
getCachedStakedReceiptTokens
nonpayablefunction getCachedStakedReceiptTokens() returns (uint256)
migrateSafetyBuffer
nonpayablefunction migrateSafetyBuffer(address _source)
pause
nonpayablefunction pause()
setCanEnterOrExitStakedToken
nonpayablefunction setCanEnterOrExitStakedToken(bool _value)
setCore
nonpayablefunction setCore(address newCore)
setInterpolationDuration
nonpayablefunction setInterpolationDuration(uint256 _duration)
setLiquidReturnMultiplier
nonpayablefunction setLiquidReturnMultiplier(uint256 _multiplier)
setPerformanceFeeAndRecipient
nonpayablefunction setPerformanceFeeAndRecipient(uint256 _percent, address _recipient)
setSafetyBufferSize
nonpayablefunction setSafetyBufferSize(uint256 _safetyBufferSize)
setTargetIlliquidRatio
nonpayablefunction setTargetIlliquidRatio(uint256 _ratio)
unpause
nonpayablefunction unpause()
events
CoreUpdate
event CoreUpdate(address indexed oldCore, address indexed newCore)
InterpolationDurationUpdated
event InterpolationDurationUpdated(uint256 indexed timestamp, uint256 duration)
LiquidMultiplierUpdated
event LiquidMultiplierUpdated(uint256 indexed timestamp, uint256 multiplier)
Paused
event Paused(address account)
PerformanceFeeSettingsUpdated
event PerformanceFeeSettingsUpdated(uint256 indexed timestamp, uint256 percentage, address recipient)
SafetyBufferSizeUpdated
event SafetyBufferSizeUpdated(uint256 indexed timestamp, uint256 value)
TargetIlliquidRatioUpdated
event TargetIlliquidRatioUpdated(uint256 indexed timestamp, uint256 multiplier)
Unpaused
event Unpaused(address account)
YieldAccrued
event YieldAccrued(uint256 indexed timestamp, int256 yield)
errors
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
PerformanceFeeRecipientIsZeroAddress
error PerformanceFeeRecipientIsZeroAddress(address _recipient)
PerformanceFeeTooHigh
error PerformanceFeeTooHigh(uint256 _percent)
StakedTokenNotAvailable
error StakedTokenNotAvailable()
TargetIlliquidRatioTooHigh
error TargetIlliquidRatioTooHigh(uint256 _ratio)
UnderlyingCallReverted
error UnderlyingCallReverted(bytes returnData)
creation bytecode
0x670de0b6b3a76400006004556170806007556101806040524263ffffffff166101208190526101408190525f61016052600880546001600160401b0319168217640100000000909202919091179055600980546001600160d01b0319169055348015610069575f5ffd5b506040516132b73803806132b783398101604081905261008891610198565b5f80546001600160a01b0380881661010002610100600160a81b03199092169190911790915584811660805283811660a05282811660c052811660e0526040516100d190610170565b604051809103905ff0801580156100ea573d5f5f3e3d5ffd5b506001600160a01b039081166101005260a05160405163095ea7b360e01b815283831660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015610141573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061016591906101f9565b50505050505061021f565b61035b80612f5c83390190565b80516001600160a01b0381168114610193575f5ffd5b919050565b5f5f5f5f5f60a086880312156101ac575f5ffd5b6101b58661017d565b94506101c36020870161017d565b93506101d16040870161017d565b92506101df6060870161017d565b91506101ed6080870161017d565b90509295509295909350565b5f60208284031215610209575f5ffd5b81518015158114610218575f5ffd5b9392505050565b60805160a05160c05160e05161010051612c0b6103515f395f818161055201528181610af001528181610e53015261200601525f818161024e01528181611c8401528181611d120152818161212c0152818161229e0152818161233b01526123b501525f818161051f01528181610ac1015281816119c701528181612437015281816124ec015261256701525f81816105850152818161089a0152818161092f015281816109de01528181610a9901528181610e7d015281816116b6015281816117df015281816119f101528181611be901528181611dc801528181611e5201528181611f4d01528181612035015281816121b00152818161224001528181612464015281816125d7015261266c01525f818161049b015281816116e20152818161175001526126990152612c0b5ff3fe6080604052600436106101f1575f3560e01c8063845ce76811610108578063e2fdcc171161009d578063f2f4eb261161006d578063f2f4eb26146105db578063f6339d89146105fc578063f843336c14610655578063f8ba4cff14610669578063fea5657c1461067d575f5ffd5b8063e2fdcc1714610541578063ec78e83214610574578063ed27f7c9146105a7578063efa72e9d146105c6575f5ffd5b8063aee459dd116100d8578063aee459dd146104bd578063bdca9165146104dc578063be6972ac146104f7578063cc7a262e1461050e575f5ffd5b8063845ce7681461043757806385e3e8de1461045657806387788782146104755780639624e83e1461048a575f5ffd5b80632e6cfc931161018957806344c63eec1161015957806344c63eec146103ae5780635c975abb146103c25780637df3927e146103e457806380009630146104045780638456cb5914610423575f5ffd5b80632e6cfc93146103475780632f1183d81461035c5780633eb901a61461037b5780633f4ba83a1461039a575f5ffd5b80631d6e11f2116101c45780631d6e11f2146102a75780631f91fa03146102bb57806325fc3ebe146102d05780632ba9fcd5146102e5575f5ffd5b806303417287146101f5578063047050e81461021657806312d9bdab1461023d57806314ffc79314610288575b5f5ffd5b348015610200575f5ffd5b5061021461020f36600461285b565b610691565b005b348015610221575f5ffd5b5061022a610779565b6040519081526020015b60405180910390f35b348015610248575f5ffd5b506102707f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610234565b348015610293575f5ffd5b506102146102a2366004612891565b6107a9565b3480156102b2575f5ffd5b50610214610a51565b3480156102c6575f5ffd5b5061022a60015481565b3480156102db575f5ffd5b5061022a60055481565b3480156102f0575f5ffd5b5060085460095461031b9163ffffffff8082169264010000000090920416906001600160d01b031683565b6040805163ffffffff94851681529390921660208401526001600160d01b031690820152606001610234565b348015610352575f5ffd5b5061022a60045481565b348015610367575f5ffd5b506102146103763660046128ac565b610b46565b348015610386575f5ffd5b506102146103953660046128ac565b610c70565b3480156103a5575f5ffd5b50610214610d64565b3480156103b9575f5ffd5b5061022a610e3c565b3480156103cd575f5ffd5b505f5460ff165b6040519015158152602001610234565b6103f76103f23660046128c3565b610ee8565b6040516102349190612962565b34801561040f575f5ffd5b5061021461041e366004612891565b61116a565b34801561042e575f5ffd5b50610214611247565b348015610442575f5ffd5b506102146104513660046129c5565b61131f565b348015610461575f5ffd5b506102146104703660046128ac565b6114b7565b348015610480575f5ffd5b5061022a60025481565b348015610495575f5ffd5b506102707f000000000000000000000000000000000000000000000000000000000000000081565b3480156104c8575f5ffd5b506102146104d73660046128ac565b6115ab565b3480156104e7575f5ffd5b5061022a6702c68af0bb14000081565b348015610502575f5ffd5b506103d460ff5f5c1681565b348015610519575f5ffd5b506102707f000000000000000000000000000000000000000000000000000000000000000081565b34801561054c575f5ffd5b506102707f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f575f5ffd5b506102707f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b2575f5ffd5b50600354610270906001600160a01b031681565b3480156105d1575f5ffd5b5061022a60075481565b3480156105e6575f5ffd5b505f5461010090046001600160a01b0316610270565b348015610607575f5ffd5b5060065461062f9065ffffffffffff811690660100000000000090046001600160d01b031682565b6040805165ffffffffffff90931683526001600160d01b03909116602083015201610234565b348015610660575f5ffd5b5061022a61169f565b348015610674575f5ffd5b5061021461186f565b348015610688575f5ffd5b5061022a6118f6565b5f54604051632474521560e21b81527f276ea66e969b021a947c47a128f4d53c55387336443ef7a5391a75f0d2e48d25600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610702573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072691906129f3565b6107665760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b815f805c60ff191682151517905d505050565b5f60ff815c1661079c57604051633400dad560e11b815260040160405180910390fd5b6107a4611962565b905090565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa15801561081a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083e91906129f3565b6108795760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161075d565b6040516370a0823160e01b81526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156108e1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109059190612a0e565b604051636eb1769f60e11b81526001600160a01b0385811660048301523060248301529192505f917f0000000000000000000000000000000000000000000000000000000000000000169063dd62ed3e90604401602060405180830381865afa158015610974573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109989190612a0e565b90505f8282106109a857826109aa565b815b90508015610a4a576040516323b872dd60e01b81526001600160a01b038681166004830152306024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303815f875af1158015610a24573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4891906129f3565b505b5050505050565b5f610a5a6118f6565b6008805467ffffffff0000000019166401000000004263ffffffff160217905590508015610b43576040516303bcd7f360e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690630779afe6906064015f604051808303815f87803b158015610b31575f5ffd5b505af1158015610a4a573d5f5f3e3d5ffd5b50565b5f54604051632474521560e21b81525f516020612bb65f395f51905f52600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610ba4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc891906129f3565b610c035760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161075d565b81670de0b6b3a7640000811115610c305760405163e299400d60e01b815260040161075d91815260200190565b50600582905560405182815242907f02a6bcd1ae1882a47f8d6d3393d0540786d609fb8ef48ee6f069ef93777a6ebc906020015b60405180910390a25050565b5f54604051632474521560e21b81525f516020612bb65f395f51905f52600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610cce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf291906129f3565b610d2d5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161075d565b600782905560405182815242907fc2af70983f5a9782f3c9b120a93935d68085856aa4e255fb95f00e66159d2ad090602001610c64565b5f54604051632474521560e21b81527fe7276a2a84d8de556657ec9cf93a55a7d66f096e529d0582ed08e9e2208b92b5600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610dd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df991906129f3565b610e345760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161075d565b610b43611a9b565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610ec4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a49190612a0e565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a6004820181905233602483015260609290916101009091046001600160a01b0316906391d1485490604401602060405180830381865afa158015610f5e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8291906129f3565b610fbd5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161075d565b8267ffffffffffffffff811115610fd657610fd6612a25565b60405190808252806020026020018201604052801561100957816020015b6060815260200190600190039081610ff45790505b5091505f5b83811015611162575f85858381811061102957611029612a39565b905060200281019061103b9190612a4d565b611049906020810190612891565b90505f86868481811061105e5761105e612a39565b90506020028101906110709190612a4d565b602001359050365f88888681811061108a5761108a612a39565b905060200281019061109c9190612a4d565b6110aa906040810190612a6b565b915091505f5f856001600160a01b03168585856040516110cb929190612ab5565b5f6040518083038185875af1925050503d805f8114611105576040519150601f19603f3d011682016040523d82523d5f602084013e61110a565b606091505b509150915081819061113057604051634ad176bb60e01b815260040161075d9190612ac4565b508089888151811061114457611144612a39565b6020026020010181905250505050505050808060010191505061100e565b505092915050565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa1580156111db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ff91906129f3565b61123a5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161075d565b61124382611aec565b5050565b5f54604051632474521560e21b81527ffcb9fcbfa83b897fb2d5cf4b58962164105c1e71489a37ef3ae0db3fdce576f6600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa1580156112b8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112dc91906129f3565b6113175760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161075d565b610b43611b51565b5f54604051632474521560e21b81525f516020612bb65f395f51905f52600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa15801561137d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a191906129f3565b6113dc5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161075d565b826702c68af0bb1400008111156114095760405163b4ea6d5760e01b815260040161075d91815260200190565b50821561144657816001600160a01b0381166114445760405163048f87e560e31b81526001600160a01b03909116600482015260240161075d565b505b60028390556003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915560408051858152602081019290925242917fc60b1772d13a32078285a149ad1f03b32a1f6df54245b584a8531d6f87f9e9f4910160405180910390a2505050565b5f54604051632474521560e21b81525f516020612bb65f395f51905f52600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611515573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153991906129f3565b6115745760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161075d565b600482905560405182815242907f0e55cc3e5c112dfa7651f177a66f846bd9975bd44fb3a7db47ba0346ffafb6c890602001610c64565b5f54604051632474521560e21b81525f516020612bb65f395f51905f52600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611609573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061162d91906129f3565b6116685760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161075d565b600182905560405182815242907fb7ab3434f2f51870b4678303479d0d5e9d514f29711a30a1af70d696890dc66090602001610c64565b6040516315d5220f60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063aea9107890602401602060405180830381865afa158015611727573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061174b9190612a0e565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d2c0dc146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ce9190612a0e565b90505f6117db8284611b8d565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611839573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061185d9190612a0e565b6118679082612aea565b935050505090565b611877611baa565b61187f610a51565b5f61188861169f565b90505f8113156118a05761189b81611bcf565b6118b9565b5f8112156118b9576118b96118b482612b10565b612199565b427f662151f741be4ee85874103ff68a554d84943b85246bcb342d1c9642e22d159e826040516118eb91815260200190565b60405180910390a250565b5f5f611900610e3c565b9050805f03611910575f91505090565b6008545f906119309063ffffffff808216916401000000009004166127df565b905061195b826119408342612b2a565b60095461195691906001600160d01b0316612b3d565b6127ee565b9250505090565b6040805180820190915260065465ffffffffffff811680835266010000000000009091046001600160d01b031660208301525f91904290036119b057602001516001600160d01b0316919050565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611a38573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a5c9190612a0e565b90506001600160d01b03811115611a7557611a75612b54565b6001600160d01b03811666010000000000000265ffffffffffff42161760065592915050565b611aa36127fd565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80546001600160a01b0383811661010081810274ffffffffffffffffffffffffffffffffffffffff0019851617855560405193049190911692909183917f9209b7c8c06dcfd261686a663e7c55989337b18d59da5433c6f2835fb697092091a35050565b611b59611baa565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611acf3390565b5f611ba183670de0b6b3a76400008461281f565b90505b92915050565b5f5460ff1615611bcd5760405163d93c066560e01b815260040160405180910390fd5b565b5f611be4600454611bde611962565b9061283a565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c43573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c679190612a0e565b90505f611c7f6005548361283a90919063ffffffff16565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad7a672f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cde573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d029190612a0e565b905081811015611d0f5750805b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636f2c590a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d909190612a0e565b9050611d9c828261283a565b91505f611da98387612b68565b6040516340c10f1960e01b8152306004820152602481018990529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044015f604051808303815f87803b158015611e11575f5ffd5b505af1158015611e23573d5f5f3e3d5ffd5b50506001549150508015611f08576040516370a0823160e01b81523060048201525f9089906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611e97573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ebb9190612a0e565b611ec59190612b2a565b905081811015611f065781611eda8a83612b68565b1115611efb57611eea8183612b2a565b611ef4908a612b2a565b9850611f06565b505050505050505050565b505b6002548015611fc9575f611f1c8a8361283a565b90508015611fc75760035460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af1158015611f95573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fb991906129f3565b50611fc4818b612b2a565b99505b505b825f03611fdb57505050505050505050565b5f611fe78a8a8661281f565b905080156121035760405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af115801561207b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209f91906129f3565b506007546120ab610e3c565b6120b59190612b7b565b600980547fffffffffffff0000000000000000000000000000000000000000000000000000166001600160d01b03929092169190911790556008805463ffffffff19164263ffffffff161790555b5f61210e828c612b2a565b9050801561218c576040516345efb3f960e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638bdf67f2906024015f604051808303815f87803b158015612175575f5ffd5b505af1158015612187573d5f5f3e3d5ffd5b505050505b5050505050505050505050565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156121fd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122219190612a0e565b905081811061229b57604051630852cd8d60e31b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c68906024015f604051808303815f87803b158015612289575f5ffd5b505af1158015610a48573d5f5f3e3d5ffd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad7a672f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061231c9190612a0e565b905080831161239f57604051632652277760e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906326522777906024015f604051808303815f87803b158015612384575f5ffd5b505af1158015612396573d5f5f3e3d5ffd5b50505050505050565b604051632652277760e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906326522777906024015f604051808303815f87803b1580156123fe575f5ffd5b505af1158015612410573d5f5f3e3d5ffd5b5050505080836124209190612b2a565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529194505f917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156124a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124cd9190612a0e565b905080841161255157604051632652277760e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906326522777906024015f604051808303815f87803b158015612535575f5ffd5b505af1158015612547573d5f5f3e3d5ffd5b5050505050505050565b604051632652277760e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906326522777906024015f604051808303815f87803b1580156125b0575f5ffd5b505af11580156125c2573d5f5f3e3d5ffd5b5050505080846125d29190612b2a565b93505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612631573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126559190612a0e565b60405163eb37d34960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529192505f917f0000000000000000000000000000000000000000000000000000000000000000169063eb37d34990602401602060405180830381865afa1580156126de573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127029190612b9a565b90505f816001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612741573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127659190612a0e565b90505f61277d6127758986612b2a565b83908661281f565b6040516391b7f5ed60e01b8152600481018290529091506001600160a01b038416906391b7f5ed906024015f604051808303815f87803b1580156127bf575f5ffd5b505af11580156127d1573d5f5f3e3d5ffd5b505050505050505050505050565b5f828218828411028218611ba1565b5f828218828410028218611ba1565b5f5460ff16611bcd57604051638dfc202b60e01b815260040160405180910390fd5b5f825f190484118302158202612833575f5ffd5b5091020490565b5f611ba18383670de0b6b3a764000061281f565b8015158114610b43575f5ffd5b5f6020828403121561286b575f5ffd5b81356128768161284e565b9392505050565b6001600160a01b0381168114610b43575f5ffd5b5f602082840312156128a1575f5ffd5b81356128768161287d565b5f602082840312156128bc575f5ffd5b5035919050565b5f5f602083850312156128d4575f5ffd5b823567ffffffffffffffff8111156128ea575f5ffd5b8301601f810185136128fa575f5ffd5b803567ffffffffffffffff811115612910575f5ffd5b8560208260051b8401011115612924575f5ffd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156129b957603f198786030184526129a4858351612934565b94506020938401939190910190600101612988565b50929695505050505050565b5f5f604083850312156129d6575f5ffd5b8235915060208301356129e88161287d565b809150509250929050565b5f60208284031215612a03575f5ffd5b81516128768161284e565b5f60208284031215612a1e575f5ffd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612a61575f5ffd5b9190910192915050565b5f5f8335601e19843603018112612a80575f5ffd5b83018035915067ffffffffffffffff821115612a9a575f5ffd5b602001915036819003821315612aae575f5ffd5b9250929050565b818382375f9101908152919050565b602081525f611ba16020830184612934565b634e487b7160e01b5f52601160045260245ffd5b8181035f831280158383131683831282161715612b0957612b09612ad6565b5092915050565b5f600160ff1b8201612b2457612b24612ad6565b505f0390565b81810381811115611ba457611ba4612ad6565b8082028115828204841417611ba457611ba4612ad6565b634e487b7160e01b5f52600160045260245ffd5b80820180821115611ba457611ba4612ad6565b5f82612b9557634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612baa575f5ffd5b81516128768161287d56fe3947e2f542c6c46c543fa4f79cbd1e27fea37ed249bc3caf992570d19123642ea2646970667358221220892093dc64c6bfcf472a0440e4117fc88364714c8e958cf4995dc9f317babe7764736f6c634300081c00336080604052348015600e575f5ffd5b503380603357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b603a81603f565b50608e565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6102c08061009b5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80630779afe61461004e578063715018a6146100635780638da5cb5b1461006b578063f2fde38b14610089575b5f5ffd5b61006161005c366004610212565b61009c565b005b61006161011a565b5f54604080516001600160a01b039092168252519081900360200190f35b61006161009736600461024b565b61012d565b6100a461016f565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af11580156100f0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610114919061026b565b50505050565b61012261016f565b61012b5f61019b565b565b61013561016f565b6001600160a01b03811661016357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61016c8161019b565b50565b5f546001600160a01b0316331461012b5760405163118cdaa760e01b815233600482015260240161015a565b5f80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461020d575f5ffd5b919050565b5f5f5f60608486031215610224575f5ffd5b61022d846101f7565b925061023b602085016101f7565b9150604084013590509250925092565b5f6020828403121561025b575f5ffd5b610264826101f7565b9392505050565b5f6020828403121561027b575f5ffd5b81518015158114610264575f5ffdfea26469706673582212203dbdf998e708b0a3f240da56a9fe1b1d5769632bc11e866a41925fc6d0df0aec64736f6c634300081c0033000000000000000000000000f6d48735eccf12bdc1df2674b1ce3fcb3bd254900000000000000000000000007a5c5dba4fbd0e1e1a2ecdbe752fae55f6e842b300000000000000000000000048f9e38f3070ad8945dfeae3fa70987722e3d89c000000000000000000000000dbdc1ef57537e34680b898e1febd3d68c7389bcb0000000000000000000000001d95cc100d6cd9c7bbdbd7cb328d99b3d6037ff7