[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AddReservesMarketNotFresh", "type": "error" }, { "inputs": [], "name": "AddReservesOverflow", "type": "error" }, { "inputs": [], "name": "BorrowAndDepositBackFailed", "type": "error" }, { "inputs": [], "name": "BorrowCapReached", "type": "error" }, { "inputs": [], "name": "BorrowCashNotAvailable", "type": "error" }, { "inputs": [], "name": "BorrowMarketNotFresh", "type": "error" }, { "inputs": [], "name": "BorrowPaused", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "usdThreshold", "type": "uint256" } ], "name": "BorrowValueMustBeLargerThanThreshold", "type": "error" }, { "inputs": [], "name": "CantEnterPausedMarket", "type": "error" }, { "inputs": [], "name": "CantExitMarketWithNonZeroBorrowBalance", "type": "error" }, { "inputs": [], "name": "CantSweepUnderlying", "type": "error" }, { "inputs": [], "name": "ComptrollerMismatch", "type": "error" }, { "inputs": [], "name": "EitherAssetOrDebtMustBeZero", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "groupId", "type": "uint8" }, { "internalType": "uint256", "name": "cDepositVal", "type": "uint256" }, { "internalType": "uint256", "name": "suDepositVal", "type": "uint256" }, { "internalType": "uint256", "name": "cBorrowVal", "type": "uint256" }, { "internalType": "uint256", "name": "suBorrowVal", "type": "uint256" } ], "name": "EitherAssetOrDebtMustBeZeroInGroup", "type": "error" }, { "inputs": [], "name": "ExpiredSignature", "type": "error" }, { "inputs": [], "name": "InsufficientCollateral", "type": "error" }, { "inputs": [], "name": "InsufficientShortfall", "type": "error" }, { "inputs": [], "name": "InterMintNotAllowed", "type": "error" }, { "inputs": [], "name": "InvalidAddress", "type": "error" }, { "inputs": [], "name": "InvalidAmount", "type": "error" }, { "inputs": [], "name": "InvalidBlockNumber", "type": "error" }, { "inputs": [], "name": "InvalidCloseFactor", "type": "error" }, { "inputs": [], "name": "InvalidComptroller", "type": "error" }, { "inputs": [], "name": "InvalidDiscountRate", "type": "error" }, { "inputs": [], "name": "InvalidExchangeRate", "type": "error" }, { "inputs": [], "name": "InvalidGroupId", "type": "error" }, { "inputs": [], "name": "InvalidInput", "type": "error" }, { "inputs": [], "name": "InvalidInterestRateModel", "type": "error" }, { "inputs": [], "name": "InvalidMinSuBorrowValue", "type": "error" }, { "inputs": [], "name": "InvalidRedeem", "type": "error" }, { "inputs": [], "name": "InvalidReduceAmount", "type": "error" }, { "inputs": [], "name": "InvalidReserveFactor", "type": "error" }, { "inputs": [], "name": "InvalidSignatureForRedeemFaceValue", "type": "error" }, { "inputs": [], "name": "InvalidSignatureLength", "type": "error" }, { "inputs": [], "name": "InvalidSuToken", "type": "error" }, { "inputs": [], "name": "InvalidTimestamp", "type": "error" }, { "inputs": [], "name": "LiquidateBorrow_LiquidatorIsBorrower", "type": "error" }, { "inputs": [], "name": "LiquidateBorrow_RepayAmountIsMax", "type": "error" }, { "inputs": [], "name": "LiquidateBorrow_RepayAmountIsZero", "type": "error" }, { "inputs": [], "name": "LiquidateBorrow_SeizeTooMuch", "type": "error" }, { "inputs": [], "name": "LiquidateCollateralMarketNotFresh", "type": "error" }, { "inputs": [], "name": "LiquidateMarketNotFresh", "type": "error" }, { "inputs": [], "name": "MarketAlreadyListed", "type": "error" }, { "inputs": [], "name": "MarketAlreadyUnlisted", "type": "error" }, { "inputs": [], "name": "MarketCanOnlyInitializeOnce", "type": "error" }, { "inputs": [], "name": "MarketNotListed", "type": "error" }, { "inputs": [], "name": "MarketPaused", "type": "error" }, { "inputs": [], "name": "MinDelayNotReached", "type": "error" }, { "inputs": [], "name": "MintMarketNotFresh", "type": "error" }, { "inputs": [], "name": "MintPaused", "type": "error" }, { "inputs": [], "name": "NoRedemptionProvider", "type": "error" }, { "inputs": [], "name": "NotCToken", "type": "error" }, { "inputs": [], "name": "NotEnoughForSeize", "type": "error" }, { "inputs": [], "name": "NotLiquidatableYet", "type": "error" }, { "inputs": [], "name": "NotSuToken", "type": "error" }, { "inputs": [], "name": "OnlyAdmin", "type": "error" }, { "inputs": [], "name": "OnlyAdminOrPauser", "type": "error" }, { "inputs": [], "name": "OnlyCToken", "type": "error" }, { "inputs": [], "name": "OnlyListedCToken", "type": "error" }, { "inputs": [], "name": "OnlyPendingAdmin", "type": "error" }, { "inputs": [], "name": "OnlyRedemptionManager", "type": "error" }, { "inputs": [], "name": "OverThreshold", "type": "error" }, { "inputs": [], "name": "PriceError", "type": "error" }, { "inputs": [], "name": "ProtectedMint_OnlyAllowAssetsInTheSameGroup", "type": "error" }, { "inputs": [], "name": "RedeemMarketNotFresh", "type": "error" }, { "inputs": [], "name": "RedeemTransferOutNotPossible", "type": "error" }, { "inputs": [], "name": "RedemptionSeizeTooMuch", "type": "error" }, { "inputs": [], "name": "RedemptionSignerNotInitialized", "type": "error" }, { "inputs": [], "name": "ReduceReservesCashNotAvailable", "type": "error" }, { "inputs": [], "name": "ReduceReservesMarketNotFresh", "type": "error" }, { "inputs": [], "name": "RepayBorrowMarketNotFresh", "type": "error" }, { "inputs": [], "name": "SeizePaused", "type": "error" }, { "inputs": [], "name": "Seize_LiquidatorIsBorrower", "type": "error" }, { "inputs": [], "name": "SenderMustBeCToken", "type": "error" }, { "inputs": [], "name": "SetInterestRateModelMarketNotFresh", "type": "error" }, { "inputs": [], "name": "SetReservesFactorMarketNotFresh", "type": "error" }, { "inputs": [], "name": "SupplyCapReached", "type": "error" }, { "inputs": [], "name": "TokenInOrAmountInMustBeZero", "type": "error" }, { "inputs": [], "name": "TokenTransferInFailed", "type": "error" }, { "inputs": [], "name": "TokenTransferOutFailed", "type": "error" }, { "inputs": [], "name": "TooMuchRepay", "type": "error" }, { "inputs": [], "name": "TransferNotAllowed", "type": "error" }, { "inputs": [], "name": "TransferPaused", "type": "error" }, { "inputs": [], "name": "UnderlyingBalanceError", "type": "error" }, { "inputs": [], "name": "ZeroAddressNotAllowed", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "cashPrior", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "interestAccumulated", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "borrowIndex", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalBorrows", "type": "uint256" } ], "name": "AccrueInterest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "borrowAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "accountBorrows", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalBorrows", "type": "uint256" } ], "name": "Borrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "liquidator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "cTokenCollateral", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "seizeTokens", "type": "uint256" } ], "name": "LiquidateBorrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "mintAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "mintTokens", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "NewAdmin", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldComptroller", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newComptroller", "type": "address" } ], "name": "NewComptroller", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldDiscountRateMantissa", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newDiscountRateMantissa", "type": "uint256" } ], "name": "NewDiscountRate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldInterestRateModel", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newInterestRateModel", "type": "address" } ], "name": "NewMarketInterestRateModel", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldPendingAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newPendingAdmin", "type": "address" } ], "name": "NewPendingAdmin", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldReserveFactorMantissa", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newReserveFactorMantissa", "type": "uint256" } ], "name": "NewReserveFactor", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "redeemer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "redeemAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "redeemTokens", "type": "uint256" } ], "name": "Redeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "redeemer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "provider", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "seizeToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "seizeAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "redemptionRateMantissa", "type": "uint256" } ], "name": "RedeemFaceValue", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "payer", "type": "address" }, { "indexed": false, "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "accountBorrows", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalBorrows", "type": "uint256" } ], "name": "RepayBorrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "benefactor", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "addAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalReserves", "type": "uint256" } ], "name": "ReservesAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "admin", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "reduceAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalReserves", "type": "uint256" } ], "name": "ReservesReduced", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "_acceptAdmin", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "addAmount", "type": "uint256" } ], "name": "_addReserves", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "reduceAmount", "type": "uint256" } ], "name": "_reduceReserves", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newComptroller", "type": "address" } ], "name": "_setComptroller", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "discountRateMantissa_", "type": "uint256" } ], "name": "_setDiscountRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newInterestRateModel", "type": "address" } ], "name": "_setInterestRateModel", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "newPendingAdmin", "type": "address" } ], "name": "_setPendingAdmin", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newReserveFactorMantissa", "type": "uint256" } ], "name": "_setReserveFactor", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "_syncUnderlyingBalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "accrualBlockTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "accrueInterest", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "admin", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOfUnderlying", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "borrowAmount", "type": "uint256" } ], "name": "borrow", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "borrower", "type": "address" }, { "internalType": "uint256", "name": "borrowAmount", "type": "uint256" } ], "name": "borrowAndDepositBack", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "borrowBalanceCurrent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "borrowBalanceStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "borrowIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "borrowRatePerBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "comptroller", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "discountRateMantissa", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "exchangeRateCurrent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "exchangeRateStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getAccountSnapshot", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "borrower", "type": "address" } ], "name": "getBorrowSnapshot", "outputs": [ { "components": [ { "internalType": "uint256", "name": "principal", "type": "uint256" }, { "internalType": "uint256", "name": "interestIndex", "type": "uint256" } ], "internalType": "struct CTokenStorage.BorrowSnapshot", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCash", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "timeBasedInterestRateModel", "type": "address" } ], "name": "initAccrualBlockTimestamp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "underlying_", "type": "address" }, { "internalType": "address", "name": "comptroller_", "type": "address" }, { "internalType": "address", "name": "interestRateModel_", "type": "address" }, { "internalType": "uint256", "name": "initialExchangeRateMantissa_", "type": "uint256" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" }, { "internalType": "address payable", "name": "admin_", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initializeVersion2", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "interestRateModel", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isCEther", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "isCEtherDeprecated", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isCToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "isCTokenDeprecated", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isDeprecated", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "borrower", "type": "address" }, { "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "internalType": "address", "name": "cTokenCollateral", "type": "address" } ], "name": "liquidateBorrow", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "cTokenCollateral", "type": "address" }, { "internalType": "uint256", "name": "actualRepayAmount", "type": "uint256" } ], "name": "liquidateCalculateSeizeTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "mintAmount", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "mintAmount", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "mintWithPermit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingAdmin", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "percentScale", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "protocolSeizeShareMantissa", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "redeemTokens", "type": "uint256" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "redeemAmount", "type": "uint256" } ], "name": "redeemUnderlying", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "repayAmount", "type": "uint256" } ], "name": "repayBorrow", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "borrower", "type": "address" }, { "internalType": "uint256", "name": "repayAmount", "type": "uint256" } ], "name": "repayBorrowBehalf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "repayBorrowWithPermit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reserveFactorMantissa", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "liquidator", "type": "address" }, { "internalType": "address", "name": "borrower", "type": "address" }, { "internalType": "uint256", "name": "seizeTokens", "type": "uint256" }, { "internalType": "uint256", "name": "seizeProfitTokens", "type": "uint256" }, { "internalType": "bool", "name": "isRedemption", "type": "bool" }, { "internalType": "uint256", "name": "redemptionRateMantissa", "type": "uint256" } ], "name": "seize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "supplyRatePerBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IEIP20NonStandard", "name": "token", "type": "address" } ], "name": "sweepToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalBorrows", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalBorrowsCurrent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalReserves", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "src", "type": "address" }, { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "underlying", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "underlyingBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
6080806040523460c957670de0b6b3a76400006011556047549060ff8260081c166077575060ff80821610603d575b604051614eac90816100cf8239f35b60ff90811916176047557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a138602e565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806306fdde03146104225780630786f2231461041d578063095ea7b3146104185780630e75270214610413578063134131a21461040e578063173b99041461040957806317bfdfbc1461040457806318160ddd146103ff578063182df0f5146103fa5780631be19560146103f557806323b872dd146103f057806323e69e41146103eb5780632608f818146103e657806326782247146103e15780632826c1a1146103dc5780632d7183f6146103d7578063313ce567146103d25780633af9e669146103cd5780633b1d21a2146103aa5780633e941010146103c85780634000fbad146103c357806341e34006146103be57806342f3251a146103b95780634576b5db146103b457806347bd3718146103af57806359356c5c146103aa5780635fe3b567146103a5578063601a0bf1146103a05780636752e7021461039b5780636f307dc31461039657806370a082311461039157806373acee981461038c5780637fae873d14610387578063852a12e3146103825780638f840ddd1461037d57806395d89b411461037857806395dd9193146103735780639b1a5bf41461036e5780639e21164114610369578063a0712d6814610364578063a3e94ddd1461035f578063a6afed951461035a578063a9059cbb14610355578063aa5af0fd14610350578063ac784ddc1461034b578063ae9d70b014610346578063b586638214610341578063b71d1a0c1461033c578063bd6d894d14610337578063c37f68e214610332578063c5ebeaec1461032d578063c717823014610328578063cfa9920114610323578063d4af8de21461031e578063db006a7514610319578063dd62ed3e14610314578063e9c714f21461030f578063eac1fed01461030a578063f2b3abbd14610305578063f3fdb15a14610300578063f5e3c462146102fb578063f851a440146102f6578063f8f9da28146102f1578063fca7820b146102ec5763fe9c44ae146102e757600080fd5b6129ae565b6128e5565b61288c565b61285f565b61247b565b612452565b612348565b612327565b6121f0565b61218d565b612130565b612098565b612047565b611f1b565b611d70565b611cfd565b611ce2565b611c33565b611b97565b611af5565b611ad9565b611abb565b611a75565b611a5a565b6119d9565b611998565b611916565b6118f3565b6118cc565b611824565b611806565b6115dd565b611545565b6114f2565b6114b5565b611488565b611465565b61134b565b611322565b611017565b611304565b6111f4565b6111d6565b61118d565b61111f565b611035565b610fad565b610f8c565b610ed3565b610e36565b610d65565b610d17565b610c2c565b610bbe565b6109c3565b6109a0565b610982565b61091e565b610900565b610741565b6106e2565b610652565b61061b565b61053b565b600091031261043257565b600080fd5b90600182811c92168015610467575b602083101461045157565b634e487b7160e01b600052602260045260246000fd5b91607f1691610446565b634e487b7160e01b600052604160045260246000fd5b6020810190811067ffffffffffffffff8211176104a357604052565b610471565b6040810190811067ffffffffffffffff8211176104a357604052565b90601f8019910116810190811067ffffffffffffffff8211176104a357604052565b919082519283825260005b848110610512575050826000602080949584010152601f8019910116010190565b806020809284010151828286010152016104f1565b9060206105389281815201906104e6565b90565b34610432576000366003190112610432576040516001546000908161055f82610437565b80855291600181169081156105f45750600114610597575b61059384610587818603826104c4565b60405191829182610527565b0390f35b600181527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106105da5750909150810160200161058782610577565b9192600181602092548385880101520191019092916105c1565b60ff191660208087019190915292151560051b850190920192506105879150839050610577565b3461043257600036600319011261043257602060ff60005460081c166040519015158152f35b6001600160a01b0381160361043257565b346104325760403660031901126104325760043561066f81610641565b6024359033600052600f6020528161069d8260406000209060018060a01b0316600052602052604060002090565b556040519182526001600160a01b03169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590602090a360405160018152602090f35b346104325760203660031901126104325761072460043560005461070b60ff8260101c166129ca565b62ff0000191660005561071c612ff6565b503333613fed565b506000805462ff0000191662010000179055604051908152602090f35b346104325760403660031901126104325760043561075e81610641565b6024359060005461077460ff8260101c166129ca565b62ff00001916600055604051637f4e225760e11b8152602081600481335afa9081156108ac576000916108e1575b506108d0576005546107ca906107be906001600160a01b031681565b6001600160a01b031690565b604051637bca031760e11b8152336004820152602081602481855afa9081156108ac576000916108b1575b501561086c57604051637bca031760e11b815230600482015290602090829060249082905afa9081156108ac5760009161087d575b501561086c5761059391610846916001600160a01b031661352c565b61085c6201000062ff0000196000541617600055565b6040519081529081906020820190565b6334b04fe360e11b60005260046000fd5b61089f915060203d6020116108a5575b61089781836104c4565b810190612a03565b3861082a565b503d61088d565b612a18565b6108ca915060203d6020116108a55761089781836104c4565b386107f5565b634a8af12d60e01b60005260046000fd5b6108fa915060203d6020116108a55761089781836104c4565b386107a2565b34610432576000366003190112610432576020600854604051908152f35b3461043257602036600319011261043257602061096960043561094081610641565b60005461095260ff8260101c166129ca565b62ff00001916600055610963612ff6565b50613d79565b6201000062ff0000196000541617600055604051908152f35b34610432576000366003190112610432576020600d54604051908152f35b346104325760003660031901126104325760206109bb6136ca565b604051908152f35b34610432576020366003190112610432576004356109e081610641565b6000546001600160a01b03918216916109fc9160181c166107be565b808214610bad576040516370a0823160e01b81523060048201529190602090839060249082906001600160a01b03165afa9182156108ac57600092610b8c575b506040516370a0823160e01b8152306004820152602081602481855afa9081156108ac57600091610b6d575b5060035460081c6001600160a01b031690823b156104325760405163a9059cbb60e01b81526001600160a01b039290921660048301526024820152906000908290604490829084905af180156108ac57610b52575b50600054610ad8906107be9060181c6001600160a01b031681565b6040516370a0823160e01b81523060048201529190602090839060249082905afa9182156108ac57600092610b21575b5003610b1057005b6346edcd5360e11b60005260046000fd5b610b4491925060203d602011610b4b575b610b3c81836104c4565b810190612a24565b9038610b08565b503d610b32565b80610b616000610b67936104c4565b80610427565b38610abd565b610b86915060203d602011610b4b57610b3c81836104c4565b38610a68565b610ba691925060203d602011610b4b57610b3c81836104c4565b9038610a3c565b632f028cfb60e01b60005260046000fd5b3461043257606036600319011261043257610c0f600435610bde81610641565b602435610bea81610641565b60443591600054610c0060ff8260101c166129ca565b62ff0000191660005533613721565b6000805462ff000019166201000017905560405190158152602090f35b3461043257602036600319011261043257600435610c4981610641565b60035460081c6001600160a01b03163303610d0657601454610ce05760405163252e40b160e01b8152906020826004816001600160a01b0385165afa9182156108ac57610cc192610cc3575b50610c9f42601455565b60018060a01b03166bffffffffffffffffffffffff60a01b6006541617600655565b005b610cdb9060203d602011610b4b57610b3c81836104c4565b610c95565b50610ce9612ff6565b506014544203610cf557005b63b7d0949760e01b60005260046000fd5b634755657960e01b60005260046000fd5b3461043257604036600319011261043257610724600435610d3781610641565b60243590600054610d4d60ff8260101c166129ca565b62ff00001916600055610d5e612ff6565b5033613fed565b34610432576000366003190112610432576004546040516001600160a01b039091168152602090f35b60405190610d9d6020836104c4565b565b67ffffffffffffffff81116104a357601f01601f191660200190565b929192610dc782610d9f565b91610dd560405193846104c4565b829481845281830111610432578281602093846000960137010152565b60606003198201126104325760043591602435916044359067ffffffffffffffff821161043257806023830112156104325781602461053893600401359101610dbb565b3461043257610e4436610df2565b60005460181c6001600160a01b03169190823b1561043257610e839260009283604051809681958294639fd5a6cf60e01b84528a303360048701612a33565b03925af180156108ac57610eaf575b610593610e9e836138f1565b506040519081529081906020820190565b80610ebc600080936104c4565b8003126104325738610e92565b8015150361043257565b346104325760c036600319011261043257610593610f52600435610ef681610641565b602435610f0281610641565b6044356064359060843592610f1684610ec9565b60a43594600054610f2c60ff8260101c166129ca565b62ff000019166000558515610f83575b670de0b6b3a76400008611610f73575b33613b41565b6000805462ff00001916620100001790556040519081529081906020820190565b670de0b6b3a76400009550610f4c565b60009550610f3c565b3461043257600036600319011261043257602060ff60035416604051908152f35b34610432576020366003190112610432576020670de0b6b3a764000061100d600435610fd881610641565b610fe0613165565b9060405191610fee83610487565b82526001600160a01b03166000908152600e8552604090205490613dbb565b5104604051908152f35b34610432576000366003190112610432576020601254604051908152f35b346104325760203660031901126104325760043560005461105b60ff8260101c166129ca565b62ff0000191660005561106c612ff6565b50601454420361110e5761108090336149e4565b600c54818101908181116111095781106110f857600c8190556040805133815260208101939093528201527fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59080606081015b0390a16110ec6201000062ff0000196000541617600055565b60405160008152602090f35b6335c973c760e21b60005260046000fd5b612b91565b639d4e8c1b60e01b60005260046000fd5b34610432576020366003190112610432576003546004359060081c6001600160a01b03163303610d0657601180549082905560408051918252602082018390527f68e61dbc80efc8af787740901509a321d0fc29f4e432fae6c4e175867b96144391a1604051908152602090f35b34610432576040366003190112610432576105936111b96004356111b081610641565b60243590612bfc565b604080519384526020840192909252908201529081906060820190565b34610432576000366003190112610432576020601154604051908152f35b346104325760203660031901126104325760043561121181610641565b60035460081c6001600160a01b03163303610d06576005546001600160a01b0316604051623f1ee960e11b81529091906020816004816001600160a01b0386165afa9081156108ac576000916112e5575b50156112d457600580546001600160a01b0319166001600160a01b0383161790557f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d915b604080516001600160a01b039283168152929091166020830152819081015b0390a160405160008152602090f35b6383aebebd60e01b60005260046000fd5b6112fe915060203d6020116108a55761089781836104c4565b38611262565b34610432576000366003190112610432576020600b54604051908152f35b34610432576000366003190112610432576005546040516001600160a01b039091168152602090f35b346104325760203660031901126104325760043560005461137160ff8260101c166129ca565b62ff00001916600055611382612ff6565b5060035460081c6001600160a01b03163303610d0657601454420361145457806012541061144357600c54908181116114325780820391821161110957816113ea7f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e93600c55565b60035461140490839060081c6001600160a01b031661490b565b6003546040805160089290921c6001600160a01b0316825260208201939093529182015280606081016110d3565b63152125f760e21b60005260046000fd5b633345e99960e01b60005260046000fd5b631747e30360e21b60005260046000fd5b34610432576000366003190112610432576020604051670429d069189e00008152f35b346104325760003660031901126104325760005460405160189190911c6001600160a01b03168152602090f35b34610432576020366003190112610432576004356114d281610641565b60018060a01b0316600052600e6020526020604060002054604051908152f35b346104325760003660031901126104325760005461151560ff8260101c166129ca565b62ff00001916600055611526612ff6565b506020600b546201000062ff0000196000541617600055604051908152f35b346104325760003660031901126104325761010260475460ff8160081c1615806115d0575b61157390612f86565b61ffff19161760475560035460081c6001600160a01b03163303610d06576115a161ff001960475416604755565b604051600281527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b50600260ff82161061156a565b346104325760203660031901126104325760043560005461160360ff8260101c166129ca565b62ff00001916600055611614612ff6565b506000906116346116236136ca565b61162b610d8e565b90815282614e2a565b60055461164b906107be906001600160a01b031681565b803b156118025783604051809263eabe7d9160e01b8252818381611674883330600485016141ec565b03925af180156108ac576117ee575b5060145442036117df5781601254106117d057806116ac6116a78593600d54612fe9565b600d55565b336000908152600e602052604090206116c89082905b54612fe9565b336000908152600e6020526040902055336116e38482614d36565b604051828152309190600080516020614e5783398151915290602090a360408051338152602081018590529081018290527fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a92990606090a1600554611751906107be906001600160a01b031681565b803b156117cc576040516351dff98960e01b8152306004820152336024820152604481019490945260648401919091528290818381608481015b03925af180156108ac576117b8575b50506000805462ff0000191662010000178155604051908152602090f35b80610b61836117c6936104c4565b3861179a565b8280fd5b6391240a1b60e01b8352600483fd5b63a17754ef60e01b8352600483fd5b80610b61856117fc936104c4565b38611683565b8380fd5b34610432576000366003190112610432576020600c54604051908152f35b34610432576000366003190112610432576040516002546000908161184882610437565b80855291600181169081156105f4575060011461186f5761059384610587818603826104c4565b600281527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b8082106118b25750909150810160200161058782610577565b919260018160209254838588010152019101909291611899565b346104325760203660031901126104325760206109bb6004356118ee81610641565b613d79565b3461043257600036600319011261043257602060ff600054166040519015158152f35b346104325761192436610df2565b60005460181c6001600160a01b03169190823b15610432576119639260009283604051809681958294639fd5a6cf60e01b84528a303360048701612a33565b03925af180156108ac5761197e575b610593610e9e83613501565b8061198b600080936104c4565b8003126104325738611972565b34610432576020366003190112610432576107246004356000546119c160ff8260101c166129ca565b62ff000019166000556119d2612ff6565b50336143e6565b34610432576020366003190112610432576004356119f681610641565b60006020604051611a06816104a8565b828152015260018060a01b031660005260106020526105936040600020600160405191611a32836104a8565b8054835201546020820152604051918291829190916020806040830194805184520151910152565b346104325760003660031901126104325760206109bb612ff6565b3461043257604036600319011261043257610c0f600435611a9581610641565b60243590600054611aab60ff8260101c166129ca565b62ff000019166000553380613721565b34610432576000366003190112610432576020600a54604051908152f35b3461043257600036600319011261043257602060405160008152f35b3461043257600036600319011261043257600654601254600b54600c54600854604051635c0b440b60e11b815260048101949094526024840192909252604483015260648201529060209082906001600160a01b03168180608481015b03915afa80156108ac5761059391600091611b7857506040519081529081906020820190565b611b91915060203d602011610b4b57610b3c81836104c4565b38610e9e565b346104325760003660031901126104325760035460081c6001600160a01b03163303610d06576000546040516370a0823160e01b815230600482015290602090829060181c6001600160a01b031681806024810103915afa80156108ac57610cc191600091611c07575b50601255565b611c20915060203d602011610b4b57610b3c81836104c4565b38611c01565b60e43590610d9d82610641565b3461043257602036600319011261043257600435611c5081610641565b60035460081c6001600160a01b03163303610d06576004546001600160a01b03821691908215611cd1576001600160a01b03198116909217600455604080516001600160a01b0393841681529290911660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99190819081016112c5565b63e6c4247b60e01b60005260046000fd5b346104325760003660031901126104325760206109bb613165565b3461043257602036600319011261043257600435611d1a81610641565b6001600160a01b0381166000908152600e602052604090205490611d3d90613d79565b90610593611d496136ca565b60115490604051948594859094939260609260808301968352602083015260408201520152565b3461043257602036600319011261043257600435600054611d9660ff8260101c166129ca565b62ff00001916600055611da7612ff6565b5060055460009190611dc3906107be906001600160a01b031681565b803b156117cc5782604051809263368f515360e21b8252818381611dec883330600485016141ec565b03925af180156108ac57611f07575b506014544203611ef8578060125410611ee95781907f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab8033611e4483611e3f83613d79565b612bef565b611e7a84611e5481600b54612bef565b336000908152601060205260409020848155600a54600190910155600b81905593614bfd565b6040805133815260208101869052908101919091526060810191909152608090a1600554611eb2906107be906001600160a01b031681565b90813b15611ee557604051631407e28160e01b81523360048201526024810191909152919082908183816044810161178b565b5050fd5b6348c2588160e01b8252600482fd5b630a42bc3960e41b8252600482fd5b80610b6184611f15936104c4565b38611dfb565b3461043257600036600319011261043257600554611f43906107be906001600160a01b031681565b604051638e8f294b60e01b8152306004820152606081602481855afa80156108ac5760ff91600091612015575b5016159081611fa1575b5080611f8e575b6040519015158152602090f35b50600854670de0b6b3a764000014611f81565b604051632068e5f960e21b8152306004820152915060c090829060249082905afa9081156108ac57611fe091602091600091611fe6575b500151151590565b38611f7a565b612008915060c03d60c01161200e575b61200081836104c4565b8101906131c1565b38611fd8565b503d611ff6565b612037915060603d606011612040575b61202f81836104c4565b810190612a6c565b50905038611f70565b503d612025565b34610432576000366003190112610432576020601454604051908152f35b9080601f830112156104325781602061053893359101610dbb565b60ff81160361043257565b60c43590610d9d82612080565b3461043257610100366003190112610432576004356120b681610641565b602435906120c382610641565b604435916120d083610641565b6064359260843567ffffffffffffffff8111610432576120f4903690600401612065565b60a4359467ffffffffffffffff861161043257612118610cc1963690600401612065565b9261212161208b565b9461212a611c26565b96613256565b346104325760203660031901126104325761217160043560005461215960ff8260101c166129ca565b62ff0000191660005561216a612ff6565b503361456a565b6000805462ff0000191662010000179055604051908152602090f35b346104325760403660031901126104325760206121e76004356121af81610641565b602435906121bc82610641565b60018060a01b0316600052600f835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b34610432576000366003190112610432576004546001600160a01b038116331480159061231f575b61230e576003547fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991907ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc9061228a9061227d9060081c6001600160a01b03166107be565b926001600160a01b031690565b60038054610100600160a81b031916600883901b610100600160a81b03161790556001600160a01b031691600480546001600160a01b0319169055600354604080516001600160a01b03938416815260089290921c9092166020820152a1600454604080516001600160a01b039384168152929091166020830152819081016112c5565b63d1ec4b2360e01b60005260046000fd5b503315612218565b34610432576000366003190112610432576020604051655af3107a40008152f35b346104325760203660031901126104325760043561236581610641565b61236d612ff6565b5060035460081c6001600160a01b03163303610d06576014544203612441576006546001600160a01b031690600460206123a6846107be565b6040516310c8fc9560e11b815292839182905afa9081156108ac57600091612422575b501561241157600680546001600160a01b0319166001600160a01b0383161790557fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926916112a6565b63ee39b72560e01b60005260046000fd5b61243b915060203d6020116108a55761089781836104c4565b386123c9565b637b964b3b60e01b60005260046000fd5b34610432576000366003190112610432576006546040516001600160a01b039091168152602090f35b346104325760603660031901126104325760043561249881610641565b60243590604435906124a982610641565b6000546124bb60ff8260101c166129ca565b62ff000019166000556124cc612ff6565b5060405163a6afed9560e01b81526001600160a01b03831693906020816004816000895af180156108ac57612842575b50600554612514906107be906001600160a01b031681565b803b156104325760006040518092632fe3f38f60e11b8252818061253f8789338c3060048701613907565b03915afa80156108ac5761282d575b50601454420361281c5760405163cfa9920160e01b81526020816004816000895af19081156108ac576000916127fd575b5042036127ec576001600160a01b03821633146127db5780156127ca5760001981146127b9576125b0908233613fed565b9190506125bd8284612bfc565b6040516370a0823160e01b81526001600160a01b0385166004820152919690925090602081602481855afa80156108ac57879160009161279a575b50106127895730810361270b57506126139085833330613939565b505b604080513381526001600160a01b0383811660208301529181018490529084166060820152608081018590527f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529060a090a160055461267e906107be906001600160a01b031681565b90813b15610432576040516347ef3b3b60e01b81523060048201526001600160a01b03948516602482015233604482015293166064840152608483019190915260a482019290925290600090829060c490829084905af180156108ac576126f6575b6110ec6201000062ff0000196000541617600055565b80610b616000612705936104c4565b386126e0565b6040516316b8c1fb60e11b81523360048201526001600160a01b038416602482015260448101879052606481019290925260006084830181905260a48301819052602091839160c4918391905af180156108ac5761276a575b50612615565b6127829060203d602011610b4b57610b3c81836104c4565b5038612764565b630e7a24eb60e11b60005260046000fd5b6127b3915060203d602011610b4b57610b3c81836104c4565b386125f8565b63f72ef4e160e01b60005260046000fd5b63b2f72f4760e01b60005260046000fd5b63039f861b60e51b60005260046000fd5b633e88627b60e11b60005260046000fd5b612816915060203d602011610b4b57610b3c81836104c4565b3861257f565b63fbf3ea7960e01b60005260046000fd5b80610b61600061283c936104c4565b3861254e565b61285a9060203d602011610b4b57610b3c81836104c4565b6124fc565b346104325760003660031901126104325760035460405160089190911c6001600160a01b03168152602090f35b3461043257600036600319011261043257600654601254600b54600c546040516315f2405360e01b81526004810193909352602483019190915260448201529060209082906001600160a01b0316818060648101611b52565b346104325760203660031901126104325760043560005461290b60ff8260101c166129ca565b62ff0000191660005561291c612ff6565b5060035460081c6001600160a01b03163303610d0657601454420361299d57670de0b6b3a7640000811161298c5760088054908290556040805191825260208201929092527faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f82146091819081016110d3565b631b9bc96960e11b60005260046000fd5b637b452e8160e11b60005260046000fd5b3461043257600036600319011261043257602060405160018152f35b156129d157565b60405162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b6044820152606490fd5b90816020910312610432575161053881610ec9565b6040513d6000823e3d90fd5b90816020910312610432575190565b6001600160a01b039182168152911660208201526040810191909152606081019190915260a060808201819052610538929101906104e6565b90816060910312610432578051612a8281610ec9565b9160406020830151612a9381612080565b92015161053881610ec9565b15612aa657565b60405162461bcd60e51b81526020600482015260166024820152751c995c185e481d1bdad95b881b9bdd081b1a5cdd195960521b6044820152606490fd5b15612aeb57565b60405162461bcd60e51b81526020600482015260166024820152751cd95a5e99481d1bdad95b881b9bdd081b1a5cdd195960521b6044820152606490fd5b519061ffff8216820361043257565b9081606091031261043257604051906060820182811067ffffffffffffffff8211176104a357612b89916040918252612b7081612b29565b8452612b7e60208201612b29565b602085015201612b29565b604082015290565b634e487b7160e01b600052601160045260246000fd5b90655af3107a4000820291808304655af3107a4000149015171561110957565b8181029291811591840414171561110957565b90670de0b6b3a7640000820180921161110957565b9190820180921161110957565b600554909290612c16906107be906001600160a01b031681565b604051638e8f294b60e01b81523060048201529092606082602481875afa9182156108ac57600090600093612f61575b50612c5090612a9f565b604051638e8f294b60e01b81526001600160a01b038616600482015291606083602481885afa9283156108ac57600090600094612f3c575b50612c9290612ae4565b60405163231d97a560e21b815290606082600481895afa9182156108ac57600092612f0b575b5060ff80612cda612cd5612cce865161ffff1690565b61ffff1690565b612ba7565b9516911614612e86575b506040516312bdd04160e31b815230600482015291602083602481885afa9283156108ac57600093612e65575b506040516312bdd04160e31b81526001600160a01b038716600482015294602090869060249082905afa9485156108ac57600095612e40575b5060405163182df0f560e01b81529495939493602090859060049082906001600160a01b03165afa9283156108ac5782612dfa612e0f93612df4612ded612e0098612e0096612e159b600092612e1b575b50612de490612dc8612dac87612bda565b612db4610d8e565b908152612dbf610d8e565b90838252613cf7565b95612dd1610d8e565b908152612ddc610d8e565b918252613cf7565b9c612dd1610d8e565b8092613d30565b99613d30565b97613dbb565b670de0b6b3a764000090510490565b94613dbb565b60009291565b612de4919250612e399060203d602011610b4b57610b3c81836104c4565b9190612d9b565b6004949550612e5d602091823d8411610b4b57610b3c81836104c4565b959450612d4a565b612e7f91935060203d602011610b4b57610b3c81836104c4565b9138612d11565b604051637f4e225760e11b815291925090602081600481305afa9081156108ac57600091612eec575b50612ed157612cd5612cce6040612ec993015161ffff1690565b905b38612ce4565b612cd5612cce6020612ee693015161ffff1690565b90612ecb565b612f05915060203d6020116108a55761089781836104c4565b38612eaf565b612f2e91925060603d606011612f35575b612f2681836104c4565b810190612b38565b9038612cb8565b503d612f1c565b612c929450612f5a915060603d6060116120405761202f81836104c4565b5093612c88565b612c509350612f7f915060603d6060116120405761202f81836104c4565b5092612c46565b15612f8d57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b9190820391821161110957565b60145442811461315f57601254600b5490600c5492600a54926130266107be6107be60065460018060a01b031690565b6040516315f2405360e01b81526004810185905260248101839052604481018790529590602090879060649082905afa9586156108ac576130ee86611e3f612e006130dc996130e86130bf7f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc049d6131329b61310f9960009261313a575b506130ae9042612fe9565b906130b7610d8e565b908152613dbb565b97611e3f612e006130d3612e008d8d613dbb565b9e8f9c8d612bef565b9b6008546130b7610d8e565b96613dbb565b916130f842601455565b61310183600a55565b61310a84600b55565b600c55565b604051948594859094939260609260808301968352602083015260408201520152565b0390a1600090565b6130ae9192506131589060203d602011610b4b57610b3c81836104c4565b91906130a3565b50600090565b60005461317760ff8260101c166129ca565b62ff00001916600055613188612ff6565b506131916136ca565b906201000062ff0000196000541617600055565b51906effffffffffffffffffffffffffffff8216820361043257565b908160c0910312610432576040519060c0820182811067ffffffffffffffff8211176104a35761324e9160a09160405280516131fc81610ec9565b8452602081015161320c81610ec9565b6020850152604081015161321f81610ec9565b6040850152606081015161323281610ec9565b6060850152613243608082016131a5565b6080850152016131a5565b60a082015290565b96949290916132a39694926047549861328760ff8b60081c16151515809b81613321575b8115613301575b50612f86565b8961329a600160ff196047541617604755565b6132e85761332f565b6132a957565b6132b961ff001960475416604755565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b6132fc61010061ff00196047541617604755565b61332f565b303b15915081613313575b5038613281565b60ff1660011490503861330c565b600160ff821610915061327a565b60038054610100600160a81b03191660089990991b610100600160a81b03169890981790975592949390929091601454158015906134f6575b6134e557600755600754156134d457613484947fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926613467613474957f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d61342a61346f966133dc670de0b6b3a7640000601155565b6133ed67016345785d8a0000600855565b600580546001600160a01b0319166001600160a01b0383161790555b60408051600081526001600160a01b03909216602083015290918291820190565b0390a161343642601455565b613447670de0b6b3a7640000600a55565b600680546001600160a01b0319166001600160a01b038316179055613409565b0390a1613e27565b613f10565b60ff1660ff196003541617600355565b61349a6201000062ff0000196000541617600055565b6001600160a01b03811615611cd157600080546301000000600160b81b03191660189290921b6301000000600160b81b0316919091179055565b63a2ec3a5560e01b60005260046000fd5b634743547560e01b60005260046000fd5b50600a541515613368565b6135179060005461070b60ff8260101c166129ca565b6000805462ff00001916620100001790559091565b613534612ff6565b5061353f828261420e565b506005546000916001600160a01b039081169161355e916107be911681565b803b156117cc57826040518092634ef4c3e160e01b82528183816135878a8930600485016141ec565b03925af180156108ac57613696575b506014544203613687576135d06135ab6136ca565b6135b3610d8e565b9081526135ca6135c586601254612bef565b601255565b84614e2a565b6135df6116a782600d54612bef565b6001600160a01b0382166000908152600e602052604090206136049082905b54612bef565b6001600160a01b0383166000908152600e6020526040902055604080516001600160a01b0384168152602081018690529081018290527f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f9080606081010390a16040519081523090600080516020614e5783398151915290602090a35050600090565b633393b25760e01b8252600482fd5b80610b61846136a4936104c4565b38613596565b81156136b4570490565b634e487b7160e01b600052601260045260246000fd5b600d54806136d9575060075490565b60125490600b54820180921161110957600c54918281039281841161110957670de0b6b3a76400008402938404670de0b6b3a7640000149114171561110957610538916136aa565b600554613738906107be906001600160a01b031681565b803b15610432576040516317b9b84b60e31b81523060048201526001600160a01b0384811660248301528516604482015260648101869052906000908290608490829084905af180156108ac576138dc575b506001600160a01b0383811694908316938486146138cb57600080516020614e578339815191529361385b936001600160a01b03811687036138a2576000195b6137d48582612fe9565b936138416137f8876116c28760018060a01b0316600052600e602052604060002090565b91613819886135fe8360018060a01b0316600052600e602052604060002090565b6001600160a01b038781166000908152600e6020526040808220969096559216825292902090565b5519613863575b5050604051918252509081906020820190565b0390a3600090565b6138826138999260018060a01b0316600052600f602052604060002090565b9060018060a01b0316600052602052604060002090565b55388080613848565b6001600160a01b0382166000908152600f602052604090206138c5908290613882565b546137ca565b638cd22d1960e01b60005260046000fd5b80610b6160006138eb936104c4565b3861378a565b613517906000546119c160ff8260101c166129ca565b6001600160a01b0391821681529181166020830152918216604082015291166060820152608081019190915260a00190565b9091926000916139566107be6107be60055460018060a01b031690565b90813b1561180257858392868680946139866040519788968795869463d02f735160e01b86523060048701613907565b03925af180156108ac57613b2d575b506001600160a01b038381169590851692838714613b1e57506139cb906139ba610d8e565b90670429d069189e00008252614551565b93848210613b0d57847fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc593613a03613b099785612fe9565b95613a1b612e0084613a136136ca565b6130b7610d8e565b93613a80613a64613a2e87600c54612bef565b97613a3889600c55565b613a476116a788600d54612fe9565b6001600160a01b0384166000908152600e602052604090206116c2565b6001600160a01b039092166000908152600e6020526040902090565b55613aa4613a64886135fe8460018060a01b0316600052600e602052604060002090565b558781600080516020614e5783398151915260405180613ac98b829190602083019252565b0390a36040519182523091600080516020614e5783398151915290602090a3604080513081526020810192909252810191909152606090a1600092614792565b5090565b632c3508cb60e21b60005260046000fd5b637a2d3db360e01b8152600490fd5b80610b6184613b3b936104c4565b38613995565b600554919594939291613b5e906107be906001600160a01b031681565b803b15610432578260009188838795613b8e6040519788968795869463d02f735160e01b86523060048701613907565b03925af180156108ac57613ce2575b506001600160a01b038581169690821693848814613cd1578515613cbf5750613bd190613bc8610d8e565b90815283614551565b808310613b0d577fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc593613c048285612fe9565b96613c14612e0084613a136136ca565b93613c27613a64613a2e87600c54612bef565b55613c4b613a64896135fe8460018060a01b0316600052600e602052604060002090565b558781600080516020614e5783398151915260405180613c708c829190602083019252565b0390a36040519182523091600080516020614e5783398151915290602090a3604080513081526020810192909252810191909152606090a115613cb65761315f9161456a565b61315f91614792565b613ccc91506139ba610d8e565b613bd1565b637a2d3db360e01b60005260046000fd5b80610b616000613cf1936104c4565b38613b9d565b670de0b6b3a764000091613d1d916000604051613d1381610487565b5251905190612bc7565b0460405190613d2b82610487565b815290565b6000604051613d3e81610487565b5251670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561110957613d6c9151906136aa565b60405190613d2b82610487565b6001600160a01b031660009081526010602052604090208054908115613db4576001613dab61053893600a5490612bc7565b910154906136aa565b5050600090565b90613d6c916000604051613dce81610487565b5251612bc7565b601f8211613de257505050565b6000526020600020906020601f840160051c83019310613e1d575b601f0160051c01905b818110613e11575050565b60008155600101613e06565b9091508190613dfd565b90815167ffffffffffffffff81116104a357613e4f81613e48600154610437565b6001613dd5565b602092601f8211600114613e9157613e8192938291600092613e86575b50508160011b916000199060031b1c19161790565b600155565b015190503880613e6c565b6001600052601f198216937fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69160005b868110613ef85750836001959610613edf575b505050811b01600155565b015160001960f88460031b161c19169055388080613ed4565b91926020600181928685015181550194019201613ec1565b90815167ffffffffffffffff81116104a357613f3881613f31600254610437565b6002613dd5565b602092601f8211600114613f6e57613f6992938291600092613e865750508160011b916000199060031b1c19161790565b600255565b6002600052601f198216937f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9160005b868110613fd55750836001959610613fbc575b505050811b01600255565b015160001960f88460031b161c19169055388080613fb1565b91926020600181928685015181550194019201613f9e565b60055492939290919061400a906107be906001600160a01b031681565b803b1561043257604051631200453160e11b81523060048201526001600160a01b0384811660248301528316604482015260648101869052906000908290608490829084905af180156108ac576141d7575b5060145442036141c6577f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a16140ad6140a66140a061409985613d79565b80986149d2565b856149e4565b8096612fe9565b6140b986600b54612fe9565b90806140d78560018060a01b03166000526010602052604060002090565b55600a546001600160a01b03851660009081526010602052604090206001015561410082600b55565b604080516001600160a01b038781168252861660208201529081018890526060810191909152608081019190915260a090a1600554614149906107be906001600160a01b031681565b91600a5492803b1561043257604051631ededc9160e01b81523060048201526001600160a01b03928316602482015292909116604483015260648201859052608482019290925290600090829060a490829084905af180156108ac576141b1575b5060009190565b80610b6160006141c0936104c4565b386141aa565b63c714a2d560e01b60005260046000fd5b80610b6160006141e6936104c4565b3861405c565b6001600160a01b03918216815291166020820152604081019190915260600190565b600554600090614228906107be906001600160a01b031681565b803b156143e25781604051809263368f515360e21b82528183816142518a8a30600485016141ec565b03925af180156108ac576143ce575b5060145442036143bf5782601254106143b0577f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80906142ab84611e3f6001600160a01b038616613d79565b6142b785600b54612bef565b91816142d58660018060a01b03166000526010602052604060002090565b55600a546001600160a01b0386166000908152601060205260409020600101556142fe83600b55565b5061430e6135c586601254612fe9565b604080516001600160a01b038616815260208101879052908101919091526060810191909152608090a160055461434f906107be906001600160a01b031681565b91823b1561043257604051631407e28160e01b81526001600160a01b0390921660048301526024820152906000908290818381604481015b03925af180156108ac5761439b5750600090565b80610b6160006143aa936104c4565b3861315f565b6348c2588160e01b8152600490fd5b630a42bc3960e41b8152600490fd5b80610b61836143dc936104c4565b38614260565b5080fd5b600554919291614400906107be906001600160a01b031681565b803b156104325760006040518092634ef4c3e160e01b825281838161442a8a8930600485016141ec565b03925af180156108ac5761453c575b50601454420361452b5761446a6144636144516136ca565b9461445a610d8e565b958652836149e4565b9384614e2a565b6144796116a782600d54612bef565b6001600160a01b0382166000908152600e6020526040902061449c9082906135fe565b6001600160a01b0383166000908152600e6020526040902055604080516001600160a01b0384168152602081018690529081018290527f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f9080606081010390a16040519081526001600160a01b0391909116903090600080516020614e5783398151915290602090a360009190565b633393b25760e01b60005260046000fd5b80610b61600061454b936104c4565b38614439565b61456690670de0b6b3a7640000925190612bc7565b0490565b81151591828061478a575b614779576145816136ca565b9261458a610d8e565b938452600090156147645750612e00816145a49294613dbb565b915b6005546145bd906107be906001600160a01b031681565b803b15610432576000604051809263eabe7d9160e01b82528183816145e7888a30600485016141ec565b03925af180156108ac5761474f575b50601454420361473e57826012541061472d576146186116a782600d54612fe9565b6001600160a01b0382166000908152600e6020526040902061463b9082906116c2565b6001600160a01b0383166000908152600e60205260409020556001600160a01b0382166146688482614d36565b604051828152309190600080516020614e578339815191529080602081015b0390a3604080516001600160a01b0384168152602081018590529081018290527fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a92990606090a16005546146e4906107be906001600160a01b031681565b803b15610432576040516351dff98960e01b81523060048201526001600160a01b0390931660248401526044830193909352606482015290600090829081838160848101614387565b6391240a1b60e01b60005260046000fd5b63a17754ef60e01b60005260046000fd5b80610b61600061475e936104c4565b386145f6565b61477092939150614e2a565b906000916145a6565b63431f269d60e01b60005260046000fd5b506000614575565b600091801515908180614904575b6148f5576147ac6136ca565b916147b5610d8e565b928352156148e457612e00816147cb9293613dbb565b925b6005546147e4906107be906001600160a01b031681565b803b156143e25781604051809263eabe7d9160e01b825281838161480d898b30600485016141ec565b03925af180156108ac576148d0575b5060145442036148c15783601254106148b25761483e6116a783600d54612fe9565b6001600160a01b0383166000908152600e602052604090206148619083906116c2565b6001600160a01b0384166000908152600e602052604090205550614885838361490b565b60405181815230906001600160a01b03841690600080516020614e57833981519152908060208101614687565b6391240a1b60e01b8152600490fd5b63a17754ef60e01b8152600490fd5b80610b61836148de936104c4565b3861481c565b506148ef9083614e2a565b826147cd565b63431f269d60e01b8452600484fd5b50836147a0565b600054909190614928906107be9060181c6001600160a01b031681565b803b156104325760405163a9059cbb60e01b81526001600160a01b03939093166004840152602483018290526000908390604490829084905af19081156108ac5761497f926135c5926149bd575b50601254612fe9565b3d80156149b45760201461499257600080fd5b60206000803e6000515b156149a357565b637308799360e11b60005260046000fd5b5060001961499c565b80610b6160006149cc936104c4565b38614976565b90808210156149df575090565b905090565b6000549091906149ff9060181c6001600160a01b03166107be565b6040516370a0823160e01b815230600482015292906020846024816001600160a01b0385165afa9384156108ac57600094614b59575b506001600160a01b031691823b1561043257614a6d92600092836040518096819582946323b872dd60e01b84523090600485016141ec565b03925af180156108ac57614b44575b503d8015614b3b57602014614a9057600080fd5b60206000803e6000515b15614b0957600054614ab9906107be9060181c6001600160a01b031681565b6040516370a0823160e01b81523060048201529190602090839060249082905afa9182156108ac57600092614b1a575b50808210614b0957614afa91612fe9565b6105386135c582601254612bef565b63065559c560e51b60005260046000fd5b614b3491925060203d602011610b4b57610b3c81836104c4565b9038614ae9565b50600019614a9a565b80610b616000614b53936104c4565b38614a7c565b614b7391945060203d602011610b4b57610b3c81836104c4565b9238614a35565b90816020910312610432575161053881610641565b3d15614bba573d90614ba082610d9f565b91614bae60405193846104c4565b82523d6000602084013e565b606090565b91939260608301946002831015614be7576040928452602084015260018060a01b0316910152565b634e487b7160e01b600052602160045260246000fd5b6005546004929190602090614c1c906107be906001600160a01b031681565b6040516334cc866d60e21b815294859182905afa9283156108ac57600093614d05575b506040516379befbd160e01b6020820190815260248201849052600091829190614c7681604481015b03601f1981018352826104c4565b519082875af1614c84614b8f565b5015614c9d57610d9d92506001600160a01b031661490b565b614cd9926020926001600160a01b0390911690614cba818361490b565b6000604051809681958294633033674760e11b84528460048501614bbf565b03925af180156108ac57614cea5750565b614d029060203d602011610b4b57610b3c81836104c4565b50565b614d2891935060203d602011614d2f575b614d2081836104c4565b810190614b7a565b9138614c3f565b503d614d16565b9060049160006020614d556107be6107be60055460018060a01b031690565b6040516334cc866d60e21b815295869182905afa9384156108ac578194614e09575b506040516379befbd160e01b60208201908152602482018590528291829190614da38160448101614c68565b519082885af1614db1614b8f565b5015614dcb5750610d9d92506001600160a01b031661490b565b614cd9936020936001600160a01b0390911691614de8828461490b565b506000604051809681958294633033674760e11b8452600160048501614bbf565b614e2391945060203d602011614d2f57614d2081836104c4565b9238614d77565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715611109576105389151906136aa56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212202e1a3c42884d83d26c6e4d4a89a329a2ba1ad3c432b579275f9c1f210e3abe0d64736f6c634300081a0033