0 txs
0 calls
constructor
constructor(address _creditManager)
functions
acl
viewfunction acl() view returns (address)
allowedAdapters
viewfunction allowedAdapters() view returns (address[])
contractType
viewfunction contractType() view returns (bytes32)
creditFacade
viewfunction creditFacade() view returns (address)
creditManager
viewfunction creditManager() view returns (address)
underlying
viewfunction underlying() view returns (address)
version
viewfunction version() view returns (uint256)
addCollateralToken
nonpayablefunction addCollateralToken(address token, uint16 liquidationThreshold)
allowAdapter
nonpayablefunction allowAdapter(address adapter)
allowToken
nonpayablefunction allowToken(address token)
forbidAdapter
nonpayablefunction forbidAdapter(address adapter)
forbidBorrowing
nonpayablefunction forbidBorrowing()
forbidToken
nonpayablefunction forbidToken(address token)
makeAllTokensQuoted
nonpayablefunction makeAllTokensQuoted()
rampLiquidationThreshold
nonpayablefunction rampLiquidationThreshold(address token, uint16 liquidationThresholdFinal, uint40 rampStart, uint24 rampDuration)
setCreditFacade
nonpayablefunction setCreditFacade(address newCreditFacade, bool migrateParams)
setDebtLimits
nonpayablefunction setDebtLimits(uint128 newMinDebt, uint128 newMaxDebt)
setExpirationDate
nonpayablefunction setExpirationDate(uint40 newExpirationDate)
setFees
nonpayablefunction setFees(uint16 feeLiquidation, uint16 liquidationPremium, uint16 feeLiquidationExpired, uint16 liquidationPremiumExpired)
setLiquidationThreshold
nonpayablefunction setLiquidationThreshold(address token, uint16 liquidationThreshold)
setLossPolicy
nonpayablefunction setLossPolicy(address newLossPolicy)
setMaxDebtPerBlockMultiplier
nonpayablefunction setMaxDebtPerBlockMultiplier(uint8 newMaxDebtLimitPerBlockMultiplier)
setPriceOracle
nonpayablefunction setPriceOracle(address newPriceOracle)
upgradeCreditConfigurator
nonpayablefunction upgradeCreditConfigurator(address newCreditConfigurator)
events
AddCollateralToken
event AddCollateralToken(address indexed token)
AllowAdapter
event AllowAdapter(address indexed targetContract, address indexed adapter)
AllowToken
event AllowToken(address indexed token)
CreditConfiguratorUpgraded
event CreditConfiguratorUpgraded(address indexed creditConfigurator)
ForbidAdapter
event ForbidAdapter(address indexed targetContract, address indexed adapter)
ForbidToken
event ForbidToken(address indexed token)
ScheduleTokenLiquidationThresholdRamp
event ScheduleTokenLiquidationThresholdRamp(address indexed token, uint16 liquidationThresholdInitial, uint16 liquidationThresholdFinal, uint40 timestampRampStart, uint40 timestampRampEnd)
SetBorrowingLimits
event SetBorrowingLimits(uint256 minDebt, uint256 maxDebt)
SetCreditFacade
event SetCreditFacade(address indexed creditFacade)
SetExpirationDate
event SetExpirationDate(uint40 expirationDate)
SetLossPolicy
event SetLossPolicy(address indexed lossPolicy)
SetMaxDebtPerBlockMultiplier
event SetMaxDebtPerBlockMultiplier(uint8 maxDebtPerBlockMultiplier)
SetPriceOracle
event SetPriceOracle(address indexed priceOracle)
SetTokenLiquidationThreshold
event SetTokenLiquidationThreshold(address indexed token, uint16 liquidationThreshold)
UpdateFees
event UpdateFees(uint16 feeLiquidation, uint16 liquidationPremium, uint16 feeLiquidationExpired, uint16 liquidationPremiumExpired)
errors
AdapterIsNotRegisteredException
error AdapterIsNotRegisteredException()
AddressIsNotContractException
error AddressIsNotContractException(address)
CallerNotConfiguratorException
error CallerNotConfiguratorException()
CallerNotPausableAdminException
error CallerNotPausableAdminException()
IncompatibleContractException
error IncompatibleContractException()
InconsistentExpiredLiquidationFeesException
error InconsistentExpiredLiquidationFeesException()
InconsistentLiquidationFeesException
error InconsistentLiquidationFeesException()
IncorrectAdaptersSetException
error IncorrectAdaptersSetException()
IncorrectExpirationDateException
error IncorrectExpirationDateException()
IncorrectLimitsException
error IncorrectLimitsException()
IncorrectLiquidationThresholdException
error IncorrectLiquidationThresholdException()
IncorrectParameterException
error IncorrectParameterException()
IncorrectPriceException
error IncorrectPriceException()
IncorrectTokenContractException
error IncorrectTokenContractException()
PriceFeedDoesNotExistException
error PriceFeedDoesNotExistException()
RampDurationTooShortException
error RampDurationTooShortException()
TargetContractNotAllowedException
error TargetContractNotAllowedException()
TokenIsNotQuotedException
error TokenIsNotQuotedException()
TokenNotAllowedException
error TokenNotAllowedException()
ZeroAddressException
error ZeroAddressException()
creation bytecode
0x60e060405234801562000010575f80fd5b506040516200444c3803806200444c833981016040819052620000339162000513565b620000476001600160a01b0382166200026d565b6001600160a01b0381166200006f57604051635919af9760e11b815260040160405180910390fd5b6001600160a01b0381163b620000a75760405163df4c572d60e01b81526001600160a01b038216600482015260240160405180910390fd5b6001600160a01b03908116608052811660a081905260408051636f307dc360e01b81529051636f307dc3916004808201926020929091908290030181865afa158015620000f6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200011c919062000513565b6001600160a01b031660c0816001600160a01b0316815250505f816001600160a01b031663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000173573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000199919062000513565b90506001600160a01b0381163b620001b2575062000266565b806001600160a01b0316631c42130e6040518163ffffffff1660e01b81526004015f60405180830381865afa9250505080156200021257506040513d5f823e601f3d908101601f191682016040526200020f919081019062000543565b60015b15620002645780515f5b818110156200026057620002568382815181106200023e576200023e62000610565b60200260200101515f6200028960201b90919060201c565b506001016200021c565b5050505b505b506200063c565b5f620002836200027d83620002a6565b6200030a565b92915050565b5f6200029f836001600160a01b038416620003a4565b9392505050565b5f816001600160a01b03166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000283919062000513565b5f6101366200031983620003f3565b101562000367576200032b8262000457565b6001600160a01b031663de2873596040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e4573d5f803e3d5ffd5b816001600160a01b031663de2873596040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e4573d5f803e3d5ffd5b5f818152600183016020526040812054620003eb57508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915562000283565b505f62000283565b5f816001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000431573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000283919062000624565b5f816001600160a01b031663de2873596040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000495573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004bb919062000513565b6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e4573d5f803e3d5ffd5b80516001600160a01b03811681146200050e575f80fd5b919050565b5f6020828403121562000524575f80fd5b6200029f82620004f7565b634e487b7160e01b5f52604160045260245ffd5b5f602080838503121562000555575f80fd5b82516001600160401b03808211156200056c575f80fd5b818501915085601f83011262000580575f80fd5b8151818111156200059557620005956200052f565b8060051b604051601f19603f83011681018181108582111715620005bd57620005bd6200052f565b604052918252848201925083810185019188831115620005db575f80fd5b938501935b828510156200060457620005f485620004f7565b84529385019392850192620005e0565b98975050505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121562000635575f80fd5b5051919050565b60805160a05160c051613ce26200076a5f395f8181610287015281816115d80152818161218b01526127b701525f81816102ef0152818161040c015281816104da01528181610554015281816106b4015281816107510152818161081e01528181610b2d01528181610bd501528181610d3b01528181610df201528181610f830152818161120a01528181611419015281816114b30152818161166f015281816117170152818161186701528181611af101528181611ba501528181611cd101528181611d7201528181611e05015281816124200152818161265e0152818161271301528181612a5f01528181612dc401528181612f07015281816130760152818161311d015281816131fa01526132fc01525f818161033d015281816133b501526135a40152613ce25ff3fe608060405234801561000f575f80fd5b506004361061018f575f3560e01c8063a70bc542116100dd578063de28735911610088578063ef830b5011610063578063ef830b5014610385578063effa5d6e1461038d578063f0b8f562146103a0575f80fd5b8063de28735914610338578063eb9606df1461035f578063ef69768314610372575f80fd5b8063bee1babf116100b8578063bee1babf146102e2578063c12c21c0146102ea578063cb2ef6f714610311575f80fd5b8063a70bc542146102a9578063b53472ef146102bc578063b954d809146102cf575f80fd5b80633e7c88d61161013d578063530e784f11610118578063530e784f1461025857806354fd4d501461026b5780636f307dc314610282575f80fd5b80633e7c88d61461021f57806342f7723f14610232578063456e074214610245575f80fd5b806328afc97c1161016d57806328afc97c146101d95780632f7a1881146101ec5780633d2ff0011461020c575f80fd5b80631495c7d2146101935780631c42130e146101a857806324147708146101c6575b5f80fd5b6101a66101a13660046136f0565b6103b3565b005b6101b0610606565b6040516101bd919061370b565b60405180910390f35b6101a66101d43660046136f0565b610616565b6101a66101e7366004613764565b610640565b6101f4610b2a565b6040516001600160a01b0390911681526020016101bd565b6101a661021a3660046137bc565b610bab565b6101a661022d36600461381c565b610ec6565b6101a6610240366004613848565b610efb565b6101a66102533660046136f0565b6112d4565b6101a66102663660046136f0565b6114a9565b61027461013681565b6040519081526020016101bd565b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b6101a66102b736600461381c565b6118f6565b6101a66102ca3660046136f0565b611912565b6101a66102dd3660046138a4565b611a4a565b6101a6611a5b565b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b6102747f4352454449545f434f4e464947555241544f520000000000000000000000000081565b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b6101a661036d3660046138bf565b611a6e565b6101a66103803660046138ee565b611ad2565b6101a6611ae4565b6101a661039b3660046136f0565b611c00565b6101a66103ae3660046136f0565b611eb7565b806103bd8161202b565b6103c561206b565b5f6103cf836120aa565b6040517fff6875430000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301529192505f917f0000000000000000000000000000000000000000000000000000000000000000169063ff68754390602401602060405180830381865afa158015610451573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104759190613925565b6001600160a01b0316036104b5576040517f67cfe59500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516320084f1d60e21b81526001600160a01b0384811660048301525f60248301527f000000000000000000000000000000000000000000000000000000000000000016906380213c74906044015f604051808303815f87803b15801561051b575f80fd5b505af115801561052d573d5f803e3d5ffd5b50506040516320084f1d60e21b81525f60048201526001600160a01b0384811660248301527f00000000000000000000000000000000000000000000000000000000000000001692506380213c7491506044015f604051808303815f87803b158015610597575f80fd5b505af11580156105a9573d5f803e3d5ffd5b505050506105c0835f61215990919063ffffffff16565b50826001600160a01b0316816001600160a01b03167f3f688c7b4a117ceec70e927a9ed68836d3da0224eee121f856fc87ad5baa2a8060405160405180910390a3505050565b60606106115f612176565b905090565b806106208161202b565b8161062a81612189565b6106326121f4565b61063b83612254565b505050565b61064861206b565b5f610651610b2a565b9050806001600160a01b0316836001600160a01b03160361067157505050565b61067a8361236a565b6040517fff6875430000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ff68754390602401602060405180830381865afa1580156106fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071f9190613925565b6001600160a01b03161415806107c8575060405163fdd5764560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fdd5764590602401602060405180830381865afa158015610798573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190613925565b6001600160a01b031614155b156107e65760405163fc1a554360e01b815260040160405180910390fd5b6040517facb0e8450000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063acb0e845906024015f604051808303815f87803b15801561085f575f80fd5b505af1158015610871573d5f803e3d5ffd5b505050508115610af1576108e3816001600160a01b031663478ade366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108de9190613940565b612470565b5f80826001600160a01b031663166bf9d96040518163ffffffff1660e01b81526004016040805180830381865afa158015610920573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610944919061395b565b915091506109528282612615565b6109ba836001600160a01b0316639fd12b776040518163ffffffff1660e01b8152600401602060405180830381865afa158015610991573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b59190613988565b612a30565b826001600160a01b031663b1836d326040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1a919061399f565b8015610a815750846001600160a01b031663b1836d326040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a81919061399f565b15610aee57610aee836001600160a01b0316638f6204876040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae991906139ba565b612ada565b50505b6040516001600160a01b038416907f1cd439329e916b95ce297eb699326f2799c8de28be6bba10f28db1d9067778f1905f90a2505b5050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632f7a18816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b87573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106119190613925565b83610bb581612189565b610bbd61206b565b6040516352c5fe1160e01b8152600160048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906352c5fe11906024016040805180830381865afa158015610c21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4591906139d5565b9150508061ffff168561ffff161115610c71576040516333c6608d60e01b815260040160405180910390fd5b6202a3008362ffffff161015610cb3576040517fdd9f8cd800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8364ffffffffff164211610cc75783610cc9565b425b935064ffffffffff610ce262ffffff8516828716613a16565b1115610d01576040516347fbaa9760e01b815260040160405180910390fd5b6040517f783274380000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690637832743890602401602060405180830381865afa158015610d82573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da69190613a29565b6040516305e4642760e31b81526001600160a01b03898116600483015261ffff80841660248401528916604483015264ffffffffff8816606483015262ffffff871660848301529192507f000000000000000000000000000000000000000000000000000000000000000090911690632f2321389060a4015f604051808303815f87803b158015610e35575f80fd5b505af1158015610e47573d5f803e3d5ffd5b50505050866001600160a01b03167fa8193c198aab4146e3640f414ba8473918c6d028f45b27fb08b185a16c15ce238288888862ffffff168a610e8a9190613a44565b6040805161ffff958616815293909416602084015264ffffffffff9182168385015216606082015290519081900360800190a250505050505050565b81610ed08161202b565b82610eda81612189565b610ee261206b565b610eeb84612c3e565b610ef58484613105565b50505050565b610f0361206b565b8261ffff168461ffff161180610f2057508061ffff168261ffff16115b80610f3257508361ffff168261ffff16115b80610f4457508261ffff168161ffff16115b80610f5e5750612710610f578585613a62565b61ffff1610155b15610f7c576040516347fbaa9760e01b815260040160405180910390fd5b5f805f805f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639af1d35a6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610fdd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110019190613a7d565b945094509450945094505f8861271061101a9190613aee565b90505f61102988612710613aee565b90508561ffff168b61ffff1614801561104957508461ffff168261ffff16145b801561105c57508361ffff168961ffff16145b801561106f57508261ffff168161ffff16145b156110805750505050505050610ef5565b61108a8686613aee565b61ffff166110988c84613aee565b61ffff16146110d3576040517f228f723e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110dd8484613aee565b61ffff166110eb8a83613aee565b61ffff16146111b8575f6110fd610b2a565b6001600160a01b0316638f6204876040518163ffffffff1660e01b8152600401602060405180830381865afa158015611138573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115c91906139ba565b64ffffffffff169050801580159061117f57508061117d4262127500613a16565b115b156111b6576040517f1a98939200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6040517ff206d32a00000000000000000000000000000000000000000000000000000000815261ffff8089166004830152808d1660248301528084166044830152808b166064830152821660848201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f206d32a9060a4015f604051808303815f87803b158015611253575f80fd5b505af1158015611265573d5f803e3d5ffd5b505050507f2d179a43c34a4a80c102e61bb259930222752df8bdfc749e5f2fd6ef9dab971c8b8b8b8b6040516112bf949392919061ffff948516815292841660208401529083166040830152909116606082015260800190565b60405180910390a15050505050505050505050565b6112dc61206b565b6001600160a01b03811630146114a6576112f58161236a565b5f816001600160a01b0316631c42130e6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611331573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113589190810190613b1d565b80519091506113665f613298565b811461138557604051634ec4646b60e01b815260040160405180910390fd5b5f5b818110156113e0576113bb8382815181106113a4576113a4613bdd565b60200260200101515f6132a190919063ffffffff16565b6113d857604051634ec4646b60e01b815260040160405180910390fd5b600101611387565b506040517ff30ba4990000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f30ba499906024015f604051808303815f87803b15801561145a575f80fd5b505af115801561146c573d5f803e3d5ffd5b50506040516001600160a01b03861692507f5a0b7d0f9c24b39256e112a0584b4c5ce38d8f1dee2e7c56f15b852604cdc88691505f90a250505b50565b6114b161206b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561150d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115319190613925565b6001600160a01b0316816001600160a01b031603156114a6575f611553610b2a565b6001600160a01b031663166bf9d96040518163ffffffff1660e01b81526004016040805180830381865afa15801561158d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b1919061395b565b50604051630f9a650360e41b81526001600160801b03821660048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301529192509083169063f9a6503090604401602060405180830381865afa158015611629573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164d9190613988565b5f0361166c576040516329dbcc7160e11b815260040160405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663458936f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ed9190613940565b60ff16905060015b8181101561182e576040516309f81c7560e31b81526001821b60048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634fc0e3a890602401602060405180830381865afa158015611764573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117889190613925565b6040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152919250908616906341976e0990602401602060405180830381865afa925050508015611807575060408051601f3d908101601f1916820190925261180491810190613988565b60015b611824576040516329dbcc7160e11b815260040160405180910390fd5b50506001016116f5565b506040517f530e784f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063530e784f906024015f604051808303815f87803b1580156118a8575f80fd5b505af11580156118ba573d5f803e3d5ffd5b50506040516001600160a01b03861692507f88a686e0e341d9099f2f990c3aa759a86822142a67579064b43ded9354a2566291505f90a2505050565b8161190081612189565b61190861206b565b61063b8383613105565b8061191c8161202b565b8161192681612189565b61192e61206b565b5f611937610b2a565b90505f611943856132c2565b905080826001600160a01b0316639fd12b776040518163ffffffff1660e01b8152600401602060405180830381865afa158015611982573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a69190613988565b165f036119b4575050505050565b604051631379834960e11b81526001600160a01b038316906326f30692906119e3908890600190600401613bf1565b5f604051808303815f87803b1580156119fa575f80fd5b505af1158015611a0c573d5f803e3d5ffd5b50506040516001600160a01b03881692507f14009112f2dcb15cad32dab6bf972d6d85286e4ae1178f27323ffe25359459e691505f90a25050505050565b611a5261206b565b6114a681612470565b611a636121f4565b611a6c5f612470565b565b611a7661206b565b428164ffffffffff161015611a9e5760405163e4eaca7f60e01b815260040160405180910390fd5b611aab4262127500613a16565b8164ffffffffff161015611ac957611ac64262127500613a16565b90505b6114a681612ada565b611ada61206b565b610b268282612615565b611aec61206b565b6101367f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6f9190613988565b1015611a6c576040517f86dfa53600000000000000000000000000000000000000000000000000000000815260011960048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906386dfa536906024015f604051808303815f87803b158015611bee575f80fd5b505af1158015610ef5573d5f803e3d5ffd5b80611c0a8161202b565b611c1261206b565b5f611c1c836120aa565b90506001600160a01b0381163b611c565760405163df4c572d60e01b81526001600160a01b03821660048201526024015b60405180910390fd5b5f611c5f610b2a565b9050806001600160a01b0316826001600160a01b03161480611c925750806001600160a01b0316846001600160a01b0316145b15611cb05760405163fc1a554360e01b815260040160405180910390fd5b60405163fdd5764560e01b81526001600160a01b0383811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fdd5764590602401602060405180830381865afa158015611d18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d3c9190613925565b90506001600160a01b03811615611dde576040516320084f1d60e21b81526001600160a01b0382811660048301525f60248301527f000000000000000000000000000000000000000000000000000000000000000016906380213c74906044015f604051808303815f87803b158015611db3575f80fd5b505af1158015611dc5573d5f803e3d5ffd5b50505050611ddc815f61215990919063ffffffff16565b505b6040516320084f1d60e21b81526001600160a01b03868116600483015284811660248301527f000000000000000000000000000000000000000000000000000000000000000016906380213c74906044015f604051808303815f87803b158015611e46575f80fd5b505af1158015611e58573d5f803e3d5ffd5b50505050611e6f855f61336790919063ffffffff16565b50846001600160a01b0316836001600160a01b03167f0bc09e53304ef58ff3ff8295411d9171c75ee4af48277db5fc605ab12e056bee60405160405180910390a35050505050565b611ebf61206b565b80611ec98161202b565b6001600160a01b0382163b611efc5760405163df4c572d60e01b81526001600160a01b0383166004820152602401611c4d565b5f611f05610b2a565b9050826001600160a01b0316816001600160a01b0316637de164b06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f719190613925565b6001600160a01b031603611f8457505050565b6040517ff0b8f5620000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015282169063f0b8f562906024015f604051808303815f87803b158015611fdd575f80fd5b505af1158015611fef573d5f803e3d5ffd5b50506040516001600160a01b03861692507f0dd9695b4eccd5a199100008de0ffc740332660d2783f935058d73a8dab6198091505f90a2505050565b6001600160a01b0381166114a6576040517fb2335f2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120743361337b565b611a6c576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6120b48261236a565b816001600160a01b031663bd90df706040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561210e575060408051601f3d908101601f1916820190925261210b91810190613925565b60015b61212b5760405163e9eddd1760e01b815260040160405180910390fd5b90506001600160a01b0381166121545760405163fc1a554360e01b815260040160405180910390fd5b919050565b5f61216d836001600160a01b038416613420565b90505b92915050565b60605f6121828361350a565b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316036114a6576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61221e7f5041555341424c455f41444d494e00000000000000000000000000000000000033613563565b611a6c576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61225d610b2a565b90505f612269836132c2565b905080826001600160a01b0316639fd12b776040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122cc9190613988565b16156122d757505050565b604051631379834960e11b81526001600160a01b038316906326f30692906123059086905f90600401613bf1565b5f604051808303815f87803b15801561231c575f80fd5b505af115801561232e573d5f803e3d5ffd5b50506040516001600160a01b03861692507f9d65afef45c30b784a1e4621dbcbb194ebb6aabe16c9a4abce9ab1775a962b7691505f90a2505050565b806123748161202b565b6001600160a01b0382163b6123a75760405163df4c572d60e01b81526001600160a01b0383166004820152602401611c4d565b816001600160a01b031663c12c21c06040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612401575060408051601f3d908101601f191682019092526123fe91810190613925565b60015b61241e5760405163e9eddd1760e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03161461063b5760405163e9eddd1760e01b815260040160405180910390fd5b5f612479610b2a565b9050806001600160a01b031663478ade366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124db9190613940565b60ff168260ff16036124eb575050565b5f80826001600160a01b031663166bf9d96040518163ffffffff1660e01b81526004016040805180830381865afa158015612528573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254c919061395b565b6040517f1656af9d0000000000000000000000000000000000000000000000000000000081526001600160801b0380841660048301528216602482015260ff8716604482015291935091506001600160a01b03841690631656af9d906064015f604051808303815f87803b1580156125c2575f80fd5b505af11580156125d4573d5f803e3d5ffd5b505060405160ff871681527faebbd82c9dcdcd553331f5850bbdf5add33bf8fce5c7c76e2c9e7912ad5f15649250602001905060405180910390a150505050565b806001600160801b0316826001600160801b03161115612648576040516309aadd6f60e41b815260040160405180910390fd5b612653826064613c2a565b6001600160801b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632c521c066040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126dc9190613940565b6126e99060ff1683613c2a565b6001600160801b03161115612711576040516309aadd6f60e41b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561276d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127919190613925565b604051630f9a650360e41b81526001600160801b03841660048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063f9a6503090604401602060405180830381865afa158015612806573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061282a9190613988565b5f03612849576040516309aadd6f60e41b815260040160405180910390fd5b5f612852610b2a565b90505f80826001600160a01b031663166bf9d96040518163ffffffff1660e01b81526004016040805180830381865afa158015612891573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128b5919061395b565b91509150846001600160801b0316826001600160801b03161480156128eb5750836001600160801b0316816001600160801b0316145b156128f7575050505050565b826001600160a01b0316631656af9d8686866001600160a01b031663478ade366040518163ffffffff1660e01b8152600401602060405180830381865afa158015612944573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129689190613940565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160801b03938416600482015292909116602483015260ff1660448201526064015f604051808303815f87803b1580156129cf575f80fd5b505af11580156129e1573d5f803e3d5ffd5b5050604080516001600160801b03808a168252881660208201527fb2cc80ffa4c2f75731dbb99fcd29cccd7829c55d4cd5d6a884506b1435d6d1f3935001905060405180910390a15050505050565b80156114a6575f81810382166040516309f81c7560e31b8152600481018290529091505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634fc0e3a890602401602060405180830381865afa158015612aa4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ac89190613925565b9050612ad381612254565b5018612a30565b5f612ae3610b2a565b90505f816001600160a01b0316638f6204876040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b4691906139ba565b64ffffffffff169050808364ffffffffff1603612b6257505050565b808364ffffffffff161015612b8a5760405163e4eaca7f60e01b815260040160405180910390fd5b6040517feb9606df00000000000000000000000000000000000000000000000000000000815264ffffffffff841660048201526001600160a01b0383169063eb9606df906024015f604051808303815f87803b158015612be8575f80fd5b505af1158015612bfa573d5f803e3d5ffd5b505060405164ffffffffff861681527fb019cf1dc4b3caa72aa4723abcc271a2bb3138bee0a89cd911fb8980b0c93d569250602001905060405180910390a1505050565b6001600160a01b0381163b612c715760405163df4c572d60e01b81526001600160a01b0382166004820152602401611c4d565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa925050508015612cea575060408051601f3d908101601f19168201909252612ce791810190613988565b60015b612d20576040517f528ca31d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa7b6cd8e000000000000000000000000000000000000000000000000000000001790525f908190612d8a90849061753061360f565b915091508115612db8575f81806020019051810190612da99190613c55565b915050612db5816132c2565b50505b5f6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e429190613925565b6040517f9dcb511a0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301529190911690639dcb511a90602401602060405180830381865afa158015612ea1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec59190613925565b6001600160a01b031603612f05576040517f68d8c6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663be8da14b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f859190613925565b6040517fd9b94b060000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152919091169063d9b94b0690602401602060405180830381865afa158015612fe4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613008919061399f565b61303e576040517fbfb4633c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fd48bfca70000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063d48bfca7906024015f604051808303815f87803b1580156130b7575f80fd5b505af11580156130c9573d5f803e3d5ffd5b50506040516001600160a01b03861692507f7c3f95f8569977586927f95930461a261e2121e326fcb513242f9e5c8b8ea6dc91505f90a2505050565b6040516352c5fe1160e01b8152600160048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906352c5fe11906024016040805180830381865afa158015613169573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061318d91906139d5565b9150508061ffff168261ffff1611156131b9576040516333c6608d60e01b815260040160405180910390fd5b6040516305e4642760e31b81526001600160a01b03848116600483015261ffff841660248301819052604483015264ffffffffff60648301525f60848301527f00000000000000000000000000000000000000000000000000000000000000001690632f2321389060a4015f604051808303815f87803b15801561323b575f80fd5b505af115801561324d573d5f803e3d5ffd5b505060405161ffff851681526001600160a01b03861692507fda5e841a0cb137f4a60661969e409f01ef7627723a4a929414e4f69b5475ee8c915060200160405180910390a2505050565b5f612170825490565b6001600160a01b0381165f908152600183016020526040812054151561216d565b6040517fd5c2f4860000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063d5c2f48690602401602060405180830381865afa158015613343573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121709190613988565b5f61216d836001600160a01b038416613690565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690635f259aba90602401602060405180830381865afa1580156133fc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612170919061399f565b5f81815260018301602052604081205480156134fa575f613442600183613c82565b85549091505f9061345590600190613c82565b90508181146134b4575f865f01828154811061347357613473613bdd565b905f5260205f200154905080875f01848154811061349357613493613bdd565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806134c5576134c5613c95565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050612170565b5f915050612170565b5092915050565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561355757602002820191905f5260205f20905b815481526020019060010190808311613543575b50505050509050919050565b6040517f91d14854000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0382811660248301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906391d1485490604401602060405180830381865afa1580156135eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061216d919061399f565b5f60605f80866001600160a01b0316858760405161362d9190613ca9565b5f604051808303818686fa925050503d805f8114613666576040519150601f19603f3d011682016040523d82523d5f602084013e61366b565b606091505b50915091505f81511161367f575f81613682565b81815b935093505050935093915050565b5f8181526001830160205260408120546136d557508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155612170565b505f612170565b6001600160a01b03811681146114a6575f80fd5b5f60208284031215613700575f80fd5b8135612182816136dc565b602080825282518282018190525f9190848201906040850190845b8181101561374b5783516001600160a01b031683529284019291840191600101613726565b50909695505050505050565b80151581146114a6575f80fd5b5f8060408385031215613775575f80fd5b8235613780816136dc565b9150602083013561379081613757565b809150509250929050565b61ffff811681146114a6575f80fd5b64ffffffffff811681146114a6575f80fd5b5f805f80608085870312156137cf575f80fd5b84356137da816136dc565b935060208501356137ea8161379b565b925060408501356137fa816137aa565b9150606085013562ffffff81168114613811575f80fd5b939692955090935050565b5f806040838503121561382d575f80fd5b8235613838816136dc565b915060208301356137908161379b565b5f805f806080858703121561385b575f80fd5b84356138668161379b565b935060208501356138768161379b565b925060408501356138868161379b565b915060608501356138118161379b565b60ff811681146114a6575f80fd5b5f602082840312156138b4575f80fd5b813561218281613896565b5f602082840312156138cf575f80fd5b8135612182816137aa565b6001600160801b03811681146114a6575f80fd5b5f80604083850312156138ff575f80fd5b823561390a816138da565b91506020830135613790816138da565b8051612154816136dc565b5f60208284031215613935575f80fd5b8151612182816136dc565b5f60208284031215613950575f80fd5b815161218281613896565b5f806040838503121561396c575f80fd5b8251613977816138da565b6020840151909250613790816138da565b5f60208284031215613998575f80fd5b5051919050565b5f602082840312156139af575f80fd5b815161218281613757565b5f602082840312156139ca575f80fd5b8151612182816137aa565b5f80604083850312156139e6575f80fd5b82516139f1816136dc565b60208401519092506137908161379b565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561217057612170613a02565b5f60208284031215613a39575f80fd5b81516121828161379b565b64ffffffffff81811683821601908082111561350357613503613a02565b61ffff81811683821601908082111561350357613503613a02565b5f805f805f60a08688031215613a91575f80fd5b8551613a9c8161379b565b6020870151909550613aad8161379b565b6040870151909450613abe8161379b565b6060870151909350613acf8161379b565b6080870151909250613ae08161379b565b809150509295509295909350565b61ffff82811682821603908082111561350357613503613a02565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215613b2e575f80fd5b825167ffffffffffffffff80821115613b45575f80fd5b818501915085601f830112613b58575f80fd5b815181811115613b6a57613b6a613b09565b8060051b604051601f19603f83011681018181108582111715613b8f57613b8f613b09565b604052918252848201925083810185019188831115613bac575f80fd5b938501935b82851015613bd157613bc28561391a565b84529385019392850192613bb1565b98975050505050505050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b03831681526040810160028310613c1d57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b6001600160801b03818116838216028082169190828114613c4d57613c4d613a02565b505092915050565b5f8060408385031215613c66575f80fd5b8251613c71816136dc565b6020840151909250613790816136dc565b8181038181111561217057612170613a02565b634e487b7160e01b5f52603160045260245ffd5b5f82515f5b81811015613cc85760208186018101518583015201613cae565b505f92019182525091905056fea164736f6c6343000817000a0000000000000000000000009d866298f6b8e168a06e313d47059f2c097a92f1