0 txs
477 calls
constructor
constructor(address _core, address _accounting)
functions
_COW_SETTLEMENT
viewfunction _COW_SETTLEMENT() view returns (address)
_COW_VAULT_RELAYER
viewfunction _COW_VAULT_RELAYER() view returns (address)
_SIGN_COOLDOWN
viewfunction _SIGN_COOLDOWN() view returns (uint256)
_SUSDE
viewfunction _SUSDE() view returns (address)
_USDC
viewfunction _USDC() view returns (address)
_USDE
viewfunction _USDE() view returns (address)
accounting
viewfunction accounting() view returns (address)
assets
viewfunction assets() view returns (uint256)
assetToken
viewfunction assetToken() view returns (address)
assetTokens
purefunction assetTokens() pure returns (address[])
cap
viewfunction cap() view returns (uint256)
convert
viewfunction convert(address _tokenIn, address _tokenOut, uint256 _amountIn) view returns (uint256)
core
viewfunction core() view returns (address)
isAssetSupported
purefunction isAssetSupported(address _asset) pure returns (bool)
lastOrderSignTimestamp
viewfunction lastOrderSignTimestamp() view returns (uint256)
liquidity
viewfunction liquidity() view returns (uint256)
maturity
viewfunction maturity() view returns (uint256)
maxDeposit
viewfunction maxDeposit() view returns (uint256)
maxSlippage
viewfunction maxSlippage() view returns (uint256)
paused
viewfunction paused() view returns (bool)
settlementContract
viewfunction settlementContract() view returns (address)
vaultRelayer
viewfunction vaultRelayer() view returns (address)
beginUnstake
nonpayablefunction beginUnstake(uint256 _susdeToUnstake)
completeUnstake
nonpayablefunction completeUnstake()
deposit
nonpayablefunction deposit()
emergencyAction
payablefunction emergencyAction(tuple[] calls) payable returns (bytes[] returnData)
pause
nonpayablefunction pause()
setCap
nonpayablefunction setCap(uint256 _newCap)
setCore
nonpayablefunction setCore(address newCore)
setMaxSlippage
nonpayablefunction setMaxSlippage(uint256 _maxSlippage)
signSwapOrder
nonpayablefunction signSwapOrder(address _tokenIn, address _tokenOut, uint256 _amountIn, uint256 _minAmountOut) returns (bytes)
stake
nonpayablefunction stake(uint256 _usdeIn)
unpause
nonpayablefunction unpause()
unstake
nonpayablefunction unstake(uint256 _susdeToUnstake)
withdraw
nonpayablefunction withdraw(uint256 amount, address to)
withdrawSecondaryAsset
nonpayablefunction withdrawSecondaryAsset(address _asset, uint256 _amount, address _to)
events
AssetsUpdated
event AssetsUpdated(uint256 timestamp, uint256 assetsBefore, uint256 assetsAfter)
CapUpdated
event CapUpdated(uint256 newCap)
CoreUpdate
event CoreUpdate(address indexed oldCore, address indexed newCore)
MaxSlippageUpdated
event MaxSlippageUpdated(uint256 newMaxSlippage)
OrderSigned
event OrderSigned(uint256 indexed timestamp, bytes orderUid, (address sellToken, address buyToken, address receiver, uint256 sellAmount, uint256 buyAmount, uint32 validTo, bytes32 appData, uint256 feeAmount, bytes32 kind, bool partiallyFillable, bytes32 sellTokenBalance, bytes32 buyTokenBalance) order, uint32 validTo, uint256 buyAmount)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
errors
CapExceeded
error CapExceeded(uint256 newAmount, uint256 cap)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InvalidAmountIn
error InvalidAmountIn(uint256 amountIn)
InvalidAmountOut
error InvalidAmountOut(uint256 minOut, uint256 provided)
InvalidAsset
error InvalidAsset(address asset)
InvalidFarm
error InvalidFarm(address farm)
InvalidToken
error InvalidToken(address token)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SlippageTooHigh
error SlippageTooHigh(uint256 minAssetsOut, uint256 assetsReceived)
SwapCooldown
error SwapCooldown()
UnderlyingCallReverted
error UnderlyingCallReverted(bytes returnData)
creation bytecode
0x6101006040526001600355348015610015575f5ffd5b506040516130ac3803806130ac833981016040819052610034916100d1565b5f8054610100600160a81b0319166101006001600160a01b039485160217905573a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486080525f196001551660a052739008d19f58aabd9ed0d60971565aa8510560ab4160c05273c92e8bdf79f0507f65a392b0ab4667716bfe011060e052670dd99bb65dd70000600255610102565b80516001600160a01b03811681146100cc575f5ffd5b919050565b5f5f604083850312156100e2575f5ffd5b6100eb836100b6565b91506100f9602084016100b6565b90509250929050565b60805160a05160c05160e051612f3161017b5f395f81816105b3015261244001525f8181610661015261272201525f81816105800152818161091b015281816109a8015281816113bf015281816114d401526115e901525f818161023c015281816107fe01528181610f6e01526121560152612f315ff3fe608060405260043610610206575f3560e01c80636083e59a116101135780639387e6731161009d578063d0e30db01161006d578063d0e30db0146105f4578063e69dfb3a14610608578063e9607c011461062f578063ea42418b14610650578063f2f4eb2614610683575f5ffd5b80639387e673146105435780639624e83e1461056f5780639b552cc2146105a2578063a694fc3a146105d5575f5ffd5b806378c379d2116100e357806378c379d2146104b45780637df3927e146104db57806380009630146104fb5780638456cb591461051a5780638c04166f1461052e575f5ffd5b80636083e59a1461046357806363803b231461047757806371a973051461048b578063761a1ea31461049f575f5ffd5b80633f4ba83a11610194578063461570771161016457806346157077146103b9578063464b4158146103d857806347786d37146104075780635c975abb146104265780636026a0a01461043c575f5ffd5b80633f4ba83a146103525780633ffb788e146103665780634200800b1461037b57806343f68a491461039a575f5ffd5b8063248391ff116101da578063248391ff146102b15780632e17de78146102d05780632e71fe8b146102ef578063355274ea14610316578063359217d11461032b575f5ffd5b8062f714ce1461020a5780631083f7611461022b5780631a6865021461027b578063204f83f91461029d575b5f5ffd5b348015610215575f5ffd5b5061022961022436600461299b565b6106a4565b005b348015610236575f5ffd5b5061025e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610286575f5ffd5b5061028f6107e7565b604051908152602001610272565b3480156102a8575f5ffd5b5061028f610874565b3480156102bc575f5ffd5b5061028f6102cb3660046129c5565b6108f8565b3480156102db575f5ffd5b506102296102ea3660046129ff565b610a28565b3480156102fa575f5ffd5b5061025e734c9edd5852cd905f086c759e8383e09bff1e68b381565b348015610321575f5ffd5b5061028f60015481565b348015610336575f5ffd5b5061025e73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b34801561035d575f5ffd5b50610229610b73565b348015610371575f5ffd5b5061028f6104b081565b348015610386575f5ffd5b506102296103953660046129ff565b610c4e565b3480156103a5575f5ffd5b506102296103b43660046129ff565b610d77565b3480156103c4575f5ffd5b506102296103d3366004612a16565b610e84565b3480156103e3575f5ffd5b506103f76103f2366004612a4f565b611043565b6040519015158152602001610272565b348015610412575f5ffd5b506102296104213660046129ff565b6110b8565b348015610431575f5ffd5b505f5460ff166103f7565b348015610447575f5ffd5b5061025e73c92e8bdf79f0507f65a392b0ab4667716bfe011081565b34801561046e575f5ffd5b5061028f6111bd565b348015610482575f5ffd5b506102296111ed565b348015610496575f5ffd5b5061028f611314565b3480156104aa575f5ffd5b5061028f60035481565b3480156104bf575f5ffd5b5061025e739d39a5de30e57443bff2a8307a4256c8797a349781565b6104ee6104e9366004612a68565b611720565b6040516102729190612b07565b348015610506575f5ffd5b50610229610515366004612a4f565b6119a2565b348015610525575f5ffd5b50610229611a7f565b348015610539575f5ffd5b5061028f60025481565b34801561054e575f5ffd5b5061056261055d366004612b6a565b611b57565b6040516102729190612ba9565b34801561057a575f5ffd5b5061025e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105ad575f5ffd5b5061025e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e0575f5ffd5b506102296105ef3660046129ff565b611da3565b3480156105ff575f5ffd5b50610229611ed9565b348015610613575f5ffd5b5061025e739008d19f58aabd9ed0d60971565aa8510560ab4181565b34801561063a575f5ffd5b5061064361202b565b6040516102729190612bbb565b34801561065b575f5ffd5b5061025e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561068e575f5ffd5b505f5461010090046001600160a01b031661025e565b5f54604051632474521560e21b81527f5f33620cda06d02d58df96005b92bc83bd059a566e48e016372f3fbdc974e371600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610715573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107399190612c06565b6107795760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b610781612124565b5f61078a611314565b90506107968484612149565b7f35a901c4413e585f9121eb5cf07e67760bd4ac498dd031249e5cd2cd225f74e442826107c38782612c39565b6040805193845260208401929092529082015260600160405180910390a150505050565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561084b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086f9190612c4c565b905090565b5f739d39a5de30e57443bff2a8307a4256c8797a34976001600160a01b031663352693156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e99190612c63565b61086f9062ffffff1642612c85565b6040516315d5220f60e31b81526001600160a01b0384811660048301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063aea9107890602401602060405180830381865afa158015610960573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109849190612c4c565b6040516315d5220f60e31b81526001600160a01b0386811660048301529192505f917f0000000000000000000000000000000000000000000000000000000000000000169063aea9107890602401602060405180830381865afa1580156109ed573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a119190612c4c565b9050610a1e84838361217d565b9695505050505050565b610a30612124565b5f54604051632474521560e21b81525f516020612edc5f395f51905f52600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610a8e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab29190612c06565b610aed5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610770565b604051635d043b2960e11b81526004810183905230602482018190526044820152739d39a5de30e57443bff2a8307a4256c8797a34979063ba087652906064015b6020604051808303815f875af1158015610b4a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6e9190612c4c565b505050565b5f54604051632474521560e21b81527fe7276a2a84d8de556657ec9cf93a55a7d66f096e529d0582ed08e9e2208b92b5600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610be4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c089190612c06565b610c435760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610770565b610c4b612198565b50565b610c56612124565b5f54604051632474521560e21b81525f516020612edc5f395f51905f52600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610cb4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd89190612c06565b610d135760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610770565b604051639343d9e160e01b815260048101839052739d39a5de30e57443bff2a8307a4256c8797a349790639343d9e1906024015f604051808303815f87803b158015610d5d575f5ffd5b505af1158015610d6f573d5f5f3e3d5ffd5b505050505050565b5f54604051632474521560e21b81527f3947e2f542c6c46c543fa4f79cbd1e27fea37ed249bc3caf992570d19123642e600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610de8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0c9190612c06565b610e475760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610770565b60028290556040518281527f9c922f6d0c990b250e9dd0a427a5c8da7f44b960f697fecb31cbbd8ba79ec8c2906020015b60405180910390a15050565b5f54604051632474521560e21b81527f5f33620cda06d02d58df96005b92bc83bd059a566e48e016372f3fbdc974e371600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610ef5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f199190612c06565b610f545760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610770565b610f5c612124565b610f6584611043565b8015610fa357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b8490610fce576040516337bce3c560e11b81526001600160a01b039091166004820152602401610770565b505f610fd8611314565b9050610fee6001600160a01b03861684866121e9565b5f610ff7611314565b60408051428152602081018590529081018290529091507f35a901c4413e585f9121eb5cf07e67760bd4ac498dd031249e5cd2cd225f74e49060600160405180910390a1505050505050565b5f6001600160a01b03821673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48148061108b57506001600160a01b038216734c9edd5852cd905f086c759e8383e09bff1e68b3145b806110b257506001600160a01b038216739d39a5de30e57443bff2a8307a4256c8797a3497145b92915050565b5f54604051632474521560e21b81527f3947e2f542c6c46c543fa4f79cbd1e27fea37ed249bc3caf992570d19123642e600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611129573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114d9190612c06565b6111885760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610770565b60018290556040518281527f3c8eb7c49d332f4c1e4d92a27cda93c31cc9452f7a408e0c6109fcddbc9946ea90602001610e78565b5f5f6111c7611314565b905060015481106111d9575f91505090565b806001546111e79190612c39565b91505090565b6111f5612124565b5f54604051632474521560e21b81525f516020612edc5f395f51905f52600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611253573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112779190612c06565b6112b25760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610770565b60405163f2888dbb60e01b8152306004820152739d39a5de30e57443bff2a8307a4256c8797a34979063f2888dbb906024015f604051808303815f87803b1580156112fb575f5ffd5b505af115801561130d573d5f5f3e3d5ffd5b5050505050565b6040516370a0823160e01b81523060048201525f90819073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48906370a0823190602401602060405180830381865afa158015611365573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113899190612c4c565b6040516315d5220f60e31b815273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860048201529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aea9107890602401602060405180830381865afa158015611404573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114289190612c4c565b6040516370a0823160e01b81523060048201529091505f90734c9edd5852cd905f086c759e8383e09bff1e68b3906370a0823190602401602060405180830381865afa15801561147a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149e9190612c4c565b6040516315d5220f60e31b8152734c9edd5852cd905f086c759e8383e09bff1e68b360048201529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aea9107890602401602060405180830381865afa158015611519573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153d9190612c4c565b6040516370a0823160e01b81523060048201529091505f90739d39a5de30e57443bff2a8307a4256c8797a3497906370a0823190602401602060405180830381865afa15801561158f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b39190612c4c565b6040516315d5220f60e31b8152739d39a5de30e57443bff2a8307a4256c8797a349760048201529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aea9107890602401602060405180830381865afa15801561162e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116529190612c4c565b604051629907f160e11b8152306004820152909150739d39a5de30e57443bff2a8307a4256c8797a3497906301320fe2906024016040805180830381865afa1580156116a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c49190612cac565b602001516116e79072ffffffffffffffffffffffffffffffffffffff1685612c85565b93506116f484848761217d565b6116fe9087612c85565b955061170b82828761217d565b6117159087612c85565b979650505050505050565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a6004820181905233602483015260609290916101009091046001600160a01b0316906391d1485490604401602060405180830381865afa158015611796573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ba9190612c06565b6117f55760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610770565b8267ffffffffffffffff81111561180e5761180e612c98565b60405190808252806020026020018201604052801561184157816020015b606081526020019060019003908161182c5790505b5091505f5b8381101561199a575f85858381811061186157611861612d3f565b90506020028101906118739190612d53565b611881906020810190612a4f565b90505f86868481811061189657611896612d3f565b90506020028101906118a89190612d53565b602001359050365f8888868181106118c2576118c2612d3f565b90506020028101906118d49190612d53565b6118e2906040810190612d71565b915091505f5f856001600160a01b0316858585604051611903929190612dbb565b5f6040518083038185875af1925050503d805f811461193d576040519150601f19603f3d011682016040523d82523d5f602084013e611942565b606091505b509150915081819061196857604051634ad176bb60e01b81526004016107709190612ba9565b508089888151811061197c5761197c612d3f565b60200260200101819052505050505050508080600101915050611846565b505092915050565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a379190612c06565b611a725760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610770565b611a7b82612248565b5050565b5f54604051632474521560e21b81527ffcb9fcbfa83b897fb2d5cf4b58962164105c1e71489a37ef3ae0db3fdce576f6600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611af0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b149190612c06565b611b4f5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610770565b610c4b6122ad565b6060611b61612124565b5f54604051632474521560e21b81525f516020612edc5f395f51905f52600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611bbf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be39190612c06565b611c1e5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610770565b6001600160a01b03861673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb481480611c6557506001600160a01b038616734c9edd5852cd905f086c759e8383e09bff1e68b3145b80611c8c57506001600160a01b038616739d39a5de30e57443bff2a8307a4256c8797a3497145b8690611cb75760405163961c9a4f60e01b81526001600160a01b039091166004820152602401610770565b506001600160a01b03851673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb481480611cff57506001600160a01b038516734c9edd5852cd905f086c759e8383e09bff1e68b3145b80611d2657506001600160a01b038516739d39a5de30e57443bff2a8307a4256c8797a3497145b8590611d515760405163961c9a4f60e01b81526001600160a01b039091166004820152602401610770565b50846001600160a01b0316866001600160a01b031614158590611d935760405163961c9a4f60e01b81526001600160a01b039091166004820152602401610770565b50610a1e868686866002546122e9565b611dab612124565b5f54604051632474521560e21b81525f516020612edc5f395f51905f52600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611e09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e2d9190612c06565b611e685760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610770565b611e9b734c9edd5852cd905f086c759e8383e09bff1e68b3739d39a5de30e57443bff2a8307a4256c8797a349784612479565b604051636e553f6560e01b815260048101839052306024820152739d39a5de30e57443bff2a8307a4256c8797a349790636e553f6590604401610b2e565b5f54604051632474521560e21b81527f5f33620cda06d02d58df96005b92bc83bd059a566e48e016372f3fbdc974e371600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611f4a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f6e9190612c06565b611fa95760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610770565b611fb1612124565b5f611fba611314565b9050600154811115611fed5760015460405163f480e28560e01b8152610770918391600401918252602082015260400190565b60408051428152602081018390529081018290527f35a901c4413e585f9121eb5cf07e67760bd4ac498dd031249e5cd2cd225f74e490606001610e78565b604080516003808252608082019092526060915f919060208201848036833701905050905073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48815f8151811061207757612077612d3f565b60200260200101906001600160a01b031690816001600160a01b031681525050734c9edd5852cd905f086c759e8383e09bff1e68b3816001815181106120bf576120bf612d3f565b60200260200101906001600160a01b031690816001600160a01b031681525050739d39a5de30e57443bff2a8307a4256c8797a34978160028151811061210757612107612d3f565b6001600160a01b0390921660209283029190910190910152919050565b5f5460ff16156121475760405163d93c066560e01b815260040160405180910390fd5b565b611a7b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682846121e9565b5f825f190484118302158202612191575f5ffd5b5091020490565b6121a061250e565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6040516001600160a01b03838116602483015260448201839052610b6e91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612530565b5f80546001600160a01b0383811661010081810274ffffffffffffffffffffffffffffffffffffffff0019851617855560405193049190911692909183917f9209b7c8c06dcfd261686a663e7c55989337b18d59da5433c6f2835fb697092091a35050565b6122b5612124565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586121cc3390565b60605f8411801561235f57506040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa158015612337573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061235b9190612c4c565b8411155b849061238157604051636450874f60e11b815260040161077091815260200190565b5061238b85611043565b85906123b65760405163961c9a4f60e01b81526001600160a01b039091166004820152602401610770565b506104b06003546123c79190612c85565b42116123e657604051635ab1f4a960e01b815260040160405180910390fd5b426003555f612400836123fa8989896108f8565b9061259c565b905080848181101561242e576040516378e9a2e760e01b815260048101929092526024820152604401610770565b5061246590506001600160a01b0388167f000000000000000000000000000000000000000000000000000000000000000087612479565b611715612474888888886125b7565b61271d565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526124ca84826128d8565b612508576040516001600160a01b0384811660248301525f60448301526124fe91869182169063095ea7b390606401612216565b6125088482612530565b50505050565b5f5460ff1661214757604051638dfc202b60e01b815260040160405180910390fd5b5f5f60205f8451602086015f885af18061254f576040513d5f823e3d81fd5b50505f513d91508115612566578060011415612573565b6001600160a01b0384163b155b1561250857604051635274afe760e01b81526001600160a01b0385166004820152602401610770565b5f6125b08383670de0b6b3a764000061217d565b9392505050565b6126326040518061018001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f81526020015f63ffffffff1681526020015f81526020015f81526020015f81526020015f151581526020015f81526020015f81525090565b604051806101800160405280866001600160a01b03168152602001856001600160a01b03168152602001306001600160a01b031681526020018481526020018381526020016104b0426126859190612c85565b63ffffffff1681527f3cac71ef99d0dfbf5b937334b5b7ab672b679ba2bbd4d6fe8e0c54a2dab3110960208201525f604082018190527ff3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775606083015260808201527f5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc960a0820181905260c09091015295945050505050565b60605f7f000000000000000000000000000000000000000000000000000000000000000090505f6127f984836001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612784573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a89190612c4c565b601f1990910180517fd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e48982526101a08220915260405161190160f01b8152600281019290925260228201526042902090565b604080516038808252606082019092529192505f919060208201818036833701905050905061282e8183308860a0015161291d565b60405163ec6cb13f60e01b81526001600160a01b0384169063ec6cb13f9061285d908490600190600401612dca565b5f604051808303815f87803b158015612874575f5ffd5b505af1158015612886573d5f5f3e3d5ffd5b50505050427f63521d767ee2dda07d9815cec18770071f08ed7902feacb2cb193196bb8e9aad82878860a0015189608001516040516128c89493929190612ded565b60405180910390a2949350505050565b5f5f5f5f60205f8651602088015f8a5af192503d91505f519050828015610a1e575081156129095780600114610a1e565b50505050506001600160a01b03163b151590565b603884511461296e5760405162461bcd60e51b815260206004820152601960248201527f475076323a2075696420627566666572206f766572666c6f77000000000000006044820152606401610770565b60388401526034830152602090910152565b80356001600160a01b0381168114612996575f5ffd5b919050565b5f5f604083850312156129ac575f5ffd5b823591506129bc60208401612980565b90509250929050565b5f5f5f606084860312156129d7575f5ffd5b6129e084612980565b92506129ee60208501612980565b929592945050506040919091013590565b5f60208284031215612a0f575f5ffd5b5035919050565b5f5f5f60608486031215612a28575f5ffd5b612a3184612980565b925060208401359150612a4660408501612980565b90509250925092565b5f60208284031215612a5f575f5ffd5b6125b082612980565b5f5f60208385031215612a79575f5ffd5b823567ffffffffffffffff811115612a8f575f5ffd5b8301601f81018513612a9f575f5ffd5b803567ffffffffffffffff811115612ab5575f5ffd5b8560208260051b8401011115612ac9575f5ffd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015612b5e57603f19878603018452612b49858351612ad9565b94506020938401939190910190600101612b2d565b50929695505050505050565b5f5f5f5f60808587031215612b7d575f5ffd5b612b8685612980565b9350612b9460208601612980565b93969395505050506040820135916060013590565b602081525f6125b06020830184612ad9565b602080825282518282018190525f918401906040840190835b81811015612bfb5783516001600160a01b0316835260209384019390920191600101612bd4565b509095945050505050565b5f60208284031215612c16575f5ffd5b815180151581146125b0575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156110b2576110b2612c25565b5f60208284031215612c5c575f5ffd5b5051919050565b5f60208284031215612c73575f5ffd5b815162ffffff811681146125b0575f5ffd5b808201808211156110b2576110b2612c25565b634e487b7160e01b5f52604160045260245ffd5b5f6040828403128015612cbd575f5ffd5b506040805190810167ffffffffffffffff81118282101715612ced57634e487b7160e01b5f52604160045260245ffd5b60405282516cffffffffffffffffffffffffff81168114612d0c575f5ffd5b8152602083015172ffffffffffffffffffffffffffffffffffffff81168114612d33575f5ffd5b60208201529392505050565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612d67575f5ffd5b9190910192915050565b5f5f8335601e19843603018112612d86575f5ffd5b83018035915067ffffffffffffffff821115612da0575f5ffd5b602001915036819003821315612db4575f5ffd5b9250929050565b818382375f9101908152919050565b604081525f612ddc6040830185612ad9565b905082151560208301529392505050565b6101e081525f612e016101e0830187612ad9565b85516001600160a01b03166020840152905060208501516001600160a01b03811660408401525060408501516001600160a01b03811660608401525060608501516080830152608085015160a083015260a0850151612e6860c084018263ffffffff169052565b5060c085015160e083015260e0850151610100830152610100850151610120830152610120850151612e9f61014084018215159052565b50610140850151610160830152610160850151610180830152612ecb6101a083018563ffffffff169052565b826101c08301529594505050505056fe456cfaf8d1ec98ae5bbe595a448911a58cb2e264d4686992e15dec9d0f363e03a26469706673582212206d5c696e8a51257547c1784ccfd5a4ef25aad6db9f107e4c9ac88f726ee7a55164736f6c634300081c0033000000000000000000000000f6d48735eccf12bdc1df2674b1ce3fcb3bd254900000000000000000000000007a5c5dba4fbd0e1e1a2ecdbe752fae55f6e842b3