{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPoolAddressesProvider","name":"provider","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"backer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"BackUnbacked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"onBehalfOf","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"enum DataTypes.InterestRateMode","name":"interestRateMode","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"borrowRate","type":"uint256"},{"indexed":true,"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"initiator","type":"address"},{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"enum DataTypes.InterestRateMode","name":"interestRateMode","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"premium","type":"uint256"},{"indexed":true,"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"FlashLoan","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalDebt","type":"uint256"}],"name":"IsolationModeTotalDebtUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"collateralAsset","type":"address"},{"indexed":true,"internalType":"address","name":"debtAsset","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"debtToCover","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidatedCollateralAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"liquidator","type":"address"},{"indexed":false,"internalType":"bool","name":"receiveAToken","type":"bool"}],"name":"LiquidationCall","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"onBehalfOf","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"MintUnbacked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountMinted","type":"uint256"}],"name":"MintedToTreasury","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"RebalanceStableBorrowRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"repayer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"useATokens","type":"bool"}],"name":"Repay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":false,"internalType":"uint256","name":"liquidityRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stableBorrowRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"variableBorrowRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"variableBorrowIndex","type":"uint256"}],"name":"ReserveDataUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"ReserveUsedAsCollateralDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"ReserveUsedAsCollateralEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"onBehalfOf","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"Supply","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"enum DataTypes.InterestRateMode","name":"interestRateMode","type":"uint8"}],"name":"SwapBorrowRateMode","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint8","name":"categoryId","type":"uint8"}],"name":"UserEModeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"ADDRESSES_PROVIDER","outputs":[{"internalType":"contract IPoolAddressesProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BRIDGE_PROTOCOL_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FLASHLOAN_PREMIUM_TOTAL","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FLASHLOAN_PREMIUM_TO_PROTOCOL","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_NUMBER_RESERVES","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_STABLE_RATE_BORROW_SIZE_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL_REVISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"backUnbacked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"interestRateMode","type":"uint256"},{"internalType":"uint16","name":"referralCode","type":"uint16"},{"internalType":"address","name":"onBehalfOf","type":"address"}],"name":"borrow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"},{"components":[{"internalType":"uint16","name":"ltv","type":"uint16"},{"internalType":"uint16","name":"liquidationThreshold","type":"uint16"},{"internalType":"uint16","name":"liquidationBonus","type":"uint16"},{"internalType":"address","name":"priceSource","type":"address"},{"internalType":"string","name":"label","type":"string"}],"internalType":"struct DataTypes.EModeCategory","name":"category","type":"tuple"}],"name":"configureEModeCategory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"dropReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"balanceFromBefore","type":"uint256"},{"internalType":"uint256","name":"balanceToBefore","type":"uint256"}],"name":"finalizeTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiverAddress","type":"address"},{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"interestRateModes","type":"uint256[]"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"flashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiverAddress","type":"address"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"flashLoanSimple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getConfiguration","outputs":[{"components":[{"internalType":"uint256","name":"data","type":"uint256"}],"internalType":"struct DataTypes.ReserveConfigurationMap","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"id","type":"uint8"}],"name":"getEModeCategoryData","outputs":[{"components":[{"internalType":"uint16","name":"ltv","type":"uint16"},{"internalType":"uint16","name":"liquidationThreshold","type":"uint16"},{"internalType":"uint16","name":"liquidationBonus","type":"uint16"},{"internalType":"address","name":"priceSource","type":"address"},{"internalType":"string","name":"label","type":"string"}],"internalType":"struct DataTypes.EModeCategory","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"id","type":"uint16"}],"name":"getReserveAddressById","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getReserveData","outputs":[{"components":[{"components":[{"internalType":"uint256","name":"data","type":"uint256"}],"internalType":"struct DataTypes.ReserveConfigurationMap","name":"configuration","type":"tuple"},{"internalType":"uint128","name":"liquidityIndex","type":"uint128"},{"internalType":"uint128","name":"currentLiquidityRate","type":"uint128"},{"internalType":"uint128","name":"variableBorrowIndex","type":"uint128"},{"internalType":"uint128","name":"currentVariableBorrowRate","type":"uint128"},{"internalType":"uint128","name":"currentStableBorrowRate","type":"uint128"},{"internalType":"uint40","name":"lastUpdateTimestamp","type":"uint40"},{"internalType":"uint16","name":"id","type":"uint16"},{"internalType":"address","name":"aTokenAddress","type":"address"},{"internalType":"address","name":"stableDebtTokenAddress","type":"address"},{"internalType":"address","name":"variableDebtTokenAddress","type":"address"},{"internalType":"address","name":"interestRateStrategyAddress","type":"address"},{"internalType":"uint128","name":"accruedToTreasury","type":"uint128"},{"internalType":"uint128","name":"unbacked","type":"uint128"},{"internalType":"uint128","name":"isolationModeTotalDebt","type":"uint128"}],"internalType":"struct DataTypes.ReserveData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getReserveNormalizedIncome","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getReserveNormalizedVariableDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReservesList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserAccountData","outputs":[{"internalType":"uint256","name":"totalCollateralBase","type":"uint256"},{"internalType":"uint256","name":"totalDebtBase","type":"uint256"},{"internalType":"uint256","name":"availableBorrowsBase","type":"uint256"},{"internalType":"uint256","name":"currentLiquidationThreshold","type":"uint256"},{"internalType":"uint256","name":"ltv","type":"uint256"},{"internalType":"uint256","name":"healthFactor","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserConfiguration","outputs":[{"components":[{"internalType":"uint256","name":"data","type":"uint256"}],"internalType":"struct DataTypes.UserConfigurationMap","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserEMode","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"aTokenAddress","type":"address"},{"internalType":"address","name":"stableDebtAddress","type":"address"},{"internalType":"address","name":"variableDebtAddress","type":"address"},{"internalType":"address","name":"interestRateStrategyAddress","type":"address"}],"name":"initReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPoolAddressesProvider","name":"provider","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"collateralAsset","type":"address"},{"internalType":"address","name":"debtAsset","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"debtToCover","type":"uint256"},{"internalType":"bool","name":"receiveAToken","type":"bool"}],"name":"liquidationCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"assets","type":"address[]"}],"name":"mintToTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"mintUnbacked","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"rebalanceStableBorrowRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"interestRateMode","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"}],"name":"repay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"interestRateMode","type":"uint256"}],"name":"repayWithATokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"interestRateMode","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"permitV","type":"uint8"},{"internalType":"bytes32","name":"permitR","type":"bytes32"},{"internalType":"bytes32","name":"permitS","type":"bytes32"}],"name":"repayWithPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"resetIsolationModeTotalDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"components":[{"internalType":"uint256","name":"data","type":"uint256"}],"internalType":"struct DataTypes.ReserveConfigurationMap","name":"configuration","type":"tuple"}],"name":"setConfiguration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"rateStrategyAddress","type":"address"}],"name":"setReserveInterestRateStrategyAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"categoryId","type":"uint8"}],"name":"setUserEMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"bool","name":"useAsCollateral","type":"bool"}],"name":"setUserUseReserveAsCollateral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint16","name":"referralCode","type":"uint16"}],"name":"supply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"uint16","name":"referralCode","type":"uint16"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"permitV","type":"uint8"},{"internalType":"bytes32","name":"permitR","type":"bytes32"},{"internalType":"bytes32","name":"permitS","type":"bytes32"}],"name":"supplyWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"interestRateMode","type":"uint256"}],"name":"swapBorrowRateMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"protocolFee","type":"uint256"}],"name":"updateBridgeProtocolFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"flashLoanPremiumTotal","type":"uint128"},{"internalType":"uint128","name":"flashLoanPremiumToProtocol","type":"uint128"}],"name":"updateFlashloanPremiums","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Aave","details":"To be covered by a proxy contract, owned by the PoolAddressesProvider of the specific marketAll admin functions are callable by the PoolConfigurator contract defined also in the   PoolAddressesProvider","kind":"dev","methods":{"BRIDGE_PROTOCOL_FEE()":{"returns":{"_0":"The bridge fee sent to the protocol treasury"}},"FLASHLOAN_PREMIUM_TOTAL()":{"returns":{"_0":"The total fee on flashloans"}},"FLASHLOAN_PREMIUM_TO_PROTOCOL()":{"returns":{"_0":"The flashloan fee sent to the protocol treasury"}},"MAX_NUMBER_RESERVES()":{"returns":{"_0":"The maximum number of reserves supported"}},"MAX_STABLE_RATE_BORROW_SIZE_PERCENT()":{"returns":{"_0":"The percentage of available liquidity to borrow, expressed in bps"}},"backUnbacked(address,uint256,uint256)":{"params":{"amount":"The amount to back","asset":"The address of the underlying asset to back","fee":"The amount paid in fees"},"returns":{"_0":"The backed amount"}},"borrow(address,uint256,uint256,uint16,address)":{"params":{"amount":"The amount to be borrowed","asset":"The address of the underlying asset to borrow","interestRateMode":"The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable","onBehalfOf":"The address of the user who will receive the debt. Should be the address of the borrower itself calling the function if he wants to borrow against his own collateral, or the address of the credit delegator if he has been given credit delegation allowance","referralCode":"The code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man"}},"configureEModeCategory(uint8,(uint16,uint16,uint16,address,string))":{"details":"In eMode, the protocol allows very high borrowing power to borrow assets of the same category. The category 0 is reserved as it's the default for volatile assets","params":{"config":"The configuration of the category","id":"The id of the category"}},"constructor":{"details":"Constructor.","params":{"provider":"The address of the PoolAddressesProvider contract"}},"deposit(address,uint256,address,uint16)":{"details":"Deprecated: maintained for compatibility purposes","params":{"amount":"The amount to be supplied","asset":"The address of the underlying asset to supply","onBehalfOf":"The address that will receive the aTokens, same as msg.sender if the user   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens   is a different wallet","referralCode":"Code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man"}},"dropReserve(address)":{"details":"Only callable by the PoolConfigurator contract","params":{"asset":"The address of the underlying asset of the reserve"}},"finalizeTransfer(address,address,address,uint256,uint256,uint256)":{"details":"Only callable by the overlying aToken of the `asset`","params":{"amount":"The amount being transferred/withdrawn","asset":"The address of the underlying asset of the aToken","balanceFromBefore":"The aToken balance of the `from` user before the transfer","balanceToBefore":"The aToken balance of the `to` user before the transfer","from":"The user from which the aTokens are transferred","to":"The user receiving the aTokens"}},"flashLoan(address,address[],uint256[],uint256[],address,bytes,uint16)":{"details":"IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept into consideration. For further details please visit https://docs.aave.com/developers/","params":{"amounts":"The amounts of the assets being flash-borrowed","assets":"The addresses of the assets being flash-borrowed","interestRateModes":"Types of the debt to open if the flash loan is not returned:   0 -> Don't open any debt, just revert if funds can't be transferred from the receiver   1 -> Open debt at stable rate for the value of the amount flash-borrowed to the `onBehalfOf` address   2 -> Open debt at variable rate for the value of the amount flash-borrowed to the `onBehalfOf` address","onBehalfOf":"The address  that will receive the debt in the case of using on `modes` 1 or 2","params":"Variadic packed params to pass to the receiver as extra information","receiverAddress":"The address of the contract receiving the funds, implementing IFlashLoanReceiver interface","referralCode":"The code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man"}},"flashLoanSimple(address,address,uint256,bytes,uint16)":{"details":"IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept into consideration. For further details please visit https://docs.aave.com/developers/","params":{"amount":"The amount of the asset being flash-borrowed","asset":"The address of the asset being flash-borrowed","params":"Variadic packed params to pass to the receiver as extra information","receiverAddress":"The address of the contract receiving the funds, implementing IFlashLoanSimpleReceiver interface","referralCode":"The code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man"}},"getConfiguration(address)":{"params":{"asset":"The address of the underlying asset of the reserve"},"returns":{"_0":"The configuration of the reserve"}},"getEModeCategoryData(uint8)":{"params":{"id":"The id of the category"},"returns":{"_0":"The configuration data of the category"}},"getReserveAddressById(uint16)":{"params":{"id":"The id of the reserve as stored in the DataTypes.ReserveData struct"},"returns":{"_0":"The address of the reserve associated with id"}},"getReserveData(address)":{"params":{"asset":"The address of the underlying asset of the reserve"},"returns":{"_0":"The state and configuration data of the reserve"}},"getReserveNormalizedIncome(address)":{"params":{"asset":"The address of the underlying asset of the reserve"},"returns":{"_0":"The reserve's normalized income"}},"getReserveNormalizedVariableDebt(address)":{"details":"WARNING: This function is intended to be used primarily by the protocol itself to get a \"dynamic\" variable index based on time, current stored index and virtual rate at the current moment (approx. a borrower would get if opening a position). This means that is always used in combination with variable debt supply/balances. If using this function externally, consider that is possible to have an increasing normalized variable debt that is not equivalent to how the variable debt index would be updated in storage (e.g. only updates with non-zero variable debt supply)","params":{"asset":"The address of the underlying asset of the reserve"},"returns":{"_0":"The reserve normalized variable debt"}},"getReservesList()":{"details":"It does not include dropped reserves","returns":{"_0":"The addresses of the underlying assets of the initialized reserves"}},"getUserAccountData(address)":{"params":{"user":"The address of the user"},"returns":{"availableBorrowsBase":"The borrowing power left of the user in the base currency used by the price feed","currentLiquidationThreshold":"The liquidation threshold of the user","healthFactor":"The current health factor of the user","ltv":"The loan to value of The user","totalCollateralBase":"The total collateral of the user in the base currency used by the price feed","totalDebtBase":"The total debt of the user in the base currency used by the price feed"}},"getUserConfiguration(address)":{"params":{"user":"The user address"},"returns":{"_0":"The configuration of the user"}},"getUserEMode(address)":{"params":{"user":"The address of the user"},"returns":{"_0":"The eMode id"}},"initReserve(address,address,address,address,address)":{"details":"Only callable by the PoolConfigurator contract","params":{"aTokenAddress":"The address of the aToken that will be assigned to the reserve","asset":"The address of the underlying asset of the reserve","interestRateStrategyAddress":"The address of the interest rate strategy contract","stableDebtAddress":"The address of the StableDebtToken that will be assigned to the reserve","variableDebtAddress":"The address of the VariableDebtToken that will be assigned to the reserve"}},"initialize(address)":{"details":"Function is invoked by the proxy contract when the Pool contract is added to the PoolAddressesProvider of the market.Caching the address of the PoolAddressesProvider in order to reduce gas consumption on subsequent operations","params":{"provider":"The address of the PoolAddressesProvider"}},"liquidationCall(address,address,address,uint256,bool)":{"params":{"collateralAsset":"The address of the underlying asset used as collateral, to receive as result of the liquidation","debtAsset":"The address of the underlying borrowed asset to be repaid with the liquidation","debtToCover":"The debt amount of borrowed `asset` the liquidator wants to cover","receiveAToken":"True if the liquidators wants to receive the collateral aTokens, `false` if he wants to receive the underlying collateral asset directly","user":"The address of the borrower getting liquidated"}},"mintToTreasury(address[])":{"params":{"assets":"The list of reserves for which the minting needs to be executed"}},"mintUnbacked(address,uint256,address,uint16)":{"params":{"amount":"The amount to mint","asset":"The address of the underlying asset to mint","onBehalfOf":"The address that will receive the aTokens","referralCode":"Code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man"}},"rebalanceStableBorrowRate(address,address)":{"params":{"asset":"The address of the underlying asset borrowed","user":"The address of the user to be rebalanced"}},"repay(address,uint256,uint256,address)":{"params":{"amount":"The amount to repay - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`","asset":"The address of the borrowed underlying asset previously borrowed","interestRateMode":"The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable","onBehalfOf":"The address of the user who will get his debt reduced/removed. Should be the address of the user calling the function if he wants to reduce/remove his own debt, or the address of any other other borrower whose debt should be removed"},"returns":{"_0":"The final amount repaid"}},"repayWithATokens(address,uint256,uint256)":{"details":"Passing uint256.max as amount will clean up any residual aToken dust balance, if the user aToken balance is not enough to cover the whole debt","params":{"amount":"The amount to repay - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`","asset":"The address of the borrowed underlying asset previously borrowed","interestRateMode":"The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable"},"returns":{"_0":"The final amount repaid"}},"repayWithPermit(address,uint256,uint256,address,uint256,uint8,bytes32,bytes32)":{"params":{"amount":"The amount to repay - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`","asset":"The address of the borrowed underlying asset previously borrowed","deadline":"The deadline timestamp that the permit is valid","interestRateMode":"The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable","onBehalfOf":"Address of the user who will get his debt reduced/removed. Should be the address of the user calling the function if he wants to reduce/remove his own debt, or the address of any other other borrower whose debt should be removed","permitR":"The R parameter of ERC712 permit sig","permitS":"The S parameter of ERC712 permit sig","permitV":"The V parameter of ERC712 permit sig"},"returns":{"_0":"The final amount repaid"}},"rescueTokens(address,address,uint256)":{"params":{"amount":"The amount of token to transfer","to":"The address of the recipient","token":"The address of the token"}},"resetIsolationModeTotalDebt(address)":{"details":"It requires the given asset has zero debt ceiling","params":{"asset":"The address of the underlying asset to reset the isolationModeTotalDebt"}},"setConfiguration(address,(uint256))":{"details":"Only callable by the PoolConfigurator contract","params":{"asset":"The address of the underlying asset of the reserve","configuration":"The new configuration bitmap"}},"setReserveInterestRateStrategyAddress(address,address)":{"details":"Only callable by the PoolConfigurator contract","params":{"asset":"The address of the underlying asset of the reserve","rateStrategyAddress":"The address of the interest rate strategy contract"}},"setUserEMode(uint8)":{"params":{"categoryId":"The id of the category"}},"setUserUseReserveAsCollateral(address,bool)":{"params":{"asset":"The address of the underlying asset supplied","useAsCollateral":"True if the user wants to use the supply as collateral, false otherwise"}},"supply(address,uint256,address,uint16)":{"params":{"amount":"The amount to be supplied","asset":"The address of the underlying asset to supply","onBehalfOf":"The address that will receive the aTokens, same as msg.sender if the user   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens   is a different wallet","referralCode":"Code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man"}},"supplyWithPermit(address,uint256,address,uint16,uint256,uint8,bytes32,bytes32)":{"params":{"amount":"The amount to be supplied","asset":"The address of the underlying asset to supply","deadline":"The deadline timestamp that the permit is valid","onBehalfOf":"The address that will receive the aTokens, same as msg.sender if the user   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens   is a different wallet","permitR":"The R parameter of ERC712 permit sig","permitS":"The S parameter of ERC712 permit sig","permitV":"The V parameter of ERC712 permit sig","referralCode":"Code used to register the integrator originating the operation, for potential rewards.   0 if the action is executed directly by the user, without any middle-man"}},"swapBorrowRateMode(address,uint256)":{"params":{"asset":"The address of the underlying asset borrowed","interestRateMode":"The current interest rate mode of the position being swapped: 1 for Stable, 2 for Variable"}},"updateBridgeProtocolFee(uint256)":{"params":{"bridgeProtocolFee":"The part of the premium sent to the protocol treasury"}},"updateFlashloanPremiums(uint128,uint128)":{"details":"The total premium is calculated on the total borrowed amountThe premium to protocol is calculated on the total premium, being a percentage of `flashLoanPremiumTotal`Only callable by the PoolConfigurator contract","params":{"flashLoanPremiumToProtocol":"The part of the premium sent to the protocol treasury, expressed in bps","flashLoanPremiumTotal":"The total premium, expressed in bps"}},"withdraw(address,uint256,address)":{"params":{"amount":"The underlying amount to be withdrawn   - Send the value type(uint256).max in order to withdraw the whole aToken balance","asset":"The address of the underlying asset to withdraw","to":"The address that will receive the underlying, same as msg.sender if the user   wants to receive it on his own wallet, or a different address if the beneficiary is a   different wallet"},"returns":{"_0":"The final amount withdrawn"}}},"stateVariables":{"ADDRESSES_PROVIDER":{"return":"The address of the PoolAddressesProvider","returns":{"_0":"The address of the PoolAddressesProvider"}}},"title":"Pool contract","version":1},"userdoc":{"kind":"user","methods":{"ADDRESSES_PROVIDER()":{"notice":"Returns the PoolAddressesProvider connected to this contract"},"BRIDGE_PROTOCOL_FEE()":{"notice":"Returns the part of the bridge fees sent to protocol"},"FLASHLOAN_PREMIUM_TOTAL()":{"notice":"Returns the total fee on flash loans"},"FLASHLOAN_PREMIUM_TO_PROTOCOL()":{"notice":"Returns the part of the flashloan fees sent to protocol"},"MAX_NUMBER_RESERVES()":{"notice":"Returns the maximum number of reserves supported to be listed in this Pool"},"MAX_STABLE_RATE_BORROW_SIZE_PERCENT()":{"notice":"Returns the percentage of available liquidity that can be borrowed at once at stable rate"},"backUnbacked(address,uint256,uint256)":{"notice":"Back the current unbacked underlying with `amount` and pay `fee`."},"borrow(address,uint256,uint256,uint16,address)":{"notice":"Allows users to borrow a specific `amount` of the reserve underlying asset, provided that the borrower already supplied enough collateral, or he was given enough allowance by a credit delegator on the corresponding debt token (StableDebtToken or VariableDebtToken) - E.g. User borrows 100 USDC passing as `onBehalfOf` his own address, receiving the 100 USDC in his wallet   and 100 stable/variable debt tokens, depending on the `interestRateMode`"},"configureEModeCategory(uint8,(uint16,uint16,uint16,address,string))":{"notice":"Configures a new category for the eMode."},"deposit(address,uint256,address,uint16)":{"notice":"Supplies an `amount` of underlying asset into the reserve, receiving in return overlying aTokens. - E.g. User supplies 100 USDC and gets in return 100 aUSDC"},"dropReserve(address)":{"notice":"Drop a reserve"},"finalizeTransfer(address,address,address,uint256,uint256,uint256)":{"notice":"Validates and finalizes an aToken transfer"},"flashLoan(address,address[],uint256[],uint256[],address,bytes,uint16)":{"notice":"Allows smartcontracts to access the liquidity of the pool within one transaction, as long as the amount taken plus a fee is returned."},"flashLoanSimple(address,address,uint256,bytes,uint16)":{"notice":"Allows smartcontracts to access the liquidity of the pool within one transaction, as long as the amount taken plus a fee is returned."},"getConfiguration(address)":{"notice":"Returns the configuration of the reserve"},"getEModeCategoryData(uint8)":{"notice":"Returns the data of an eMode category"},"getReserveAddressById(uint16)":{"notice":"Returns the address of the underlying asset of a reserve by the reserve id as stored in the DataTypes.ReserveData struct"},"getReserveData(address)":{"notice":"Returns the state and configuration of the reserve"},"getReserveNormalizedIncome(address)":{"notice":"Returns the normalized income of the reserve"},"getReserveNormalizedVariableDebt(address)":{"notice":"Returns the normalized variable debt per unit of asset"},"getReservesList()":{"notice":"Returns the list of the underlying assets of all the initialized reserves"},"getUserAccountData(address)":{"notice":"Returns the user account data across all the reserves"},"getUserConfiguration(address)":{"notice":"Returns the configuration of the user across all the reserves"},"getUserEMode(address)":{"notice":"Returns the eMode the user is using"},"initReserve(address,address,address,address,address)":{"notice":"Initializes a reserve, activating it, assigning an aToken and debt tokens and an interest rate strategy"},"initialize(address)":{"notice":"Initializes the Pool."},"liquidationCall(address,address,address,uint256,bool)":{"notice":"Function to liquidate a non-healthy position collateral-wise, with Health Factor below 1 - The caller (liquidator) covers `debtToCover` amount of debt of the user getting liquidated, and receives   a proportionally amount of the `collateralAsset` plus a bonus to cover market risk"},"mintToTreasury(address[])":{"notice":"Mints the assets accrued through the reserve factor to the treasury in the form of aTokens"},"mintUnbacked(address,uint256,address,uint16)":{"notice":"Mints an `amount` of aTokens to the `onBehalfOf`"},"rebalanceStableBorrowRate(address,address)":{"notice":"Rebalances the stable interest rate of a user to the current stable rate defined on the reserve. - Users can be rebalanced if the following conditions are satisfied:     1. Usage ratio is above 95%     2. the current supply APY is below REBALANCE_UP_THRESHOLD * maxVariableBorrowRate, which means that too        much has been borrowed at a stable rate and suppliers are not earning enough"},"repay(address,uint256,uint256,address)":{"notice":"Repays a borrowed `amount` on a specific reserve, burning the equivalent debt tokens owned - E.g. User repays 100 USDC, burning 100 variable/stable debt tokens of the `onBehalfOf` address"},"repayWithATokens(address,uint256,uint256)":{"notice":"Repays a borrowed `amount` on a specific reserve using the reserve aTokens, burning the equivalent debt tokens - E.g. User repays 100 USDC using 100 aUSDC, burning 100 variable/stable debt tokens"},"repayWithPermit(address,uint256,uint256,address,uint256,uint8,bytes32,bytes32)":{"notice":"Repay with transfer approval of asset to be repaid done via permit function see: https://eips.ethereum.org/EIPS/eip-2612 and https://eips.ethereum.org/EIPS/eip-713"},"rescueTokens(address,address,uint256)":{"notice":"Rescue and transfer tokens locked in this contract"},"resetIsolationModeTotalDebt(address)":{"notice":"Resets the isolation mode total debt of the given asset to zero"},"setConfiguration(address,(uint256))":{"notice":"Sets the configuration bitmap of the reserve as a whole"},"setReserveInterestRateStrategyAddress(address,address)":{"notice":"Updates the address of the interest rate strategy contract"},"setUserEMode(uint8)":{"notice":"Allows a user to use the protocol in eMode"},"setUserUseReserveAsCollateral(address,bool)":{"notice":"Allows suppliers to enable/disable a specific supplied asset as collateral"},"supply(address,uint256,address,uint16)":{"notice":"Supplies an `amount` of underlying asset into the reserve, receiving in return overlying aTokens. - E.g. User supplies 100 USDC and gets in return 100 aUSDC"},"supplyWithPermit(address,uint256,address,uint16,uint256,uint8,bytes32,bytes32)":{"notice":"Supply with transfer approval of asset to be supplied done via permit function see: https://eips.ethereum.org/EIPS/eip-2612 and https://eips.ethereum.org/EIPS/eip-713"},"swapBorrowRateMode(address,uint256)":{"notice":"Allows a borrower to swap his debt between stable and variable mode, or vice versa"},"updateBridgeProtocolFee(uint256)":{"notice":"Updates the protocol fee on the bridging"},"updateFlashloanPremiums(uint128,uint128)":{"notice":"Updates flash loan premiums. Flash loan premium consists of two parts: - A part is sent to aToken holders as extra, one time accumulated interest - A part is collected by the protocol treasury"},"withdraw(address,uint256,address)":{"notice":"Withdraws an `amount` of underlying asset from the reserve, burning the equivalent aTokens owned E.g. User has 100 aUSDC, calls withdraw() and receives 100 USDC, burning the 100 aUSDC"}},"notice":"Main point of interaction with an Aave protocol's market - Users can:   # Supply   # Withdraw   # Borrow   # Repay   # Swap their loans between variable and stable rate   # Enable/disable their supplied assets as collateral rebalance stable rate borrow positions   # Liquidate positions   # Execute Flash Loans","version":1}},"settings":{"compilationTarget":{"lib/aave-v3-core/contracts/protocol/pool/Pool.sol":"Pool"},"evmVersion":"london","libraries":{"lib/aave-v3-core/contracts/protocol/libraries/logic/BorrowLogic.sol:BorrowLogic":"0x5d834ead0a80cf3b88c06feed6e8e0fcae2daee5","lib/aave-v3-core/contracts/protocol/libraries/logic/BridgeLogic.sol:BridgeLogic":"0x57572c9e795f4b6a748efbeab7e0a1b9996a0a24","lib/aave-v3-core/contracts/protocol/libraries/logic/ConfiguratorLogic.sol:ConfiguratorLogic":"0x7406aba1aa5fe5cd71d958ce10fc28c416a33aa0","lib/aave-v3-core/contracts/protocol/libraries/logic/EModeLogic.sol:EModeLogic":"0xeabd65827e91ac3ae5471c11a329fbc675ca46d6","lib/aave-v3-core/contracts/protocol/libraries/logic/FlashLoanLogic.sol:FlashLoanLogic":"0x0a62276bfbf1ad8443f37da8630d407408085c8b","lib/aave-v3-core/contracts/protocol/libraries/logic/LiquidationLogic.sol:LiquidationLogic":"0xe175de51f29d822b86e46a9a61246ec90631210d","lib/aave-v3-core/contracts/protocol/libraries/logic/PoolLogic.sol:PoolLogic":"0xd5256981e08492afc543af2a779af989e9f9f7e7","lib/aave-v3-core/contracts/protocol/libraries/logic/SupplyLogic.sol:SupplyLogic":"0x39df4b1329d41a9ae20e17beff39aabd2f049128"},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[":@aave/core-v3/=lib/aave-v3-core/",":@aave/periphery-v3/=lib/aave-v3-periphery/",":aave-address-book/=lib/aave-address-book/src/",":aave-helpers/=lib/aave-helpers/src/",":aave-v3-core/=lib/aave-v3-core/",":aave-v3-periphery/=lib/aave-v3-periphery/",":ds-test/=lib/forge-std/lib/ds-test/src/",":forge-std/=lib/forge-std/src/",":solidity-utils/=lib/aave-helpers/lib/solidity-utils/src/"]},"sources":{"lib/aave-v3-core/contracts/dependencies/gnosis/contracts/GPv2SafeERC20.sol":{"keccak256":"0xb2f76a16e2913aa27678059f5763bf7d443fb94cbc617969f21fee601fc2761c","license":"LGPL-3.0-or-later","urls":["bzz-raw://4e89e4a2d554357e837a3e62f47e64d142ffdb1a2469d2305daab586c9e0c92a","dweb:/ipfs/QmNjXzpPEh1P1phVwUsrRL5DE8yNDzj9bne61eqLcjwWTB"]},"lib/aave-v3-core/contracts/dependencies/openzeppelin/contracts/Address.sol":{"keccak256":"0xc66110540bf2c6eec38e080c21cb66edb60d7d0af43dbbb51ee8bc146b5c9d23","license":"AGPL-3.0","urls":["bzz-raw://9c956312869cb4e5b53acfee17a4b4fa38bd6c4e360a0da57d162b5e6b6edbb5","dweb:/ipfs/QmS8oqstuA2xoKNYEGbLWvc1W364M6ayyWgQySZcxnxoGg"]},"lib/aave-v3-core/contracts/dependencies/openzeppelin/contracts/Context.sol":{"keccak256":"0x0d984665e4f3dd200c605a83b7caae057dd96136c038fcdd271fd85757dc3d8f","license":"MIT","urls":["bzz-raw://75b72c586f82e3eedbb030ef92494582d7f0d80557c007cebf9a8ec98429d6ec","dweb:/ipfs/QmV4Ltyjuj7B3RVNzjkJbhH3EihmWNb7oikxNj7xwWes4z"]},"lib/aave-v3-core/contracts/dependencies/openzeppelin/contracts/IAccessControl.sol":{"keccak256":"0xc6cca24399ca1ff613e094888b477e4e1ed185c6919487d2055aa4bf1a12bf06","license":"MIT","urls":["bzz-raw://4be1813e8f79635c52fb534653af3fa2cd0c2c1098fd763c31190fb54151e38f","dweb:/ipfs/QmPupP53oCn5WJ6shJXPPUxUcvFjoLSHSBwCA44M8sBYcL"]},"lib/aave-v3-core/contracts/dependencies/openzeppelin/contracts/IERC20.sol":{"keccak256":"0xf57d62241e553696a1324d225663ba2e1a51db0a51ca236d0c1b009d89b6284c","license":"AGPL-3.0","urls":["bzz-raw://d327db93b636790909aa137124f30a856ac1631cb79c476aa188f9627fda8d03","dweb:/ipfs/QmaxpmEoBFioeNYmpxJemyZ7aYF2nX1NKW1XDqREm7i6es"]},"lib/aave-v3-core/contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol":{"keccak256":"0x04545d0c4e4e475ad961ac4f7d0a42939ddf0e5e00125b164a01f84f601866ec","license":"AGPL-3.0","urls":["bzz-raw://0bc4c70375ae6688c276227ea8bb3813bf397c294544de1b72e4b8926a284ad7","dweb:/ipfs/QmfBMWnBAju8PAXEbfKcSRr5RkCG9X71f7iGbpHcJ3Su5c"]},"lib/aave-v3-core/contracts/dependencies/openzeppelin/contracts/SafeCast.sol":{"keccak256":"0x27008eb94293cd55b7e79c167217f218a775a9962c3cd9672e07e77aa0de28f5","license":"MIT","urls":["bzz-raw://bccff54145626f81e66480fce40e6bde8137d23f14ad71b1a231d2c4fb5f8948","dweb:/ipfs/QmeXKGhccRJf52ZVsa3yYgvi5EitAjiYznPsUc6EWPaw7c"]},"lib/aave-v3-core/contracts/flashloan/interfaces/IFlashLoanReceiver.sol":{"keccak256":"0x0c7446b978d8044330dea7a491768498ac4052e2b3ca02d1b86ce32ea63b3810","license":"AGPL-3.0","urls":["bzz-raw://73f2d2b8404a6af5f33784c2c56233676119d98db37f91ee938f515fd825916c","dweb:/ipfs/QmQzbrYshpzLJX7dyejAN8ritma7UVuHGQv7zEvD2NSngD"]},"lib/aave-v3-core/contracts/flashloan/interfaces/IFlashLoanSimpleReceiver.sol":{"keccak256":"0xba50a7834ddfdca3e3cfac09043f72699be42ff88925641ac30950a434b2b2ff","license":"AGPL-3.0","urls":["bzz-raw://588513e813da8c9edf06bdd8912f33f5e304735e4b0145da9fb034eb46f205b5","dweb:/ipfs/Qmco68eeRnTUGyZaoZ9Vu4R7xzH9x1pUwP36nUvrxnxHxg"]},"lib/aave-v3-core/contracts/interfaces/IACLManager.sol":{"keccak256":"0xe39a407a074d8ac950deb7d1d855b39d53e35a5a441a7074c3d26cddef10406b","license":"AGPL-3.0","urls":["bzz-raw://e509aa66e54f44ce2d2e1b49639ed60a6b2decd17694f60052b02ad1c2c65f34","dweb:/ipfs/QmZtjZk7KcfRJrqSsMA4BUjBzFBynp6fPZ8eDNKLKLaY1P"]},"lib/aave-v3-core/contracts/interfaces/IAToken.sol":{"keccak256":"0x4ec2e3180174f248c9308e03fa837d44ca91ca6c1ad67c9951a2951d46948417","license":"AGPL-3.0","urls":["bzz-raw://764b8e56a62c7277efdd6dc29e1ce3f88cb997613a3142a79effa5b3d908a3fa","dweb:/ipfs/QmWAF7rDjyVqkwDR6RGRwYvB3V2fe3T7G1ZSC9UuHjAAZf"]},"lib/aave-v3-core/contracts/interfaces/IAaveIncentivesController.sol":{"keccak256":"0x906b896fdcb878d1472f740a70680f26e9a601dc28701113ab1f89cd9edce0bd","license":"AGPL-3.0","urls":["bzz-raw://b17473265a3ec2ec73dac797e0e60c147590f4e5cc7016f8eb61efbe072c49e0","dweb:/ipfs/QmchQGeuyUw3VW4Kgwfg5Ys9ky1F7Q6QCcKbywbRaEUPt7"]},"lib/aave-v3-core/contracts/interfaces/IERC20WithPermit.sol":{"keccak256":"0xfb041570f1804648f543be72cecc80ca9f65129232bacaa9247ebd11a7d9f83e","license":"AGPL-3.0","urls":["bzz-raw://d46fcfc306a6f9d52dd6d17f9d344907f7fe54ad8e36b890949662f5a1c7ca55","dweb:/ipfs/QmX5B4ZfmxpgF86tMhCV5DiH5pAyVanzsiCRDT8GkCfzkZ"]},"lib/aave-v3-core/contracts/interfaces/IInitializableAToken.sol":{"keccak256":"0xb7c0da4c50ab10ce00e2325e649297923497738350092f64ef4b259307039dee","license":"AGPL-3.0","urls":["bzz-raw://67af6435a258e6d08151b0c37884475e040c2939c76cfb0ba7afd6264c45be87","dweb:/ipfs/Qmf5wup15foyfWrGvhiZDyasJn9XZFn4Vs14Dui9smeLa3"]},"lib/aave-v3-core/contracts/interfaces/IInitializableDebtToken.sol":{"keccak256":"0x53476b4161009b310cc8ef32d54f7e6b6508a1902f4dda4ac1b3f50ec4b0dc8a","license":"AGPL-3.0","urls":["bzz-raw://108b156010df75c666430762273494c56b19f2d87ad6c145d2296ba7a07a6d36","dweb:/ipfs/QmPqvJ6EhSP4izFay97Sn6sEBJgcQG95xLwpLcv6wqhAap"]},"lib/aave-v3-core/contracts/interfaces/IPool.sol":{"keccak256":"0xbfd2077251c8dc766a56d45f4b03eb07f3441323e79c0f794efea3657a99747f","license":"AGPL-3.0","urls":["bzz-raw://c6ff6221de0ea877932c73c0b99d3e4535f293053ae44f9f9d6b9d265e9af2f6","dweb:/ipfs/QmSTaEKrhz1xNVnx4oBzWw8DenYPShVzJoP1A9GTEWkAzX"]},"lib/aave-v3-core/contracts/interfaces/IPoolAddressesProvider.sol":{"keccak256":"0x33d4308d9407b4ee2297fc4ba5acce1a96a6c658189e2778a4f6b90e032fb3b5","license":"AGPL-3.0","urls":["bzz-raw://978336a2a40229ccc7749344be890862ea12e17e9fffe5bb977ba3841de07b5a","dweb:/ipfs/QmScNrQfDSPg1afJmkCty6fZkETUrWTmEXWeTmHoe7mSqa"]},"lib/aave-v3-core/contracts/interfaces/IPriceOracleGetter.sol":{"keccak256":"0xfe72e94869ca91465a7f57282b8d367b2c9ba798fdc13ac8546304db8d971df6","license":"AGPL-3.0","urls":["bzz-raw://17eb0014e4dd33c8a177ff6a80aea1361d40cda65f0e832484d9dad9c80c9aea","dweb:/ipfs/QmVNsRx7bJjKmgfTVnpArCRRFGAyds2d5pY4sigcvgmxtf"]},"lib/aave-v3-core/contracts/interfaces/IPriceOracleSentinel.sol":{"keccak256":"0x6ebde76426a4217475ae05a284c37a6de80ff72b18ed969e6922b06b4504a92f","license":"AGPL-3.0","urls":["bzz-raw://edf86c89090b557329741a4f34c2a92f3eee7c2414f15a17954e4f30ef7d4c04","dweb:/ipfs/QmVrwBThyyGzbzQojbNUfXBWiefaaCp76gxru6Pyjaeodc"]},"lib/aave-v3-core/contracts/interfaces/IReserveInterestRateStrategy.sol":{"keccak256":"0x9028d29b6fda6f89b887a627ce5e03a401c4ccac98bfe14afcaf69ff09312202","license":"AGPL-3.0","urls":["bzz-raw://f74116d7c2a230f3b09b42d5173d10edcea72b6eb9cfc576afcf793ff56a1f8f","dweb:/ipfs/QmbFHdYfv9fHoNBRDVFEPkhPro5Z3LNmpeGmwt3LKFRUSZ"]},"lib/aave-v3-core/contracts/interfaces/IScaledBalanceToken.sol":{"keccak256":"0x72b3ea433cd3386f369f1643a154bf233ec60c02acd02c32088a97556207d2e4","license":"AGPL-3.0","urls":["bzz-raw://a5907c61cf65126001feebd94c7a869eff95045106d97e21bf7f0d3de22caf9d","dweb:/ipfs/QmPARkA7YpsBtd1F3JgszZREJk6TAkqRLBkjWZUadCu3sM"]},"lib/aave-v3-core/contracts/interfaces/IStableDebtToken.sol":{"keccak256":"0xd5c6f4de75af3cc40bab7e23c3eb12b9f318e06b29fade243ba466b531fa9be4","license":"AGPL-3.0","urls":["bzz-raw://0da742964051e2b1ba3f90899b6d34b3638363a3b83a805604b2f9c49259c59e","dweb:/ipfs/QmXziZRGTyvqp9gnv1F3t7dKRcKmxViSepLSRH9VR3y7BV"]},"lib/aave-v3-core/contracts/interfaces/IVariableDebtToken.sol":{"keccak256":"0x420f5a72cbaf3dc5c4390c26001e47ccde7d59dd1b04d4d9ebd27d52002d9b5f","license":"AGPL-3.0","urls":["bzz-raw://21db5e1727c8fe2be0b8c54894e7a4ad794cae44661219eb98f6e197eb5e59fc","dweb:/ipfs/QmWwV9zQskqSwZnAb5jza2oedoAbdtdmYar88FEXW9u9ci"]},"lib/aave-v3-core/contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol":{"keccak256":"0x76ae24e03ef6558eff491b2f9d87198dbdc8fcc52981f5a546319e0a16003a8c","license":"AGPL-3.0","urls":["bzz-raw://44dcd1b3d790ad993036139976f4b2a2ee318b2113b36cb17e31bfbdfb47f1ab","dweb:/ipfs/Qmaftq4xdbqQHPzxNrbrRT79pULqFrGLLifB6YED7cFXxP"]},"lib/aave-v3-core/contracts/protocol/libraries/configuration/ReserveConfiguration.sol":{"keccak256":"0x5ba6b452f71aecd929c4cdc1f812f42ea45b1898e9eb8a8b03596584d4385e4f","license":"BUSL-1.1","urls":["bzz-raw://d2520f2b66a68a18ccb69743349c5e869730e60f7bf2335d8814dcde6d217b1f","dweb:/ipfs/QmSuSsqifKxC57M7xyi1db6UUxwcNWLEoN9R64WQxTT3CQ"]},"lib/aave-v3-core/contracts/protocol/libraries/configuration/UserConfiguration.sol":{"keccak256":"0x12ec944eb9a941ae5fe9842192f47328df99375d589cfd9a11d6bb54f868a456","license":"BUSL-1.1","urls":["bzz-raw://8a948c40660bfe08f8683bee04796ae2ce876d12237318c1142b5223ce6b164a","dweb:/ipfs/QmYoyHPqTLLGQgVULeNrpgrN18WVVwtAd8qsozMfQRuv4B"]},"lib/aave-v3-core/contracts/protocol/libraries/helpers/Errors.sol":{"keccak256":"0x61757945ed506349f2cec8b99806124ef17f70644faba9860fb134df8ca34e86","license":"BUSL-1.1","urls":["bzz-raw://a405589e8bb12568d3d4dbf936bcf40c43964170f3bbf380483e9df4d73f2cf7","dweb:/ipfs/QmXCtAp2iom96rZnQWGDehxuPszgn6SMuB3mJcHzCq9uwx"]},"lib/aave-v3-core/contracts/protocol/libraries/helpers/Helpers.sol":{"keccak256":"0x7e0c79cab4c30d9fadd227dcdecb51046e01d74ed34e5e8597f928f7f3a97640","license":"BUSL-1.1","urls":["bzz-raw://f8cec6d97c040c56b8c333f0709493a768245b9b402a2a8c5163b1ae50705088","dweb:/ipfs/QmRdBhHYdKMZF47oh9Ghx9TDhXEzzd87v3E9aQBiTGCevd"]},"lib/aave-v3-core/contracts/protocol/libraries/logic/BorrowLogic.sol":{"keccak256":"0xec29c23cf9202233bddf3c368b7a2c9dcbda33f6fa3dc5f1ccd09d7aaceac485","license":"BUSL-1.1","urls":["bzz-raw://9e8b6d7103b852705ab62394540365abd528adceb7ef8a02be5e98f57df253f0","dweb:/ipfs/QmTJ4BMdCLyPXpiDg3jk7Ky4hazJqbHfDqKfWPwHJxej6C"]},"lib/aave-v3-core/contracts/protocol/libraries/logic/BridgeLogic.sol":{"keccak256":"0xb6073a2267efa8c848ad385ec7c36afe87b100baa1c4d37fb94ec97f48ff217a","license":"BUSL-1.1","urls":["bzz-raw://2f0e4a79f7f5bee1deec6fe38436f7753f8aafa0a42fea09a345b175b17b94a6","dweb:/ipfs/QmPQPqnAFqJo4jzWNHuafY6N2qDqxHtrZhUrb4Fe55oRZ8"]},"lib/aave-v3-core/contracts/protocol/libraries/logic/EModeLogic.sol":{"keccak256":"0x026189defe0f2e0f89af48e079ebc2a2cce69fd3e26700e3884b636e3275c784","license":"BUSL-1.1","urls":["bzz-raw://2b81ea953fe487233502f85032d3514dbb5e1848e6a55820773b5abb6893338b","dweb:/ipfs/QmXfTZX4c6WxvfRB7hmK5QXrorgK6vKNhvB3cSryxgzcy2"]},"lib/aave-v3-core/contracts/protocol/libraries/logic/FlashLoanLogic.sol":{"keccak256":"0x52510b571d9a973b2b1b59fcfe380b2b1968de1cae85c344b2887ecaced15e20","license":"BUSL-1.1","urls":["bzz-raw://2a6e2adae33e9b93080a3caa6b7efed5ff0180d5afccf51677653543e7a90ca4","dweb:/ipfs/QmfRBWCui9idCGYoStWLJ7ydUyx6mWK2B6BovRNLFg69JR"]},"lib/aave-v3-core/contracts/protocol/libraries/logic/GenericLogic.sol":{"keccak256":"0x2581fae60496ba4d4c67b676fa844d38a55bd9482f6e6eaa83aba059a6bb0d25","license":"BUSL-1.1","urls":["bzz-raw://71e9ac485999749563e00540c5550f960c11779781446cee05ffaeb198aee4cc","dweb:/ipfs/QmdcpqgFPd5n8LBfZWQDqA1hFQeQepX754tyHqvoKKbaKT"]},"lib/aave-v3-core/contracts/protocol/libraries/logic/IsolationModeLogic.sol":{"keccak256":"0xf0ee6658989d2e99b530b0cb9a78f410a9a777824a4d90fe8d0f8fedd983c6bc","license":"BUSL-1.1","urls":["bzz-raw://6bf58f090e2fe7a48138f67217f512efe3a8f8e487997e014505f7009a383d9e","dweb:/ipfs/QmXtx11ruFyywMeca2EWi19m5JpueKodeteoeV8vKdqnPx"]},"lib/aave-v3-core/contracts/protocol/libraries/logic/LiquidationLogic.sol":{"keccak256":"0x1f62d17aeca33bd43c193c7158e171d495fc65568b5ea6c8ad4ca9f2a48f627c","license":"BUSL-1.1","urls":["bzz-raw://12ec08f66125f69dafc19ee3b5045706031d64080dae5a1dd0f87f6b6d4a7637","dweb:/ipfs/Qmc2ahVxoo6AhGxZMEyZdiZVUBEBUHzx8MyPG8Ng8eZ2r5"]},"lib/aave-v3-core/contracts/protocol/libraries/logic/PoolLogic.sol":{"keccak256":"0x18ca0c189b175e211417fd02ae01248f02cfc6174980a503c126e82fe5bf6f9a","license":"BUSL-1.1","urls":["bzz-raw://0f861c96c855c96b3a04a8ff12560dd30c52839d2af91aecadf975b09c62e5ae","dweb:/ipfs/Qmdx3jMQcBayXumXnP4FyBhGMghsarU7cD2UV8L3a8f7oq"]},"lib/aave-v3-core/contracts/protocol/libraries/logic/ReserveLogic.sol":{"keccak256":"0xa323990a64442b9c2d503750549ca8129e725e6c960f71ff360d236a8e8e3380","license":"BUSL-1.1","urls":["bzz-raw://0844b2f473cd1c1d29ea86dbd84c097979bc01a736e58dbc147c4f9d87c81b7f","dweb:/ipfs/QmZhZuQ8TQtGxKQe7EtqQDWBLBuk6ChGLGRf9X9dwLCmMZ"]},"lib/aave-v3-core/contracts/protocol/libraries/logic/SupplyLogic.sol":{"keccak256":"0x8b7823fd326248ae6198635c16d92019d626638fd12969a1ad39dac3d4f42236","license":"BUSL-1.1","urls":["bzz-raw://d993a4522c2823ebe7cd7ad7393b0bed3e2aa37244360ccda0aff233a90e9e9d","dweb:/ipfs/QmXtivPGzfpeUgbfUs2E1JBfEVAsBMsJ6Cu99goSkpkSiH"]},"lib/aave-v3-core/contracts/protocol/libraries/logic/ValidationLogic.sol":{"keccak256":"0x9d228a1aba3b45fd7a2c56e2ba727c5b4021caccac24da4c2b197dc8556fdc88","license":"BUSL-1.1","urls":["bzz-raw://fc2c024969e946b85a15ba2753e8e042f05a4e529d33fbfe26e81b7ab222a13a","dweb:/ipfs/QmZo8dhJLDvUwcaKi9DCRputD7HaSguN1Ty9SPgdop6ZsU"]},"lib/aave-v3-core/contracts/protocol/libraries/math/MathUtils.sol":{"keccak256":"0xb94b501d3f13553e3ccb0614d50cb8f449cce5ca2aa80391ce53fe57f4aee74d","license":"BUSL-1.1","urls":["bzz-raw://00deede2ba66edae9bb9e425385d0326fc05f0a6e74a2da3d6f11b29b3a68f97","dweb:/ipfs/Qme48x29DyqBbKnwmNbtj1zgWBPptsuh87WM3yHQ2ENwJ4"]},"lib/aave-v3-core/contracts/protocol/libraries/math/PercentageMath.sol":{"keccak256":"0x6a7dcf18e1af47b69c8dd58093b0134e3689bf719ba63eae485d8f9dfc10cac7","license":"BUSL-1.1","urls":["bzz-raw://f1eb7f7813ade11391040b7bf495c8eaaf55780e75d9f2f0f75ce01975b44dfd","dweb:/ipfs/QmUpXWird3PCkTrTDEVVnwV353L9jHxabEfAfsw57vjWux"]},"lib/aave-v3-core/contracts/protocol/libraries/math/WadRayMath.sol":{"keccak256":"0x618fe1876e322a10269e4a96e61e516bbbec883cb79e20b508f8010027178f07","license":"BUSL-1.1","urls":["bzz-raw://d2814d57ad47ba13959bf9a108c25374828a370f8d64b5adb7564876927a3a06","dweb:/ipfs/Qmf9xfz7svNZAzgUHUTAj6gVC7SHiT7S4obfo1Sg1Fwzbx"]},"lib/aave-v3-core/contracts/protocol/libraries/types/DataTypes.sol":{"keccak256":"0xff95adc41b2bbda0c08208e66c1e2fd0d99fa6d8f937667c2b366ddf08f10eeb","license":"BUSL-1.1","urls":["bzz-raw://734ac1a253d41ace0fe411359248a1534e530b85b3c0c9fe37931ee11580dbc6","dweb:/ipfs/QmNSm1bqFo2x8EghUyShK34bU1esDeLCw1ZWPoRZwcoVvM"]},"lib/aave-v3-core/contracts/protocol/pool/Pool.sol":{"keccak256":"0xc292fbbb31822581f71de6e46a42c39444f15cda72bba6be70263840fa09dda1","license":"BUSL-1.1","urls":["bzz-raw://1ccafb43dc218ca29810f767bae47df280fffd956122acb44beef78859738c8f","dweb:/ipfs/QmTkZJJnA7xMFWr9P9DzYzoKTpYC6bi5PBa7sCE2bMjnuA"]},"lib/aave-v3-core/contracts/protocol/pool/PoolStorage.sol":{"keccak256":"0xf3a9a229ba6431fad6941b4df6a7480269c9c2efb13bacf6c6d08e289fb19702","license":"BUSL-1.1","urls":["bzz-raw://315dcc3620ee24551d0009132648b89285db31a7381932de3212a97146ba74fc","dweb:/ipfs/QmbRjG7ouorLnEJcKBUd3ZQ1gUKLHeDpfTgNLkQUst9m33"]},"lib/aave-v3-core/contracts/protocol/tokenization/base/IncentivizedERC20.sol":{"keccak256":"0x681cb715e65da002a6cd3aa7b501e155767ba5b38b9a5cc8f5923878e50e6552","license":"BUSL-1.1","urls":["bzz-raw://5866aacc05c5092d82c46b4f64adf832cc7825b6822e6c4d30bdddb221073725","dweb:/ipfs/QmYZrYqkiQRMH5qFjTMV3rJzjaHmqqyWJ2mgUzozybiqNi"]}},"version":1}