0 txs
7.24m calls
constructor
constructor()
functions
accountAssets
viewfunction accountAssets(address, uint256) view returns (address)
admin
viewfunction admin() view returns (address)
allMarkets
viewfunction allMarkets(uint256) view returns (address)
borrowCapGuardian
viewfunction borrowCapGuardian() view returns (address)
borrowCaps
viewfunction borrowCaps(address) view returns (uint256)
borrowGuardianPaused
viewfunction borrowGuardianPaused(address) view returns (bool)
checkMembership
viewfunction checkMembership(address account, address mToken) view returns (bool)
closeFactorMantissa
viewfunction closeFactorMantissa() view returns (uint256)
comptrollerImplementation
viewfunction comptrollerImplementation() view returns (address)
getAccountLiquidity
viewfunction getAccountLiquidity(address account) view returns (uint256, uint256, uint256)
getAllMarkets
viewfunction getAllMarkets() view returns (address[])
getAssetsIn
viewfunction getAssetsIn(address account) view returns (address[])
getBlockTimestamp
viewfunction getBlockTimestamp() view returns (uint256)
getHypotheticalAccountLiquidity
viewfunction getHypotheticalAccountLiquidity(address account, address mTokenModify, uint256 redeemTokens, uint256 borrowAmount) view returns (uint256, uint256, uint256)
isComptroller
viewfunction isComptroller() view returns (bool)
liquidateBorrowAllowed
viewfunction liquidateBorrowAllowed(address mTokenBorrowed, address mTokenCollateral, address liquidator, address borrower, uint256 repayAmount) view returns (uint256)
liquidateCalculateSeizeTokens
viewfunction liquidateCalculateSeizeTokens(address mTokenBorrowed, address mTokenCollateral, uint256 actualRepayAmount) view returns (uint256, uint256)
liquidationIncentiveMantissa
viewfunction liquidationIncentiveMantissa() view returns (uint256)
markets
viewfunction markets(address) view returns (bool isListed, uint256 collateralFactorMantissa)
mintGuardianPaused
viewfunction mintGuardianPaused(address) view returns (bool)
oracle
viewfunction oracle() view returns (address)
pauseGuardian
viewfunction pauseGuardian() view returns (address)
pendingAdmin
viewfunction pendingAdmin() view returns (address)
pendingComptrollerImplementation
viewfunction pendingComptrollerImplementation() view returns (address)
redeemVerify
purefunction redeemVerify(address mToken, address redeemer, uint256 redeemAmount, uint256 redeemTokens) pure
rewardDistributor
viewfunction rewardDistributor() view returns (address)
seizeGuardianPaused
viewfunction seizeGuardianPaused() view returns (bool)
supplyCapGuardian
viewfunction supplyCapGuardian() view returns (address)
supplyCaps
viewfunction supplyCaps(address) view returns (uint256)
transferGuardianPaused
viewfunction transferGuardianPaused() view returns (bool)
_become
nonpayablefunction _become(address unitroller)
_rescueFunds
nonpayablefunction _rescueFunds(address _tokenAddress, uint256 _amount)
_setBorrowCapGuardian
nonpayablefunction _setBorrowCapGuardian(address newBorrowCapGuardian)
_setBorrowPaused
nonpayablefunction _setBorrowPaused(address mToken, bool state) returns (bool)
_setCloseFactor
nonpayablefunction _setCloseFactor(uint256 newCloseFactorMantissa) returns (uint256)
_setCollateralFactor
nonpayablefunction _setCollateralFactor(address mToken, uint256 newCollateralFactorMantissa) returns (uint256)
_setLiquidationIncentive
nonpayablefunction _setLiquidationIncentive(uint256 newLiquidationIncentiveMantissa) returns (uint256)
_setMarketBorrowCaps
nonpayablefunction _setMarketBorrowCaps(address[] mTokens, uint256[] newBorrowCaps)
_setMarketSupplyCaps
nonpayablefunction _setMarketSupplyCaps(address[] mTokens, uint256[] newSupplyCaps)
_setMintPaused
nonpayablefunction _setMintPaused(address mToken, bool state) returns (bool)
_setPauseGuardian
nonpayablefunction _setPauseGuardian(address newPauseGuardian) returns (uint256)
_setPriceOracle
nonpayablefunction _setPriceOracle(address newOracle) returns (uint256)
_setRewardDistributor
nonpayablefunction _setRewardDistributor(address newRewardDistributor)
_setSeizePaused
nonpayablefunction _setSeizePaused(bool state) returns (bool)
_setSupplyCapGuardian
nonpayablefunction _setSupplyCapGuardian(address newSupplyCapGuardian)
_setTransferPaused
nonpayablefunction _setTransferPaused(bool state) returns (bool)
_supportMarket
nonpayablefunction _supportMarket(address mToken) returns (uint256)
borrowAllowed
nonpayablefunction borrowAllowed(address mToken, address borrower, uint256 borrowAmount) returns (uint256)
claimReward
nonpayablefunction claimReward()
claimReward
nonpayablefunction claimReward(address holder, address[] mTokens)
claimReward
nonpayablefunction claimReward(address holder)
claimReward
nonpayablefunction claimReward(address[] holders, address[] mTokens, bool borrowers, bool suppliers)
enterMarkets
nonpayablefunction enterMarkets(address[] mTokens) returns (uint256[])
exitMarket
nonpayablefunction exitMarket(address mTokenAddress) returns (uint256)
mintAllowed
nonpayablefunction mintAllowed(address mToken, address minter, uint256 mintAmount) returns (uint256)
redeemAllowed
nonpayablefunction redeemAllowed(address mToken, address redeemer, uint256 redeemTokens) returns (uint256)
repayBorrowAllowed
nonpayablefunction repayBorrowAllowed(address mToken, address payer, address borrower, uint256 repayAmount) returns (uint256)
seizeAllowed
nonpayablefunction seizeAllowed(address mTokenCollateral, address mTokenBorrowed, address liquidator, address borrower, uint256 seizeTokens) returns (uint256)
transferAllowed
nonpayablefunction transferAllowed(address mToken, address src, address dst, uint256 transferTokens) returns (uint256)
events
ActionPaused
event ActionPaused(address mToken, string action, bool pauseState)
ActionPaused
event ActionPaused(string action, bool pauseState)
Failure
event Failure(uint256 error, uint256 info, uint256 detail)
MarketEntered
event MarketEntered(address mToken, address account)
MarketExited
event MarketExited(address mToken, address account)
MarketListed
event MarketListed(address mToken)
NewBorrowCap
event NewBorrowCap(address indexed mToken, uint256 newBorrowCap)
NewBorrowCapGuardian
event NewBorrowCapGuardian(address oldBorrowCapGuardian, address newBorrowCapGuardian)
NewCloseFactor
event NewCloseFactor(uint256 oldCloseFactorMantissa, uint256 newCloseFactorMantissa)
NewCollateralFactor
event NewCollateralFactor(address mToken, uint256 oldCollateralFactorMantissa, uint256 newCollateralFactorMantissa)
NewLiquidationIncentive
event NewLiquidationIncentive(uint256 oldLiquidationIncentiveMantissa, uint256 newLiquidationIncentiveMantissa)
NewPauseGuardian
event NewPauseGuardian(address oldPauseGuardian, address newPauseGuardian)
NewPriceOracle
event NewPriceOracle(address oldPriceOracle, address newPriceOracle)
NewRewardDistributor
event NewRewardDistributor(address oldRewardDistributor, address newRewardDistributor)
NewSupplyCap
event NewSupplyCap(address indexed mToken, uint256 newSupplyCap)
NewSupplyCapGuardian
event NewSupplyCapGuardian(address oldSupplyCapGuardian, address newSupplyCapGuardian)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50600080546001600160a01b031916331790556144b1806100326000396000f3fe608060405234801561001057600080fd5b50600436106103985760003560e01c80636d154ea5116101e9578063bb82aa5e1161010f578063dbc7779b116100ad578063e87554461161007c578063e87554461461089c578063eabe7d91146108a5578063ede4edd0146108b8578063f851a440146108cb57600080fd5b8063dbc7779b14610850578063dce1544914610863578063dcfbc0c714610876578063e4028eee1461088957600080fd5b8063c488847b116100e9578063c488847b146107ef578063d02f735114610817578063d279c1911461082a578063da3d454c1461083d57600080fd5b8063bb82aa5e146107a9578063bdcdc258146107bc578063c2998238146107cf57600080fd5b8063929fe9a111610187578063ac0b0bb711610156578063ac0b0bb714610772578063acc2166a14610786578063b0772d0b14610799578063b88a802f146107a157600080fd5b8063929fe9a1146106eb578063a76b3fda1461072c578063a979f0c51461073f578063abfceffc1461075257600080fd5b80637dc0d1d0116101c35780637dc0d1d01461066d57806387f76303146106805780638e8f294b146106945780638ebf6364146106d857600080fd5b80636d154ea514610621578063731f0c2b14610644578063796b89b91461066757600080fd5b80633bcf7ec1116102ce57806351dff9891161026c5780635ec88c791161023b5780635ec88c79146105d55780635f5af1aa146105e85780635fc7e71e146105fb578063607ef6c11461060e57600080fd5b806351dff9891461058957806352d84d1e1461059c57806355ee1fe1146105af5780635c254d11146105c257600080fd5b80634e79238f116102a85780634e79238f146105225780634ef4c3e1146105505780634fd42e171461056357806351a485e41461057657600080fd5b80633bcf7ec1146104e65780634a584432146104f95780634ada90af1461051957600080fd5b806324a3d6221161033b578063317b0b7711610315578063317b0b771461049a5780633685ffe7146104ad57806338b8f4c3146104c0578063391957d7146104d357600080fd5b806324a3d6221461046157806326782247146104745780632d70db781461048757600080fd5b806318c882a51161037757806318c882a5146103fd5780631d504dc61461041057806321af45691461042357806324008a621461044e57600080fd5b80627e3dd21461039d57806302c3bcbb146103ba578063114b9d19146103e8575b600080fd5b6103a5600181565b60405190151581526020015b60405180910390f35b6103da6103c8366004613c1d565b60116020526000908152604090205481565b6040519081526020016103b1565b6103fb6103f6366004613d8b565b6108de565b005b6103a561040b366004613e14565b610c0c565b6103fb61041e366004613c1d565b610d45565b600d54610436906001600160a01b031681565b6040516001600160a01b0390911681526020016103b1565b6103da61045c366004613e4d565b610ec3565b600954610436906001600160a01b031681565b600154610436906001600160a01b031681565b6103a5610495366004613e9e565b610f01565b6103da6104a8366004613ebb565b610ff1565b6103fb6104bb366004613ed4565b611098565b6103fb6104ce366004613c1d565b611100565b6103fb6104e1366004613c1d565b6111cb565b6103a56104f4366004613e14565b61128e565b6103da610507366004613c1d565b600e6020526000908152604090205481565b6103da60065481565b610535610530366004613f24565b6113b8565b604080519384526020840192909252908201526060016103b1565b6103da61055e366004613f6a565b6113f8565b6103da610571366004613ebb565b61165d565b6103fb610584366004613ff7565b6116ba565b6103fb610597366004613f24565b611898565b6104366105aa366004613ebb565b6118ed565b6103da6105bd366004613c1d565b611917565b6103fb6105d0366004613c1d565b611990565b6105356105e3366004613c1d565b611a33565b6103da6105f6366004613c1d565b611a6e565b6103da610609366004614063565b611ae7565b6103fb61061c366004613ff7565b611c41565b6103a561062f366004613c1d565b600b6020526000908152604090205460ff1681565b6103a5610652366004613c1d565b600a6020526000908152604090205460ff1681565b426103da565b600454610436906001600160a01b031681565b6009546103a590600160a01b900460ff1681565b6106c16106a2366004613c1d565b6008602052600090815260409020805460019091015460ff9091169082565b6040805192151583526020830191909152016103b1565b6103a56106e6366004613e9e565b611e16565b6103a56106f93660046140c7565b6001600160a01b038082166000908152600860209081526040808320938616835260029093019052205460ff1692915050565b6103da61073a366004613c1d565b611efd565b601054610436906001600160a01b031681565b610765610760366004613c1d565b612058565b6040516103b191906140f5565b6009546103a590600160a81b900460ff1681565b601254610436906001600160a01b031681565b6107656120ce565b6103fb612130565b600254610436906001600160a01b031681565b6103da6107ca366004613e4d565b612196565b6107e26107dd366004614142565b612224565b6040516103b19190614177565b6108026107fd366004613f6a565b6122ec565b604080519283526020830191909152016103b1565b6103da610825366004614063565b61250a565b6103fb610838366004613c1d565b612692565b6103da61084b366004613f6a565b6126f4565b6103fb61085e3660046141af565b612a48565b6104366108713660046141af565b612bba565b600354610436906001600160a01b031681565b6103da6108973660046141af565b612bf2565b6103da60055481565b6103da6108b3366004613f6a565b612d84565b6103da6108c6366004613c1d565b612da1565b600054610436906001600160a01b031681565b6012546001600160a01b03166109455760405162461bcd60e51b815260206004820152602160248201527f4e6f20726577617264206469737472696275746f7220636f6e666967757265646044820152602160f81b60648201526084015b60405180910390fd5b60005b8351811015610c05576000848281518110610965576109656141db565b6020908102919091018101516001600160a01b0381166000908152600890925260409091205490915060ff166109d55760405162461bcd60e51b81526020600482015260156024820152741b585c9ad95d081b5d5cdd081899481b1a5cdd1959605a1b604482015260640161093c565b821515600103610ae457601254604051638220d7cf60e01b81526001600160a01b03838116600483015290911690638220d7cf90602401600060405180830381600087803b158015610a2657600080fd5b505af1158015610a3a573d6000803e3d6000fd5b5050505060005b8651811015610ae25760125487516001600160a01b03909116906310d47dc79084908a9085908110610a7557610a756141db565b602002602001015160016040518463ffffffff1660e01b8152600401610a9d939291906141f1565b600060405180830381600087803b158015610ab757600080fd5b505af1158015610acb573d6000803e3d6000fd5b505050508080610ada9061422b565b915050610a41565b505b831515600103610bf25760125460405162c823eb60e11b81526001600160a01b0383811660048301529091169063019047d690602401600060405180830381600087803b158015610b3457600080fd5b505af1158015610b48573d6000803e3d6000fd5b5050505060005b8651811015610bf05760125487516001600160a01b03909116906314f557739084908a9085908110610b8357610b836141db565b602002602001015160016040518463ffffffff1660e01b8152600401610bab939291906141f1565b600060405180830381600087803b158015610bc557600080fd5b505af1158015610bd9573d6000803e3d6000fd5b505050508080610be89061422b565b915050610b4f565b505b5080610bfd8161422b565b915050610948565b5050505050565b6001600160a01b03821660009081526008602052604081205460ff16610c445760405162461bcd60e51b815260040161093c90614244565b6009546001600160a01b0316331480610c6757506000546001600160a01b031633145b610c835760405162461bcd60e51b815260040161093c9061428c565b6000546001600160a01b0316331480610c9e57506001821515145b610cba5760405162461bcd60e51b815260040161093c906142d3565b6001600160a01b0383166000818152600b6020908152604091829020805460ff19168615159081179091558251938452606091840182905260069184019190915265426f72726f7760d01b6080840152908201527f71aec636243f9709bb0007ae15e9afb8150ab01716d75fd7573be5cc096e03b09060a0015b60405180910390a150805b92915050565b806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da79190614303565b6001600160a01b0316336001600160a01b031614610e175760405162461bcd60e51b815260206004820152602760248201527f6f6e6c7920756e6974726f6c6c65722061646d696e2063616e206368616e676560448201526620627261696e7360c81b606482015260840161093c565b806001600160a01b031663c1e803346040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7b9190614320565b15610ec05760405162461bcd60e51b815260206004820152601560248201527418da185b99d9481b9bdd08185d5d1a1bdc9a5e9959605a1b604482015260640161093c565b50565b6001600160a01b03841660009081526008602052604081205460ff16610eeb57506009610ef9565b610ef58584613106565b5060005b949350505050565b6009546000906001600160a01b0316331480610f2757506000546001600160a01b031633145b610f435760405162461bcd60e51b815260040161093c9061428c565b6000546001600160a01b0316331480610f5e57506001821515145b610f7a5760405162461bcd60e51b815260040161093c906142d3565b60098054831515600160a81b0260ff60a81b199091161790556040517fef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de090610fe59084906040808252600590820152645365697a6560d81b6060820152901515602082015260800190565b60405180910390a15090565b600080546001600160a01b0316331461104c5760405162461bcd60e51b815260206004820152601f60248201527f6f6e6c792061646d696e2063616e2073657420636c6f736520666163746f7200604482015260640161093c565b600580549083905560408051828152602081018590527f3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd991015b60405180910390a160005b9392505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106110ce576110ce6141db565b60200260200101906001600160a01b031690816001600160a01b0316815250506110fb81836001806108de565b505050565b6000546001600160a01b031633146111695760405162461bcd60e51b815260206004820152602660248201527f6f6e6c792061646d696e2063616e2073657420737570706c792063617020677560448201526530b93234b0b760d11b606482015260840161093c565b601080546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fb0d3622c24ac9bd967d8f37a25808b3e668fe7ed4f3075bbe82842d3e287c04491015b60405180910390a15050565b6000546001600160a01b031633146112345760405162461bcd60e51b815260206004820152602660248201527f6f6e6c792061646d696e2063616e2073657420626f72726f772063617020677560448201526530b93234b0b760d11b606482015260840161093c565b600d80546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527feda98690e518e9a05f8ec6837663e188211b2da8f4906648b323f2c1d4434e2991016111bf565b6001600160a01b03821660009081526008602052604081205460ff166112c65760405162461bcd60e51b815260040161093c90614244565b6009546001600160a01b03163314806112e957506000546001600160a01b031633145b6113055760405162461bcd60e51b815260040161093c9061428c565b6000546001600160a01b031633148061132057506001821515145b61133c5760405162461bcd60e51b815260040161093c906142d3565b6001600160a01b0383166000818152600a6020908152604091829020805460ff19168615159081179091558251938452606091840182905260049184019190915263135a5b9d60e21b6080840152908201527f71aec636243f9709bb0007ae15e9afb8150ab01716d75fd7573be5cc096e03b09060a001610d34565b6000806000806000806113cd8a8a8a8a613183565b9250925092508260118111156113e5576113e5614339565b95509093509150505b9450945094915050565b6001600160a01b0383166000908152600a602052604081205460ff16156114525760405162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d081a5cc81c185d5cd95960921b604482015260640161093c565b6001600160a01b03841660009081526008602052604090205460ff1661147c5760095b9050611091565b6001600160a01b0384166000908152601160205260409020548015611647576000856001600160a01b0316633b1d21a26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff9190614320565b90506000866001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015611541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115659190614320565b90506000876001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb9190614320565b905060006115e26115dc85856134b3565b836134e9565b905060006115f082896134b3565b90508581106116415760405162461bcd60e51b815260206004820152601960248201527f6d61726b657420737570706c7920636170207265616368656400000000000000604482015260640161093c565b50505050505b6116518585613523565b60005b95945050505050565b600080546001600160a01b0316331461167c57610d3f6001600b613569565b600680549083905560408051828152602081018590527faeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec13169101611086565b6000546001600160a01b03163314806116dd57506010546001600160a01b031633145b6117475760405162461bcd60e51b815260206004820152603560248201527f6f6e6c792061646d696e206f7220737570706c792063617020677561726469616044820152746e2063616e2073657420737570706c79206361707360581b606482015260840161093c565b8281811580159061175757508082145b6117935760405162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081a5b9c1d5d609a1b604482015260640161093c565b60005b8281101561188f578484828181106117b0576117b06141db565b90506020020135601160008989858181106117cd576117cd6141db565b90506020020160208101906117e29190613c1d565b6001600160a01b0316815260208101919091526040016000205586868281811061180e5761180e6141db565b90506020020160208101906118239190613c1d565b6001600160a01b03167f9e0ad9cee10bdf36b7fbd38910c0bdff0f275ace679b45b922381c2723d676f886868481811061185f5761185f6141db565b9050602002013560405161187591815260200190565b60405180910390a2806118878161422b565b915050611796565b50505050505050565b801580156118a65750600082115b156118e75760405162461bcd60e51b815260206004820152601160248201527072656465656d546f6b656e73207a65726f60781b604482015260640161093c565b50505050565b600c81815481106118fd57600080fd5b6000918252602090912001546001600160a01b0316905081565b600080546001600160a01b0316331461193657610d3f60016010613569565b600480546001600160a01b038481166001600160a01b031983168117909355604080519190921680825260208201939093527fd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e229101611086565b6000546001600160a01b031633146119d95760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b604482015260640161093c565b601280546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f8ddca872a7a62d68235cff1a03badc845dc3007cfaa6145379f7bf3452ecb9b991016111bf565b600080600080600080611a4a876000806000613183565b925092509250826011811115611a6257611a62614339565b97919650945092505050565b600080546001600160a01b03163314611a8d57610d3f60016013613569565b600980546001600160a01b038481166001600160a01b031983168117909355604080519190921680825260208201939093527f0613b6ee6a04f0d09f390e4d9318894b9f6ac7fd83897cd8d18896ba579c401e9101611086565b6001600160a01b03851660009081526008602052604081205460ff161580611b2857506001600160a01b03851660009081526008602052604090205460ff16155b15611b375760095b9050611654565b600080611b43856135e2565b91935090915060009050826011811115611b5f57611b5f614339565b14611b7f57816011811115611b7657611b76614339565b92505050611654565b80600003611b8e576003611b76565b6040516395dd919360e01b81526001600160a01b038681166004830152600091908a16906395dd919390602401602060405180830381865afa158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc9190614320565b90506000611c1a604051806020016040528060055481525083613602565b905080861115611c31576011945050505050611654565b5060009998505050505050505050565b6000546001600160a01b0316331480611c645750600d546001600160a01b031633145b611cce5760405162461bcd60e51b815260206004820152603560248201527f6f6e6c792061646d696e206f7220626f72726f772063617020677561726469616044820152746e2063616e2073657420626f72726f77206361707360581b606482015260840161093c565b82818115801590611cde57508082145b611d1a5760405162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081a5b9c1d5d609a1b604482015260640161093c565b60005b8281101561188f57848482818110611d3757611d376141db565b90506020020135600e6000898985818110611d5457611d546141db565b9050602002016020810190611d699190613c1d565b6001600160a01b03168152602081019190915260400160002055868682818110611d9557611d956141db565b9050602002016020810190611daa9190613c1d565b6001600160a01b03167f6f1951b2aad10f3fc81b86d91105b413a5b3f847a34bbc5ce1904201b14438f6868684818110611de657611de66141db565b90506020020135604051611dfc91815260200190565b60405180910390a280611e0e8161422b565b915050611d1d565b6009546000906001600160a01b0316331480611e3c57506000546001600160a01b031633145b611e585760405162461bcd60e51b815260040161093c9061428c565b6000546001600160a01b0316331480611e7357506001821515145b611e8f5760405162461bcd60e51b815260040161093c906142d3565b60098054831515600160a01b0260ff60a01b199091161790556040517fef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de090610fe59084906040808252600890820152672a3930b739b332b960c11b6060820152901515602082015260800190565b600080546001600160a01b03163314611f1c57610d3f60016012613569565b6001600160a01b03821660009081526008602052604090205460ff1615611f4957610d3f600a6011613569565b816001600160a01b031663699cd5e26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fab919061434f565b611feb5760405162461bcd60e51b815260206004820152601160248201527026bab9ba1031329030b71026aa37b5b2b760791b604482015260640161093c565b6001600160a01b0382166000908152600860205260408120805460ff19166001908117825581019190915561201f8361361a565b6040516001600160a01b03841681527fcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f90602001611086565b6001600160a01b03811660009081526007602090815260408083208054825181850281018501909352808352606094938301828280156120c157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116120a3575b5093979650505050505050565b6060600c80548060200260200160405190810160405280929190818152602001828054801561212657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612108575b5050505050905090565b61219433600c80548060200260200160405190810160405280929190818152602001828054801561218a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161216c575b5050505050611098565b565b600954600090600160a01b900460ff16156121e85760405162461bcd60e51b81526020600482015260126024820152711d1c985b9cd9995c881a5cc81c185d5cd95960721b604482015260640161093c565b60006121f5868685613702565b90508015612204579050610ef9565b61220e8686613523565b6122188685613523565b60009695505050505050565b805160609060008167ffffffffffffffff81111561224457612244613c3a565b60405190808252806020026020018201604052801561226d578160200160208202803683370190505b50905060005b828110156122e457600085828151811061228f5761228f6141db565b602002602001015190506122a381336137ba565b60118111156122b4576122b4614339565b8383815181106122c6576122c66141db565b602090810291909101015250806122dc8161422b565b915050612273565b509392505050565b6004805460405163fc57d4df60e01b81526001600160a01b03868116938201939093526000928392839291169063fc57d4df90602401602060405180830381865afa15801561233f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123639190614320565b6004805460405163fc57d4df60e01b81526001600160a01b038981169382019390935292935060009291169063fc57d4df90602401602060405180830381865afa1580156123b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d99190614320565b90508115806123e6575080155b156123fa57600d6000935093505050612502565b6000866001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561243a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245e9190614320565b905060006124786040518060200160405280600081525090565b6040805160208082018352600080835283518083018552908152835180830185526006548152845192830190945288825291926124b4916138ae565b92506124dc6040518060200160405280888152506040518060200160405280888152506138ae565b91506124e883836138f6565b90506124f4818b613602565b600099509750505050505050505b935093915050565b600954600090600160a81b900460ff16156125595760405162461bcd60e51b815260206004820152600f60248201526e1cd95a5e99481a5cc81c185d5cd959608a1b604482015260640161093c565b6001600160a01b03861660009081526008602052604090205460ff16158061259a57506001600160a01b03851660009081526008602052604090205460ff16155b156125a6576009611b30565b846001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126089190614303565b6001600160a01b0316866001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126739190614303565b6001600160a01b031614612688576002611b30565b61220e8684613523565b610ec081600c80548060200260200160405190810160405280929190818152602001828054801561218a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161216c575050505050611098565b6001600160a01b0383166000908152600b602052604081205460ff16156127505760405162461bcd60e51b815260206004820152601060248201526f189bdc9c9bddc81a5cc81c185d5cd95960821b604482015260640161093c565b6001600160a01b03841660009081526008602052604090205460ff16612777576009611475565b6001600160a01b038085166000908152600860209081526040808320938716835260029093019052205460ff1661287457336001600160a01b038516146127f85760405162461bcd60e51b815260206004820152601560248201527439b2b73232b91036bab9ba1031329036aa37b5b2b760591b604482015260640161093c565b600061280433856137ba565b9050600081601181111561281a5761281a614339565b146128395780601181111561283157612831614339565b915050611091565b6001600160a01b038086166000908152600860209081526040808320938816835260029093019052205460ff166128725761287261436c565b505b6004805460405163fc57d4df60e01b81526001600160a01b038781169382019390935291169063fc57d4df90602401602060405180830381865afa1580156128c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e49190614320565b6000036128f257600d611475565b6001600160a01b0384166000908152600e602052604090205480156129d7576000856001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015612951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129759190614320565b9050600061298382866134b3565b90508281106129d45760405162461bcd60e51b815260206004820152601960248201527f6d61726b657420626f72726f7720636170207265616368656400000000000000604482015260640161093c565b50505b6000806129e78688600088613183565b91935090915060009050826011811115612a0357612a03614339565b14612a2457816011811115612a1a57612a1a614339565b9350505050611091565b8015612a31576004612a1a565b612a3b8787613106565b6000979650505050505050565b6000546001600160a01b03163314612a915760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b604482015260640161093c565b8160018201612b81576000546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a0823190602401602060405180830381865afa158015612aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b119190614320565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015b6020604051808303816000875af1158015612b5d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e7919061434f565b60005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529082169063a9059cbb90604401612b3e565b60076020528160005260406000208181548110612bd657600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080546001600160a01b03163314612c1857612c1160016006613569565b9050610d3f565b6001600160a01b0383166000908152600860205260409020805460ff16612c4d57612c4560096007613569565b915050610d3f565b60408051602080820183528582528251908101909252670c7d713b49da0000825290612c7b81835190511090565b15612c9657612c8c60066008613569565b9350505050610d3f565b8415801590612d1257506004805460405163fc57d4df60e01b81526001600160a01b038981169382019390935291169063fc57d4df90602401602060405180830381865afa158015612cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d109190614320565b155b15612d2357612c8c600d6009613569565b60018301805490869055604080516001600160a01b0389168152602081018390529081018790527f70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc59060600160405180910390a16000979650505050505050565b600080612d92858585613702565b90508015611647579050611091565b6040516361bfb47160e11b815233600482015260009082908290819081906001600160a01b0385169063c37f68e290602401608060405180830381865afa158015612df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e149190614382565b5092509250925082600014612e795760405162461bcd60e51b815260206004820152602560248201527f657869744d61726b65743a206765744163636f756e74536e617073686f742066604482015264185a5b195960da1b606482015260840161093c565b8015612e9557612e8b600c6002613569565b9695505050505050565b6000612ea2873385613702565b90508015612ec257612eb7600e600383613930565b979650505050505050565b6001600160a01b0385166000908152600860209081526040808320338452600281019092529091205460ff16612f0057600098975050505050505050565b3360009081526002820160209081526040808320805460ff191690556007825280832080548251818502810185019093528083529192909190830182828015612f7257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612f54575b5050835193945083925060009150505b82811015612fd657896001600160a01b0316848281518110612fa657612fa66141db565b60200260200101516001600160a01b031603612fc457809150612fd6565b80612fce8161422b565b915050612f82565b50818110612fe657612fe661436c565b33600090815260076020526040902080548190613005906001906143b8565b81548110613015576130156141db565b9060005260206000200160009054906101000a90046001600160a01b0316818381548110613045576130456141db565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080805480613083576130836143cb565b600082815260209020810160001990810180546001600160a01b03191690550190556040517fe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d906130ec908c9033906001600160a01b0392831681529116602082015260400190565b60405180910390a160009c9b505050505050505050505050565b6012546001600160a01b03161561317f576012546040516356e3af2960e11b81526001600160a01b039091169063adc75e529061314c90859085906000906004016141f1565b600060405180830381600087803b15801561316657600080fd5b505af115801561317a573d6000803e3d6000fd5b505050505b5050565b6000806000613190613b66565b6001600160a01b0388166000908152600760209081526040808320805482518185028101850190935280835284938301828280156131f757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116131d9575b5050505050905060005b815181101561345d57600082828151811061321e5761321e6141db565b60209081029190910101516040516361bfb47160e11b81526001600160a01b038e811660048301529192509082169063c37f68e290602401608060405180830381865afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132979190614382565b608089015260608801526040870152935083156132c357600f60008097509750975050505050506113ee565b60408051602080820183526001600160a01b0384811660008181526008845285902060010154845260c08a01939093528351808301855260808a0151815260e08a015260048054855163fc57d4df60e01b815291820194909452935192169263fc57d4df92602480830193928290030181865afa158015613348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336c9190614320565b60a0860181905260000361338f57600d60008097509750975050505050506113ee565b604080516020810190915260a0860151815261010086015260c085015160e08601516133c9916133be916138ae565b8661010001516138ae565b6101208601819052604086015186516133e39291906139a8565b8552610100850151606086015160208701516134009291906139a8565b60208601526001600160a01b03808c169082160361344a5761342c8561012001518b87602001516139a8565b60208601819052610100860151613444918b906139a8565b60208601525b50806134558161422b565b915050613201565b5060208301518351111561348e576020830151835160009161347e916143b8565b60009550955095505050506113ee565b600080846000015185602001516134a591906143b8565b9550955095505050506113ee565b60006110918383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b8152506139c9565b60006110918383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b815250613a03565b6012546001600160a01b03161561317f57601254604051637076c88b60e11b81526001600160a01b039091169063e0ed91169061314c90859085906000906004016141f1565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601181111561359e5761359e614339565b8360148111156135b0576135b0614339565b60408051928352602083019190915260009082015260600160405180910390a182601181111561109157611091614339565b60008060006135f5846000806000613183565b9250925092509193909250565b60008061360f8484613a32565b9050610ef981613a5a565b60005b600c548110156136af57816001600160a01b0316600c8281548110613644576136446141db565b6000918252602090912001546001600160a01b03160361369d5760405162461bcd60e51b81526020600482015260146024820152731b585c9ad95d08185b1c9958591e48185919195960621b604482015260640161093c565b806136a78161422b565b91505061361d565b50600c80546001810182556000919091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831660009081526008602052604081205460ff16613729576009611475565b6001600160a01b038085166000908152600860209081526040808320938716835260029093019052205460ff16613761576000611475565b6000806137718587866000613183565b9193509091506000905082601181111561378d5761378d614339565b146137ad578160118111156137a4576137a4614339565b92505050611091565b80156122185760046137a4565b6001600160a01b0382166000908152600860205260408120805460ff166137e5576009915050610d3f565b6001600160a01b038316600090815260028201602052604090205460ff161515600103613816576000915050610d3f565b6001600160a01b03838116600081815260028401602090815260408083208054600160ff199091168117909155600783528184208054918201815584529282902090920180546001600160a01b031916948916948517905581519384528301919091527f3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5910160405180910390a15060009392505050565b6040805160208101909152600081526040518060200160405280670de0b6b3a76400006138e386600001518660000151613a72565b6138ed91906143e1565b90529392505050565b60408051602081019091526000815260405180602001604052806138ed6139298660000151670de0b6b3a7640000613a72565b8551613ab4565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601181111561396557613965614339565b84601481111561397757613977614339565b604080519283526020830191909152810184905260600160405180910390a1836011811115610ef957610ef9614339565b6000806139b58585613a32565b90506116546139c382613a5a565b846134b3565b6000806139d68486614403565b905082858210156139fa5760405162461bcd60e51b815260040161093c9190614416565b50949350505050565b60008184841115613a275760405162461bcd60e51b815260040161093c9190614416565b50610ef983856143b8565b60408051602081019091526000815260405180602001604052806138ed856000015185613a72565b8051600090610d3f90670de0b6b3a7640000906143e1565b600061109183836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f77000000000000000000815250613ae7565b600061109183836040518060400160405280600e81526020016d646976696465206279207a65726f60901b815250613b3a565b6000831580613af4575082155b15613b0157506000611091565b6000613b0d8486614464565b905083613b1a86836143e1565b1483906139fa5760405162461bcd60e51b815260040161093c9190614416565b60008183613b5b5760405162461bcd60e51b815260040161093c9190614416565b50610ef983856143e1565b604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001613bb26040518060200160405280600081525090565b8152602001613bcd6040518060200160405280600081525090565b8152602001613be86040518060200160405280600081525090565b8152602001613c036040518060200160405280600081525090565b905290565b6001600160a01b0381168114610ec057600080fd5b600060208284031215613c2f57600080fd5b813561109181613c08565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613c7957613c79613c3a565b604052919050565b600067ffffffffffffffff821115613c9b57613c9b613c3a565b5060051b60200190565b600082601f830112613cb657600080fd5b81356020613ccb613cc683613c81565b613c50565b82815260059290921b84018101918181019086841115613cea57600080fd5b8286015b84811015613d0e578035613d0181613c08565b8352918301918301613cee565b509695505050505050565b600082601f830112613d2a57600080fd5b81356020613d3a613cc683613c81565b82815260059290921b84018101918181019086841115613d5957600080fd5b8286015b84811015613d0e578035613d7081613c08565b8352918301918301613d5d565b8015158114610ec057600080fd5b60008060008060808587031215613da157600080fd5b843567ffffffffffffffff80821115613db957600080fd5b613dc588838901613ca5565b95506020870135915080821115613ddb57600080fd5b50613de887828801613d19565b9350506040850135613df981613d7d565b91506060850135613e0981613d7d565b939692955090935050565b60008060408385031215613e2757600080fd5b8235613e3281613c08565b91506020830135613e4281613d7d565b809150509250929050565b60008060008060808587031215613e6357600080fd5b8435613e6e81613c08565b93506020850135613e7e81613c08565b92506040850135613e8e81613c08565b9396929550929360600135925050565b600060208284031215613eb057600080fd5b813561109181613d7d565b600060208284031215613ecd57600080fd5b5035919050565b60008060408385031215613ee757600080fd5b8235613ef281613c08565b9150602083013567ffffffffffffffff811115613f0e57600080fd5b613f1a85828601613d19565b9150509250929050565b60008060008060808587031215613f3a57600080fd5b8435613f4581613c08565b93506020850135613f5581613c08565b93969395505050506040820135916060013590565b600080600060608486031215613f7f57600080fd5b8335613f8a81613c08565b92506020840135613f9a81613c08565b929592945050506040919091013590565b60008083601f840112613fbd57600080fd5b50813567ffffffffffffffff811115613fd557600080fd5b6020830191508360208260051b8501011115613ff057600080fd5b9250929050565b6000806000806040858703121561400d57600080fd5b843567ffffffffffffffff8082111561402557600080fd5b61403188838901613fab565b9096509450602087013591508082111561404a57600080fd5b5061405787828801613fab565b95989497509550505050565b600080600080600060a0868803121561407b57600080fd5b853561408681613c08565b9450602086013561409681613c08565b935060408601356140a681613c08565b925060608601356140b681613c08565b949793965091946080013592915050565b600080604083850312156140da57600080fd5b82356140e581613c08565b91506020830135613e4281613c08565b6020808252825182820181905260009190848201906040850190845b818110156141365783516001600160a01b031683529284019291840191600101614111565b50909695505050505050565b60006020828403121561415457600080fd5b813567ffffffffffffffff81111561416b57600080fd5b610ef984828501613ca5565b6020808252825182820181905260009190848201906040850190845b8181101561413657835183529284019291840191600101614193565b600080604083850312156141c257600080fd5b82356141cd81613c08565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152901515604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820161423d5761423d614215565b5060010190565b60208082526028908201527f63616e6e6f742070617573652061206d61726b65742074686174206973206e6f6040820152671d081b1a5cdd195960c21b606082015260800190565b60208082526027908201527f6f6e6c7920706175736520677561726469616e20616e642061646d696e2063616040820152666e20706175736560c81b606082015260800190565b6020808252601690820152756f6e6c792061646d696e2063616e20756e706175736560501b604082015260600190565b60006020828403121561431557600080fd5b815161109181613c08565b60006020828403121561433257600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561436157600080fd5b815161109181613d7d565b634e487b7160e01b600052600160045260246000fd5b6000806000806080858703121561439857600080fd5b505082516020840151604085015160609095015191969095509092509050565b81810381811115610d3f57610d3f614215565b634e487b7160e01b600052603160045260246000fd5b6000826143fe57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610d3f57610d3f614215565b600060208083528351808285015260005b8181101561444357858101830151858201604001528201614427565b506000604082860101526040601f19601f8301168501019250505092915050565b8082028115828204841417610d3f57610d3f61421556fea26469706673582212205017b8010501e11d97d647c000e5b85e29593e86bfd1e805ae02f917e06ef42c64736f6c63430008130033