LendingPool

The LendingPool contract is the main contract for user interaction. It exposes all user-oriented actions and can be invoked by Solidity or web3 libraries.

Methods

initReserve()

function initReserve(ConfigTypes.InitReserveInput input, address fToken, address stableDebtToken, address variableDebtToken)

Initialises a reserve.

Parameter Name
Type
Description

input

ConfigTypes.InitReserveInput

The init reserve input parameters

fToken

address

fToken proxy address

stableDebtToken

address

stableDebtToken proxy address

variableDebtToken

address

variableDebtToken proxy address

deposit()

function deposit(uint256 amount, uint256 reserveId, address onBehalfOf, uint16 referralCode)

Deposits assets into the lending pool.

Parameter Name
Type
Description

amount

uint256

amount deposited, expressed in wei units

reserveId

uint256

id of the targeted reserve

onBehalfOf

address

address whom will receive the fTokens. Use msg.sender when the fTokens should be sent to the caller.

referralCode

uint256

referral code for our referral program. 0 for no referral.

batchDeposit()

function batchDeposit(uint256[] calldata amounts, uint256[] reserveIds, address[] calldata onBehalfOfs, uint16[] referralCodes)

Batches deposits of assets across lending pools.

Parameter Name
Type
Description

amounts

uint256[] calldata

amounts deposited, expressed in wei units

reserveIds

uint256[] calldata

ids of the targeted reserves

onBehalfOfs

address[] calldata

addresses whom will receive the fTokens

referralCodes

uint256[] calldata

referral codes for our referral program

withdraw()

function withdraw(uint256 amount, uint256 reserveId, address to)

Withdraws assets from the lending pool.

Parameter Name
Type
Description

amount

uint256

amount withdrawn, expressed in wei units

reserveId

uint256

id of the targeted reserve

to

address

address to receive the underlying asset tokens

batchWithdraw()

function batchWithdraw(uint256[] calldata amounts, uint256[] calldata reserveIds, address[] calldata tos)

Batches withdraws of assets across lending pools.

Parameter Name
Type
Description

amounts

uint256[] calldata

amounts withdrawn, expressed in wei units

reserveIds

uint256[] calldata

ids of the targeted reserves

tos

address[] calldata

addresses to receive the underlying asset tokens

borrow()

function borrow(uint256 amount, uint256 tokenId, uint256 tokenValue, uint256 reserveId, uint256 duration, address onBehalfOf, uint16 referralCode)

Creates a borrow position.

Parameter Name
Type
Description

amount

uint256

amount borrowed, expressed in wei units

tokenId

uint256

tokenId of the NFT to be deposited

tokenValue

uint256

number of ERC1155 tokens supplied, 0 implies ERC721

reserveId

uint256

id of the targeted reserve

duration

uint256

duration of the loan, 0 implies open-ended

onBehalfOf

address

address to receive the loan

referralCode

uint16

referral codes for our referral program

batchBorrow()

function batchBorrow(uint256[] calldata amounts, uint256[] calldata tokenIds, uint256[] calldata tokenValues, uint256[] calldata reserveIds, uint256 duration, address onBehalfOf, uint16 referralCode)

Batches borrow position execution. Note, only single duration batches are supported.

Parameter Name
Type
Description

amounts

uint256[] calldata

amounts borrowed, expressed in wei units

tokenIds

uint256[] calldata

tokenId sof the NFTs to be deposited

tokenValues

uint256[] calldata

numbers of ERC1155 tokens supplied, 0 implies ERC721

reserveIds

uint256[] calldata

ids of the targeted reserves

duration

uint256

duration of the loan, 0 implies open-ended

onBehalfOf

address

address to receive the loan

referralCode

uint16

referral codes for our referral program

repay()

function repay(uint256 borrowId, uint256 amount)

Repays a borrow position.

Parameter Name
Type
Description

borrowId

uint256

id of the targeted borrow

amount

uint256

amount to be repaid, expressed in wei

batchRepay()

function batchRepay(uint256[] calldata borrowIds, uint256[] calldata amounts)

Batch repays borrow positions.

Parameter Name
Type
Description

borrowIds

uint256[] calldata

ids of the targeted borrows

amounts

uint256[] calldata

amounts to be repaid, expressed in wei

refinance()

function refinance(uint256 borrowId, uint256 amount, uint256 duration)

Refinances a borrow position.

If the refinance amount is less than the current loan amount this is treated as a partial repayment with the difference being requested for transfer from the borrower's wallet.

If the refinance amount is more than the current loan amount then this debt is added to their balance and the additional funds are sent to their wallet.

Parameter Name
Type
Description

borrowId

uint256

id of the targeted borrow

amount

uint256

refinanced loan amount, expressed in wei

duration

uint256

duration of the refinanced loan, 0 for open-ended

batchRefinance()

function batchRefinance(uint256[]calldata borrowIds, uint256[]calldata amounts, uint256[]calldata durations)

Batches refinancing of borrow positions.

Parameter Name
Type
Description

borrowIds

uint256[] calldata

ids of the targeted borrows

amounts

uint256[] calldata

refinanced loan amounts, expressed in wei

durations

uint256[] calldata

duration of the refinanced loan, 0 for open-ended

auction()

function auction(uint256 borrowId, address onBehalfOf)

Triggers a liquidation auction on a loan in default.

Parameter Name
Type
Description

borrowId

uint256

id of the targeted borrow

onBehalfOf

address

address to receive the auction caller bonus

batchAuction()

function batchAuction(uint256[] calldata borrowIds, address[] calldata onBehalfOfs)

Batch triggers liquidation auctions on loans in default.

Parameter Name
Type
Description

borrowIds

uint256[] calldata

ids of the targeted borrows

onBehalfOfs

address[] calldata

addresses to receive the auction caller bonuses

bid()

function bid(uint256 borrowId, address onBehalfOf)

Purchases the underlying NFT of a loan under auction.

Parameter Name
Type
Description

asset

address

address of the asset used for payment

amount

uint256

amount to be paid, expressed in wei

borrowId

uint256

id of the targeted borrow

onBehalfOf

address

address to receive the underlying NFT

batchBid()

function batchBid(uint256[] calldata borrowIds, address[] calldata onBehalfOfs)

Batch purchases the underlying NFTs of loans under auction.

Parameter Name
Type
Description

assets

address[] calldata

addresses of the assets used for payment

amounts

uint256[] calldata

amounts to be paid, expressed in wei

borrowIds

uint256[] calldata

ids of the targeted borrows

onBehalfOfs

address[] calldata

addresses to receive the underlying NFTs

setMaxNumberOfReserves()

function setMaxNumberOfReserves(uint256 val)

Sets the max number of reserves.

Parameter Name
Type
Description

val

uint256

max number of reserves

setReserveMaxSupply()

function setReserveMaxSupply(uint256 reserveId, uint256 maxTokenSupply)

Sets the max number of NFTs that can be used as collateral within a reserve.

Parameter Name
Type
Description

reserveId

uint256

id of the targeted reserve

maxTokenSupply

uint256

max number of NFTs that can be used as collateral

setReserveInterestRateAddress()

function setReserveInterestRateAddress(uint256 reserveId, address rateAddress)

Sets the interest rate model strategy for a reserve.

Parameter Name
Type
Description

reserveId

uint256

id of the targeted reserve

rateAddress

address

address of the interest rate model strategy

setReserveConfiguration()

function setReserveConfiguration(uint256 reserveId, uint256 reserveConfiguration)

Sets the configuration bitmap of a reserve.

Parameter Name
Type
Description

reserveId

uint256

id of the targeted reserve

configuration

uint256

new configuration bitmap

setReserveCreatorAddress()

function setReserveCreatorAddress(uint256 reserveId, address creator)

Sets the creator address for a reserve

Parameter Name
Type
Description

reserveId

uint256

id of the targeted reserve

creator

address

address for the creator

setReserveCreatorPercentage()

function setReserveCreatorPercentage(uint256 reserveId, uint256 percentage)

Sets the percentage of protocol fees that go to the creator.

Parameter Name
Type
Description

reserveId

uint256

id of the targeted reserve

percentage

uint256

percentage in percentage-maths: e.g. 5000 for 50%

setPause()

function setPause(bool val)

Sets the pause state of the lending pool

Parameter Name
Type
Description

val

bool

true if paused

setPausedTime()

function setPausedTime(uint256 startTime, uint256 duration)

Sets the pause state of the lending pool for a given start time and duration.

Parameter Name
Type
Description

startTime

uint256

pause start time

duration

uint256

pause duration

View Methods

paused()

function paused()

Returns true if the lending pool is paused.

getPausedTime()

function getPausedTime()

Returns the start and duration of the lending pool pause time.

Return values

Parameter Name
Type
Description

startTime

uint256

Paused start time

duration

uint256

Paused duration

getAddressProvider()

function getAddressProvider()

Returns the address provider.

getMaxNumberOfReserves()

function getMaxNumberOfReserves()

Returns the maximum number of reserves

getReserve()

function getReserve(uint256 reserveId)

Returns the state and configuration of the reserve.

Return values

Parameter Name
Type
Description

configuration

uint256

Uses a bitmask. bit 16-31: Liq. threshold

bit 32-47: Liq. bonus

bit 48-55: Decimals

bit 56: Reserve is active

bit 57: reserve is frozen

bit 58: borrowing is enabled

bit 59: variable rate borrowing enabled

bit 60-63: reserved

bit 64-79: reserve factor

bit 80-95: grace period

bit 96-111: auction duration

bit 112-127: auction start price multiple *All % are 1e4, ie. percentage plus two decimals

collateral

address

address of NFT permitted as collateral

asset

address

address of asset avaiable to be borrowed

fTokenAddress

address

address of fToken proxy contract

stableDebtTokenAddress

address

address of stableDebtToken proxy contract

variableDebtTokenAddress

address

address of variableDebtToken proxy contract

interestRateAddress

address

address of interest rate strategy model

assetPriceFeed

string

name of Chainlink Oracle price feed

id

uint256

id of the reserve

maxTokenSupply

uint256

max token supply that can be used as collateral

maxTokenId

uint256

max token id that can be used as collateral

minTokenId

uint256

min tokne id that can be used as collateral

liquidityIndex

uint128

liquidity index in ray

variableBorrowIndex

uint128

variable borrow index in ray

currentLiquidityRate

uint128

current supply / liquidity / deposit rate in ray

currentVariableBorrowRate

uint128

current variable borrow rate in ray

lastUpdateTimestamp

uint40

timestamp of when reserve data was last updated

getReserveId()

function getReserveId(address collateral, address asset, uint256 maxTokenId, uint256 minTokenId)

Returns the id of the associated reserve.

Return values

getReserveConfiguration()

function getReserveConfiguration(uint256 reserveId)

Returns the configuration of a reserve.

Return values

Parameter Name
Type
Description

configuration

DataTypes.ReserveConfigurationMap memory

configuration of the reserve

getReserveNormalizedIncome()

function getReserveNormalizedIncome(uint256 reserveId)

Returns the normalised income of a reserve.

getReserveNormalizedVariableDebt()

function getReserveNormalizedVariableDebt(uint256 reserveId)

Returns the normalised variable debt of a reserve.

getReserveUserStableRate()

function getReserveUserStableRate(uint256 reserveId, address user)

Returns a reserve user stable rate.

getReserveFlags()

function getReserveFlags(uint256 reserveId)

Returns the reserve flags.

Return values

Parameter Name
Type
Description

activeReserve

bool

true if reserve is active

frozenReserve

bool

true if reserve is frozen

borrowingEnabled

bool

true if borrowing is enabled on the reserve

variableBorrowEnabled

bool

true if variable rate borrowing is enabled

getReservesList()

function getReservesList()

Returns a list of reserve ids.

getInitializedCollaterals()

function getInitializedCollaterals()

Returns a list of addresses of initialized collaterals.

getInitializedAssets()

function getInitializedAssets()

Returns a list of addresses of initialized assets.

getBorrowHealthFactor()

function getborrowHealthFactor(uint256 borrowId)

Returns the collateral price, borrow amount and health factor for a given borrow id.

Return values

Parameter Name
Type
Description

collateralPrice

uint256

the current appraised price of the collateral

borrowAmount

uint256

the amount borrowed against the collateral

healthFactor

uint256

the current health factor of the borrow

getAuctionConfiguration()

function getAuctionConfiguration(uint256 reserveId)

Returns the auction liquidation bonus and duration.

Return values

Parameter Name
Type
Description

liquidationBonus

uint256

the percentage of the auction going to stakeholders, e.g. 1000 for 10%

duration

uint256

the auction duration in days

finalizeTransfer()

function finalizeTransfer(uint256 reserveId, address from, address to, uint256 amount, uint256 balanceFromBefore, uint256 balanceToBefore)

Validates and finalises an fToken transfer.

Storage

Inherited contract LendingPoolStorage.sol is used to maintain state, separating this from the Lending Pool contract. This follows specific guidelines for the process of adding new variables; to ensure compatibility and upgradability.

Error Codes

In order to reduce gas usage and code size, FluidNFT contracts return numbered errors. If you are making calls to the protocol and receive numb

ABI

LendingPool ABI
{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "initiator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "borrowRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint16",
          "name": "referral",
          "type": "uint16"
        }
      ],
      "name": "Borrow",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "initiator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint16",
          "name": "referalCode",
          "type": "uint16"
        }
      ],
      "name": "Deposit",
      "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": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "paymentAsset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "paymentAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        }
      ],
      "name": "Liquidate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "startTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "durationTime",
          "type": "uint256"
        }
      ],
      "name": "PausedTimeUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "initiator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountAdded",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountTaken",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "defaultFee",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "Refinanced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "initiator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        }
      ],
      "name": "Repay",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "initiator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        }
      ],
      "name": "auction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "borrowIds",
          "type": "uint256[]"
        },
        {
          "internalType": "address[]",
          "name": "onBehalfOfs",
          "type": "address[]"
        }
      ],
      "name": "batchAuction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "assets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "borrowIds",
          "type": "uint256[]"
        },
        {
          "internalType": "address[]",
          "name": "onBehalfOfs",
          "type": "address[]"
        }
      ],
      "name": "batchBid",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenValues",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "batchBorrow",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "address[]",
          "name": "onBehalfOfs",
          "type": "address[]"
        },
        {
          "internalType": "uint16[]",
          "name": "referralCodes",
          "type": "uint16[]"
        }
      ],
      "name": "batchDeposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "borrowIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "durations",
          "type": "uint256[]"
        }
      ],
      "name": "batchRefinance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "borrowIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "batchRepay",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "address[]",
          "name": "tos",
          "type": "address[]"
        }
      ],
      "name": "batchWithdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        }
      ],
      "name": "bid",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenValue",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "borrow",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "executionDelegate",
      "outputs": [
        {
          "internalType": "contract IExecutionDelegate",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "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": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAddressProvider",
      "outputs": [
        {
          "internalType": "contract IAddressProvider",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "getAuctionConfiguration",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        }
      ],
      "name": "getBorrowHealthFactor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getInitializedAssets",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getInitializedCollaterals",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMaxNumberOfReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPausedTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "getReserve",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "data",
                  "type": "uint256"
                }
              ],
              "internalType": "struct DataTypes.ReserveConfigurationMap",
              "name": "configuration",
              "type": "tuple"
            },
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "fTokenAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stableDebtTokenAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "variableDebtTokenAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "interestRateAddress",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "assetPriceFeed",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxTokenSupply",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxTokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minTokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint128",
              "name": "liquidityIndex",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "variableBorrowIndex",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "currentLiquidityRate",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "currentVariableBorrowRate",
              "type": "uint128"
            },
            {
              "internalType": "uint40",
              "name": "lastUpdateTimestamp",
              "type": "uint40"
            }
          ],
          "internalType": "struct DataTypes.Reserve",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "getReserveConfiguration",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "data",
              "type": "uint256"
            }
          ],
          "internalType": "struct DataTypes.ReserveConfigurationMap",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "getReserveFlags",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maxTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minTokenId",
          "type": "uint256"
        }
      ],
      "name": "getReserveId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "getReserveNormalizedIncome",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        }
      ],
      "name": "getReserveNormalizedVariableDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getReserveUserStableRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getReservesList",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "reservesList",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "underlyingCollateral",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "underlyingCollateralName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "underlyingCollateralSymbol",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "underlyingMaxTokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "underlyingMinTokenId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "underlyingAssetName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "underlyingAssetSymbol",
              "type": "string"
            },
            {
              "internalType": "uint8",
              "name": "underlyingAssetDecimals",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "fTokenImpl",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "fTokenName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "fTokenSymbol",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "stableDebtTokenImpl",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "stableDebtTokenName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "stableDebtTokenSymbol",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "variableDebtTokenImpl",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "variableDebtTokenName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "variableDebtTokenSymbol",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "interestRateStrategy",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "baseLTV",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "treasury",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "creatorPercentage",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "auctionCallerPercentage",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "auctionCreatorPercentage",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "assetPriceFeed",
              "type": "string"
            }
          ],
          "internalType": "struct ConfigTypes.InitReserveInput",
          "name": "input",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "fToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "stableDebtToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "variableDebtToken",
          "type": "address"
        }
      ],
      "name": "initReserve",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addressProvider",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155BatchReceived",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC721Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        }
      ],
      "name": "refinance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "repay",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        }
      ],
      "name": "setMaxNumberOfReserves",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "val",
          "type": "bool"
        }
      ],
      "name": "setPause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "startTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "durationTime",
          "type": "uint256"
        }
      ],
      "name": "setPausedTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "configuration",
          "type": "uint256"
        }
      ],
      "name": "setReserveConfiguration",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "creator",
          "type": "address"
        }
      ],
      "name": "setReserveCreatorAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "percentage",
          "type": "uint256"
        }
      ],
      "name": "setReserveCreatorPercentage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "rateAddress",
          "type": "address"
        }
      ],
      "name": "setReserveInterestRateAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxTokenSupply",
          "type": "uint256"
        }
      ],
      "name": "setReserveMaxSupply",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60806040526072805464ffffffffff19166201518017905534801561002357600080fd5b50613bcc806100336000396000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c80638fc421881161015c578063c28cadf7116100ce578063dcc5cded11610087578063dcc5cded14610688578063e49c8a521461069b578063eadff055146106ae578063f23a6e61146106f4578063f8c6893414610713578063ff7039c71461072457600080fd5b8063c28cadf7146105f9578063c46a90f51461060c578063c4d66de81461063a578063d1946dbc1461064d578063d6ee0f7314610662578063d8aed1451461067557600080fd5b80639e97a156116101205780639e97a15614610565578063a58497a514610578578063a7ff3b23146105ad578063bbce5cf3146105c0578063bc197c81146105d3578063bedb86fb146105e657600080fd5b80638fc42188146104765780639034c18c14610492578063986c9b20146104a5578063993ff816146104d05780639c74daf81461055257600080fd5b806331e884bb116102005780635c975abb116101b95780635c975abb146103f8578063621759de1461040a5780636c130dc71461041d578063746c35a21461043057806377778db31461044357806389a7245d1461046357600080fd5b806331e884bb1461038f57806334e69b62146103a45780633b4ecdb2146103b757806345a64925146103bf5780634b33a967146103d257806352120e23146103e557600080fd5b8063150b7a0211610252578063150b7a021461030457806319322775146103305780631de8a7c2146103435780632684dd09146103565780632e4e8eb4146103695780632f923ff71461037c57600080fd5b806301ffc9a71461028f578063044df1f2146102b757806308ac08b9146102cc5780630ad58d2f146102de578063118cfad3146102f1575b600080fd5b6102a261029d366004612a79565b610737565b60405190151581526020015b60405180910390f35b6102ca6102c5366004612aa3565b610789565b005b606e545b6040519081526020016102ae565b6102ca6102ec366004612af4565b61088b565b6102ca6102ff366004612b2d565b610936565b610317610312366004612c00565b610a28565b6040516001600160e01b031990911681526020016102ae565b6102ca61033e366004612b2d565b610a39565b6102ca610351366004612c7e565b610b21565b6102ca610364366004612d12565b610c3d565b6102d0610377366004612b2d565b610de4565b6102ca61038a366004612dd6565b610e03565b610397610ef9565b6040516102ae9190612df8565b6102ca6103b2366004612e45565b610f5b565b61039761104e565b6102d06103cd366004612eb1565b6110ae565b6102ca6103e0366004612d12565b61115e565b6102d06103f3366004612f2c565b6112c1565b607254600160281b900460ff166102a2565b6102ca610418366004612f72565b61130c565b6102ca61042b36600461300c565b611479565b6102ca61043e366004613068565b6114f2565b610456610451366004613068565b6115a5565b6040516102ae91906130c7565b6102ca610471366004612dd6565b6117c6565b6073546074545b604080519283526020830191909152016102ae565b6102d06104a0366004613068565b611886565b6065546104b8906001600160a01b031681565b6040516001600160a01b0390911681526020016102ae565b6105286104de366004613068565b600090815260676020526040902054670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b604080519415158552921515602085015290151591830191909152151560608201526080016102ae565b6102ca61056036600461323a565b61189d565b6102ca610573366004612f72565b6119e6565b61047d610586366004613068565b6000908152606760209081526040909120549081901c61ffff9081169260609290921c1690565b6102ca6105bb36600461329f565b611afa565b6102ca6105ce366004612b2d565b611bd9565b6103176105e13660046132de565b611cf3565b6102ca6105f43660046133ca565b611d26565b6102ca6106073660046133ec565b611e82565b61061f61061a366004613068565b612046565b604080519384526020840192909252908201526060016102ae565b6102ca6106483660046134dc565b6120e8565b61065561220b565b6040516102ae91906134f9565b6102ca610670366004612dd6565b6122a8565b6102ca610683366004612dd6565b61236b565b6102d0610696366004613068565b612420565b6102ca6106a9366004612dd6565b612437565b6106e56106bc366004613068565b604080516020808201835260009182905292815260678352819020815192830190915254815290565b604051905181526020016102ae565b610317610702366004613531565b63f23a6e6160e01b95945050505050565b6066546001600160a01b03166104b8565b6102ca610732366004612e45565b612526565b60006001600160e01b03198216630271189760e51b148061076857506001600160e01b03198216630a85bd0160e11b145b8061078357506001600160e01b031982166301ffc9a760e01b145b92915050565b610791612619565b610799612672565b73__$d722caef77098c4278f7cc499b02a86af3$__63fd21acf2606660009054906101000a90046001600160a01b0316606760405180608001604052806107de6126b8565b6001600160a01b03908116825260208083018b905260408084018b905260609384018a905280516001600160e01b031960e08a901b16815296831660048801526024870195909552835190911660448601528201516064850152918101516084840152015160a482015260c4015b60006040518083038186803b15801561086457600080fd5b505af4158015610878573d6000803e3d6000fd5b505050506108866001603355565b505050565b610893612619565b61089b612672565b73__$13008df657cf2235b72b6cac615c594ac6$__63b023f193606760405180608001604052806108ca6126b8565b6001600160a01b03908116825260208083018a905260408084018a905288831660609485015280516001600160e01b031960e089901b1681526004810196909652845183166024870152908401516044860152830151606485015291015116608482015260a40161084c565b61093e612619565b610946612672565b73__$fdc5093381d4a0b296ee33d1f23655684f$__63daa24772606660009054906101000a90046001600160a01b03166067604051806060016040528061098b6126b8565b6001600160a01b03908116825260208083018a905288821660409384015282516001600160e01b031960e089901b16815295821660048701526024860194909452825181166044860152928201516064850152015116608482015260a4015b60006040518083038186803b158015610a0257600080fd5b505af4158015610a16573d6000803e3d6000fd5b50505050610a246001603355565b5050565b630a85bd0160e11b5b949350505050565b610a416126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac191906135a7565b6001600160a01b031614610af05760405162461bcd60e51b8152600401610ae7906135c4565b60405180910390fd5b60009182526067602052604090912060060180546001600160a01b0319166001600160a01b03909216919091179055565b610b29612619565b610b31612672565b73__$13008df657cf2235b72b6cac615c594ac6$__636f2b2d2b606660009054906101000a90046001600160a01b031660676040518060a00160405280610b766126b8565b6001600160a01b03908116825260208083018c905260408084018c90528a831660608086019190915261ffff808c1660809687015282516001600160e01b031960e08c901b16815298851660048a0152602489019790975285518416604489015291850151606488015284015160848701528301511660a485015201511660c482015260e4015b60006040518083038186803b158015610c1557600080fd5b505af4158015610c29573d6000803e3d6000fd5b50505050610c376001603355565b50505050565b610c45612619565b610c4d612672565b73__$fdc5093381d4a0b296ee33d1f23655684f$__63bdfbf9c6606660009054906101000a90046001600160a01b031660676040518060a00160405280610c926126b8565b6001600160a01b031681526020018d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208d810282810182019093528d82529283019290918e918e9182918501908490808284376000920191909152505050908252506040805160208b810282810182019093528b82529283019290918c918c91829185019084908082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a91829185019084908082843760009201919091525050509152506040516001600160e01b031960e086901b168152610da093929190600401613654565b60006040518083038186803b158015610db857600080fd5b505af4158015610dcc573d6000803e3d6000fd5b50505050610dda6001603355565b5050505050505050565b6000828152606760205260408120610dfc90836126da565b9392505050565b610e0b6126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8b91906135a7565b6001600160a01b031614610eb15760405162461bcd60e51b8152600401610ae7906135c4565b6073829055607481905560408051838152602081018390527fd897a722b1c0a957941f99a13c0ea24d7d4ffafe0953658f68f49e13ccba5c5a91015b60405180910390a15050565b6060606a805480602002602001604051908101604052809291908181526020018280548015610f5157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f33575b5050505050905090565b610f63612619565b610f6b612672565b73__$fdc5093381d4a0b296ee33d1f23655684f$__63d59e5a1a606660009054906101000a90046001600160a01b031660676040518060600160405280610fb06126b8565b6001600160a01b0316815260200189898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a91829185019084908082843760009201919091525050509152506040516001600160e01b031960e086901b168152610bfd939291906004016136f7565b6060606c805480602002602001604051908101604052809291908181526020018280548015610f51576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f33575050505050905090565b60006110b86126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113891906135a7565b6001600160a01b031614610a315760405162461bcd60e51b8152600401610ae7906135c4565b611166612619565b61116e612672565b73__$13008df657cf2235b72b6cac615c594ac6$__63488b0171606660009054906101000a90046001600160a01b031660676040518060a001604052806111b36126b8565b6001600160a01b031681526020018d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208d810282810182019093528d82529283019290918e918e9182918501908490808284376000920191909152505050908252506040805160208b810282810182019093528b82529283019290918c918c91829185019084908082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a91829185019084908082843760009201919091525050509152506040516001600160e01b031960e086901b168152610da093929190600401613752565b6001600160a01b0380851660009081526068602090815260408083209387168352929052908120816112f38486613836565b8152602001908152602001600020549050949350505050565b611314612619565b61131c612672565b73__$d722caef77098c4278f7cc499b02a86af3$__6391188af6606660009054906101000a90046001600160a01b0316606760405180608001604052806113616126b8565b6001600160a01b031681526020018b8b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208b810282810182019093528b82529283019290918c918c91829185019084908082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a91829185019084908082843760009201919091525050509152506040516001600160e01b031960e086901b16815261143793929190600401613849565b60006040518083038186803b15801561144f57600080fd5b505af4158015611463573d6000803e3d6000fd5b505050506114716001603355565b505050505050565b611481612672565b600086815260676020526040902060038101546001600160a01b03166114a56126b8565b6001600160a01b0316146040518060400160405280600381526020016203431360ec1b81525090610dda5760405162461bcd60e51b8152600401610ae791906138c2565b50505050505050565b6114fa6126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157a91906135a7565b6001600160a01b0316146115a05760405162461bcd60e51b8152600401610ae7906135c4565b606e55565b60408051610240810182526000610220820181815282526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820152610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e0810182905261020081019190915260008281526067602090815260409182902082516102408101845281546102208201908152815260018201546001600160a01b039081169382019390935260028201548316938101939093526003810154821660608401526004810154821660808401526005810154821660a0840152600681015490911660c083015260078101805460e0840191906116c6906138d5565b80601f01602080910402602001604051908101604052809291908181526020018280546116f2906138d5565b801561173f5780601f106117145761010080835404028352916020019161173f565b820191906000526020600020905b81548152906001019060200180831161172257829003601f168201915b50505091835250506008820154602082015260098201546040820152600a8201546060820152600b8201546080820152600c8201546001600160801b0380821660a0840152600160801b91829004811660c0840152600d84015480821660e08501529190910416610100820152600e9091015464ffffffffff166101209091015292915050565b6117ce6126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e91906135a7565b6001600160a01b0316146118745760405162461bcd60e51b8152600401610ae7906135c4565b60009182526067602052604090912055565b600081815260676020526040812061078390612750565b6118a5612619565b6118ad612672565b73__$d722caef77098c4278f7cc499b02a86af3$__636f672fbf606660009054906101000a90046001600160a01b031660676040518061010001604052806118f36126b8565b6001600160a01b03908116825260208083018f905260408084018f905260608085018f905260808086018f905260a08087018f90528d861660c08089019190915261ffff808f1660e0998a015285516001600160e01b03198e8b1b1681529b881660048d015260248c019a909a528851871660448c01529488015160648b01529287015160848a01529086015160a489015285015160c488015284015160e4870152830151166101048501520151166101248201526101440160006040518083038186803b1580156119c457600080fd5b505af41580156119d8573d6000803e3d6000fd5b505050506114e96001603355565b6119ee612619565b6119f6612672565b73__$13008df657cf2235b72b6cac615c594ac6$__63a3b4d80960676040518060800160405280611a256126b8565b6001600160a01b031681526020018a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208a810282810182019093528a82529283019290918b918b918291850190849080828437600092019190915250505090825250604080516020888102828101820190935288825292830192909189918991829185019084908082843760009201919091525050509152506040516001600160e01b031960e085901b16815261143792919060040161390f565b611b02612619565b611b0a612672565b73__$fdc5093381d4a0b296ee33d1f23655684f$__63e7206e08606660009054906101000a90046001600160a01b031660676040518060a00160405280611b4f6126b8565b6001600160a01b0390811682528a811660208084019190915260408084018c905260608085018c90528a841660809586015281516001600160e01b031960e08b901b16815297841660048901526024880196909652845183166044880152908401518216606487015283015160848601529282015160a485015201511660c482015260e401610bfd565b611be16126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6191906135a7565b6001600160a01b031614611c875760405162461bcd60e51b8152600401610ae7906135c4565b6000828152606760205260409081902060030154905163bc1d19dd60e01b81526001600160a01b0383811660048301529091169063bc1d19dd906024015b600060405180830381600087803b158015611cdf57600080fd5b505af1158015611471573d6000803e3d6000fd5b604080518082018252600381526206a60760eb1b6020820152905162461bcd60e51b8152600091610ae7916004016138c2565b611d2e6126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dae91906135a7565b6001600160a01b031614611dd45760405162461bcd60e51b8152600401610ae7906135c4565b60725460ff600160281b90910416151581151514611e7f576072805465ff00000000001916600160281b8315158102919091179182905560ff91041615611e4557426073556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a150565b607354611e529042613989565b6074556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a15b50565b611e8a612619565b611e92612672565b6000604051806101000160405280611ea86126b8565b6001600160a01b031681526020018d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208d810282810182019093528d82529283019290918e918e9182918501908490808284376000920191909152505050908252506040805160208b810282810182019093528b82529283019290918c918c91829185019084908082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a918291850190849080828437600092019190915250505090825250602081018690526001600160a01b0380861660408084019190915261ffff8616606090930192909252606654915163c09d4f2760e01b815292935073__$d722caef77098c4278f7cc499b02a86af3$__9263c09d4f2792611ffe921690606790869060040161399c565b60006040518083038186803b15801561201657600080fd5b505af415801561202a573d6000803e3d6000fd5b50505050506120396001603355565b5050505050505050505050565b606654604051631285c83d60e01b81526001600160a01b03909116600482015260676024820152604481018290526000908190819073__$fdc5093381d4a0b296ee33d1f23655684f$__90631285c83d90606401606060405180830381865af41580156120b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120db9190613a84565b9250925092509193909250565b600054610100900460ff16158080156121085750600054600160ff909116105b806121225750303b158015612122575060005460ff166001145b6121855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ae7565b6000805460ff1916600117905580156121a8576000805461ff0019166101001790555b610100606e55606680546001600160a01b0319166001600160a01b0384161790558015610a24576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610eed565b6060606d5467ffffffffffffffff81111561222857612228612b5d565b604051908082528060200260200182016040528015612251578160200160208202803683370190505b50905060005b606d548110156122a457600081815260676020526040902060080154825183908390811061228757612287613ab2565b60209081029190910101528061229c81613ac8565b915050612257565b5090565b6122b06126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561230c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233091906135a7565b6001600160a01b0316146123565760405162461bcd60e51b8152600401610ae7906135c4565b60009182526067602052604090912060090155565b612373612619565b61237b612672565b73__$d722caef77098c4278f7cc499b02a86af3$__63a1aebc73606660009054906101000a90046001600160a01b0316606760405180606001604052806123c06126b8565b6001600160a01b03908116825260208083018a9052604092830189905282516001600160e01b031960e089901b1681529582166004870152602486019490945282511660448501529181015160648401520151608482015260a4016109ea565b6000818152606760205260408120610783906127ba565b61243f6126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561249b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bf91906135a7565b6001600160a01b0316146124e55760405162461bcd60e51b8152600401610ae7906135c4565b60008281526067602052604090819020600301549051632b2b063960e21b8152600481018390526001600160a01b039091169063acac18e490602401611cc5565b61252e612619565b612536612672565b73__$d722caef77098c4278f7cc499b02a86af3$__63b45bd138606660009054906101000a90046001600160a01b03166067604051806060016040528061257b6126b8565b6001600160a01b0316815260200189898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a91829185019084908082843760009201919091525050509152506040516001600160e01b031960e086901b168152610bfd93929190600401613ae1565b60026033540361266b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ae7565b6002603355565b60725460408051808201909152600381526234303160e81b602082015290600160281b900460ff1615611e7f5760405162461bcd60e51b8152600401610ae791906138c2565b60006126c33361280e565b156126d5575060131936013560601c90565b503390565b60048281015460405163e78c9b3b60e01b81526001600160a01b03848116938201939093526000929091169063e78c9b3b90602401602060405180830381865afa15801561272c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc9190613b3c565b600e81015460009064ffffffffff9081169042168103612783575050600c0154600160801b90046001600160801b031690565b600c830154600d840154600091610a31916001600160801b03600160801b928390048116926127b492041685612897565b906128a4565b600e81015460009064ffffffffff90811690421681036127e6575050600c01546001600160801b031690565b600c830154600d840154600091610a31916001600160801b03918216916127b49116856128e6565b6066546040805163862beee160e01b815290516000926001600160a01b03169163862beee19160048083019260209291908290030181865afa158015612858573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287c91906135a7565b6001600160a01b0316826001600160a01b0316149050919050565b6000610dfc83834261292c565b6000610dfc6b033b2e3c9fd0803ce80000006128e06128c38686612a55565b6128da60026b033b2e3c9fd0803ce8000000613b55565b90612a61565b90612a6d565b6000806128fa64ffffffffff841642613989565b90506b033b2e3c9fd0803ce80000006301e133806129188387613b77565b6129229190613b55565b610a319190613836565b60008061294064ffffffffff851684613989565b90508060000361295f576b033b2e3c9fd0803ce8000000915050610dfc565b600061296c600183613989565b905060006002831161297f57600061298a565b61298a600284613989565b9050600061299c6301e1338089613b55565b905060006129aa82806128a4565b905060006129b882846128a4565b905060006002836129c9888a613b77565b6129d39190613b77565b6129dd9190613b55565b90506000600683876129ef8a8c613b77565b6129f99190613b77565b612a039190613b77565b612a0d9190613b55565b90508082612a1b8a88613b77565b612a31906b033b2e3c9fd0803ce8000000613836565b612a3b9190613836565b612a459190613836565b9c9b505050505050505050505050565b6000610dfc8284613b77565b6000610dfc8284613836565b6000610dfc8284613b55565b600060208284031215612a8b57600080fd5b81356001600160e01b031981168114610dfc57600080fd5b600080600060608486031215612ab857600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114611e7f57600080fd5b8035612aef81612acf565b919050565b600080600060608486031215612b0957600080fd5b83359250602084013591506040840135612b2281612acf565b809150509250925092565b60008060408385031215612b4057600080fd5b823591506020830135612b5281612acf565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612b8457600080fd5b813567ffffffffffffffff80821115612b9f57612b9f612b5d565b604051601f8301601f19908116603f01168101908282118183101715612bc757612bc7612b5d565b81604052838152866020858801011115612be057600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215612c1657600080fd5b8435612c2181612acf565b93506020850135612c3181612acf565b925060408501359150606085013567ffffffffffffffff811115612c5457600080fd5b612c6087828801612b73565b91505092959194509250565b803561ffff81168114612aef57600080fd5b60008060008060808587031215612c9457600080fd5b84359350602085013592506040850135612cad81612acf565b9150612cbb60608601612c6c565b905092959194509250565b60008083601f840112612cd857600080fd5b50813567ffffffffffffffff811115612cf057600080fd5b6020830191508360208260051b8501011115612d0b57600080fd5b9250929050565b6000806000806000806000806080898b031215612d2e57600080fd5b883567ffffffffffffffff80821115612d4657600080fd5b612d528c838d01612cc6565b909a50985060208b0135915080821115612d6b57600080fd5b612d778c838d01612cc6565b909850965060408b0135915080821115612d9057600080fd5b612d9c8c838d01612cc6565b909650945060608b0135915080821115612db557600080fd5b50612dc28b828c01612cc6565b999c989b5096995094979396929594505050565b60008060408385031215612de957600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015612e395783516001600160a01b031683529284019291840191600101612e14565b50909695505050505050565b60008060008060408587031215612e5b57600080fd5b843567ffffffffffffffff80821115612e7357600080fd5b612e7f88838901612cc6565b90965094506020870135915080821115612e9857600080fd5b50612ea587828801612cc6565b95989497509550505050565b60008060008060808587031215612ec757600080fd5b843567ffffffffffffffff811115612ede57600080fd5b85016103408188031215612ef157600080fd5b93506020850135612f0181612acf565b92506040850135612f1181612acf565b91506060850135612f2181612acf565b939692955090935050565b60008060008060808587031215612f4257600080fd5b8435612f4d81612acf565b93506020850135612f5d81612acf565b93969395505050506040820135916060013590565b60008060008060008060608789031215612f8b57600080fd5b863567ffffffffffffffff80821115612fa357600080fd5b612faf8a838b01612cc6565b90985096506020890135915080821115612fc857600080fd5b612fd48a838b01612cc6565b90965094506040890135915080821115612fed57600080fd5b50612ffa89828a01612cc6565b979a9699509497509295939492505050565b60008060008060008060c0878903121561302557600080fd5b86359550602087013561303781612acf565b9450604087013561304781612acf565b959894975094956060810135955060808101359460a0909101359350915050565b60006020828403121561307a57600080fd5b5035919050565b6000815180845260005b818110156130a75760208185018101518683018201520161308b565b506000602082860101526020601f19601f83011685010191505092915050565b602081526130d9602082018351519052565b600060208301516130f560408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610220610100818186015261317d610240860184613081565b90860151610120868101919091528601516101408087019190915286015161016080870191909152860151610180808701919091528601519092506101a06131cf818701836001600160801b03169052565b86015190506101c06131eb868201836001600160801b03169052565b86015190506101e0613207868201836001600160801b03169052565b8601519050610200613223868201836001600160801b03169052565b9095015164ffffffffff1693019290925250919050565b600080600080600080600060e0888a03121561325557600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013561328381612acf565b915061329160c08901612c6c565b905092959891949750929550565b600080600080608085870312156132b557600080fd5b84356132c081612acf565b935060208501359250604085013591506060850135612f2181612acf565b60008060008060008060008060a0898b0312156132fa57600080fd5b883561330581612acf565b9750602089013561331581612acf565b9650604089013567ffffffffffffffff8082111561333257600080fd5b61333e8c838d01612cc6565b909850965060608b013591508082111561335757600080fd5b6133638c838d01612cc6565b909650945060808b013591508082111561337c57600080fd5b818b0191508b601f83011261339057600080fd5b81358181111561339f57600080fd5b8c60208285010111156133b157600080fd5b6020830194508093505050509295985092959890939650565b6000602082840312156133dc57600080fd5b81358015158114610dfc57600080fd5b600080600080600080600080600080600060e08c8e03121561340d57600080fd5b67ffffffffffffffff808d35111561342457600080fd5b6134318e8e358f01612cc6565b909c509a5060208d013581101561344757600080fd5b6134578e60208f01358f01612cc6565b909a50985060408d013581101561346d57600080fd5b61347d8e60408f01358f01612cc6565b909850965060608d013581101561349357600080fd5b506134a48d60608e01358e01612cc6565b909550935060808c013592506134bc60a08d01612ae4565b91506134ca60c08d01612c6c565b90509295989b509295989b9093969950565b6000602082840312156134ee57600080fd5b8135610dfc81612acf565b6020808252825182820181905260009190848201906040850190845b81811015612e3957835183529284019291840191600101613515565b600080600080600060a0868803121561354957600080fd5b853561355481612acf565b9450602086013561356481612acf565b93506040860135925060608601359150608086013567ffffffffffffffff81111561358e57600080fd5b61359a88828901612b73565b9150509295509295909350565b6000602082840312156135b957600080fd5b8151610dfc81612acf565b602080825260029082015261433160f01b604082015260600190565b600081518084526020808501945080840160005b838110156136195781516001600160a01b0316875295820195908201906001016135f4565b509495945050505050565b600081518084526020808501945080840160005b8381101561361957815187529582019590820190600101613638565b600060018060a01b0380861683528460208401526060604084015280845116606084015250602083015160a060808401526136936101008401826135e0565b90506040840151605f19808584030160a08601526136b18383613624565b925060608601519150808584030160c08601526136ce8383613624565b925060808601519150808584030160e0860152506136ec82826135e0565b979650505050505050565b600060018060a01b038086168352846020840152606060408401528084511660608401525060208301516060608084015261373560c0840182613624565b90506040840151605f198483030160a08501526136ec82826135e0565b600060018060a01b038086168352602085818501526060604085015281855116606085015280850151915060a06080850152613792610100850183613624565b91506040850151605f19808685030160a08701526137b08483613624565b935060608701519150808685030160c08701526137cd84836135e0565b608088015187820390920160e088015281518082529184019450600092508301905b8083101561381357845161ffff1682529383019360019290920191908301906137ef565b5098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561078357610783613820565b600060018060a01b0380861683528460208401526060604084015280845116606084015250602083015160808084015261388660e0840182613624565b90506040840151605f19808584030160a08601526138a48383613624565b925060608601519150808584030160c0860152506136ec8282613624565b602081526000610dfc6020830184613081565b600181811c908216806138e957607f821691505b60208210810361390957634e487b7160e01b600052602260045260246000fd5b50919050565b8281526040602082015260018060a01b038251166040820152600060208301516080606084015261394360c0840182613624565b90506040840151603f19808584030160808601526139618383613624565b925060608601519150808584030160a08601525061397f82826135e0565b9695505050505050565b8181038181111561078357610783613820565b60018060a01b0384168152826020820152606060408201526139ca6060820183516001600160a01b03169052565b600060208301516101008060808501526139e8610160850183613624565b91506040850151605f19808685030160a0870152613a068483613624565b935060608701519150808685030160c0870152613a238483613624565b935060808701519150808685030160e087015250613a418382613624565b92505060a0850151818501525060c0840151613a696101208501826001600160a01b03169052565b5060e084015161ffff81166101408501525095945050505050565b600080600060608486031215613a9957600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060018201613ada57613ada613820565b5060010190565b600060018060a01b0380861683528460208401526060604084015280845116606084015250602083015160606080840152613b1f60c0840182613624565b90506040840151605f198483030160a08501526136ec8282613624565b600060208284031215613b4e57600080fd5b5051919050565b600082613b7257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615613b9157613b91613820565b50029056fea2646970667358221220bf13109ac32312ef7f4fc820ff900c72df32d18516e9ca51cf41a0abd6107a1164736f6c63430008100033",
    "sourceMap": "2499:24490:143:-:0;;;1681:43:144;;;-1:-1:-1;;1681:43:144;1716:8;1681:43;;;2499:24490:143;;;;;;;;;;;;;;;;",
    "linkReferences": {
      "src/protocol/libraries/logic/BorrowLogic.sol": {
        "BorrowLogic": [
          {
            "start": 1998,
            "length": 20
          },
          {
            "start": 4945,
            "length": 20
          },
          {
            "start": 6370,
            "length": 20
          },
          {
            "start": 8196,
            "length": 20
          },
          {
            "start": 9136,
            "length": 20
          },
          {
            "start": 9579,
            "length": 20
          }
        ]
      },
      "src/protocol/libraries/logic/LiquidateLogic.sol": {
        "LiquidateLogic": [
          {
            "start": 2427,
            "length": 20
          },
          {
            "start": 3202,
            "length": 20
          },
          {
            "start": 4000,
            "length": 20
          },
          {
            "start": 6975,
            "length": 20
          },
          {
            "start": 8368,
            "length": 20
          }
        ]
      },
      "src/protocol/libraries/logic/SupplyLogic.sol": {
        "SupplyLogic": [
          {
            "start": 2256,
            "length": 20
          },
          {
            "start": 2918,
            "length": 20
          },
          {
            "start": 4515,
            "length": 20
          },
          {
            "start": 6699,
            "length": 20
          }
        ]
      }
    }
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b506004361061028a5760003560e01c80638fc421881161015c578063c28cadf7116100ce578063dcc5cded11610087578063dcc5cded14610688578063e49c8a521461069b578063eadff055146106ae578063f23a6e61146106f4578063f8c6893414610713578063ff7039c71461072457600080fd5b8063c28cadf7146105f9578063c46a90f51461060c578063c4d66de81461063a578063d1946dbc1461064d578063d6ee0f7314610662578063d8aed1451461067557600080fd5b80639e97a156116101205780639e97a15614610565578063a58497a514610578578063a7ff3b23146105ad578063bbce5cf3146105c0578063bc197c81146105d3578063bedb86fb146105e657600080fd5b80638fc42188146104765780639034c18c14610492578063986c9b20146104a5578063993ff816146104d05780639c74daf81461055257600080fd5b806331e884bb116102005780635c975abb116101b95780635c975abb146103f8578063621759de1461040a5780636c130dc71461041d578063746c35a21461043057806377778db31461044357806389a7245d1461046357600080fd5b806331e884bb1461038f57806334e69b62146103a45780633b4ecdb2146103b757806345a64925146103bf5780634b33a967146103d257806352120e23146103e557600080fd5b8063150b7a0211610252578063150b7a021461030457806319322775146103305780631de8a7c2146103435780632684dd09146103565780632e4e8eb4146103695780632f923ff71461037c57600080fd5b806301ffc9a71461028f578063044df1f2146102b757806308ac08b9146102cc5780630ad58d2f146102de578063118cfad3146102f1575b600080fd5b6102a261029d366004612a79565b610737565b60405190151581526020015b60405180910390f35b6102ca6102c5366004612aa3565b610789565b005b606e545b6040519081526020016102ae565b6102ca6102ec366004612af4565b61088b565b6102ca6102ff366004612b2d565b610936565b610317610312366004612c00565b610a28565b6040516001600160e01b031990911681526020016102ae565b6102ca61033e366004612b2d565b610a39565b6102ca610351366004612c7e565b610b21565b6102ca610364366004612d12565b610c3d565b6102d0610377366004612b2d565b610de4565b6102ca61038a366004612dd6565b610e03565b610397610ef9565b6040516102ae9190612df8565b6102ca6103b2366004612e45565b610f5b565b61039761104e565b6102d06103cd366004612eb1565b6110ae565b6102ca6103e0366004612d12565b61115e565b6102d06103f3366004612f2c565b6112c1565b607254600160281b900460ff166102a2565b6102ca610418366004612f72565b61130c565b6102ca61042b36600461300c565b611479565b6102ca61043e366004613068565b6114f2565b610456610451366004613068565b6115a5565b6040516102ae91906130c7565b6102ca610471366004612dd6565b6117c6565b6073546074545b604080519283526020830191909152016102ae565b6102d06104a0366004613068565b611886565b6065546104b8906001600160a01b031681565b6040516001600160a01b0390911681526020016102ae565b6105286104de366004613068565b600090815260676020526040902054670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b604080519415158552921515602085015290151591830191909152151560608201526080016102ae565b6102ca61056036600461323a565b61189d565b6102ca610573366004612f72565b6119e6565b61047d610586366004613068565b6000908152606760209081526040909120549081901c61ffff9081169260609290921c1690565b6102ca6105bb36600461329f565b611afa565b6102ca6105ce366004612b2d565b611bd9565b6103176105e13660046132de565b611cf3565b6102ca6105f43660046133ca565b611d26565b6102ca6106073660046133ec565b611e82565b61061f61061a366004613068565b612046565b604080519384526020840192909252908201526060016102ae565b6102ca6106483660046134dc565b6120e8565b61065561220b565b6040516102ae91906134f9565b6102ca610670366004612dd6565b6122a8565b6102ca610683366004612dd6565b61236b565b6102d0610696366004613068565b612420565b6102ca6106a9366004612dd6565b612437565b6106e56106bc366004613068565b604080516020808201835260009182905292815260678352819020815192830190915254815290565b604051905181526020016102ae565b610317610702366004613531565b63f23a6e6160e01b95945050505050565b6066546001600160a01b03166104b8565b6102ca610732366004612e45565b612526565b60006001600160e01b03198216630271189760e51b148061076857506001600160e01b03198216630a85bd0160e11b145b8061078357506001600160e01b031982166301ffc9a760e01b145b92915050565b610791612619565b610799612672565b73__$d722caef77098c4278f7cc499b02a86af3$__63fd21acf2606660009054906101000a90046001600160a01b0316606760405180608001604052806107de6126b8565b6001600160a01b03908116825260208083018b905260408084018b905260609384018a905280516001600160e01b031960e08a901b16815296831660048801526024870195909552835190911660448601528201516064850152918101516084840152015160a482015260c4015b60006040518083038186803b15801561086457600080fd5b505af4158015610878573d6000803e3d6000fd5b505050506108866001603355565b505050565b610893612619565b61089b612672565b73__$13008df657cf2235b72b6cac615c594ac6$__63b023f193606760405180608001604052806108ca6126b8565b6001600160a01b03908116825260208083018a905260408084018a905288831660609485015280516001600160e01b031960e089901b1681526004810196909652845183166024870152908401516044860152830151606485015291015116608482015260a40161084c565b61093e612619565b610946612672565b73__$fdc5093381d4a0b296ee33d1f23655684f$__63daa24772606660009054906101000a90046001600160a01b03166067604051806060016040528061098b6126b8565b6001600160a01b03908116825260208083018a905288821660409384015282516001600160e01b031960e089901b16815295821660048701526024860194909452825181166044860152928201516064850152015116608482015260a4015b60006040518083038186803b158015610a0257600080fd5b505af4158015610a16573d6000803e3d6000fd5b50505050610a246001603355565b5050565b630a85bd0160e11b5b949350505050565b610a416126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac191906135a7565b6001600160a01b031614610af05760405162461bcd60e51b8152600401610ae7906135c4565b60405180910390fd5b60009182526067602052604090912060060180546001600160a01b0319166001600160a01b03909216919091179055565b610b29612619565b610b31612672565b73__$13008df657cf2235b72b6cac615c594ac6$__636f2b2d2b606660009054906101000a90046001600160a01b031660676040518060a00160405280610b766126b8565b6001600160a01b03908116825260208083018c905260408084018c90528a831660608086019190915261ffff808c1660809687015282516001600160e01b031960e08c901b16815298851660048a0152602489019790975285518416604489015291850151606488015284015160848701528301511660a485015201511660c482015260e4015b60006040518083038186803b158015610c1557600080fd5b505af4158015610c29573d6000803e3d6000fd5b50505050610c376001603355565b50505050565b610c45612619565b610c4d612672565b73__$fdc5093381d4a0b296ee33d1f23655684f$__63bdfbf9c6606660009054906101000a90046001600160a01b031660676040518060a00160405280610c926126b8565b6001600160a01b031681526020018d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208d810282810182019093528d82529283019290918e918e9182918501908490808284376000920191909152505050908252506040805160208b810282810182019093528b82529283019290918c918c91829185019084908082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a91829185019084908082843760009201919091525050509152506040516001600160e01b031960e086901b168152610da093929190600401613654565b60006040518083038186803b158015610db857600080fd5b505af4158015610dcc573d6000803e3d6000fd5b50505050610dda6001603355565b5050505050505050565b6000828152606760205260408120610dfc90836126da565b9392505050565b610e0b6126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8b91906135a7565b6001600160a01b031614610eb15760405162461bcd60e51b8152600401610ae7906135c4565b6073829055607481905560408051838152602081018390527fd897a722b1c0a957941f99a13c0ea24d7d4ffafe0953658f68f49e13ccba5c5a91015b60405180910390a15050565b6060606a805480602002602001604051908101604052809291908181526020018280548015610f5157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f33575b5050505050905090565b610f63612619565b610f6b612672565b73__$fdc5093381d4a0b296ee33d1f23655684f$__63d59e5a1a606660009054906101000a90046001600160a01b031660676040518060600160405280610fb06126b8565b6001600160a01b0316815260200189898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a91829185019084908082843760009201919091525050509152506040516001600160e01b031960e086901b168152610bfd939291906004016136f7565b6060606c805480602002602001604051908101604052809291908181526020018280548015610f51576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f33575050505050905090565b60006110b86126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113891906135a7565b6001600160a01b031614610a315760405162461bcd60e51b8152600401610ae7906135c4565b611166612619565b61116e612672565b73__$13008df657cf2235b72b6cac615c594ac6$__63488b0171606660009054906101000a90046001600160a01b031660676040518060a001604052806111b36126b8565b6001600160a01b031681526020018d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208d810282810182019093528d82529283019290918e918e9182918501908490808284376000920191909152505050908252506040805160208b810282810182019093528b82529283019290918c918c91829185019084908082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a91829185019084908082843760009201919091525050509152506040516001600160e01b031960e086901b168152610da093929190600401613752565b6001600160a01b0380851660009081526068602090815260408083209387168352929052908120816112f38486613836565b8152602001908152602001600020549050949350505050565b611314612619565b61131c612672565b73__$d722caef77098c4278f7cc499b02a86af3$__6391188af6606660009054906101000a90046001600160a01b0316606760405180608001604052806113616126b8565b6001600160a01b031681526020018b8b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208b810282810182019093528b82529283019290918c918c91829185019084908082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a91829185019084908082843760009201919091525050509152506040516001600160e01b031960e086901b16815261143793929190600401613849565b60006040518083038186803b15801561144f57600080fd5b505af4158015611463573d6000803e3d6000fd5b505050506114716001603355565b505050505050565b611481612672565b600086815260676020526040902060038101546001600160a01b03166114a56126b8565b6001600160a01b0316146040518060400160405280600381526020016203431360ec1b81525090610dda5760405162461bcd60e51b8152600401610ae791906138c2565b50505050505050565b6114fa6126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157a91906135a7565b6001600160a01b0316146115a05760405162461bcd60e51b8152600401610ae7906135c4565b606e55565b60408051610240810182526000610220820181815282526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820152610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e0810182905261020081019190915260008281526067602090815260409182902082516102408101845281546102208201908152815260018201546001600160a01b039081169382019390935260028201548316938101939093526003810154821660608401526004810154821660808401526005810154821660a0840152600681015490911660c083015260078101805460e0840191906116c6906138d5565b80601f01602080910402602001604051908101604052809291908181526020018280546116f2906138d5565b801561173f5780601f106117145761010080835404028352916020019161173f565b820191906000526020600020905b81548152906001019060200180831161172257829003601f168201915b50505091835250506008820154602082015260098201546040820152600a8201546060820152600b8201546080820152600c8201546001600160801b0380821660a0840152600160801b91829004811660c0840152600d84015480821660e08501529190910416610100820152600e9091015464ffffffffff166101209091015292915050565b6117ce6126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e91906135a7565b6001600160a01b0316146118745760405162461bcd60e51b8152600401610ae7906135c4565b60009182526067602052604090912055565b600081815260676020526040812061078390612750565b6118a5612619565b6118ad612672565b73__$d722caef77098c4278f7cc499b02a86af3$__636f672fbf606660009054906101000a90046001600160a01b031660676040518061010001604052806118f36126b8565b6001600160a01b03908116825260208083018f905260408084018f905260608085018f905260808086018f905260a08087018f90528d861660c08089019190915261ffff808f1660e0998a015285516001600160e01b03198e8b1b1681529b881660048d015260248c019a909a528851871660448c01529488015160648b01529287015160848a01529086015160a489015285015160c488015284015160e4870152830151166101048501520151166101248201526101440160006040518083038186803b1580156119c457600080fd5b505af41580156119d8573d6000803e3d6000fd5b505050506114e96001603355565b6119ee612619565b6119f6612672565b73__$13008df657cf2235b72b6cac615c594ac6$__63a3b4d80960676040518060800160405280611a256126b8565b6001600160a01b031681526020018a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208a810282810182019093528a82529283019290918b918b918291850190849080828437600092019190915250505090825250604080516020888102828101820190935288825292830192909189918991829185019084908082843760009201919091525050509152506040516001600160e01b031960e085901b16815261143792919060040161390f565b611b02612619565b611b0a612672565b73__$fdc5093381d4a0b296ee33d1f23655684f$__63e7206e08606660009054906101000a90046001600160a01b031660676040518060a00160405280611b4f6126b8565b6001600160a01b0390811682528a811660208084019190915260408084018c905260608085018c90528a841660809586015281516001600160e01b031960e08b901b16815297841660048901526024880196909652845183166044880152908401518216606487015283015160848601529282015160a485015201511660c482015260e401610bfd565b611be16126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6191906135a7565b6001600160a01b031614611c875760405162461bcd60e51b8152600401610ae7906135c4565b6000828152606760205260409081902060030154905163bc1d19dd60e01b81526001600160a01b0383811660048301529091169063bc1d19dd906024015b600060405180830381600087803b158015611cdf57600080fd5b505af1158015611471573d6000803e3d6000fd5b604080518082018252600381526206a60760eb1b6020820152905162461bcd60e51b8152600091610ae7916004016138c2565b611d2e6126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dae91906135a7565b6001600160a01b031614611dd45760405162461bcd60e51b8152600401610ae7906135c4565b60725460ff600160281b90910416151581151514611e7f576072805465ff00000000001916600160281b8315158102919091179182905560ff91041615611e4557426073556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a150565b607354611e529042613989565b6074556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a15b50565b611e8a612619565b611e92612672565b6000604051806101000160405280611ea86126b8565b6001600160a01b031681526020018d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208d810282810182019093528d82529283019290918e918e9182918501908490808284376000920191909152505050908252506040805160208b810282810182019093528b82529283019290918c918c91829185019084908082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a918291850190849080828437600092019190915250505090825250602081018690526001600160a01b0380861660408084019190915261ffff8616606090930192909252606654915163c09d4f2760e01b815292935073__$d722caef77098c4278f7cc499b02a86af3$__9263c09d4f2792611ffe921690606790869060040161399c565b60006040518083038186803b15801561201657600080fd5b505af415801561202a573d6000803e3d6000fd5b50505050506120396001603355565b5050505050505050505050565b606654604051631285c83d60e01b81526001600160a01b03909116600482015260676024820152604481018290526000908190819073__$fdc5093381d4a0b296ee33d1f23655684f$__90631285c83d90606401606060405180830381865af41580156120b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120db9190613a84565b9250925092509193909250565b600054610100900460ff16158080156121085750600054600160ff909116105b806121225750303b158015612122575060005460ff166001145b6121855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ae7565b6000805460ff1916600117905580156121a8576000805461ff0019166101001790555b610100606e55606680546001600160a01b0319166001600160a01b0384161790558015610a24576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610eed565b6060606d5467ffffffffffffffff81111561222857612228612b5d565b604051908082528060200260200182016040528015612251578160200160208202803683370190505b50905060005b606d548110156122a457600081815260676020526040902060080154825183908390811061228757612287613ab2565b60209081029190910101528061229c81613ac8565b915050612257565b5090565b6122b06126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561230c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233091906135a7565b6001600160a01b0316146123565760405162461bcd60e51b8152600401610ae7906135c4565b60009182526067602052604090912060090155565b612373612619565b61237b612672565b73__$d722caef77098c4278f7cc499b02a86af3$__63a1aebc73606660009054906101000a90046001600160a01b0316606760405180606001604052806123c06126b8565b6001600160a01b03908116825260208083018a9052604092830189905282516001600160e01b031960e089901b1681529582166004870152602486019490945282511660448501529181015160648401520151608482015260a4016109ea565b6000818152606760205260408120610783906127ba565b61243f6126b8565b6001600160a01b0316606660009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561249b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bf91906135a7565b6001600160a01b0316146124e55760405162461bcd60e51b8152600401610ae7906135c4565b60008281526067602052604090819020600301549051632b2b063960e21b8152600481018390526001600160a01b039091169063acac18e490602401611cc5565b61252e612619565b612536612672565b73__$d722caef77098c4278f7cc499b02a86af3$__63b45bd138606660009054906101000a90046001600160a01b03166067604051806060016040528061257b6126b8565b6001600160a01b0316815260200189898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050509082525060408051602089810282810182019093528982529283019290918a918a91829185019084908082843760009201919091525050509152506040516001600160e01b031960e086901b168152610bfd93929190600401613ae1565b60026033540361266b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ae7565b6002603355565b60725460408051808201909152600381526234303160e81b602082015290600160281b900460ff1615611e7f5760405162461bcd60e51b8152600401610ae791906138c2565b60006126c33361280e565b156126d5575060131936013560601c90565b503390565b60048281015460405163e78c9b3b60e01b81526001600160a01b03848116938201939093526000929091169063e78c9b3b90602401602060405180830381865afa15801561272c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc9190613b3c565b600e81015460009064ffffffffff9081169042168103612783575050600c0154600160801b90046001600160801b031690565b600c830154600d840154600091610a31916001600160801b03600160801b928390048116926127b492041685612897565b906128a4565b600e81015460009064ffffffffff90811690421681036127e6575050600c01546001600160801b031690565b600c830154600d840154600091610a31916001600160801b03918216916127b49116856128e6565b6066546040805163862beee160e01b815290516000926001600160a01b03169163862beee19160048083019260209291908290030181865afa158015612858573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287c91906135a7565b6001600160a01b0316826001600160a01b0316149050919050565b6000610dfc83834261292c565b6000610dfc6b033b2e3c9fd0803ce80000006128e06128c38686612a55565b6128da60026b033b2e3c9fd0803ce8000000613b55565b90612a61565b90612a6d565b6000806128fa64ffffffffff841642613989565b90506b033b2e3c9fd0803ce80000006301e133806129188387613b77565b6129229190613b55565b610a319190613836565b60008061294064ffffffffff851684613989565b90508060000361295f576b033b2e3c9fd0803ce8000000915050610dfc565b600061296c600183613989565b905060006002831161297f57600061298a565b61298a600284613989565b9050600061299c6301e1338089613b55565b905060006129aa82806128a4565b905060006129b882846128a4565b905060006002836129c9888a613b77565b6129d39190613b77565b6129dd9190613b55565b90506000600683876129ef8a8c613b77565b6129f99190613b77565b612a039190613b77565b612a0d9190613b55565b90508082612a1b8a88613b77565b612a31906b033b2e3c9fd0803ce8000000613836565b612a3b9190613836565b612a459190613836565b9c9b505050505050505050505050565b6000610dfc8284613b77565b6000610dfc8284613836565b6000610dfc8284613b55565b600060208284031215612a8b57600080fd5b81356001600160e01b031981168114610dfc57600080fd5b600080600060608486031215612ab857600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114611e7f57600080fd5b8035612aef81612acf565b919050565b600080600060608486031215612b0957600080fd5b83359250602084013591506040840135612b2281612acf565b809150509250925092565b60008060408385031215612b4057600080fd5b823591506020830135612b5281612acf565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612b8457600080fd5b813567ffffffffffffffff80821115612b9f57612b9f612b5d565b604051601f8301601f19908116603f01168101908282118183101715612bc757612bc7612b5d565b81604052838152866020858801011115612be057600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215612c1657600080fd5b8435612c2181612acf565b93506020850135612c3181612acf565b925060408501359150606085013567ffffffffffffffff811115612c5457600080fd5b612c6087828801612b73565b91505092959194509250565b803561ffff81168114612aef57600080fd5b60008060008060808587031215612c9457600080fd5b84359350602085013592506040850135612cad81612acf565b9150612cbb60608601612c6c565b905092959194509250565b60008083601f840112612cd857600080fd5b50813567ffffffffffffffff811115612cf057600080fd5b6020830191508360208260051b8501011115612d0b57600080fd5b9250929050565b6000806000806000806000806080898b031215612d2e57600080fd5b883567ffffffffffffffff80821115612d4657600080fd5b612d528c838d01612cc6565b909a50985060208b0135915080821115612d6b57600080fd5b612d778c838d01612cc6565b909850965060408b0135915080821115612d9057600080fd5b612d9c8c838d01612cc6565b909650945060608b0135915080821115612db557600080fd5b50612dc28b828c01612cc6565b999c989b5096995094979396929594505050565b60008060408385031215612de957600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015612e395783516001600160a01b031683529284019291840191600101612e14565b50909695505050505050565b60008060008060408587031215612e5b57600080fd5b843567ffffffffffffffff80821115612e7357600080fd5b612e7f88838901612cc6565b90965094506020870135915080821115612e9857600080fd5b50612ea587828801612cc6565b95989497509550505050565b60008060008060808587031215612ec757600080fd5b843567ffffffffffffffff811115612ede57600080fd5b85016103408188031215612ef157600080fd5b93506020850135612f0181612acf565b92506040850135612f1181612acf565b91506060850135612f2181612acf565b939692955090935050565b60008060008060808587031215612f4257600080fd5b8435612f4d81612acf565b93506020850135612f5d81612acf565b93969395505050506040820135916060013590565b60008060008060008060608789031215612f8b57600080fd5b863567ffffffffffffffff80821115612fa357600080fd5b612faf8a838b01612cc6565b90985096506020890135915080821115612fc857600080fd5b612fd48a838b01612cc6565b90965094506040890135915080821115612fed57600080fd5b50612ffa89828a01612cc6565b979a9699509497509295939492505050565b60008060008060008060c0878903121561302557600080fd5b86359550602087013561303781612acf565b9450604087013561304781612acf565b959894975094956060810135955060808101359460a0909101359350915050565b60006020828403121561307a57600080fd5b5035919050565b6000815180845260005b818110156130a75760208185018101518683018201520161308b565b506000602082860101526020601f19601f83011685010191505092915050565b602081526130d9602082018351519052565b600060208301516130f560408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610220610100818186015261317d610240860184613081565b90860151610120868101919091528601516101408087019190915286015161016080870191909152860151610180808701919091528601519092506101a06131cf818701836001600160801b03169052565b86015190506101c06131eb868201836001600160801b03169052565b86015190506101e0613207868201836001600160801b03169052565b8601519050610200613223868201836001600160801b03169052565b9095015164ffffffffff1693019290925250919050565b600080600080600080600060e0888a03121561325557600080fd5b873596506020880135955060408801359450606088013593506080880135925060a088013561328381612acf565b915061329160c08901612c6c565b905092959891949750929550565b600080600080608085870312156132b557600080fd5b84356132c081612acf565b935060208501359250604085013591506060850135612f2181612acf565b60008060008060008060008060a0898b0312156132fa57600080fd5b883561330581612acf565b9750602089013561331581612acf565b9650604089013567ffffffffffffffff8082111561333257600080fd5b61333e8c838d01612cc6565b909850965060608b013591508082111561335757600080fd5b6133638c838d01612cc6565b909650945060808b013591508082111561337c57600080fd5b818b0191508b601f83011261339057600080fd5b81358181111561339f57600080fd5b8c60208285010111156133b157600080fd5b6020830194508093505050509295985092959890939650565b6000602082840312156133dc57600080fd5b81358015158114610dfc57600080fd5b600080600080600080600080600080600060e08c8e03121561340d57600080fd5b67ffffffffffffffff808d35111561342457600080fd5b6134318e8e358f01612cc6565b909c509a5060208d013581101561344757600080fd5b6134578e60208f01358f01612cc6565b909a50985060408d013581101561346d57600080fd5b61347d8e60408f01358f01612cc6565b909850965060608d013581101561349357600080fd5b506134a48d60608e01358e01612cc6565b909550935060808c013592506134bc60a08d01612ae4565b91506134ca60c08d01612c6c565b90509295989b509295989b9093969950565b6000602082840312156134ee57600080fd5b8135610dfc81612acf565b6020808252825182820181905260009190848201906040850190845b81811015612e3957835183529284019291840191600101613515565b600080600080600060a0868803121561354957600080fd5b853561355481612acf565b9450602086013561356481612acf565b93506040860135925060608601359150608086013567ffffffffffffffff81111561358e57600080fd5b61359a88828901612b73565b9150509295509295909350565b6000602082840312156135b957600080fd5b8151610dfc81612acf565b602080825260029082015261433160f01b604082015260600190565b600081518084526020808501945080840160005b838110156136195781516001600160a01b0316875295820195908201906001016135f4565b509495945050505050565b600081518084526020808501945080840160005b8381101561361957815187529582019590820190600101613638565b600060018060a01b0380861683528460208401526060604084015280845116606084015250602083015160a060808401526136936101008401826135e0565b90506040840151605f19808584030160a08601526136b18383613624565b925060608601519150808584030160c08601526136ce8383613624565b925060808601519150808584030160e0860152506136ec82826135e0565b979650505050505050565b600060018060a01b038086168352846020840152606060408401528084511660608401525060208301516060608084015261373560c0840182613624565b90506040840151605f198483030160a08501526136ec82826135e0565b600060018060a01b038086168352602085818501526060604085015281855116606085015280850151915060a06080850152613792610100850183613624565b91506040850151605f19808685030160a08701526137b08483613624565b935060608701519150808685030160c08701526137cd84836135e0565b608088015187820390920160e088015281518082529184019450600092508301905b8083101561381357845161ffff1682529383019360019290920191908301906137ef565b5098975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561078357610783613820565b600060018060a01b0380861683528460208401526060604084015280845116606084015250602083015160808084015261388660e0840182613624565b90506040840151605f19808584030160a08601526138a48383613624565b925060608601519150808584030160c0860152506136ec8282613624565b602081526000610dfc6020830184613081565b600181811c908216806138e957607f821691505b60208210810361390957634e487b7160e01b600052602260045260246000fd5b50919050565b8281526040602082015260018060a01b038251166040820152600060208301516080606084015261394360c0840182613624565b90506040840151603f19808584030160808601526139618383613624565b925060608601519150808584030160a08601525061397f82826135e0565b9695505050505050565b8181038181111561078357610783613820565b60018060a01b0384168152826020820152606060408201526139ca6060820183516001600160a01b03169052565b600060208301516101008060808501526139e8610160850183613624565b91506040850151605f19808685030160a0870152613a068483613624565b935060608701519150808685030160c0870152613a238483613624565b935060808701519150808685030160e087015250613a418382613624565b92505060a0850151818501525060c0840151613a696101208501826001600160a01b03169052565b5060e084015161ffff81166101408501525095945050505050565b600080600060608486031215613a9957600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060018201613ada57613ada613820565b5060010190565b600060018060a01b0380861683528460208401526060604084015280845116606084015250602083015160606080840152613b1f60c0840182613624565b90506040840151605f198483030160a08501526136ec8282613624565b600060208284031215613b4e57600080fd5b5051919050565b600082613b7257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615613b9157613b91613820565b50029056fea2646970667358221220bf13109ac32312ef7f4fc820ff900c72df32d18516e9ca51cf41a0abd6107a1164736f6c63430008100033",
    "sourceMap": "2499:24490:143:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26036:338;;;;;;:::i;:::-;;:::i;:::-;;;470:14:174;;463:22;445:41;;433:2;418:18;26036:338:143;;;;;;;;12490:517;;;;;;:::i;:::-;;:::i;:::-;;19866:119;19957:20;;19866:119;;;964:25:174;;;952:2;937:18;19866:119:143;818:177:174;7969:471:143;;;;;;:::i;:::-;;:::i;13767:463::-;;;;;;:::i;:::-;;:::i;24714:164::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3670:33:174;;;3652:52;;3640:2;3625:18;24714:164:143;3508:202:174;22812:219:143;;;;;;:::i;:::-;;:::i;6352:599::-;;;;;;:::i;:::-;;:::i;15634:636::-;;;;;;:::i;:::-;;:::i;21899:185::-;;;;;;:::i;:::-;;:::i;17619:247::-;;;;;;:::i;:::-;;:::i;19386:182::-;;;:::i;:::-;;;;;;;:::i;14238:506::-;;;;;;:::i;:::-;;:::i;19576:172::-;;;:::i;4161:1924::-;;;;;;:::i;:::-;;:::i;6959:670::-;;;;;;:::i;:::-;;:::i;18755:307::-;;;;;;:::i;:::-;;:::i;17522:89::-;17596:7;;-1:-1:-1;;;17596:7:143;;;;17522:89;;13015:574;;;;;;:::i;:::-;;:::i;20541:613::-;;;;;;:::i;:::-;;:::i;18242:125::-;;;;;;:::i;:::-;;:::i;18546:201::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23289:184::-;;;;;;:::i;:::-;;:::i;17874:138::-;17968:15;;17985:18;;17874:138;;;;15869:25:174;;;15925:2;15910:18;;15903:34;;;;15842:18;17874:138:143;15695:248:174;21520:168:143;;;;;;:::i;:::-;;:::i;775:43:144:-;;;;;-1:-1:-1;;;;;775:43:144;;;;;;-1:-1:-1;;;;;16140:32:174;;;16122:51;;16110:2;16095:18;775:43:144;15948:231:174;22246:285:143;;;;;;:::i;:::-;22379:4;22478:20;;;:9;:20;;;;;12792:9:123;12836:12;12824:24;;12823:31;;;12875:12;12863:24;;12862:31;;;12914:15;12902:27;;12901:34;;;12956:24;12944:36;;;12943:43;;;22246:285:143;;;;;16416:14:174;;16409:22;16391:41;;16475:14;;16468:22;16463:2;16448:18;;16441:50;16534:14;;16527:22;16507:18;;;16500:50;;;;16593:14;16586:22;16581:2;16566:18;;16559:50;16378:3;16363:19;22246:285:143;16184:431:174;9593:790:143;;;;;;:::i;:::-;;:::i;8448:526::-;;;;;;:::i;:::-;;:::i;24173:280::-;;;;;;:::i;:::-;24257:7;24308:20;;;:9;:20;;;;;;;;5332:9:123;5331:77;;;;;;;;;2658:2;10891:75;;;;;;24173:280:143;15061:565;;;;;;:::i;:::-;;:::i;23481:201::-;;;;;;:::i;:::-;;:::i;25608:213::-;;;;;;:::i;:::-;;:::i;17086:365::-;;;;;;:::i;:::-;;:::i;10475:896::-;;;;;;:::i;:::-;;:::i;23913:252::-;;;;;;:::i;:::-;;:::i;:::-;;;;22484:25:174;;;22540:2;22525:18;;22518:34;;;;22568:18;;;22561:34;22472:2;22457:18;23913:252:143;22282:319:174;3273:173:143;;;;;;:::i;:::-;;:::i;19070:308::-;;;:::i;:::-;;;;;;;:::i;16682:203::-;;;;;;:::i;:::-;;:::i;11544:443::-;;;;;;:::i;:::-;;:::i;21162:164::-;;;;;;:::i;:::-;;:::i;23690:213::-;;;;;;:::i;:::-;;:::i;16447:227::-;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;16632:20:143;;;:9;:20;;;;;16625:41;;;;;;;;;;;;16447:227;;;;23743:13:174;;23725:32;;23713:2;23698:18;16447:227:143;23495:268:174;25143:175:143;;;;;;:::i;:::-;-1:-1:-1;;;25143:175:143;;;;;;;;18112:122;18210:16;;-1:-1:-1;;;;;18210:16:143;18112:122;;11995:487;;;;;;:::i;:::-;;:::i;26036:338::-;26122:4;-1:-1:-1;;;;;;26159:61:143;;-1:-1:-1;;;26159:61:143;;:138;;-1:-1:-1;;;;;;;26237:60:143;;-1:-1:-1;;;26237:60:143;26159:138;:207;;;-1:-1:-1;;;;;;;26314:52:143;;-1:-1:-1;;;26314:52:143;26159:207;26139:227;26036:338;-1:-1:-1;;26036:338:143:o;12490:517::-;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;12692:11:::2;:28;12735:16;;;;;;;;;-1:-1:-1::0;;;;;12735:16:143::2;12766:9;12790:198;;;;;;;;12853:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;12790:198:143;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;;;;;12692:307;;-1:-1:-1;;;;;;12692:307:143::2;::::0;;;;;;25942:15:174;;;12692:307:143::2;::::0;::::2;25924:34:174::0;25974:18;;;25967:34;;;;26041:13;;26037:22;;;26017:18;;;26010:50;26102:15;;26096:22;26076:18;;;26069:50;26162:15;;;26156:22;26135:19;;;26128:51;26222:15;26216:22;26195:19;;;26188:51;25858:19;;12692:307:143::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;2547:20:20::0;1787:1;3053:7;:22;2873:209;2547:20;12490:517:143;;;:::o;7969:471::-;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;8168:11:::2;:27;8210:9;8234:187;;;;;;;;8296:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;8234:187:143;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;::::2;::::0;;;;;8168:264;;-1:-1:-1;;;;;;8168:264:143::2;::::0;;;;;;::::2;::::0;::::2;26561:25:174::0;;;;26664:13;;26660:22;;26640:18;;;26633:50;26725:15;;;26719:22;26699:18;;;26692:50;26784:15;;26778:22;26758:18;;;26751:50;26848:15;;26842:22;26838:31;26817:19;;;26810:60;26533:19;;8168:264:143::2;26250:626:174::0;13767:463:143;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;13945:14:::2;:29;13989:16;;;;;;;;;-1:-1:-1::0;;;;;13989:16:143::2;14020:9;14044:167;;;;;;;;14105:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;14044:167:143;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;;;::::2;::::0;;;;;13945:277;;-1:-1:-1;;;;;;13945:277:143::2;::::0;;;;;;27300:15:174;;;13945:277:143::2;::::0;::::2;27282:34:174::0;27332:18;;;27325:34;;;;27399:13;;27395:22;;27375:18;;;27368:50;27460:15;;;27454:22;27434:18;;;27427:50;27524:15;27518:22;27514:31;27493:19;;;27486:60;27216:19;;13945:277:143::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;2547:20:20::0;1787:1;3053:7;:22;2873:209;2547:20;13767:463:143;;:::o;24714:164::-;-1:-1:-1;;;24714:164:143;;;;;;;:::o;22812:219::-;3539:12;:10;:12::i;:::-;-1:-1:-1;;;;;3501:50:143;:16;;;;;;;;;-1:-1:-1;;;;;3501:16:143;-1:-1:-1;;;;;3501:32:143;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3501:50:143;;3493:65;;;;-1:-1:-1;;;3493:65:143;;;;;;;:::i;:::-;;;;;;;;;22969:20:::1;::::0;;;:9:::1;:20;::::0;;;;;:40:::1;;:54:::0;;-1:-1:-1;;;;;;22969:54:143::1;-1:-1:-1::0;;;;;22969:54:143;;::::1;::::0;;;::::1;::::0;;22812:219::o;6352:599::-;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;6588:11:::2;:26;6629:16;;;;;;;;;-1:-1:-1::0;;;;;6629:16:143::2;6660:9;6684:248;;;;;;;;6745:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;6684:248:143;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;::::2;::::0;;;;;;;;::::2;::::0;;::::2;::::0;;;;;6588:355;;-1:-1:-1;;;;;;6588:355:143::2;::::0;;;;;;28657:15:174;;;6588:355:143::2;::::0;::::2;28639:34:174::0;28689:18;;;28682:34;;;;28756:13;;28752:22;;28732:18;;;28725:50;28817:15;;;28811:22;28791:18;;;28784:50;28877:15;;28871:22;28850:19;;;28843:51;28941:15;;28935:22;28931:31;28910:19;;;28903:60;29010:16;29004:23;29000:36;28979:19;;;28972:65;28573:19;;6588:355:143::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;2547:20:20::0;1787:1;3053:7;:22;2873:209;2547:20;6352:599:143;;;;:::o;15634:636::-;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;15911:14:::2;:30;15956:16;;;;;;;;;-1:-1:-1::0;;;;;15956:16:143::2;15987:9;16011:240;;;;;;;;16073:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;16011:240:143::2;;;;;16112:6;;16011:240;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;;;16011:240:143;;;-1:-1:-1;16011:240:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;16146:7;;;;;;16011:240;::::2;::::0;16146:7;;16011:240;16146:7;16011:240;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;16011:240:143;;;-1:-1:-1;16011:240:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;16183:9;;;;;;16011:240;::::2;::::0;16183:9;;16011:240;16183:9;16011:240;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;16011:240:143;;;-1:-1:-1;16011:240:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;16224:11;;;;;;16011:240;::::2;::::0;16224:11;;16011:240;16224:11;16011:240;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;16011:240:143;;-1:-1:-1;15911:351:143::2;::::0;-1:-1:-1;;;;;;15911:351:143::2;::::0;;;;;;::::2;::::0;;;;::::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;2547:20:20::0;1787:1;3053:7;:22;2873:209;2547:20;15634:636:143;;;;;;;;:::o;21899:185::-;21998:7;22025:20;;;:9;:20;;;;;:51;;22071:4;22025:45;:51::i;:::-;22018:58;21899:185;-1:-1:-1;;;21899:185:143:o;17619:247::-;3539:12;:10;:12::i;:::-;-1:-1:-1;;;;;3501:50:143;:16;;;;;;;;;-1:-1:-1;;;;;3501:16:143;-1:-1:-1;;;;;3501:32:143;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3501:50:143;;3493:65;;;;-1:-1:-1;;;3493:65:143;;;;;;;:::i;:::-;17729:15:::1;:27:::0;;;17767:18:::1;:33:::0;;;17816:42:::1;::::0;;15869:25:174;;;15925:2;15910:18;;15903:34;;;17816:42:143::1;::::0;15842:18:174;17816:42:143::1;;;;;;;;17619:247:::0;;:::o;19386:182::-;19492:16;19534:26;19527:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19527:33:143;;;;;;;;;;;;;;;;;;;;;;;19386:182;:::o;14238:506::-;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;14445:14:::2;:34;14494:16;;;;;;;;;-1:-1:-1::0;;;;;14494:16:143::2;14525:9;14549:176;;;;;;;;14615:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;14549:176:143::2;;;;;14657:9;;14549:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;;;14549:176:143;;;-1:-1:-1;14549:176:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;14698:11;;;;;;14549:176;::::2;::::0;14698:11;;14549:176;14698:11;14549:176;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;14549:176:143;;-1:-1:-1;14445:291:143::2;::::0;-1:-1:-1;;;;;;14445:291:143::2;::::0;;;;;;::::2;::::0;;;;::::2;;;:::i;19576:172::-:0;19677:16;19719:21;19712:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19712:28:143;;;;;;;;;;;;;;;;;;;;;;19576:172;:::o;4161:1924::-;4421:7;3539:12;:10;:12::i;:::-;-1:-1:-1;;;;;3501:50:143;:16;;;;;;;;;-1:-1:-1;;;;;3501:16:143;-1:-1:-1;;;;;3501:32:143;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3501:50:143;;3493:65;;;;-1:-1:-1;;;3493:65:143;;;;;;;:::i;6959:670::-;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;7247:11:::2;:31;7293:16;;;;;;;;;-1:-1:-1::0;;;;;7293:16:143::2;7324:9;7348:262;;;;;;;;7414:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;7348:262:143::2;;;;;7454:7;;7348:262;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;;;7348:262:143;;;-1:-1:-1;7348:262:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;7493:10;;;;;;7348:262;::::2;::::0;7493:10;;7348:262;7493:10;7348:262;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;7348:262:143;;;-1:-1:-1;7348:262:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;7536:11;;;;;;7348:262;::::2;::::0;7536:11;;7348:262;7536:11;7348:262;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;7348:262:143;;;-1:-1:-1;7348:262:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;7581:13;;;;;;7348:262;::::2;::::0;7581:13;;7348:262;7581:13;7348:262;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;7348:262:143;;-1:-1:-1;7247:374:143::2;::::0;-1:-1:-1;;;;;;7247:374:143::2;::::0;;;;;;::::2;::::0;;;;::::2;;;:::i;18755:307::-:0;-1:-1:-1;;;;;18999:23:143;;;18966:7;18999:23;;;:11;:23;;;;;;;;:30;;;;;;;;;;;18966:7;19030:23;19043:10;19030;:23;:::i;:::-;18999:55;;;;;;;;;;;;18992:62;;18755:307;;;;;;:::o;13015:574::-;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;13258:11:::2;:33;13306:16;;;;;;;;;-1:-1:-1::0;;;;;13306:16:143::2;13337:9;13361:209;;;;;;;;13429:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;13361:209:143::2;;;;;13471:9;;13361:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;;;13361:209:143;;;-1:-1:-1;13361:209:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;13508:7;;;;;;13361:209;::::2;::::0;13508:7;;13361:209;13508:7;13361:209;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;13361:209:143;;;-1:-1:-1;13361:209:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;13545:9;;;;;;13361:209;::::2;::::0;13545:9;;13361:209;13545:9;13361:209;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;13361:209:143;;-1:-1:-1;13258:323:143::2;::::0;-1:-1:-1;;;;;;13258:323:143::2;::::0;;;;;;::::2;::::0;;;;::::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;2547:20:20::0;1787:1;3053:7;:22;2873:209;2547:20;13015:574:143;;;;;;:::o;20541:613::-;3622:16;:14;:16::i;:::-;20936:33:::1;20972:20:::0;;;:9:::1;:20;::::0;;;;21027:21:::1;::::0;::::1;::::0;-1:-1:-1;;;;;21027:21:143::1;21011:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;21011:37:143::1;;21050:34;;;;;;;;;;;;;-1:-1:-1::0;;;21050:34:143::1;;::::0;21003:82:::1;;;;;-1:-1:-1::0;;;21003:82:143::1;;;;;;;;:::i;21098:47::-;20824:330;20541:613:::0;;;;;;:::o;18242:125::-;3539:12;:10;:12::i;:::-;-1:-1:-1;;;;;3501:50:143;:16;;;;;;;;;-1:-1:-1;;;;;3501:16:143;-1:-1:-1;;;;;3501:32:143;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3501:50:143;;3493:65;;;;-1:-1:-1;;;3493:65:143;;;;;;;:::i;:::-;18333:20:::1;:26:::0;18242:125::o;18546:201::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18719:20:143;;;;:9;:20;;;;;;;;;18712:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18712:27:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18712:27:143;;;-1:-1:-1;;18712:27:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18712:27:143;;;;;;;-1:-1:-1;;;18712:27:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18546:201;-1:-1:-1;;18546:201:143:o;23289:184::-;3539:12;:10;:12::i;:::-;-1:-1:-1;;;;;3501:50:143;:16;;;;;;;;;-1:-1:-1;;;;;3501:16:143;-1:-1:-1;;;;;3501:32:143;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3501:50:143;;3493:65;;;;-1:-1:-1;;;3493:65:143;;;;;;;:::i;:::-;23410:20:::1;::::0;;;:9:::1;:20;::::0;;;;;:55;23289:184::o;21520:168::-;21613:7;21640:20;;;:9;:20;;;;;:40;;:38;:40::i;9593:790::-;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;9910:11:::2;:25;9950:16;;;;;;;;;-1:-1:-1::0;;;;;9950:16:143::2;9981:9;10005:359;;;;;;;;10065:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;10005:359:143;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::2;::::0;;;;;;;;::::2;::::0;;::::2;::::0;;;;;9910:465;;-1:-1:-1;;;;;;9910:465:143;;;;;;36394:15:174;;;9910:465:143::2;::::0;::::2;36376:34:174::0;36426:18;;;36419:34;;;;36493:13;;36489:22;;36469:18;;;36462:50;36554:15;;;36548:22;36528:18;;;36521:50;36614:15;;;36608:22;36587:19;;;36580:51;36674:15;;;36668:22;36647:19;;;36640:51;36734:16;;36728:23;36707:19;;;36700:52;36795:16;;36789:23;36768:19;;;36761:52;36860:16;;36854:23;36850:32;36829:19;;;36822:61;36930:16;36924:23;36920:36;36899:19;;;36892:65;36310:19;;9910:465:143::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;2547:20:20::0;1787:1;3053:7;:22;2873:209;8448:526:143;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;8686:11:::2;:32;8733:9;8757:198;;;;;;;;8824:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;8757:198:143::2;;;;;8864:7;;8757:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;;;8757:198:143;;;-1:-1:-1;8757:198:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;8902:10;;;;;;8757:198;::::2;::::0;8902:10;;8757:198;8902:10;8757:198;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;8757:198:143;;;-1:-1:-1;8757:198:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;8936:3;;;;;;8757:198;::::2;::::0;8936:3;;8757:198;8936:3;8757:198;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;8757:198:143;;-1:-1:-1;8686:280:143::2;::::0;-1:-1:-1;;;;;;8686:280:143::2;::::0;;;;;;::::2;::::0;;;::::2;;;:::i;15061:565::-:0;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;15285:14:::2;:25;15325:16;;;;;;;;;-1:-1:-1::0;;;;;15325:16:143::2;15356:9;15380:227;;;;;;;;15437:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;15380:227:143;;::::2;::::0;;;;::::2;;::::0;;::::2;::::0;;;;;;;;;;;;;;;;;;;;::::2;::::0;;;;;15285:333;;-1:-1:-1;;;;;;15285:333:143::2;::::0;;;;;;38408:15:174;;;15285:333:143::2;::::0;::::2;38390:34:174::0;38440:18;;;38433:34;;;;38507:13;;38503:22;;38483:18;;;38476:50;38572:15;;;38566:22;38562:31;;38542:18;;;38535:59;38637:15;;38631:22;38610:19;;;38603:51;38697:15;;;38691:22;38670:19;;;38663:51;38761:16;38755:23;38751:32;38730:19;;;38723:61;38324:19;;15285:333:143::2;37997:793:174::0;23481:201:143;3539:12;:10;:12::i;:::-;-1:-1:-1;;;;;3501:50:143;:16;;;;;;;;;-1:-1:-1;;;;;3501:16:143;-1:-1:-1;;;;;3501:32:143;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3501:50:143;;3493:65;;;;-1:-1:-1;;;3493:65:143;;;;;;;:::i;:::-;23605:20:::1;::::0;;;:9:::1;:20;::::0;;;;;;:34:::1;;::::0;23597:77;;-1:-1:-1;;;23597:77:143;;-1:-1:-1;;;;;16140:32:174;;;23597:77:143::1;::::0;::::1;16122:51:174::0;23605:34:143;;::::1;::::0;23597:68:::1;::::0;16095:18:174;;23597:77:143::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;25608:213:::0;25775:37;;;;;;;;;;;-1:-1:-1;;;25775:37:143;;;;25768:45;;-1:-1:-1;;;25768:45:143;;25749:6;;25768:45;;;;;:::i;17086:365::-;3539:12;:10;:12::i;:::-;-1:-1:-1;;;;;3501:50:143;:16;;;;;;;;;-1:-1:-1;;;;;3501:16:143;-1:-1:-1;;;;;3501:32:143;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3501:50:143;;3493:65;;;;-1:-1:-1;;;3493:65:143;;;;;;;:::i;:::-;17164:7:::1;::::0;::::1;-1:-1:-1::0;;;17164:7:143;;::::1;;:14;;::::0;::::1;;;17160:284;;17191:7;:13:::0;;-1:-1:-1;;17191:13:143::1;-1:-1:-1::0;;;17191:13:143;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;17219:7:::0;::::1;;17215:218;;;17261:15;17243;:33:::0;17296:8:::1;::::0;::::1;::::0;;;::::1;17086:365:::0;:::o;17215:218::-:1;17376:15;::::0;17358:33:::1;::::0;:15:::1;:33;:::i;:::-;17337:18;:54:::0;17411:10:::1;::::0;::::1;::::0;;;::::1;17215:218;17086:365:::0;:::o;10475:896::-;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;10843:48:::2;10894:339;;;;;;;;10955:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;10894:339:143::2;;;;;10991:7;;10894:339;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;;;10894:339:143;;;-1:-1:-1;10894:339:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;11023:8;;;;;;10894:339;::::2;::::0;11023:8;;10894:339;11023:8;10894:339;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;10894:339:143;;;-1:-1:-1;10894:339:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;11059:11;;;;;;10894:339;::::2;::::0;11059:11;;10894:339;11059:11;10894:339;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;10894:339:143;;;-1:-1:-1;10894:339:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;11097:10;;;;;;10894:339;::::2;::::0;11097:10;;10894:339;11097:10;10894:339;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;10894:339:143;;;-1:-1:-1;10894:339:143::2;::::0;::::2;::::0;;;-1:-1:-1;;;;;10894:339:143;;::::2;::::0;;;;;;;;::::2;::::0;::::2;::::0;;;;;;;;11291:16:::2;::::0;11246:117;;-1:-1:-1;;;11246:117:143;;10843:390;;-1:-1:-1;11246:11:143::2;::::0;:30:::2;::::0;:117:::2;::::0;11291:16:::2;::::0;11322:9:::2;::::0;10843:390;;11246:117:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;10832:539;2547:20:20::0;1787:1;3053:7;:22;2873:209;2547:20;10475:896:143;;;;;;;;;;;:::o;23913:252::-;24081:16;;24030:127;;-1:-1:-1;;;24030:127:143;;-1:-1:-1;;;;;24081:16:143;;;24030:127;;;41099:51:174;24113:9:143;41166:18:174;;;41159:34;41209:18;;;41202:34;;;23985:7:143;;;;;;24030:14;;:36;;41072:18:174;;24030:127:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24023:134;;;;;;23913:252;;;;;:::o;3273:173::-;3268:19:18;3291:13;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:18;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:18;1476:19:32;:23;;;3376:66:18;;-1:-1:-1;3425:12:18;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:18;;41760:2:174;3314:201:18;;;41742:21:174;41799:2;41779:18;;;41772:30;41838:34;41818:18;;;41811:62;-1:-1:-1;;;41889:18:174;;;41882:44;41943:19;;3314:201:18;41558:410:174;3314:201:18;3525:12;:16;;-1:-1:-1;;3525:16:18;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:18;;;;;3551:65;3371:3:143::1;3348:20;:26:::0;3386:16:::1;:52:::0;;-1:-1:-1;;;;;;3386:52:143::1;-1:-1:-1::0;;;;;3386:52:143;::::1;;::::0;;3636:99:18;;;;3686:5;3670:21;;-1:-1:-1;;3670:21:18;;;3710:14;;-1:-1:-1;42125:36:174;;3710:14:18;;42113:2:174;42098:18;3710:14:18;41973:194:174;19070:308:143;19166:29;19243:14;;19229:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19229:29:143;;19214:44;;19274:6;19269:102;19290:14;;19286:1;:18;19269:102;;;19344:12;;;;:9;:12;;;;;:15;;;19326;;:12;;19354:1;;19326:15;;;;;;:::i;:::-;;;;;;;;;;:33;19306:3;;;;:::i;:::-;;;;19269:102;;;;19070:308;:::o;16682:203::-;3539:12;:10;:12::i;:::-;-1:-1:-1;;;;;3501:50:143;:16;;;;;;;;;-1:-1:-1;;;;;3501:16:143;-1:-1:-1;;;;;3501:32:143;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3501:50:143;;3493:65;;;;-1:-1:-1;;;3493:65:143;;;;;;;:::i;:::-;16825:20:::1;::::0;;;:9:::1;:20;::::0;;;;;:35:::1;;:52:::0;16682:203::o;11544:443::-;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;11717:11:::2;:24;11756:16;;;;;;;;;-1:-1:-1::0;;;;;11756:16:143::2;11787:9;11811:157;;;;;;;;11870:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;11811:157:143;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;11717:262;;-1:-1:-1;;;;;;11717:262:143::2;::::0;;;;;;42859:15:174;;;11717:262:143::2;::::0;::::2;42841:34:174::0;42891:18;;;42884:34;;;;42958:13;;42954:22;42934:18;;;42927:50;43019:15;;;43013:22;42993:18;;;42986:50;43079:15;43073:22;43052:19;;;43045:51;42775:19;;11717:262:143::2;42444:658:174::0;21162:164:143;21249:7;21276:20;;;:9;:20;;;;;:42;;:40;:42::i;23690:213::-;3539:12;:10;:12::i;:::-;-1:-1:-1;;;;;3501:50:143;:16;;;;;;;;;-1:-1:-1;;;;;3501:16:143;-1:-1:-1;;;;;3501:32:143;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3501:50:143;;3493:65;;;;-1:-1:-1;;;3493:65:143;;;;;;;:::i;:::-;23820:20:::1;::::0;;;:9:::1;:20;::::0;;;;;;:34:::1;;::::0;23812:83;;-1:-1:-1;;;23812:83:143;;::::1;::::0;::::1;964:25:174::0;;;-1:-1:-1;;;;;23820:34:143;;::::1;::::0;23812:71:::1;::::0;937:18:174;;23812:83:143::1;818:177:174::0;11995:487:143;2505:21:20;:19;:21::i;:::-;3622:16:143::1;:14;:16::i;:::-;12196:11:::2;:29;12240:16;;;;;;;;;-1:-1:-1::0;;;;;12240:16:143::2;12271:9;12295:168;;;;;;;;12359:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;12295:168:143::2;;;;;12401:9;;12295:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;;;12295:168:143;;;-1:-1:-1;12295:168:143::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;12438:7;;;;;;12295:168;::::2;::::0;12438:7;;12295:168;12438:7;12295:168;::::2;;::::0;::::2;::::0;;;;-1:-1:-1;;;12295:168:143;;-1:-1:-1;12196:278:143::2;::::0;-1:-1:-1;;;;;;12196:278:143::2;::::0;;;;;;::::2;::::0;;;;::::2;;;:::i;2580:287:20:-:0;1830:1;2712:7;;:19;2704:63;;;;-1:-1:-1;;;2704:63:20;;44239:2:174;2704:63:20;;;44221:21:174;44278:2;44258:18;;;44251:30;44317:33;44297:18;;;44290:61;44368:18;;2704:63:20;44037:355:174;2704:63:20;1830:1;2842:7;:18;2580:287::o;3672:97:143:-;3732:7;;3741:19;;;;;;;;;;;;-1:-1:-1;;;3741:19:143;;;;;-1:-1:-1;;;3732:7:143;;;;3731:8;3723:38;;;;-1:-1:-1;;;3723:38:143;;;;;;;;:::i;26576:410::-;26638:14;26669:30;26688:10;26669:18;:30::i;:::-;26665:314;;;-1:-1:-1;;;26874:14:143;26870:23;26857:37;26853:2;26849:46;26576:410;:::o;26665:314::-;-1:-1:-1;929:10:33;;26576:410:143:o;5577:213:130:-;5727:30;;;;;5710:72;;-1:-1:-1;;;5710:72:130;;-1:-1:-1;;;;;16140:32:174;;;5710:72:130;;;16122:51:174;;;;5683:7:130;;5727:30;;;;5710:66;;16095:18:174;;5710:72:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4788:609::-;4912:27;;;;4873:7;;4912:27;;;;;5012:15;4992:36;;;4988:197;;-1:-1:-1;;5146:27:130;;;-1:-1:-1;;;5146:27:130;;-1:-1:-1;;;;;5146:27:130;;4788:609::o;4988:197::-;5322:27;;;;5255:33;;;;5197:17;;5217:143;;-1:-1:-1;;;;;;;;5322:27:130;;;;;;;5217:83;;5255:33;;5290:9;5217:37;:83::i;:::-;:90;;:143::i;3802:592::-;3928:27;;;;3889:7;;3928:27;;;;;4028:15;4008:36;;;4004:192;;-1:-1:-1;;4162:22:130;;;-1:-1:-1;;;;;4162:22:130;;3802:592::o;4004:192::-;4324:22;;;;4262:28;;;;4208:17;;4228:129;;-1:-1:-1;;;;;4324:22:130;;;;4228:74;;4262:28;4292:9;4228:33;:74::i;26415:153:143:-;26522:16;;:38;;;-1:-1:-1;;;26522:38:143;;;;26485:4;;-1:-1:-1;;;;;26522:16:143;;:36;;:38;;;;;;;;;;;;;;:16;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26509:51:143;:9;-1:-1:-1;;;;;26509:51:143;;26502:58;;26415:153;;;:::o;2721:200:133:-;2823:7;2845:71;2873:4;2879:19;2900:15;2845:27;:71::i;1291:126:135:-;1352:7;1379:30;524:4;1379:21;1391:8;:1;1397;1391:5;:8::i;:::-;571:7;577:1;524:4;571:7;:::i;:::-;1379:11;;:21::i;:::-;:25;;:30::i;565:303:133:-;663:7;;734:48;753:28;;;734:15;:48;:::i;:::-;709:73;-1:-1:-1;524:4:135;239:8:133;798:23;806:14;798:4;:23;:::i;:::-;797:44;;;;:::i;:::-;796:67;;;;:::i;1609:827::-;1753:7;;1813:49;1833:28;;;1813:16;:49;:::i;:::-;1799:63;;1873:3;1880:1;1873:8;1869:52;;524:4:135;1891:23:133;;;;;1869:52;1927:19;1949:7;1955:1;1949:3;:7;:::i;:::-;1927:29;;1963:19;1991:1;1985:3;:7;:21;;2005:1;1985:21;;;1995:7;2001:1;1995:3;:7;:::i;:::-;1963:43;-1:-1:-1;2013:21:133;2037:23;239:8;2037:4;:23;:::i;:::-;2013:47;-1:-1:-1;2067:20:133;2090:35;2013:47;;2090:20;:35::i;:::-;2067:58;-1:-1:-1;2131:22:133;2156:34;2067:58;2176:13;2156:19;:34::i;:::-;2131:59;-1:-1:-1;2197:18:133;2259:1;2242:12;2219:19;2226:11;2219:3;:19;:::i;:::-;:36;;;;:::i;:::-;2218:42;;;;:::i;:::-;2197:63;-1:-1:-1;2266:17:133;2345:1;2326:14;2310:11;2287:19;2294:11;2287:3;:19;:::i;:::-;:35;;;;:::i;:::-;:54;;;;:::i;:::-;2286:60;;;;:::i;:::-;2266:80;-1:-1:-1;2266:80:133;2406:10;2380:21;2397:3;2380:13;:21;:::i;:::-;2360:42;;524:4:135;2360:42:133;:::i;:::-;:57;;;;:::i;:::-;:71;;;;:::i;:::-;2353:78;1609:827;-1:-1:-1;;;;;;;;;;;;1609:827:133:o;3465:96:71:-;3523:7;3549:5;3553:1;3549;:5;:::i;2755:96::-;2813:7;2839:5;2843:1;2839;:5;:::i;3850:96::-;3908:7;3934:5;3938:1;3934;:5;:::i;14:286:174:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:174;;209:43;;199:71;;266:1;263;256:12;497:316;574:6;582;590;643:2;631:9;622:7;618:23;614:32;611:52;;;659:1;656;649:12;611:52;-1:-1:-1;;682:23:174;;;752:2;737:18;;724:32;;-1:-1:-1;803:2:174;788:18;;;775:32;;497:316;-1:-1:-1;497:316:174:o;1000:131::-;-1:-1:-1;;;;;1075:31:174;;1065:42;;1055:70;;1121:1;1118;1111:12;1136:134;1204:20;;1233:31;1204:20;1233:31;:::i;:::-;1136:134;;;:::o;1275:383::-;1352:6;1360;1368;1421:2;1409:9;1400:7;1396:23;1392:32;1389:52;;;1437:1;1434;1427:12;1389:52;1473:9;1460:23;1450:33;;1530:2;1519:9;1515:18;1502:32;1492:42;;1584:2;1573:9;1569:18;1556:32;1597:31;1622:5;1597:31;:::i;:::-;1647:5;1637:15;;;1275:383;;;;;:::o;1663:315::-;1731:6;1739;1792:2;1780:9;1771:7;1767:23;1763:32;1760:52;;;1808:1;1805;1798:12;1760:52;1844:9;1831:23;1821:33;;1904:2;1893:9;1889:18;1876:32;1917:31;1942:5;1917:31;:::i;:::-;1967:5;1957:15;;;1663:315;;;;;:::o;1983:127::-;2044:10;2039:3;2035:20;2032:1;2025:31;2075:4;2072:1;2065:15;2099:4;2096:1;2089:15;2115:718;2157:5;2210:3;2203:4;2195:6;2191:17;2187:27;2177:55;;2228:1;2225;2218:12;2177:55;2264:6;2251:20;2290:18;2327:2;2323;2320:10;2317:36;;;2333:18;;:::i;:::-;2408:2;2402:9;2376:2;2462:13;;-1:-1:-1;;2458:22:174;;;2482:2;2454:31;2450:40;2438:53;;;2506:18;;;2526:22;;;2503:46;2500:72;;;2552:18;;:::i;:::-;2592:10;2588:2;2581:22;2627:2;2619:6;2612:18;2673:3;2666:4;2661:2;2653:6;2649:15;2645:26;2642:35;2639:55;;;2690:1;2687;2680:12;2639:55;2754:2;2747:4;2739:6;2735:17;2728:4;2720:6;2716:17;2703:54;2801:1;2794:4;2789:2;2781:6;2777:15;2773:26;2766:37;2821:6;2812:15;;;;;;2115:718;;;;:::o;2838:665::-;2933:6;2941;2949;2957;3010:3;2998:9;2989:7;2985:23;2981:33;2978:53;;;3027:1;3024;3017:12;2978:53;3066:9;3053:23;3085:31;3110:5;3085:31;:::i;:::-;3135:5;-1:-1:-1;3192:2:174;3177:18;;3164:32;3205:33;3164:32;3205:33;:::i;:::-;3257:7;-1:-1:-1;3311:2:174;3296:18;;3283:32;;-1:-1:-1;3366:2:174;3351:18;;3338:32;3393:18;3382:30;;3379:50;;;3425:1;3422;3415:12;3379:50;3448:49;3489:7;3480:6;3469:9;3465:22;3448:49;:::i;:::-;3438:59;;;2838:665;;;;;;;:::o;3715:159::-;3782:20;;3842:6;3831:18;;3821:29;;3811:57;;3864:1;3861;3854:12;3879:456;3964:6;3972;3980;3988;4041:3;4029:9;4020:7;4016:23;4012:33;4009:53;;;4058:1;4055;4048:12;4009:53;4094:9;4081:23;4071:33;;4151:2;4140:9;4136:18;4123:32;4113:42;;4205:2;4194:9;4190:18;4177:32;4218:31;4243:5;4218:31;:::i;:::-;4268:5;-1:-1:-1;4292:37:174;4325:2;4310:18;;4292:37;:::i;:::-;4282:47;;3879:456;;;;;;;:::o;4340:367::-;4403:8;4413:6;4467:3;4460:4;4452:6;4448:17;4444:27;4434:55;;4485:1;4482;4475:12;4434:55;-1:-1:-1;4508:20:174;;4551:18;4540:30;;4537:50;;;4583:1;4580;4573:12;4537:50;4620:4;4612:6;4608:17;4596:29;;4680:3;4673:4;4663:6;4660:1;4656:14;4648:6;4644:27;4640:38;4637:47;4634:67;;;4697:1;4694;4687:12;4634:67;4340:367;;;;;:::o;4712:1404::-;4906:6;4914;4922;4930;4938;4946;4954;4962;5015:3;5003:9;4994:7;4990:23;4986:33;4983:53;;;5032:1;5029;5022:12;4983:53;5072:9;5059:23;5101:18;5142:2;5134:6;5131:14;5128:34;;;5158:1;5155;5148:12;5128:34;5197:70;5259:7;5250:6;5239:9;5235:22;5197:70;:::i;:::-;5286:8;;-1:-1:-1;5171:96:174;-1:-1:-1;5374:2:174;5359:18;;5346:32;;-1:-1:-1;5390:16:174;;;5387:36;;;5419:1;5416;5409:12;5387:36;5458:72;5522:7;5511:8;5500:9;5496:24;5458:72;:::i;:::-;5549:8;;-1:-1:-1;5432:98:174;-1:-1:-1;5637:2:174;5622:18;;5609:32;;-1:-1:-1;5653:16:174;;;5650:36;;;5682:1;5679;5672:12;5650:36;5721:72;5785:7;5774:8;5763:9;5759:24;5721:72;:::i;:::-;5812:8;;-1:-1:-1;5695:98:174;-1:-1:-1;5900:2:174;5885:18;;5872:32;;-1:-1:-1;5916:16:174;;;5913:36;;;5945:1;5942;5935:12;5913:36;;5984:72;6048:7;6037:8;6026:9;6022:24;5984:72;:::i;:::-;4712:1404;;;;-1:-1:-1;4712:1404:174;;-1:-1:-1;4712:1404:174;;;;;;6075:8;-1:-1:-1;;;4712:1404:174:o;6121:248::-;6189:6;6197;6250:2;6238:9;6229:7;6225:23;6221:32;6218:52;;;6266:1;6263;6256:12;6218:52;-1:-1:-1;;6289:23:174;;;6359:2;6344:18;;;6331:32;;-1:-1:-1;6121:248:174:o;6483:658::-;6654:2;6706:21;;;6776:13;;6679:18;;;6798:22;;;6625:4;;6654:2;6877:15;;;;6851:2;6836:18;;;6625:4;6920:195;6934:6;6931:1;6928:13;6920:195;;;6999:13;;-1:-1:-1;;;;;6995:39:174;6983:52;;7090:15;;;;7055:12;;;;7031:1;6949:9;6920:195;;;-1:-1:-1;7132:3:174;;6483:658;-1:-1:-1;;;;;;6483:658:174:o;7146:773::-;7268:6;7276;7284;7292;7345:2;7333:9;7324:7;7320:23;7316:32;7313:52;;;7361:1;7358;7351:12;7313:52;7401:9;7388:23;7430:18;7471:2;7463:6;7460:14;7457:34;;;7487:1;7484;7477:12;7457:34;7526:70;7588:7;7579:6;7568:9;7564:22;7526:70;:::i;:::-;7615:8;;-1:-1:-1;7500:96:174;-1:-1:-1;7703:2:174;7688:18;;7675:32;;-1:-1:-1;7719:16:174;;;7716:36;;;7748:1;7745;7738:12;7716:36;;7787:72;7851:7;7840:8;7829:9;7825:24;7787:72;:::i;:::-;7146:773;;;;-1:-1:-1;7878:8:174;-1:-1:-1;;;;7146:773:174:o;7924:815::-;8047:6;8055;8063;8071;8124:3;8112:9;8103:7;8099:23;8095:33;8092:53;;;8141:1;8138;8131:12;8092:53;8181:9;8168:23;8214:18;8206:6;8203:30;8200:50;;;8246:1;8243;8236:12;8200:50;8269:22;;8325:3;8307:16;;;8303:26;8300:46;;;8342:1;8339;8332:12;8300:46;8365:2;-1:-1:-1;8417:2:174;8402:18;;8389:32;8430:31;8389:32;8430:31;:::i;:::-;8480:5;-1:-1:-1;8537:2:174;8522:18;;8509:32;8550:33;8509:32;8550:33;:::i;:::-;8602:7;-1:-1:-1;8661:2:174;8646:18;;8633:32;8674:33;8633:32;8674:33;:::i;:::-;7924:815;;;;-1:-1:-1;7924:815:174;;-1:-1:-1;;7924:815:174:o;10152:525::-;10238:6;10246;10254;10262;10315:3;10303:9;10294:7;10290:23;10286:33;10283:53;;;10332:1;10329;10322:12;10283:53;10371:9;10358:23;10390:31;10415:5;10390:31;:::i;:::-;10440:5;-1:-1:-1;10497:2:174;10482:18;;10469:32;10510:33;10469:32;10510:33;:::i;:::-;10152:525;;10562:7;;-1:-1:-1;;;;10616:2:174;10601:18;;10588:32;;10667:2;10652:18;10639:32;;10152:525::o;10682:1088::-;10840:6;10848;10856;10864;10872;10880;10933:2;10921:9;10912:7;10908:23;10904:32;10901:52;;;10949:1;10946;10939:12;10901:52;10989:9;10976:23;11018:18;11059:2;11051:6;11048:14;11045:34;;;11075:1;11072;11065:12;11045:34;11114:70;11176:7;11167:6;11156:9;11152:22;11114:70;:::i;:::-;11203:8;;-1:-1:-1;11088:96:174;-1:-1:-1;11291:2:174;11276:18;;11263:32;;-1:-1:-1;11307:16:174;;;11304:36;;;11336:1;11333;11326:12;11304:36;11375:72;11439:7;11428:8;11417:9;11413:24;11375:72;:::i;:::-;11466:8;;-1:-1:-1;11349:98:174;-1:-1:-1;11554:2:174;11539:18;;11526:32;;-1:-1:-1;11570:16:174;;;11567:36;;;11599:1;11596;11589:12;11567:36;;11638:72;11702:7;11691:8;11680:9;11676:24;11638:72;:::i;:::-;10682:1088;;;;-1:-1:-1;10682:1088:174;;-1:-1:-1;10682:1088:174;;11729:8;;10682:1088;-1:-1:-1;;;10682:1088:174:o;11775:663::-;11879:6;11887;11895;11903;11911;11919;11972:3;11960:9;11951:7;11947:23;11943:33;11940:53;;;11989:1;11986;11979:12;11940:53;12025:9;12012:23;12002:33;;12085:2;12074:9;12070:18;12057:32;12098:31;12123:5;12098:31;:::i;:::-;12148:5;-1:-1:-1;12205:2:174;12190:18;;12177:32;12218:33;12177:32;12218:33;:::i;:::-;11775:663;;;;-1:-1:-1;12270:7:174;;12324:2;12309:18;;12296:32;;-1:-1:-1;12375:3:174;12360:19;;12347:33;;12427:3;12412:19;;;12399:33;;-1:-1:-1;11775:663:174;-1:-1:-1;;11775:663:174:o;12443:180::-;12502:6;12555:2;12543:9;12534:7;12530:23;12526:32;12523:52;;;12571:1;12568;12561:12;12523:52;-1:-1:-1;12594:23:174;;12443:180;-1:-1:-1;12443:180:174:o;12729:423::-;12771:3;12809:5;12803:12;12836:6;12831:3;12824:19;12861:1;12871:162;12885:6;12882:1;12879:13;12871:162;;;12947:4;13003:13;;;12999:22;;12993:29;12975:11;;;12971:20;;12964:59;12900:12;12871:162;;;12875:3;13078:1;13071:4;13062:6;13057:3;13053:16;13049:27;13042:38;13141:4;13134:2;13130:7;13125:2;13117:6;13113:15;13109:29;13104:3;13100:39;13096:50;13089:57;;;12729:423;;;;:::o;13382:2308::-;13563:2;13552:9;13545:21;13575:76;13647:2;13636:9;13632:18;13623:6;13617:13;12709:12;12697:25;;12628:96;13575:76;13526:4;13698:2;13690:6;13686:15;13680:22;13711:52;13759:2;13748:9;13744:18;13730:12;-1:-1:-1;;;;;6440:31:174;6428:44;;6374:104;13711:52;-1:-1:-1;13812:2:174;13800:15;;13794:22;-1:-1:-1;;;;;6440:31:174;;13875:2;13860:18;;6428:44;-1:-1:-1;13928:2:174;13916:15;;13910:22;-1:-1:-1;;;;;6440:31:174;;13991:3;13976:19;;6428:44;-1:-1:-1;14045:3:174;14033:16;;14027:23;-1:-1:-1;;;;;6440:31:174;;14109:3;14094:19;;6428:44;-1:-1:-1;14163:3:174;14151:16;;14145:23;-1:-1:-1;;;;;6440:31:174;;14227:3;14212:19;;6428:44;-1:-1:-1;14281:3:174;14269:16;;14263:23;-1:-1:-1;;;;;6440:31:174;;14345:3;14330:19;;6428:44;14295:55;14399:3;14391:6;14387:16;14381:23;14423:6;14448:3;14487:2;14482;14471:9;14467:18;14460:30;14513:54;14562:3;14551:9;14547:19;14531:14;14513:54;:::i;:::-;14592:15;;;14586:22;14627:3;14646:18;;;14639:30;;;;14694:15;;14688:22;14729:3;14748:18;;;14741:30;;;;14796:15;;14790:22;14831:3;14850:18;;;14843:30;;;;14898:15;;14892:22;14934:3;14953:19;;;14946:31;;;;15014:16;;15008:23;14499:68;;-1:-1:-1;15051:3:174;15063:55;15098:19;;;15008:23;-1:-1:-1;;;;;13223:46:174;13211:59;;13157:119;15063:55;15155:16;;15149:23;;-1:-1:-1;15192:3:174;15204:55;15239:19;;;15149:23;-1:-1:-1;;;;;13223:46:174;13211:59;;13157:119;15204:55;15296:16;;15290:23;;-1:-1:-1;15333:3:174;15345:55;15380:19;;;15290:23;-1:-1:-1;;;;;13223:46:174;13211:59;;13157:119;15345:55;15438:16;;15432:23;;-1:-1:-1;15475:3:174;15487:56;15523:19;;;15432:23;-1:-1:-1;;;;;13223:46:174;13211:59;;13157:119;15487:56;15581:16;;;15575:23;13357:12;13346:24;15642:18;;13334:37;;;;-1:-1:-1;15678:6:174;;-1:-1:-1;13382:2308:174:o;16620:663::-;16732:6;16740;16748;16756;16764;16772;16780;16833:3;16821:9;16812:7;16808:23;16804:33;16801:53;;;16850:1;16847;16840:12;16801:53;16886:9;16873:23;16863:33;;16943:2;16932:9;16928:18;16915:32;16905:42;;16994:2;16983:9;16979:18;16966:32;16956:42;;17045:2;17034:9;17030:18;17017:32;17007:42;;17096:3;17085:9;17081:19;17068:33;17058:43;;17151:3;17140:9;17136:19;17123:33;17165:31;17190:5;17165:31;:::i;:::-;17215:5;-1:-1:-1;17239:38:174;17272:3;17257:19;;17239:38;:::i;:::-;17229:48;;16620:663;;;;;;;;;;:::o;18381:525::-;18467:6;18475;18483;18491;18544:3;18532:9;18523:7;18519:23;18515:33;18512:53;;;18561:1;18558;18551:12;18512:53;18600:9;18587:23;18619:31;18644:5;18619:31;:::i;:::-;18669:5;-1:-1:-1;18721:2:174;18706:18;;18693:32;;-1:-1:-1;18772:2:174;18757:18;;18744:32;;-1:-1:-1;18828:2:174;18813:18;;18800:32;18841:33;18800:32;18841:33;:::i;18911:1499::-;19071:6;19079;19087;19095;19103;19111;19119;19127;19180:3;19168:9;19159:7;19155:23;19151:33;19148:53;;;19197:1;19194;19187:12;19148:53;19236:9;19223:23;19255:31;19280:5;19255:31;:::i;:::-;19305:5;-1:-1:-1;19362:2:174;19347:18;;19334:32;19375:33;19334:32;19375:33;:::i;:::-;19427:7;-1:-1:-1;19485:2:174;19470:18;;19457:32;19508:18;19538:14;;;19535:34;;;19565:1;19562;19555:12;19535:34;19604:70;19666:7;19657:6;19646:9;19642:22;19604:70;:::i;:::-;19693:8;;-1:-1:-1;19578:96:174;-1:-1:-1;19781:2:174;19766:18;;19753:32;;-1:-1:-1;19797:16:174;;;19794:36;;;19826:1;19823;19816:12;19794:36;19865:72;19929:7;19918:8;19907:9;19903:24;19865:72;:::i;:::-;19956:8;;-1:-1:-1;19839:98:174;-1:-1:-1;20044:3:174;20029:19;;20016:33;;-1:-1:-1;20061:16:174;;;20058:36;;;20090:1;20087;20080:12;20058:36;20128:8;20117:9;20113:24;20103:34;;20175:7;20168:4;20164:2;20160:13;20156:27;20146:55;;20197:1;20194;20187:12;20146:55;20237:2;20224:16;20263:2;20255:6;20252:14;20249:34;;;20279:1;20276;20269:12;20249:34;20324:7;20319:2;20310:6;20306:2;20302:15;20298:24;20295:37;20292:57;;;20345:1;20342;20335:12;20292:57;20376:2;20372;20368:11;20358:21;;20398:6;20388:16;;;;;18911:1499;;;;;;;;;;;:::o;20415:273::-;20471:6;20524:2;20512:9;20503:7;20499:23;20495:32;20492:52;;;20540:1;20537;20530:12;20492:52;20579:9;20566:23;20632:5;20625:13;20618:21;20611:5;20608:32;20598:60;;20654:1;20651;20644:12;20693:1584;20913:6;20921;20929;20937;20945;20953;20961;20969;20977;20985;20993:7;21047:3;21035:9;21026:7;21022:23;21018:33;21015:53;;;21064:1;21061;21054:12;21015:53;21087:18;21145:2;21133:9;21120:23;21117:31;21114:51;;;21161:1;21158;21151:12;21114:51;21200:87;21279:7;21266:9;21253:23;21242:9;21238:39;21200:87;:::i;:::-;21306:8;;-1:-1:-1;21333:8:174;-1:-1:-1;21384:2:174;21369:18;;21356:32;21353:40;-1:-1:-1;21350:60:174;;;21406:1;21403;21396:12;21350:60;21445:96;21533:7;21526:2;21515:9;21511:18;21498:32;21487:9;21483:48;21445:96;:::i;:::-;21560:8;;-1:-1:-1;21587:8:174;-1:-1:-1;21638:2:174;21623:18;;21610:32;21607:40;-1:-1:-1;21604:60:174;;;21660:1;21657;21650:12;21604:60;21699:96;21787:7;21780:2;21769:9;21765:18;21752:32;21741:9;21737:48;21699:96;:::i;:::-;21814:8;;-1:-1:-1;21841:8:174;-1:-1:-1;21892:2:174;21877:18;;21864:32;21861:40;-1:-1:-1;21858:60:174;;;21914:1;21911;21904:12;21858:60;;21953:96;22041:7;22034:2;22023:9;22019:18;22006:32;21995:9;21991:48;21953:96;:::i;:::-;22068:8;;-1:-1:-1;22095:8:174;-1:-1:-1;22150:3:174;22135:19;;22122:33;;-1:-1:-1;22174:39:174;22208:3;22193:19;;22174:39;:::i;:::-;22164:49;;22233:38;22266:3;22255:9;22251:19;22233:38;:::i;:::-;22222:49;;20693:1584;;;;;;;;;;;;;;:::o;22606:247::-;22665:6;22718:2;22706:9;22697:7;22693:23;22689:32;22686:52;;;22734:1;22731;22724:12;22686:52;22773:9;22760:23;22792:31;22817:5;22792:31;:::i;22858:632::-;23029:2;23081:21;;;23151:13;;23054:18;;;23173:22;;;23000:4;;23029:2;23252:15;;;;23226:2;23211:18;;;23000:4;23295:169;23309:6;23306:1;23303:13;23295:169;;;23370:13;;23358:26;;23439:15;;;;23404:12;;;;23331:1;23324:9;23295:169;;23768:734;23872:6;23880;23888;23896;23904;23957:3;23945:9;23936:7;23932:23;23928:33;23925:53;;;23974:1;23971;23964:12;23925:53;24013:9;24000:23;24032:31;24057:5;24032:31;:::i;:::-;24082:5;-1:-1:-1;24139:2:174;24124:18;;24111:32;24152:33;24111:32;24152:33;:::i;:::-;24204:7;-1:-1:-1;24258:2:174;24243:18;;24230:32;;-1:-1:-1;24309:2:174;24294:18;;24281:32;;-1:-1:-1;24364:3:174;24349:19;;24336:33;24392:18;24381:30;;24378:50;;;24424:1;24421;24414:12;24378:50;24447:49;24488:7;24479:6;24468:9;24464:22;24447:49;:::i;:::-;24437:59;;;23768:734;;;;;;;;:::o;27557:251::-;27627:6;27680:2;27668:9;27659:7;27655:23;27651:32;27648:52;;;27696:1;27693;27686:12;27648:52;27728:9;27722:16;27747:31;27772:5;27747:31;:::i;27813:325::-;28015:2;27997:21;;;28054:1;28034:18;;;28027:29;-1:-1:-1;;;28087:2:174;28072:18;;28065:32;28129:2;28114:18;;27813:325::o;29048:461::-;29101:3;29139:5;29133:12;29166:6;29161:3;29154:19;29192:4;29221:2;29216:3;29212:12;29205:19;;29258:2;29251:5;29247:14;29279:1;29289:195;29303:6;29300:1;29297:13;29289:195;;;29368:13;;-1:-1:-1;;;;;29364:39:174;29352:52;;29424:12;;;;29459:15;;;;29400:1;29318:9;29289:195;;;-1:-1:-1;29500:3:174;;29048:461;-1:-1:-1;;;;;29048:461:174:o;29514:435::-;29567:3;29605:5;29599:12;29632:6;29627:3;29620:19;29658:4;29687:2;29682:3;29678:12;29671:19;;29724:2;29717:5;29713:14;29745:1;29755:169;29769:6;29766:1;29763:13;29755:169;;;29830:13;;29818:26;;29864:12;;;;29899:15;;;;29791:1;29784:9;29755:169;;29954:1340;30264:4;30310:1;30306;30301:3;30297:11;30293:19;30351:2;30343:6;30339:15;30328:9;30321:34;30391:6;30386:2;30375:9;30371:18;30364:34;30434:2;30429;30418:9;30414:18;30407:30;30492:2;30483:6;30477:13;30473:22;30468:2;30457:9;30453:18;30446:50;;30543:2;30535:6;30531:15;30525:22;30584:4;30578:3;30567:9;30563:19;30556:33;30612:63;30670:3;30659:9;30655:19;30641:12;30612:63;:::i;:::-;30598:77;;30724:2;30716:6;30712:15;30706:22;30751:2;30747:7;30820:2;30808:9;30800:6;30796:22;30792:31;30785:4;30774:9;30770:20;30763:61;30847:52;30892:6;30876:14;30847:52;:::i;:::-;30833:66;;30948:2;30940:6;30936:15;30930:22;30908:44;;31017:2;31005:9;30997:6;30993:22;30989:31;30983:3;30972:9;30968:19;30961:60;31044:52;31089:6;31073:14;31044:52;:::i;:::-;31030:66;;31145:3;31137:6;31133:16;31127:23;31105:45;;31215:2;31203:9;31195:6;31191:22;31187:31;31181:3;31170:9;31166:19;31159:60;;31236:52;31281:6;31265:14;31236:52;:::i;:::-;31228:60;29954:1340;-1:-1:-1;;;;;;;29954:1340:174:o;31299:929::-;31617:4;31663:1;31659;31654:3;31650:11;31646:19;31704:2;31696:6;31692:15;31681:9;31674:34;31744:6;31739:2;31728:9;31724:18;31717:34;31787:2;31782;31771:9;31767:18;31760:30;31845:2;31836:6;31830:13;31826:22;31821:2;31810:9;31806:18;31799:50;;31896:2;31888:6;31884:15;31878:22;31937:2;31931:3;31920:9;31916:19;31909:31;31963:63;32021:3;32010:9;32006:19;31992:12;31963:63;:::i;:::-;31949:77;;32075:2;32067:6;32063:15;32057:22;32148:2;32144:7;32132:9;32124:6;32120:22;32116:36;32110:3;32099:9;32095:19;32088:65;32170:52;32215:6;32199:14;32170:52;:::i;32233:1708::-;32551:4;32597:1;32593;32588:3;32584:11;32580:19;32638:2;32630:6;32626:15;32615:9;32608:34;32661:2;32699:6;32694:2;32683:9;32679:18;32672:34;32742:2;32737;32726:9;32722:18;32715:30;32800:2;32791:6;32785:13;32781:22;32776:2;32765:9;32761:18;32754:50;32851:2;32843:6;32839:15;32833:22;32813:42;;32892:4;32886:3;32875:9;32871:19;32864:33;32920:63;32978:3;32967:9;32963:19;32949:12;32920:63;:::i;:::-;32906:77;;33032:2;33024:6;33020:15;33014:22;33059:2;33055:7;33128:2;33116:9;33108:6;33104:22;33100:31;33093:4;33082:9;33078:20;33071:61;33155:52;33200:6;33184:14;33155:52;:::i;:::-;33141:66;;33256:2;33248:6;33244:15;33238:22;33216:44;;33325:2;33313:9;33305:6;33301:22;33297:31;33291:3;33280:9;33276:19;33269:60;33352:52;33397:6;33381:14;33352:52;:::i;:::-;33453:3;33441:16;;33435:23;33499:22;;;33495:31;;;33489:3;33474:19;;33467:60;33576:21;;33606:22;;;33682:23;;;;-1:-1:-1;33723:1:174;;-1:-1:-1;33644:15:174;;;33733:182;33747:6;33744:1;33741:13;33733:182;;;33812:13;;33827:6;33808:26;33796:39;;33890:15;;;;33769:1;33762:9;;;;;33855:12;;;;33733:182;;;-1:-1:-1;33932:3:174;32233:1708;-1:-1:-1;;;;;;;;32233:1708:174:o;33946:127::-;34007:10;34002:3;33998:20;33995:1;33988:31;34038:4;34035:1;34028:15;34062:4;34059:1;34052:15;34078:125;34143:9;;;34164:10;;;34161:36;;;34177:18;;:::i;34208:1154::-;34530:4;34576:1;34572;34567:3;34563:11;34559:19;34617:2;34609:6;34605:15;34594:9;34587:34;34657:6;34652:2;34641:9;34637:18;34630:34;34700:2;34695;34684:9;34680:18;34673:30;34758:2;34749:6;34743:13;34739:22;34734:2;34723:9;34719:18;34712:50;;34809:2;34801:6;34797:15;34791:22;34851:4;34844;34833:9;34829:20;34822:34;34879:63;34937:3;34926:9;34922:19;34908:12;34879:63;:::i;:::-;34865:77;;34991:2;34983:6;34979:15;34973:22;35018:2;35014:7;35086:2;35074:9;35066:6;35062:22;35058:31;35052:3;35041:9;35037:19;35030:60;35113:52;35158:6;35142:14;35113:52;:::i;:::-;35099:66;;35214:2;35206:6;35202:15;35196:22;35174:44;;35283:2;35271:9;35263:6;35259:22;35255:31;35249:3;35238:9;35234:19;35227:60;;35304:52;35349:6;35333:14;35304:52;:::i;35367:220::-;35516:2;35505:9;35498:21;35479:4;35536:45;35577:2;35566:9;35562:18;35554:6;35536:45;:::i;35592:380::-;35671:1;35667:12;;;;35714;;;35735:61;;35789:4;35781:6;35777:17;35767:27;;35735:61;35842:2;35834:6;35831:14;35811:18;35808:38;35805:161;;35888:10;35883:3;35879:20;35876:1;35869:31;35923:4;35920:1;35913:15;35951:4;35948:1;35941:15;35805:161;;35592:380;;;:::o;36968:1024::-;37271:6;37260:9;37253:25;37314:2;37309;37298:9;37294:18;37287:30;37389:1;37385;37380:3;37376:11;37372:19;37363:6;37357:13;37353:39;37348:2;37337:9;37333:18;37326:67;37234:4;37440:2;37432:6;37428:15;37422:22;37480:4;37475:2;37464:9;37460:18;37453:32;37508:63;37566:3;37555:9;37551:19;37537:12;37508:63;:::i;:::-;37494:77;;37620:2;37612:6;37608:15;37602:22;37647:2;37643:7;37716:2;37704:9;37696:6;37692:22;37688:31;37681:4;37670:9;37666:20;37659:61;37743:52;37788:6;37772:14;37743:52;:::i;:::-;37729:66;;37844:2;37836:6;37832:15;37826:22;37804:44;;37913:2;37901:9;37893:6;37889:22;37885:31;37879:3;37868:9;37864:19;37857:60;;37934:52;37979:6;37963:14;37934:52;:::i;:::-;37926:60;36968:1024;-1:-1:-1;;;;;;36968:1024:174:o;39003:128::-;39070:9;;;39091:11;;;39088:37;;;39105:18;;:::i;39136:1674::-;39518:1;39514;39509:3;39505:11;39501:19;39493:6;39489:32;39478:9;39471:51;39558:6;39553:2;39542:9;39538:18;39531:34;39601:2;39596;39585:9;39581:18;39574:30;39613:53;39662:2;39651:9;39647:18;39638:6;39632:13;-1:-1:-1;;;;;6440:31:174;6428:44;;6374:104;39613:53;39452:4;39713:2;39705:6;39701:15;39695:22;39736:6;39779:2;39773:3;39762:9;39758:19;39751:31;39805:63;39863:3;39852:9;39848:19;39834:12;39805:63;:::i;:::-;39791:77;;39917:2;39909:6;39905:15;39899:22;39944:2;39940:7;40012:2;40000:9;39992:6;39988:22;39984:31;39978:3;39967:9;39963:19;39956:60;40039:52;40084:6;40068:14;40039:52;:::i;:::-;40025:66;;40140:2;40132:6;40128:15;40122:22;40100:44;;40209:2;40197:9;40189:6;40185:22;40181:31;40175:3;40164:9;40160:19;40153:60;40236:52;40281:6;40265:14;40236:52;:::i;:::-;40222:66;;40337:3;40329:6;40325:16;40319:23;40297:45;;40407:2;40395:9;40387:6;40383:22;40379:31;40373:3;40362:9;40358:19;40351:60;;40434:52;40479:6;40463:14;40434:52;:::i;:::-;40420:66;;;40540:3;40532:6;40528:16;40522:23;40517:2;40506:9;40502:18;40495:51;;40595:3;40587:6;40583:16;40577:23;40609:55;40659:3;40648:9;40644:19;40628:14;-1:-1:-1;;;;;6440:31:174;6428:44;;6374:104;40609:55;-1:-1:-1;40713:3:174;40701:16;;40695:23;28219:6;28208:18;;40776:3;40761:19;;28196:31;-1:-1:-1;40798:6:174;39136:1674;-1:-1:-1;;;;;39136:1674:174:o;41247:306::-;41335:6;41343;41351;41404:2;41392:9;41383:7;41379:23;41375:32;41372:52;;;41420:1;41417;41410:12;41372:52;41449:9;41443:16;41433:26;;41499:2;41488:9;41484:18;41478:25;41468:35;;41543:2;41532:9;41528:18;41522:25;41512:35;;41247:306;;;;;:::o;42172:127::-;42233:10;42228:3;42224:20;42221:1;42214:31;42264:4;42261:1;42254:15;42288:4;42285:1;42278:15;42304:135;42343:3;42364:17;;;42361:43;;42384:18;;:::i;:::-;-1:-1:-1;42431:1:174;42420:13;;42304:135::o;43107:925::-;43421:4;43467:1;43463;43458:3;43454:11;43450:19;43508:2;43500:6;43496:15;43485:9;43478:34;43548:6;43543:2;43532:9;43528:18;43521:34;43591:2;43586;43575:9;43571:18;43564:30;43649:2;43640:6;43634:13;43630:22;43625:2;43614:9;43610:18;43603:50;;43700:2;43692:6;43688:15;43682:22;43741:2;43735:3;43724:9;43720:19;43713:31;43767:63;43825:3;43814:9;43810:19;43796:12;43767:63;:::i;:::-;43753:77;;43879:2;43871:6;43867:15;43861:22;43952:2;43948:7;43936:9;43928:6;43924:22;43920:36;43914:3;43903:9;43899:19;43892:65;43974:52;44019:6;44003:14;43974:52;:::i;44397:184::-;44467:6;44520:2;44508:9;44499:7;44495:23;44491:32;44488:52;;;44536:1;44533;44526:12;44488:52;-1:-1:-1;44559:16:174;;44397:184;-1:-1:-1;44397:184:174:o;44586:217::-;44626:1;44652;44642:132;;44696:10;44691:3;44687:20;44684:1;44677:31;44731:4;44728:1;44721:15;44759:4;44756:1;44749:15;44642:132;-1:-1:-1;44788:9:174;;44586:217::o;44808:168::-;44848:7;44914:1;44910;44906:6;44902:14;44899:1;44896:21;44891:1;44884:9;44877:17;44873:45;44870:71;;;44921:18;;:::i;:::-;-1:-1:-1;44961:9:174;;44808:168::o",
    "linkReferences": {
      "src/protocol/libraries/logic/BorrowLogic.sol": {
        "BorrowLogic": [
          {
            "start": 1947,
            "length": 20
          },
          {
            "start": 4894,
            "length": 20
          },
          {
            "start": 6319,
            "length": 20
          },
          {
            "start": 8145,
            "length": 20
          },
          {
            "start": 9085,
            "length": 20
          },
          {
            "start": 9528,
            "length": 20
          }
        ]
      },
      "src/protocol/libraries/logic/LiquidateLogic.sol": {
        "LiquidateLogic": [
          {
            "start": 2376,
            "length": 20
          },
          {
            "start": 3151,
            "length": 20
          },
          {
            "start": 3949,
            "length": 20
          },
          {
            "start": 6924,
            "length": 20
          },
          {
            "start": 8317,
            "length": 20
          }
        ]
      },
      "src/protocol/libraries/logic/SupplyLogic.sol": {
        "SupplyLogic": [
          {
            "start": 2205,
            "length": 20
          },
          {
            "start": 2867,
            "length": 20
          },
          {
            "start": 4464,
            "length": 20
          },
          {
            "start": 6648,
            "length": 20
          }
        ]
      }
    }
  },
  "methodIdentifiers": {
    "auction(uint256,address)": "118cfad3",
    "batchAuction(uint256[],address[])": "34e69b62",
    "batchBid(address[],uint256[],uint256[],address[])": "2684dd09",
    "batchBorrow(uint256[],uint256[],uint256[],uint256[],uint256,address,uint16)": "c28cadf7",
    "batchDeposit(uint256[],uint256[],address[],uint16[])": "4b33a967",
    "batchRefinance(uint256[],uint256[],uint256[])": "621759de",
    "batchRepay(uint256[],uint256[])": "ff7039c7",
    "batchWithdraw(uint256[],uint256[],address[])": "9e97a156",
    "bid(address,uint256,uint256,address)": "a7ff3b23",
    "borrow(uint256,uint256,uint256,uint256,uint256,address,uint16)": "9c74daf8",
    "deposit(uint256,uint256,address,uint16)": "1de8a7c2",
    "executionDelegate()": "986c9b20",
    "finalizeTransfer(uint256,address,address,uint256,uint256,uint256)": "6c130dc7",
    "getAddressProvider()": "f8c68934",
    "getAuctionConfiguration(uint256)": "a58497a5",
    "getBorrowHealthFactor(uint256)": "c46a90f5",
    "getInitializedAssets()": "3b4ecdb2",
    "getInitializedCollaterals()": "31e884bb",
    "getMaxNumberOfReserves()": "08ac08b9",
    "getPausedTime()": "8fc42188",
    "getReserve(uint256)": "77778db3",
    "getReserveConfiguration(uint256)": "eadff055",
    "getReserveFlags(uint256)": "993ff816",
    "getReserveId(address,address,uint256,uint256)": "52120e23",
    "getReserveNormalizedIncome(uint256)": "dcc5cded",
    "getReserveNormalizedVariableDebt(uint256)": "9034c18c",
    "getReserveUserStableRate(uint256,address)": "2e4e8eb4",
    "getReservesList()": "d1946dbc",
    "initReserve((address,string,string,uint256,uint256,address,string,string,uint8,address,string,string,address,string,string,address,string,string,address,uint256,address,address,uint256,uint256,uint256,string),address,address,address)": "45a64925",
    "initialize(address)": "c4d66de8",
    "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
    "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
    "onERC721Received(address,address,uint256,bytes)": "150b7a02",
    "paused()": "5c975abb",
    "refinance(uint256,uint256,uint256)": "044df1f2",
    "repay(uint256,uint256)": "d8aed145",
    "setMaxNumberOfReserves(uint256)": "746c35a2",
    "setPause(bool)": "bedb86fb",
    "setPausedTime(uint256,uint256)": "2f923ff7",
    "setReserveConfiguration(uint256,uint256)": "89a7245d",
    "setReserveCreatorAddress(uint256,address)": "bbce5cf3",
    "setReserveCreatorPercentage(uint256,uint256)": "e49c8a52",
    "setReserveInterestRateAddress(uint256,address)": "19322775",
    "setReserveMaxSupply(uint256,uint256)": "d6ee0f73",
    "supportsInterface(bytes4)": "01ffc9a7",
    "withdraw(uint256,uint256,address)": "0ad58d2f"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referral\",\"type\":\"uint16\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"referalCode\",\"type\":\"uint16\"}],\"name\":\"Deposit\",\"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\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentAsset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"Liquidate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"durationTime\",\"type\":\"uint256\"}],\"name\":\"PausedTimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountAdded\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountTaken\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"defaultFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Refinanced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"}],\"name\":\"Repay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"auction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"borrowIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"onBehalfOfs\",\"type\":\"address[]\"}],\"name\":\"batchAuction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"borrowIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"onBehalfOfs\",\"type\":\"address[]\"}],\"name\":\"batchBid\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenValues\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"reserveIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"batchBorrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"reserveIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"onBehalfOfs\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"referralCodes\",\"type\":\"uint16[]\"}],\"name\":\"batchDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"borrowIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"durations\",\"type\":\"uint256[]\"}],\"name\":\"batchRefinance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"borrowIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"batchRepay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"reserveIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tos\",\"type\":\"address[]\"}],\"name\":\"batchWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"bid\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executionDelegate\",\"outputs\":[{\"internalType\":\"contract IExecutionDelegate\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"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\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAddressProvider\",\"outputs\":[{\"internalType\":\"contract IAddressProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"}],\"name\":\"getAuctionConfiguration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"}],\"name\":\"getBorrowHealthFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getInitializedAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getInitializedCollaterals\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxNumberOfReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPausedTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"}],\"name\":\"getReserve\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"fTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"interestRateAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"assetPriceFeed\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxTokenSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidityIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"variableBorrowIndex\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentLiquidityRate\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentVariableBorrowRate\",\"type\":\"uint128\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"}],\"internalType\":\"struct DataTypes.Reserve\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"}],\"name\":\"getReserveConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"data\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.ReserveConfigurationMap\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"}],\"name\":\"getReserveFlags\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokenId\",\"type\":\"uint256\"}],\"name\":\"getReserveId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"}],\"name\":\"getReserveNormalizedIncome\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"}],\"name\":\"getReserveNormalizedVariableDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getReserveUserStableRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesList\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"reservesList\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"underlyingCollateral\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"underlyingCollateralName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"underlyingCollateralSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"underlyingMaxTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"underlyingMinTokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"underlyingAssetName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"underlyingAssetSymbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"underlyingAssetDecimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"fTokenImpl\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"fTokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"fTokenSymbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenImpl\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"stableDebtTokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"stableDebtTokenSymbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenImpl\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"variableDebtTokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"variableDebtTokenSymbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"baseLTV\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creatorPercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"auctionCallerPercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"auctionCreatorPercentage\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"assetPriceFeed\",\"type\":\"string\"}],\"internalType\":\"struct ConfigTypes.InitReserveInput\",\"name\":\"input\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"fToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stableDebtToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"variableDebtToken\",\"type\":\"address\"}],\"name\":\"initReserve\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressProvider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"refinance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"setMaxNumberOfReserves\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"val\",\"type\":\"bool\"}],\"name\":\"setPause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"durationTime\",\"type\":\"uint256\"}],\"name\":\"setPausedTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"configuration\",\"type\":\"uint256\"}],\"name\":\"setReserveConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"setReserveCreatorAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"}],\"name\":\"setReserveCreatorPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"rateAddress\",\"type\":\"address\"}],\"name\":\"setReserveInterestRateAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxTokenSupply\",\"type\":\"uint256\"}],\"name\":\"setReserveMaxSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"FluidNFT\",\"details\":\"This is our protocol's point of access. - For Upgradeable DO NOT ADJUST inheritance order\",\"kind\":\"dev\",\"methods\":{\"auction(uint256,address)\":{\"params\":{\"borrowId\":\"The id of the borrow.\",\"onBehalfOf\":\"The wallet to receive the auction caller fee.\"}},\"batchBorrow(uint256[],uint256[],uint256[],uint256[],uint256,address,uint16)\":{\"details\":\"Stack too deep to be able to be able to pass arrays for all variables\"},\"bid(address,uint256,uint256,address)\":{\"params\":{\"amount\":\"The amount of ERC20 tokens to be paid.\",\"asset\":\"The asset contract address.\",\"borrowId\":\"The id of the defaulted borrow.\",\"onBehalfOf\":\"The wallet to receive the underlying NFT.\"}},\"borrow(uint256,uint256,uint256,uint256,uint256,address,uint16)\":{\"params\":{\"amount\":\"The amount of ERC20 tokens to be borrowed.\",\"duration\":\"The duration of the loan, 0 if open-ended\",\"onBehalfOf\":\"The address to receive the loan.\",\"referralCode\":\"Code used to register the integrator originated the operation, for potential rewards.\",\"reserveId\":\"The id of the reserve to borrow against. \",\"tokenId\":\"The tokenId of the ERC721 / ERC1155 token to be deposited. \",\"tokenValue\":\"The number of same-value tokens supplied (0 implies ERC721)\"}},\"deposit(uint256,uint256,address,uint16)\":{\"params\":{\"amount\":\"The amount of ERC20 tokens.\",\"onBehalfOf\":\"Where to credit the deposit.\",\"referralCode\":\"Any referral code.\",\"reserveId\":\"The id of the reserve.\"}},\"finalizeTransfer(uint256,address,address,uint256,uint256,uint256)\":{\"details\":\"Validates and finalizes an fToken transfer - Only callable by the overlying fToken of the `asset`  \",\"params\":{\"amount\":\"The amount being transferred/withdrawn\",\"balanceFromBefore\":\"The fToken balance of the `from` user before the transfer\",\"balanceToBefore\":\"The fToken balance of the `to` user before the transfer\",\"from\":\"The user from which the fToken are transferred\",\"reserveId\":\"The id of the fToken reserve\",\"to\":\"The user receiving the fTokens\"}},\"getAddressProvider()\":{\"details\":\"Returns the cached AddressProvider connected to this contract*\"},\"getMaxNumberOfReserves()\":{\"details\":\"Returns the maximum number of reserves supported to be listed in this LendPool\"},\"getReserve(uint256)\":{\"details\":\"Returns the state and configuration of the reserve\",\"params\":{\"reserveId\":\"The id of the reserve\"},\"returns\":{\"_0\":\"The state of the reserve*\"}},\"getReserveConfiguration(uint256)\":{\"details\":\"Returns the configuration of the reserve\",\"params\":{\"reserveId\":\"The id of the reserve\"},\"returns\":{\"_0\":\"The configuration of the reserve*\"}},\"getReserveFlags(uint256)\":{\"details\":\"Returns the state of the resev\",\"params\":{\"reserveId\":\"The min id of the reserve\"},\"returns\":{\"_0\":\"The reserve user stable rate\"}},\"getReserveNormalizedVariableDebt(uint256)\":{\"details\":\"Returns the normalized variable debt per unit of asset\",\"params\":{\"reserveId\":\"The min id of the reserve\"},\"returns\":{\"_0\":\"The reserve normalized variable debt\"}},\"getReserveUserStableRate(uint256,address)\":{\"details\":\"Returns the reserve user stable rate\",\"params\":{\"reserveId\":\"The min id of the reserve\",\"user\":\"The address of the user\"},\"returns\":{\"_0\":\"The reserve user stable rate\"}},\"initReserve((address,string,string,uint256,uint256,address,string,string,uint8,address,string,string,address,string,string,address,string,string,address,uint256,address,address,uint256,uint256,uint256,string),address,address,address)\":{\"details\":\"Calls internal `_initReserve` function if modifiers are succeeded.    \",\"params\":{\"fToken\":\"The derivative fToken address.\",\"input\":\"The init reserve input parameters.\",\"stableDebtToken\":\"The derivative stableDebtToken address.\",\"variableDebtToken\":\"The derivative variableDebtToken address.\"}},\"initialize(address)\":{\"details\":\"Function is invoked by the proxy contract when the LendingPool contract is added to the AddressProvider of the market. - Caching the address of the AddressProvider in order to reduce gas consumption   on subsequent operations\",\"params\":{\"addressProvider\":\"The address of the AddressProvider*\"}},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"An ERC1155 `safeBatchTransferFrom` will revert unless this Solidity selector is returned.\",\"returns\":{\"_0\":\"Always returns `IERC1155Receiver.onERC1155BatchReceived.selector`.\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"An ERC1155 `safeTransferFrom` will revert unless this Solidity selector is returned.\",\"returns\":{\"_0\":\"Always returns `IERC1155Receiver.onERC1155Received.selector`.\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"An ERC721 `safeTransferFrom` will revert unless this Solidity selector is returned.\",\"returns\":{\"_0\":\"Always returns `IERC721Receiver.onERC721Received.selector`.\"}},\"paused()\":{\"details\":\"Returns if the LendPool is paused\"},\"repay(uint256,uint256)\":{\"params\":{\"amount\":\"The amount of ERC20 tokens to be repaid.\",\"borrowId\":\"The id of the borrow to repay.\"}},\"setPause(bool)\":{\"details\":\"Set the _pause state of the pool - Only callable by the LendPoolConfigurator contract\",\"params\":{\"val\":\"`true` to pause the pool, `false` to un-pause it\"}},\"setReserveConfiguration(uint256,uint256)\":{\"details\":\"Sets the configuration bitmap of the reserve as a whole - Only callable by the Configurator contract\",\"params\":{\"configuration\":\"The new configuration bitmap*\",\"reserveId\":\"The min id of the reserve\"}},\"setReserveInterestRateAddress(uint256,address)\":{\"details\":\"Updates the address of the interest rate strategy contract - Only callable by the Configurator contract\",\"params\":{\"rateAddress\":\"The address of the interest rate strategy contract*\",\"reserveId\":\"The min id of the reserve\"}},\"supportsInterface(bytes4)\":{\"details\":\"Checks whether this contract implements the interface defined by `interfaceId`.\",\"params\":{\"_interfaceId\":\"Id of the interface\"},\"returns\":{\"_0\":\"true if this contract implements the interface\"}},\"withdraw(uint256,uint256,address)\":{\"params\":{\"amount\":\"The amount of ERC20 tokens.\",\"reserveId\":\"The reserve id.\",\"to\":\"The address that will receive the underlying, same as msg.sender if the user wants to receive to their wallet or different if the benefitiary is a different wallet\"}}},\"title\":\"Lending Pool contract for instant, permissionless NFT-backed loans\",\"version\":1},\"userdoc\":{\"events\":{\"Deposit(address,address,address,uint256,uint256,address,uint16)\":{\"notice\":\"Emitted when an asset deposit is made.\"},\"Withdraw(address,address,address,uint256,uint256,address)\":{\"notice\":\"Emitted when an asset withdraw is made.\"}},\"kind\":\"user\",\"methods\":{\"auction(uint256,address)\":{\"notice\":\"To trigger a liquidation auction\"},\"bid(address,uint256,uint256,address)\":{\"notice\":\"To purchase the underlying NFT of a defaulted borrow.\"},\"borrow(uint256,uint256,uint256,uint256,uint256,address,uint16)\":{\"notice\":\"External function to create a borrow position.\"},\"deposit(uint256,uint256,address,uint16)\":{\"notice\":\"Deposit assets into the lending pool.\"},\"initReserve((address,string,string,uint256,uint256,address,string,string,uint8,address,string,string,address,string,string,address,string,string,address,uint256,address,address,uint256,uint256,uint256,string),address,address,address)\":{\"notice\":\"Initializes a reserve.\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"For the receiving of multiple ERC1155 tokens types to this contract address.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"notice\":\"For the receiving of ERC1155 tokens to this contract address.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"For the receiving of ERC721 tokens to this contract address.\"},\"repay(uint256,uint256)\":{\"notice\":\"To repay a borrow position.\"},\"withdraw(uint256,uint256,address)\":{\"notice\":\"Withdraw assets from the lending pool.\"}},\"notice\":\"Allows for the borrow/repay of loans and deposit/withdraw of assets.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/protocol/p2pool/LendingPool.sol\":\"LendingPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935\",\"dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0x091a49ef99a2be002680781a10cc9dd74c0f348301ede5482c4ea625f79a8ffe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e037192cadfd20ad0f1b0c54a0c770a1ba551e7d0fcb6d3708e5ba352f88ded2\",\"dweb:/ipfs/QmTXwY6odV1ToDZAYxbbLKThe9M5PUWTmWBjwT776hH4qm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol\":{\"keccak256\":\"0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75b47c3aeca7b66ea6752f8be020ec5c1c502de6ec9065272dae23d3a52196e2\",\"dweb:/ipfs/QmUebPMHv16tYKFh5BmBQkMfRFb5b8UZ2RgVwdjxCeufVF\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol\":{\"keccak256\":\"0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d\",\"dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol\":{\"keccak256\":\"0xcc70d8e2281fb3ff69e8ab242500f10142cd0a7fa8dd9e45882be270d4d09024\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17a4063bc918df0f7bb9cbf04c6f0bb4977afab3f2fc212bc138a178312a221d\",\"dweb:/ipfs/QmZMdvsHP5mDEAAdrK4bNeNh47TfmSFgN9qEBFTbie7zmm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"keccak256\":\"0x220c4a5af915e656be2aaa85ca57505d102418e476b1e2ef6c62e0c6ac143871\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ed2c33173f7e7000889abed7c339b7a0e3b7867cdea546caaf6bc917ef1039c\",\"dweb:/ipfs/QmQ4Ye5h7jm6V4CdhT3r6hvf25DtiV74ErppQVE4SpRKj6\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a68e662c2a82412308b1feb24f3d61a44b3b8772f44cbd440446237313c3195\",\"dweb:/ipfs/QmfBuWUE2TQef9hghDzzuVkDskw3UGAyPgLmPifTNV7K6g\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x9b72f93be69ca894d8492c244259615c4a742afc8d63720dbc8bb81087d9b238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5a7b96e511be78d5cdf635c784e6ab8cdd38625bb8cafb8a80914a1c89cf0f6\",\"dweb:/ipfs/QmVzTCwJxQAkjRQHboT5QrvsVJGWQHgfEjeTbvyxoKBrds\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]},\"src/interfaces/IAddressProvider.sol\":{\"keccak256\":\"0x6730abfcd8770e3279dad6137bf619ab98ee8b049e6dd85d2fbe87ba6224fde8\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://9b7d1588eab025b049f858ab2f329be7fec220198d956b9b61bf0b9bddc5761a\",\"dweb:/ipfs/QmTaFkYSUfWmbpsyE2TKC1QvP6eTDggZ72ZWodBhydqt5X\"]},\"src/interfaces/ICollateralManager.sol\":{\"keccak256\":\"0xdcb90cae810d15c23e0606ef3d9b30feec7d35e956082b88c1f35c5d6caf6438\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://c45a3cf14add38004018f32987cab971436cfd2e679eea71f2383f845bd68647\",\"dweb:/ipfs/QmPd9df3JmDFMHnhreYWw8tjmRGEQAtERnqj2YREXB5aP5\"]},\"src/interfaces/IExecutionDelegate.sol\":{\"keccak256\":\"0x9def180c3c45c492a967182aac61849fc1a77ca9f958abd3f27b689b01e61401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf406e8af1c9fa6373a66615022cd5c7edc41c169c46d660d5383df6647d3a5d\",\"dweb:/ipfs/QmRz7aDGbabWAw3BGFV2kbSmehGizSz3f7W87k6VXR3ggR\"]},\"src/interfaces/IFToken.sol\":{\"keccak256\":\"0x4c3ebc83c05720c9257d1b6b4930b647c08ba766b76928622a4c91c4a541a718\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://920cb41d52a659b88030fc3cf84fe5a87cc42f0c6e5c83a691c4732f84906689\",\"dweb:/ipfs/Qma657T4np5eBNono5yBXxE71jfT1TRDDkCPpH3kfw3SxM\"]},\"src/interfaces/IInitializableDebtToken.sol\":{\"keccak256\":\"0x29bcf86201c67f90d1620b5da4a0de05c611bf1fb15afeb6d2b30a70ec8aebca\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://e17c25e400ac37f1cd29b9cfdba2d4bc34aa6e0c705a619acf0c69f9136150d6\",\"dweb:/ipfs/QmTcNqEpq8UbZf6o6AgwJVjuNbrNbsZWfRMhQnuZArJQ6Q\"]},\"src/interfaces/IInterestRateStrategy.sol\":{\"keccak256\":\"0x71f8b91324433fbdb16a38e5b7c214e7c30094167a7aaf77fcb045194a63af16\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://ce7a18b9c191a676ab68f5d59449c22bead494ccba0c2272e6c8bd606a1c0fd3\",\"dweb:/ipfs/QmZ4byVDnoAH67dSSXppkhTbvdNs7mmQadUnmreoeZVbSv\"]},\"src/interfaces/ILendingPool.sol\":{\"keccak256\":\"0x345ab4285354bb5184bdd501d7c37920a711215b6f6c2db05b05d585f2454115\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://3b6264b135760dcdd59b9a3566c1305b00084922da177159a85c206ef6a91266\",\"dweb:/ipfs/QmSotEH7zF3vrEgo2gZuunWwroHgc6bw7TVRntzv7jsJn1\"]},\"src/interfaces/ILendingRateManager.sol\":{\"keccak256\":\"0x6078c32591ae3ced86c344ad2f228fbcc625f09cd59a8f7014355adb89dfcde0\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://fa594c0ceb1a0a085a6b077ac0729663f839f33f760eb8775ff1b3d25415e097\",\"dweb:/ipfs/QmXU74R73UDHiwvVaU9LRrC1tHaDq5eCerenKQtFX97UL6\"]},\"src/interfaces/INFTPriceOracle.sol\":{\"keccak256\":\"0x90a5ea4bb12f751a9af3f58c19de2b5f1d9ad36c074e584af8f8f0b24df98dac\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://a3acfe54780ea0fcd95ee9b8a4ce8a329599799f6949b6eb4828af79cf9e8659\",\"dweb:/ipfs/QmUujk8TLsLGyh7afmSpCX7G19ek44KfCyEJ3FHBXhEiR9\"]},\"src/interfaces/IObligationReceipt.sol\":{\"keccak256\":\"0xff3849eafbfe1c565e4bfd5d29b3cf9b19b2035387345b77a02abde96674a0ef\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://284d7b0d9168f23464c60b4dcdbfbb1b4d6990c501d37337f87a9b36ea557aec\",\"dweb:/ipfs/QmYMi2a6MZKgj54328vvTBwrDRfGB8nhJJX6BbLkuyMjFf\"]},\"src/interfaces/IPoolIncentivesController.sol\":{\"keccak256\":\"0x7cb2c32050814e6d6d962a603104facc3bb1dad15171304e3ee756648e8f9ae1\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://cf534f592706b2a61c539c03e5d1e199c15472bcfb4ee69838e5c93ba7914466\",\"dweb:/ipfs/QmPrvXhJigK1Ke51YwAWHon1Kv88WT26iD3MwzCaPDs1Kv\"]},\"src/interfaces/IPriceConsumerV3.sol\":{\"keccak256\":\"0x0d5b17684277591efc7c61a66c0a9d9fed38c858a2f2ca65fab3c0789d23026e\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://66fb8083f820b5a3c7b67184425971404bc74c790cad71cad997e870ba17a3e8\",\"dweb:/ipfs/QmWtkjrtu6NDSM1py1syo1aJfAE6Yi1E95eYmHMHhHQ7Aw\"]},\"src/interfaces/IRedeemable.sol\":{\"keccak256\":\"0x22d2cfb983b20307f4a8950e442a9007dccb3c637c22380492ba6cfa8e32b846\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://75c42863790291d3481ee10bead35f45abfb2a9844292c1ce2753ac69fc140eb\",\"dweb:/ipfs/QmUiSSYJasAaVQBpUkEvq1zQVzB3Mw65uAjSgDfr4YGvJY\"]},\"src/interfaces/IScaledBalanceToken.sol\":{\"keccak256\":\"0xb6a8f00773c5f58af761573f39f6aa3649c9deec5c4e078f5e3ca78940e4eac7\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://0938c6fd92b015670a2bcf5ff971aafbc6295e07c78d1300c5e36a67002dc70c\",\"dweb:/ipfs/QmYDcxNaAAfnupwDcDN1xtQcCEXTwW1FWiaTiU3MksCQ1Z\"]},\"src/interfaces/IStableDebtToken.sol\":{\"keccak256\":\"0x964a76facf6d0ea459fd0222c5e8036efea4e9193af3851d68190052037755b4\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://6eebeccfdd76a6e7691402b699c1185df09e8fe80c94cc059bd797a2931b9d3e\",\"dweb:/ipfs/QmeRY3xnu979DmjgFZSEaNgEkWgjtj4Hjpg9gW3bMoaZ1v\"]},\"src/interfaces/IVariableDebtToken.sol\":{\"keccak256\":\"0x61d5cce91604a2d97218fdf1f53022e08061aae2adc6dc5fb0ba311d46a212cc\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://e8e62cce1a93aafcff2438c111ca7af77c8c2a6ed3d5c7ffce2598aa73fb87c9\",\"dweb:/ipfs/QmXXpq9J65pU5Wt9WUR1sZMjss2gUDfEvpDAc9npQfxGcC\"]},\"src/protocol/libraries/configuration/ReserveConfiguration.sol\":{\"keccak256\":\"0xa185efd08f4a3798bbafaa90fafd310f2e29634a2f83b62ee833b31a24232e3c\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://806a0ce876edbbbd418a8297735f66907a06650606b00eac5b510ab082ed3173\",\"dweb:/ipfs/QmQk5ybFrVqXfgXbndYcKBoQiahKScjFEABpJ3ATG8SYPh\"]},\"src/protocol/libraries/helpers/Errors.sol\":{\"keccak256\":\"0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3\",\"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM\"]},\"src/protocol/libraries/logic/BorrowLogic.sol\":{\"keccak256\":\"0x41584979c021aca9484ecf8eed27a67dc316332b43e80b98e3bd3617b9e44e3b\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://8f36478f308c11d09b48237c1cab7b070f2fa34fb5f6ed02172261a61146b5c3\",\"dweb:/ipfs/QmVfALy25gBU6RcsPTZMHRZRmRv4GjkH9zxBQ5spV69UET\"]},\"src/protocol/libraries/logic/GenericLogic.sol\":{\"keccak256\":\"0x9613130d98e3564a9dce097f7af399afbac4dc1e54ef86e31198537c2ffc058a\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://b754e6d8cad2c7fdd2a1686d56476ee2c4b450189526209787b8645ebe46542c\",\"dweb:/ipfs/QmNXRercwgggYU6SdBVtF9gD6kJqcTKrshc72gxv1nEeCd\"]},\"src/protocol/libraries/logic/LiquidateLogic.sol\":{\"keccak256\":\"0x7761714c2c93ae6ce76502724fa678b68dabb7c680cf62b0ef6666ceacfb2c9b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5d3ecf01ee169a1e01e4c23bc4e86bba666785e29a581fb997e11675b4f097d3\",\"dweb:/ipfs/QmfZjDj8pRJ4KDfF1cYL214nkMHSH2xgcc95sKmtYjmu3C\"]},\"src/protocol/libraries/logic/ReserveLogic.sol\":{\"keccak256\":\"0x62ec73dd19c9e36fd0c1a4aa4e1ca3250534010839cec91a5db5e6cadd29b556\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://f28b9df77a1d72fe06db1bb03d51881084fbcbbca060c3d1ce7172d0d7cbaf34\",\"dweb:/ipfs/QmexhggWDeu7ujHKU8xvGMG3FbV45EKBqbNAHne4rLEwCP\"]},\"src/protocol/libraries/logic/SupplyLogic.sol\":{\"keccak256\":\"0x3953a3284bbefe7cac7bc97dee696bc56850a634d985209e1203c8056b2f6e4c\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://2165cba5e23d52cb3893754898014337d6df09a6cf9108cb3b0b9f10ccd3d2ad\",\"dweb:/ipfs/QmWndqB4vuysuzynxfZBmQA7uQ9fNuaKNxctMUABr47nN5\"]},\"src/protocol/libraries/logic/ValidationLogic.sol\":{\"keccak256\":\"0x0f6512787e4c18afde885b84b1535b720f96cb7c7f6f97f4aca28f2dc610fece\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://20a5522498236525fee4c1cdad99c102d9b3e809a28eef6d2d3301ec65a6e182\",\"dweb:/ipfs/QmaUwsg4jFkdmJzmtT9eRQcEXFZmJT5NRZwHRVsJTqogoD\"]},\"src/protocol/libraries/math/MathUtils.sol\":{\"keccak256\":\"0x1c856137c4ef9d713b19a65adeb47c4490bd3b8414d7f28b364625226926779f\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://15c029cd4a3becaa47c72c1f5c18986b0a3cb488d8145e0bf88ce618a3d70841\",\"dweb:/ipfs/QmSYaWpWPbEHkRCegu5edAuRS3HTwyN2mFoSKm4yfGeec9\"]},\"src/protocol/libraries/math/PercentageMath.sol\":{\"keccak256\":\"0xb84274fc3effba81036256cf7fde67b3dbfe86c4ffd0e062711a3270157952a2\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://3ecaf26e713b39d89ee21fb8bfefe55fe2fec4a2f5a2bffba7612f82182b7262\",\"dweb:/ipfs/QmZ6oXpNspwBEkiJEz1EhsU4EVBpG3anNjtzcycNEgAkfe\"]},\"src/protocol/libraries/math/WadRayMath.sol\":{\"keccak256\":\"0xb29e8edc0e0e6bfead27945357c9e4a66e0c11e58ff3b87ee68ed1b5ca416735\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://d1b4377995155f32bb6c3ba558875c617fa63601c597099d3460063ac2a15d93\",\"dweb:/ipfs/QmUvCE6Q2J62sMgQCCEbQauWSYJpMiu3QCgWa6mZnEmcK2\"]},\"src/protocol/libraries/types/ConfigTypes.sol\":{\"keccak256\":\"0xa8f9b14d9adf738033fd1847b30012d0e022027614fd6c9bb31a01bc6bfb1634\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://b20c579d1b683dd5977a675c2e46adeebd56c96faa68cda9b0767edf02a5b650\",\"dweb:/ipfs/QmPULpaX2ouktArvXJxYNVPQ9vKBhEeCYA4smo8v57qFLD\"]},\"src/protocol/libraries/types/DataTypes.sol\":{\"keccak256\":\"0x0103c43499e5226d36906042a1723a3ee6ee18ba607cbffc9e776d4dc47edc10\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://550191b44b6ddfe84d81bd5ded46e1ab3ac493399adfca3634fd8348a4a087fa\",\"dweb:/ipfs/QmeoHga9azsBkTRdnzH9USs51JduGR2tgge5YmGW8dJ2Tq\"]},\"src/protocol/oracle/NFTPriceOracleStorage.sol\":{\"keccak256\":\"0x9847005d0c1f4d6504031346e37d421ed676afcb4711908dd3038254444088dd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b9ef1ed0f1716aa142c1f584b5b77a7ef5b1a3ab90f1f9fbe84b146083d8dd77\",\"dweb:/ipfs/QmQCfhtqHjfQWBokhWkGdZnfVmxsCLU5QkTW1bzEUfincT\"]},\"src/protocol/oracle/Trustus.sol\":{\"keccak256\":\"0xf3ffd2cf22289fcdd27a05a2718ef39912ecc20e57f0578907489446c2bb8cb1\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://1d0a2967648f2278b026ef458424b592b0322e08c33e629af50102c70ab205be\",\"dweb:/ipfs/QmQVWxPwCQinbZCWeJSgyDdTgrUzULxwpcxqXnPrpx3rTk\"]},\"src/protocol/p2pool/LendingPool.sol\":{\"keccak256\":\"0xfd48ac643d7f44d95a4174052404228bb6aa7d5b735ea225b076236ae34bb301\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://7af5b1a4e18efecf111d52b0c58b45f4547e4224a60a9e184281178a29880622\",\"dweb:/ipfs/QmWT7bWTHv47DHGNdt4p6FbCVAcwE3jkGm4Ay3ruo3Hu68\"]},\"src/protocol/p2pool/LendingPoolStorage.sol\":{\"keccak256\":\"0xc31280ac99fa78654a1ba2ab8190aa1467ba0adbbc4594e01396bff7b24dc3f5\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://70783c839e90b8ab5cdb6907ba60b95cb4b525ff087e760ba29b8e2f597193b1\",\"dweb:/ipfs/Qmeorb6PDCsdXJEM9kehU1pAasPxY95q6WMg4FwCyX6NCQ\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.16+commit.07a7930e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "initiator",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "asset",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "duration",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "borrowRate",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint16",
              "name": "referral",
              "type": "uint16",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "Borrow",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "initiator",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "asset",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint16",
              "name": "referalCode",
              "type": "uint16",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "Deposit",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "version",
              "type": "uint8",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Initialized",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "borrower",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "paymentAsset",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "paymentAmount",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Liquidate",
          "anonymous": false
        },
        {
          "inputs": [],
          "type": "event",
          "name": "Paused",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "startTime",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "durationTime",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "PausedTimeUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "initiator",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "borrower",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "asset",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "amountAdded",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "amountTaken",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "defaultFee",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "duration",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Refinanced",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "initiator",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "asset",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "borrower",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Repay",
          "anonymous": false
        },
        {
          "inputs": [],
          "type": "event",
          "name": "Unpaused",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "initiator",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "asset",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "Withdraw",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "auction"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "borrowIds",
              "type": "uint256[]"
            },
            {
              "internalType": "address[]",
              "name": "onBehalfOfs",
              "type": "address[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "batchAuction"
        },
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "assets",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "borrowIds",
              "type": "uint256[]"
            },
            {
              "internalType": "address[]",
              "name": "onBehalfOfs",
              "type": "address[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "batchBid"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "tokenIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "tokenValues",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "reserveIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256",
              "name": "duration",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "referralCode",
              "type": "uint16"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "batchBorrow"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "reserveIds",
              "type": "uint256[]"
            },
            {
              "internalType": "address[]",
              "name": "onBehalfOfs",
              "type": "address[]"
            },
            {
              "internalType": "uint16[]",
              "name": "referralCodes",
              "type": "uint16[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "batchDeposit"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "borrowIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "durations",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "batchRefinance"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "borrowIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "batchRepay"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "reserveIds",
              "type": "uint256[]"
            },
            {
              "internalType": "address[]",
              "name": "tos",
              "type": "address[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "batchWithdraw"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "bid"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenValue",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "duration",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "referralCode",
              "type": "uint16"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "borrow"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "referralCode",
              "type": "uint16"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "deposit"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "executionDelegate",
          "outputs": [
            {
              "internalType": "contract IExecutionDelegate",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "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"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "finalizeTransfer"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getAddressProvider",
          "outputs": [
            {
              "internalType": "contract IAddressProvider",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getAuctionConfiguration",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getBorrowHealthFactor",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getInitializedAssets",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "",
              "type": "address[]"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getInitializedCollaterals",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "",
              "type": "address[]"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getMaxNumberOfReserves",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getPausedTime",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getReserve",
          "outputs": [
            {
              "internalType": "struct DataTypes.Reserve",
              "name": "",
              "type": "tuple",
              "components": [
                {
                  "internalType": "struct DataTypes.ReserveConfigurationMap",
                  "name": "configuration",
                  "type": "tuple",
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "data",
                      "type": "uint256"
                    }
                  ]
                },
                {
                  "internalType": "address",
                  "name": "collateral",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "fTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "stableDebtTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "variableDebtTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "interestRateAddress",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "assetPriceFeed",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxTokenSupply",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxTokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minTokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint128",
                  "name": "liquidityIndex",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "variableBorrowIndex",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "currentLiquidityRate",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "currentVariableBorrowRate",
                  "type": "uint128"
                },
                {
                  "internalType": "uint40",
                  "name": "lastUpdateTimestamp",
                  "type": "uint40"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getReserveConfiguration",
          "outputs": [
            {
              "internalType": "struct DataTypes.ReserveConfigurationMap",
              "name": "",
              "type": "tuple",
              "components": [
                {
                  "internalType": "uint256",
                  "name": "data",
                  "type": "uint256"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getReserveFlags",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "maxTokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minTokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getReserveId",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getReserveNormalizedIncome",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getReserveNormalizedVariableDebt",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getReserveUserStableRate",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getReservesList",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "reservesList",
              "type": "uint256[]"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct ConfigTypes.InitReserveInput",
              "name": "input",
              "type": "tuple",
              "components": [
                {
                  "internalType": "address",
                  "name": "underlyingCollateral",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "underlyingCollateralName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "underlyingCollateralSymbol",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "underlyingMaxTokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "underlyingMinTokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "underlyingAssetName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "underlyingAssetSymbol",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "underlyingAssetDecimals",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "fTokenImpl",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "fTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "fTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "stableDebtTokenImpl",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "stableDebtTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "stableDebtTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "variableDebtTokenImpl",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "variableDebtTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "variableDebtTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "interestRateStrategy",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "baseLTV",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "treasury",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "creator",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "creatorPercentage",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "auctionCallerPercentage",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "auctionCreatorPercentage",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "assetPriceFeed",
                  "type": "string"
                }
              ]
            },
            {
              "internalType": "address",
              "name": "fToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stableDebtToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "variableDebtToken",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "initReserve",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addressProvider",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "initialize"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "onERC1155BatchReceived",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "onERC1155Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "onERC721Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "paused",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "duration",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "refinance"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "repay"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "val",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setMaxNumberOfReserves"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "val",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setPause"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "startTime",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "durationTime",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setPausedTime"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "configuration",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setReserveConfiguration"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "creator",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setReserveCreatorAddress"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "percentage",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setReserveCreatorPercentage"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "rateAddress",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setReserveInterestRateAddress"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxTokenSupply",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setReserveMaxSupply"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "_interfaceId",
              "type": "bytes4"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "withdraw"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "auction(uint256,address)": {
            "params": {
              "borrowId": "The id of the borrow.",
              "onBehalfOf": "The wallet to receive the auction caller fee."
            }
          },
          "batchBorrow(uint256[],uint256[],uint256[],uint256[],uint256,address,uint16)": {
            "details": "Stack too deep to be able to be able to pass arrays for all variables"
          },
          "bid(address,uint256,uint256,address)": {
            "params": {
              "amount": "The amount of ERC20 tokens to be paid.",
              "asset": "The asset contract address.",
              "borrowId": "The id of the defaulted borrow.",
              "onBehalfOf": "The wallet to receive the underlying NFT."
            }
          },
          "borrow(uint256,uint256,uint256,uint256,uint256,address,uint16)": {
            "params": {
              "amount": "The amount of ERC20 tokens to be borrowed.",
              "duration": "The duration of the loan, 0 if open-ended",
              "onBehalfOf": "The address to receive the loan.",
              "referralCode": "Code used to register the integrator originated the operation, for potential rewards.",
              "reserveId": "The id of the reserve to borrow against. ",
              "tokenId": "The tokenId of the ERC721 / ERC1155 token to be deposited. ",
              "tokenValue": "The number of same-value tokens supplied (0 implies ERC721)"
            }
          },
          "deposit(uint256,uint256,address,uint16)": {
            "params": {
              "amount": "The amount of ERC20 tokens.",
              "onBehalfOf": "Where to credit the deposit.",
              "referralCode": "Any referral code.",
              "reserveId": "The id of the reserve."
            }
          },
          "finalizeTransfer(uint256,address,address,uint256,uint256,uint256)": {
            "details": "Validates and finalizes an fToken transfer - Only callable by the overlying fToken of the `asset`  ",
            "params": {
              "amount": "The amount being transferred/withdrawn",
              "balanceFromBefore": "The fToken balance of the `from` user before the transfer",
              "balanceToBefore": "The fToken balance of the `to` user before the transfer",
              "from": "The user from which the fToken are transferred",
              "reserveId": "The id of the fToken reserve",
              "to": "The user receiving the fTokens"
            }
          },
          "getAddressProvider()": {
            "details": "Returns the cached AddressProvider connected to this contract*"
          },
          "getMaxNumberOfReserves()": {
            "details": "Returns the maximum number of reserves supported to be listed in this LendPool"
          },
          "getReserve(uint256)": {
            "details": "Returns the state and configuration of the reserve",
            "params": {
              "reserveId": "The id of the reserve"
            },
            "returns": {
              "_0": "The state of the reserve*"
            }
          },
          "getReserveConfiguration(uint256)": {
            "details": "Returns the configuration of the reserve",
            "params": {
              "reserveId": "The id of the reserve"
            },
            "returns": {
              "_0": "The configuration of the reserve*"
            }
          },
          "getReserveFlags(uint256)": {
            "details": "Returns the state of the resev",
            "params": {
              "reserveId": "The min id of the reserve"
            },
            "returns": {
              "_0": "The reserve user stable rate"
            }
          },
          "getReserveNormalizedVariableDebt(uint256)": {
            "details": "Returns the normalized variable debt per unit of asset",
            "params": {
              "reserveId": "The min id of the reserve"
            },
            "returns": {
              "_0": "The reserve normalized variable debt"
            }
          },
          "getReserveUserStableRate(uint256,address)": {
            "details": "Returns the reserve user stable rate",
            "params": {
              "reserveId": "The min id of the reserve",
              "user": "The address of the user"
            },
            "returns": {
              "_0": "The reserve user stable rate"
            }
          },
          "initReserve((address,string,string,uint256,uint256,address,string,string,uint8,address,string,string,address,string,string,address,string,string,address,uint256,address,address,uint256,uint256,uint256,string),address,address,address)": {
            "details": "Calls internal `_initReserve` function if modifiers are succeeded.    ",
            "params": {
              "fToken": "The derivative fToken address.",
              "input": "The init reserve input parameters.",
              "stableDebtToken": "The derivative stableDebtToken address.",
              "variableDebtToken": "The derivative variableDebtToken address."
            }
          },
          "initialize(address)": {
            "details": "Function is invoked by the proxy contract when the LendingPool contract is added to the AddressProvider of the market. - Caching the address of the AddressProvider in order to reduce gas consumption   on subsequent operations",
            "params": {
              "addressProvider": "The address of the AddressProvider*"
            }
          },
          "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": {
            "details": "An ERC1155 `safeBatchTransferFrom` will revert unless this Solidity selector is returned.",
            "returns": {
              "_0": "Always returns `IERC1155Receiver.onERC1155BatchReceived.selector`."
            }
          },
          "onERC1155Received(address,address,uint256,uint256,bytes)": {
            "details": "An ERC1155 `safeTransferFrom` will revert unless this Solidity selector is returned.",
            "returns": {
              "_0": "Always returns `IERC1155Receiver.onERC1155Received.selector`."
            }
          },
          "onERC721Received(address,address,uint256,bytes)": {
            "details": "An ERC721 `safeTransferFrom` will revert unless this Solidity selector is returned.",
            "returns": {
              "_0": "Always returns `IERC721Receiver.onERC721Received.selector`."
            }
          },
          "paused()": {
            "details": "Returns if the LendPool is paused"
          },
          "repay(uint256,uint256)": {
            "params": {
              "amount": "The amount of ERC20 tokens to be repaid.",
              "borrowId": "The id of the borrow to repay."
            }
          },
          "setPause(bool)": {
            "details": "Set the _pause state of the pool - Only callable by the LendPoolConfigurator contract",
            "params": {
              "val": "`true` to pause the pool, `false` to un-pause it"
            }
          },
          "setReserveConfiguration(uint256,uint256)": {
            "details": "Sets the configuration bitmap of the reserve as a whole - Only callable by the Configurator contract",
            "params": {
              "configuration": "The new configuration bitmap*",
              "reserveId": "The min id of the reserve"
            }
          },
          "setReserveInterestRateAddress(uint256,address)": {
            "details": "Updates the address of the interest rate strategy contract - Only callable by the Configurator contract",
            "params": {
              "rateAddress": "The address of the interest rate strategy contract*",
              "reserveId": "The min id of the reserve"
            }
          },
          "supportsInterface(bytes4)": {
            "details": "Checks whether this contract implements the interface defined by `interfaceId`.",
            "params": {
              "_interfaceId": "Id of the interface"
            },
            "returns": {
              "_0": "true if this contract implements the interface"
            }
          },
          "withdraw(uint256,uint256,address)": {
            "params": {
              "amount": "The amount of ERC20 tokens.",
              "reserveId": "The reserve id.",
              "to": "The address that will receive the underlying, same as msg.sender if the user wants to receive to their wallet or different if the benefitiary is a different wallet"
            }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "auction(uint256,address)": {
            "notice": "To trigger a liquidation auction"
          },
          "bid(address,uint256,uint256,address)": {
            "notice": "To purchase the underlying NFT of a defaulted borrow."
          },
          "borrow(uint256,uint256,uint256,uint256,uint256,address,uint16)": {
            "notice": "External function to create a borrow position."
          },
          "deposit(uint256,uint256,address,uint16)": {
            "notice": "Deposit assets into the lending pool."
          },
          "initReserve((address,string,string,uint256,uint256,address,string,string,uint8,address,string,string,address,string,string,address,string,string,address,uint256,address,address,uint256,uint256,uint256,string),address,address,address)": {
            "notice": "Initializes a reserve."
          },
          "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": {
            "notice": "For the receiving of multiple ERC1155 tokens types to this contract address."
          },
          "onERC1155Received(address,address,uint256,uint256,bytes)": {
            "notice": "For the receiving of ERC1155 tokens to this contract address."
          },
          "onERC721Received(address,address,uint256,bytes)": {
            "notice": "For the receiving of ERC721 tokens to this contract address."
          },
          "repay(uint256,uint256)": {
            "notice": "To repay a borrow position."
          },
          "withdraw(uint256,uint256,address)": {
            "notice": "Withdraw assets from the lending pool."
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        ":@chainlink/=lib/chainlink/",
        ":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
        ":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        ":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/",
        ":ds-test/=lib/forge-std/lib/ds-test/src/",
        ":forge-std/=lib/forge-std/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "src/protocol/p2pool/LendingPool.sol": "LendingPool"
      },
      "libraries": {}
    },
    "sources": {
      "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": {
        "keccak256": "0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846",
        "urls": [
          "bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7",
          "dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": {
        "keccak256": "0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27",
        "urls": [
          "bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935",
          "dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol": {
        "keccak256": "0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790",
        "urls": [
          "bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a",
          "dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol": {
        "keccak256": "0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b",
        "urls": [
          "bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce",
          "dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol": {
        "keccak256": "0x091a49ef99a2be002680781a10cc9dd74c0f348301ede5482c4ea625f79a8ffe",
        "urls": [
          "bzz-raw://e037192cadfd20ad0f1b0c54a0c770a1ba551e7d0fcb6d3708e5ba352f88ded2",
          "dweb:/ipfs/QmTXwY6odV1ToDZAYxbbLKThe9M5PUWTmWBjwT776hH4qm"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol": {
        "keccak256": "0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff",
        "urls": [
          "bzz-raw://75b47c3aeca7b66ea6752f8be020ec5c1c502de6ec9065272dae23d3a52196e2",
          "dweb:/ipfs/QmUebPMHv16tYKFh5BmBQkMfRFb5b8UZ2RgVwdjxCeufVF"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol": {
        "keccak256": "0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb",
        "urls": [
          "bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d",
          "dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol": {
        "keccak256": "0xcc70d8e2281fb3ff69e8ab242500f10142cd0a7fa8dd9e45882be270d4d09024",
        "urls": [
          "bzz-raw://17a4063bc918df0f7bb9cbf04c6f0bb4977afab3f2fc212bc138a178312a221d",
          "dweb:/ipfs/QmZMdvsHP5mDEAAdrK4bNeNh47TfmSFgN9qEBFTbie7zmm"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol": {
        "keccak256": "0x220c4a5af915e656be2aaa85ca57505d102418e476b1e2ef6c62e0c6ac143871",
        "urls": [
          "bzz-raw://6ed2c33173f7e7000889abed7c339b7a0e3b7867cdea546caaf6bc917ef1039c",
          "dweb:/ipfs/QmQ4Ye5h7jm6V4CdhT3r6hvf25DtiV74ErppQVE4SpRKj6"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721ReceiverUpgradeable.sol": {
        "keccak256": "0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5",
        "urls": [
          "bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a",
          "dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721Upgradeable.sol": {
        "keccak256": "0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229",
        "urls": [
          "bzz-raw://4a68e662c2a82412308b1feb24f3d61a44b3b8772f44cbd440446237313c3195",
          "dweb:/ipfs/QmfBuWUE2TQef9hghDzzuVkDskw3UGAyPgLmPifTNV7K6g"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": {
        "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183",
        "urls": [
          "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06",
          "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": {
        "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149",
        "urls": [
          "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c",
          "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": {
        "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09",
        "urls": [
          "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758",
          "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": {
        "keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b",
        "urls": [
          "bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34",
          "dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol": {
        "keccak256": "0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329",
        "urls": [
          "bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95",
          "dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol": {
        "keccak256": "0x9b72f93be69ca894d8492c244259615c4a742afc8d63720dbc8bb81087d9b238",
        "urls": [
          "bzz-raw://f5a7b96e511be78d5cdf635c784e6ab8cdd38625bb8cafb8a80914a1c89cf0f6",
          "dweb:/ipfs/QmVzTCwJxQAkjRQHboT5QrvsVJGWQHgfEjeTbvyxoKBrds"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/Address.sol": {
        "keccak256": "0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1",
        "urls": [
          "bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269",
          "dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol": {
        "keccak256": "0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e",
        "urls": [
          "bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65",
          "dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN"
        ],
        "license": "MIT"
      },
      "src/interfaces/IAddressProvider.sol": {
        "keccak256": "0x6730abfcd8770e3279dad6137bf619ab98ee8b049e6dd85d2fbe87ba6224fde8",
        "urls": [
          "bzz-raw://9b7d1588eab025b049f858ab2f329be7fec220198d956b9b61bf0b9bddc5761a",
          "dweb:/ipfs/QmTaFkYSUfWmbpsyE2TKC1QvP6eTDggZ72ZWodBhydqt5X"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/ICollateralManager.sol": {
        "keccak256": "0xdcb90cae810d15c23e0606ef3d9b30feec7d35e956082b88c1f35c5d6caf6438",
        "urls": [
          "bzz-raw://c45a3cf14add38004018f32987cab971436cfd2e679eea71f2383f845bd68647",
          "dweb:/ipfs/QmPd9df3JmDFMHnhreYWw8tjmRGEQAtERnqj2YREXB5aP5"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IExecutionDelegate.sol": {
        "keccak256": "0x9def180c3c45c492a967182aac61849fc1a77ca9f958abd3f27b689b01e61401",
        "urls": [
          "bzz-raw://cf406e8af1c9fa6373a66615022cd5c7edc41c169c46d660d5383df6647d3a5d",
          "dweb:/ipfs/QmRz7aDGbabWAw3BGFV2kbSmehGizSz3f7W87k6VXR3ggR"
        ],
        "license": "MIT"
      },
      "src/interfaces/IFToken.sol": {
        "keccak256": "0x4c3ebc83c05720c9257d1b6b4930b647c08ba766b76928622a4c91c4a541a718",
        "urls": [
          "bzz-raw://920cb41d52a659b88030fc3cf84fe5a87cc42f0c6e5c83a691c4732f84906689",
          "dweb:/ipfs/Qma657T4np5eBNono5yBXxE71jfT1TRDDkCPpH3kfw3SxM"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IInitializableDebtToken.sol": {
        "keccak256": "0x29bcf86201c67f90d1620b5da4a0de05c611bf1fb15afeb6d2b30a70ec8aebca",
        "urls": [
          "bzz-raw://e17c25e400ac37f1cd29b9cfdba2d4bc34aa6e0c705a619acf0c69f9136150d6",
          "dweb:/ipfs/QmTcNqEpq8UbZf6o6AgwJVjuNbrNbsZWfRMhQnuZArJQ6Q"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IInterestRateStrategy.sol": {
        "keccak256": "0x71f8b91324433fbdb16a38e5b7c214e7c30094167a7aaf77fcb045194a63af16",
        "urls": [
          "bzz-raw://ce7a18b9c191a676ab68f5d59449c22bead494ccba0c2272e6c8bd606a1c0fd3",
          "dweb:/ipfs/QmZ4byVDnoAH67dSSXppkhTbvdNs7mmQadUnmreoeZVbSv"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/ILendingPool.sol": {
        "keccak256": "0x345ab4285354bb5184bdd501d7c37920a711215b6f6c2db05b05d585f2454115",
        "urls": [
          "bzz-raw://3b6264b135760dcdd59b9a3566c1305b00084922da177159a85c206ef6a91266",
          "dweb:/ipfs/QmSotEH7zF3vrEgo2gZuunWwroHgc6bw7TVRntzv7jsJn1"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/ILendingRateManager.sol": {
        "keccak256": "0x6078c32591ae3ced86c344ad2f228fbcc625f09cd59a8f7014355adb89dfcde0",
        "urls": [
          "bzz-raw://fa594c0ceb1a0a085a6b077ac0729663f839f33f760eb8775ff1b3d25415e097",
          "dweb:/ipfs/QmXU74R73UDHiwvVaU9LRrC1tHaDq5eCerenKQtFX97UL6"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/INFTPriceOracle.sol": {
        "keccak256": "0x90a5ea4bb12f751a9af3f58c19de2b5f1d9ad36c074e584af8f8f0b24df98dac",
        "urls": [
          "bzz-raw://a3acfe54780ea0fcd95ee9b8a4ce8a329599799f6949b6eb4828af79cf9e8659",
          "dweb:/ipfs/QmUujk8TLsLGyh7afmSpCX7G19ek44KfCyEJ3FHBXhEiR9"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IObligationReceipt.sol": {
        "keccak256": "0xff3849eafbfe1c565e4bfd5d29b3cf9b19b2035387345b77a02abde96674a0ef",
        "urls": [
          "bzz-raw://284d7b0d9168f23464c60b4dcdbfbb1b4d6990c501d37337f87a9b36ea557aec",
          "dweb:/ipfs/QmYMi2a6MZKgj54328vvTBwrDRfGB8nhJJX6BbLkuyMjFf"
        ],
        "license": "BUSL-1.1"
      },
      "src/interfaces/IPoolIncentivesController.sol": {
        "keccak256": "0x7cb2c32050814e6d6d962a603104facc3bb1dad15171304e3ee756648e8f9ae1",
        "urls": [
          "bzz-raw://cf534f592706b2a61c539c03e5d1e199c15472bcfb4ee69838e5c93ba7914466",
          "dweb:/ipfs/QmPrvXhJigK1Ke51YwAWHon1Kv88WT26iD3MwzCaPDs1Kv"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IPriceConsumerV3.sol": {
        "keccak256": "0x0d5b17684277591efc7c61a66c0a9d9fed38c858a2f2ca65fab3c0789d23026e",
        "urls": [
          "bzz-raw://66fb8083f820b5a3c7b67184425971404bc74c790cad71cad997e870ba17a3e8",
          "dweb:/ipfs/QmWtkjrtu6NDSM1py1syo1aJfAE6Yi1E95eYmHMHhHQ7Aw"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IRedeemable.sol": {
        "keccak256": "0x22d2cfb983b20307f4a8950e442a9007dccb3c637c22380492ba6cfa8e32b846",
        "urls": [
          "bzz-raw://75c42863790291d3481ee10bead35f45abfb2a9844292c1ce2753ac69fc140eb",
          "dweb:/ipfs/QmUiSSYJasAaVQBpUkEvq1zQVzB3Mw65uAjSgDfr4YGvJY"
        ],
        "license": "BUSL-1.1"
      },
      "src/interfaces/IScaledBalanceToken.sol": {
        "keccak256": "0xb6a8f00773c5f58af761573f39f6aa3649c9deec5c4e078f5e3ca78940e4eac7",
        "urls": [
          "bzz-raw://0938c6fd92b015670a2bcf5ff971aafbc6295e07c78d1300c5e36a67002dc70c",
          "dweb:/ipfs/QmYDcxNaAAfnupwDcDN1xtQcCEXTwW1FWiaTiU3MksCQ1Z"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IStableDebtToken.sol": {
        "keccak256": "0x964a76facf6d0ea459fd0222c5e8036efea4e9193af3851d68190052037755b4",
        "urls": [
          "bzz-raw://6eebeccfdd76a6e7691402b699c1185df09e8fe80c94cc059bd797a2931b9d3e",
          "dweb:/ipfs/QmeRY3xnu979DmjgFZSEaNgEkWgjtj4Hjpg9gW3bMoaZ1v"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IVariableDebtToken.sol": {
        "keccak256": "0x61d5cce91604a2d97218fdf1f53022e08061aae2adc6dc5fb0ba311d46a212cc",
        "urls": [
          "bzz-raw://e8e62cce1a93aafcff2438c111ca7af77c8c2a6ed3d5c7ffce2598aa73fb87c9",
          "dweb:/ipfs/QmXXpq9J65pU5Wt9WUR1sZMjss2gUDfEvpDAc9npQfxGcC"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/configuration/ReserveConfiguration.sol": {
        "keccak256": "0xa185efd08f4a3798bbafaa90fafd310f2e29634a2f83b62ee833b31a24232e3c",
        "urls": [
          "bzz-raw://806a0ce876edbbbd418a8297735f66907a06650606b00eac5b510ab082ed3173",
          "dweb:/ipfs/QmQk5ybFrVqXfgXbndYcKBoQiahKScjFEABpJ3ATG8SYPh"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/helpers/Errors.sol": {
        "keccak256": "0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52",
        "urls": [
          "bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3",
          "dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/logic/BorrowLogic.sol": {
        "keccak256": "0x41584979c021aca9484ecf8eed27a67dc316332b43e80b98e3bd3617b9e44e3b",
        "urls": [
          "bzz-raw://8f36478f308c11d09b48237c1cab7b070f2fa34fb5f6ed02172261a61146b5c3",
          "dweb:/ipfs/QmVfALy25gBU6RcsPTZMHRZRmRv4GjkH9zxBQ5spV69UET"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/logic/GenericLogic.sol": {
        "keccak256": "0x9613130d98e3564a9dce097f7af399afbac4dc1e54ef86e31198537c2ffc058a",
        "urls": [
          "bzz-raw://b754e6d8cad2c7fdd2a1686d56476ee2c4b450189526209787b8645ebe46542c",
          "dweb:/ipfs/QmNXRercwgggYU6SdBVtF9gD6kJqcTKrshc72gxv1nEeCd"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/logic/LiquidateLogic.sol": {
        "keccak256": "0x7761714c2c93ae6ce76502724fa678b68dabb7c680cf62b0ef6666ceacfb2c9b",
        "urls": [
          "bzz-raw://5d3ecf01ee169a1e01e4c23bc4e86bba666785e29a581fb997e11675b4f097d3",
          "dweb:/ipfs/QmfZjDj8pRJ4KDfF1cYL214nkMHSH2xgcc95sKmtYjmu3C"
        ],
        "license": "BUSL-1.1"
      },
      "src/protocol/libraries/logic/ReserveLogic.sol": {
        "keccak256": "0x62ec73dd19c9e36fd0c1a4aa4e1ca3250534010839cec91a5db5e6cadd29b556",
        "urls": [
          "bzz-raw://f28b9df77a1d72fe06db1bb03d51881084fbcbbca060c3d1ce7172d0d7cbaf34",
          "dweb:/ipfs/QmexhggWDeu7ujHKU8xvGMG3FbV45EKBqbNAHne4rLEwCP"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/logic/SupplyLogic.sol": {
        "keccak256": "0x3953a3284bbefe7cac7bc97dee696bc56850a634d985209e1203c8056b2f6e4c",
        "urls": [
          "bzz-raw://2165cba5e23d52cb3893754898014337d6df09a6cf9108cb3b0b9f10ccd3d2ad",
          "dweb:/ipfs/QmWndqB4vuysuzynxfZBmQA7uQ9fNuaKNxctMUABr47nN5"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/logic/ValidationLogic.sol": {
        "keccak256": "0x0f6512787e4c18afde885b84b1535b720f96cb7c7f6f97f4aca28f2dc610fece",
        "urls": [
          "bzz-raw://20a5522498236525fee4c1cdad99c102d9b3e809a28eef6d2d3301ec65a6e182",
          "dweb:/ipfs/QmaUwsg4jFkdmJzmtT9eRQcEXFZmJT5NRZwHRVsJTqogoD"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/math/MathUtils.sol": {
        "keccak256": "0x1c856137c4ef9d713b19a65adeb47c4490bd3b8414d7f28b364625226926779f",
        "urls": [
          "bzz-raw://15c029cd4a3becaa47c72c1f5c18986b0a3cb488d8145e0bf88ce618a3d70841",
          "dweb:/ipfs/QmSYaWpWPbEHkRCegu5edAuRS3HTwyN2mFoSKm4yfGeec9"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/math/PercentageMath.sol": {
        "keccak256": "0xb84274fc3effba81036256cf7fde67b3dbfe86c4ffd0e062711a3270157952a2",
        "urls": [
          "bzz-raw://3ecaf26e713b39d89ee21fb8bfefe55fe2fec4a2f5a2bffba7612f82182b7262",
          "dweb:/ipfs/QmZ6oXpNspwBEkiJEz1EhsU4EVBpG3anNjtzcycNEgAkfe"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/math/WadRayMath.sol": {
        "keccak256": "0xb29e8edc0e0e6bfead27945357c9e4a66e0c11e58ff3b87ee68ed1b5ca416735",
        "urls": [
          "bzz-raw://d1b4377995155f32bb6c3ba558875c617fa63601c597099d3460063ac2a15d93",
          "dweb:/ipfs/QmUvCE6Q2J62sMgQCCEbQauWSYJpMiu3QCgWa6mZnEmcK2"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/types/ConfigTypes.sol": {
        "keccak256": "0xa8f9b14d9adf738033fd1847b30012d0e022027614fd6c9bb31a01bc6bfb1634",
        "urls": [
          "bzz-raw://b20c579d1b683dd5977a675c2e46adeebd56c96faa68cda9b0767edf02a5b650",
          "dweb:/ipfs/QmPULpaX2ouktArvXJxYNVPQ9vKBhEeCYA4smo8v57qFLD"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/types/DataTypes.sol": {
        "keccak256": "0x0103c43499e5226d36906042a1723a3ee6ee18ba607cbffc9e776d4dc47edc10",
        "urls": [
          "bzz-raw://550191b44b6ddfe84d81bd5ded46e1ab3ac493399adfca3634fd8348a4a087fa",
          "dweb:/ipfs/QmeoHga9azsBkTRdnzH9USs51JduGR2tgge5YmGW8dJ2Tq"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/oracle/NFTPriceOracleStorage.sol": {
        "keccak256": "0x9847005d0c1f4d6504031346e37d421ed676afcb4711908dd3038254444088dd",
        "urls": [
          "bzz-raw://b9ef1ed0f1716aa142c1f584b5b77a7ef5b1a3ab90f1f9fbe84b146083d8dd77",
          "dweb:/ipfs/QmQCfhtqHjfQWBokhWkGdZnfVmxsCLU5QkTW1bzEUfincT"
        ],
        "license": "BUSL-1.1"
      },
      "src/protocol/oracle/Trustus.sol": {
        "keccak256": "0xf3ffd2cf22289fcdd27a05a2718ef39912ecc20e57f0578907489446c2bb8cb1",
        "urls": [
          "bzz-raw://1d0a2967648f2278b026ef458424b592b0322e08c33e629af50102c70ab205be",
          "dweb:/ipfs/QmQVWxPwCQinbZCWeJSgyDdTgrUzULxwpcxqXnPrpx3rTk"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/p2pool/LendingPool.sol": {
        "keccak256": "0xfd48ac643d7f44d95a4174052404228bb6aa7d5b735ea225b076236ae34bb301",
        "urls": [
          "bzz-raw://7af5b1a4e18efecf111d52b0c58b45f4547e4224a60a9e184281178a29880622",
          "dweb:/ipfs/QmWT7bWTHv47DHGNdt4p6FbCVAcwE3jkGm4Ay3ruo3Hu68"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/p2pool/LendingPoolStorage.sol": {
        "keccak256": "0xc31280ac99fa78654a1ba2ab8190aa1467ba0adbbc4594e01396bff7b24dc3f5",
        "urls": [
          "bzz-raw://70783c839e90b8ab5cdb6907ba60b95cb4b525ff087e760ba29b8e2f597193b1",
          "dweb:/ipfs/Qmeorb6PDCsdXJEM9kehU1pAasPxY95q6WMg4FwCyX6NCQ"
        ],
        "license": "AGPL-3.0"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "src/protocol/p2pool/LendingPool.sol",
    "id": 67263,
    "exportedSymbols": {
      "BorrowLogic": [
        58413
      ],
      "ConfigTypes": [
        63649
      ],
      "ContextUpgradeable": [
        28988
      ],
      "DataTypes": [
        64253
      ],
      "Errors": [
        56900
      ],
      "IAddressProvider": [
        45420
      ],
      "ICollateralManager": [
        45758
      ],
      "IERC1155ReceiverUpgradeable": [
        26377
      ],
      "IERC165Upgradeable": [
        29293
      ],
      "IERC20": [
        33440
      ],
      "IERC721ReceiverUpgradeable": [
        28519
      ],
      "IFToken": [
        46422
      ],
      "ILendingPool": [
        47057
      ],
      "IStableDebtToken": [
        47663
      ],
      "IVariableDebtToken": [
        47771
      ],
      "Initializable": [
        26136
      ],
      "LendingPool": [
        67262
      ],
      "LendingPoolStorage": [
        67334
      ],
      "LiquidateLogic": [
        60459
      ],
      "ReentrancyGuardUpgradeable": [
        26336
      ],
      "ReserveConfiguration": [
        56503
      ],
      "ReserveLogic": [
        61316
      ],
      "SafeERC20": [
        33782
      ],
      "SafeMath": [
        36719
      ],
      "SupplyLogic": [
        61780
      ],
      "ValidationLogic": [
        62908
      ],
      "WadRayMath": [
        63459
      ]
    },
    "nodeType": "SourceUnit",
    "src": "38:26953:143",
    "nodes": [
      {
        "id": 65993,
        "nodeType": "PragmaDirective",
        "src": "38:23:143",
        "nodes": [],
        "literals": [
          "solidity",
          "0.8",
          ".16"
        ]
      },
      {
        "id": 65995,
        "nodeType": "ImportDirective",
        "src": "65:65:143",
        "nodes": [],
        "absolutePath": "src/interfaces/ILendingPool.sol",
        "file": "../../interfaces/ILendingPool.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 47058,
        "symbolAliases": [
          {
            "foreign": {
              "id": 65994,
              "name": "ILendingPool",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 47057,
              "src": "74:12:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 65997,
        "nodeType": "ImportDirective",
        "src": "132:55:143",
        "nodes": [],
        "absolutePath": "src/interfaces/IFToken.sol",
        "file": "../../interfaces/IFToken.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 46423,
        "symbolAliases": [
          {
            "foreign": {
              "id": 65996,
              "name": "IFToken",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 46422,
              "src": "141:7:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 65999,
        "nodeType": "ImportDirective",
        "src": "189:73:143",
        "nodes": [],
        "absolutePath": "src/interfaces/IStableDebtToken.sol",
        "file": "../../interfaces/IStableDebtToken.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 47664,
        "symbolAliases": [
          {
            "foreign": {
              "id": 65998,
              "name": "IStableDebtToken",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 47663,
              "src": "198:16:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66001,
        "nodeType": "ImportDirective",
        "src": "264:77:143",
        "nodes": [],
        "absolutePath": "src/interfaces/IVariableDebtToken.sol",
        "file": "../../interfaces/IVariableDebtToken.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 47772,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66000,
              "name": "IVariableDebtToken",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 47771,
              "src": "273:18:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66003,
        "nodeType": "ImportDirective",
        "src": "343:77:143",
        "nodes": [],
        "absolutePath": "src/interfaces/ICollateralManager.sol",
        "file": "../../interfaces/ICollateralManager.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 45759,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66002,
              "name": "ICollateralManager",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 45758,
              "src": "352:18:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66005,
        "nodeType": "ImportDirective",
        "src": "422:73:143",
        "nodes": [],
        "absolutePath": "src/interfaces/IAddressProvider.sol",
        "file": "../../interfaces/IAddressProvider.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 45421,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66004,
              "name": "IAddressProvider",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 45420,
              "src": "431:16:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66007,
        "nodeType": "ImportDirective",
        "src": "499:62:143",
        "nodes": [],
        "absolutePath": "src/protocol/p2pool/LendingPoolStorage.sol",
        "file": "./LendingPoolStorage.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 67335,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66006,
              "name": "LendingPoolStorage",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 67334,
              "src": "508:18:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66009,
        "nodeType": "ImportDirective",
        "src": "565:91:143",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/configuration/ReserveConfiguration.sol",
        "file": "../libraries/configuration/ReserveConfiguration.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 56504,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66008,
              "name": "ReserveConfiguration",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 56503,
              "src": "574:20:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66011,
        "nodeType": "ImportDirective",
        "src": "658:67:143",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/logic/ReserveLogic.sol",
        "file": "../libraries/logic/ReserveLogic.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 61317,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66010,
              "name": "ReserveLogic",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 61316,
              "src": "667:12:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66013,
        "nodeType": "ImportDirective",
        "src": "727:65:143",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/logic/SupplyLogic.sol",
        "file": "../libraries/logic/SupplyLogic.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 61781,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66012,
              "name": "SupplyLogic",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 61780,
              "src": "736:11:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66015,
        "nodeType": "ImportDirective",
        "src": "794:65:143",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/logic/BorrowLogic.sol",
        "file": "../libraries/logic/BorrowLogic.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 58414,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66014,
              "name": "BorrowLogic",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 58413,
              "src": "803:11:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66017,
        "nodeType": "ImportDirective",
        "src": "861:71:143",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/logic/LiquidateLogic.sol",
        "file": "../libraries/logic/LiquidateLogic.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 60460,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66016,
              "name": "LiquidateLogic",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 60459,
              "src": "870:14:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66019,
        "nodeType": "ImportDirective",
        "src": "934:73:143",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/logic/ValidationLogic.sol",
        "file": "../libraries/logic/ValidationLogic.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 62909,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66018,
              "name": "ValidationLogic",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 62908,
              "src": "943:15:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66021,
        "nodeType": "ImportDirective",
        "src": "1011:65:143",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/types/ConfigTypes.sol",
        "file": "../libraries/types/ConfigTypes.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 63650,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66020,
              "name": "ConfigTypes",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 63649,
              "src": "1020:11:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66023,
        "nodeType": "ImportDirective",
        "src": "1078:61:143",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/types/DataTypes.sol",
        "file": "../libraries/types/DataTypes.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 64254,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66022,
              "name": "DataTypes",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 64253,
              "src": "1087:9:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66025,
        "nodeType": "ImportDirective",
        "src": "1141:57:143",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/helpers/Errors.sol",
        "file": "../libraries/helpers/Errors.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 56901,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66024,
              "name": "Errors",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 56900,
              "src": "1150:6:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66027,
        "nodeType": "ImportDirective",
        "src": "1200:62:143",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/math/WadRayMath.sol",
        "file": "../libraries/math/WadRayMath.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 63460,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66026,
              "name": "WadRayMath",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 63459,
              "src": "1209:10:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66029,
        "nodeType": "ImportDirective",
        "src": "1266:72:143",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 33441,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66028,
              "name": "IERC20",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 33440,
              "src": "1275:6:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66031,
        "nodeType": "ImportDirective",
        "src": "1340:116:143",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 29294,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66030,
              "name": "IERC165Upgradeable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 29293,
              "src": "1349:18:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66033,
        "nodeType": "ImportDirective",
        "src": "1458:125:143",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721ReceiverUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 28520,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66032,
              "name": "IERC721ReceiverUpgradeable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 28519,
              "src": "1467:26:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66035,
        "nodeType": "ImportDirective",
        "src": "1585:128:143",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 26378,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66034,
              "name": "IERC1155ReceiverUpgradeable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 26377,
              "src": "1594:27:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66037,
        "nodeType": "ImportDirective",
        "src": "1717:84:143",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 33783,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66036,
              "name": "SafeERC20",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 33782,
              "src": "1726:9:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66039,
        "nodeType": "ImportDirective",
        "src": "1803:75:143",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/utils/math/SafeMath.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 36720,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66038,
              "name": "SafeMath",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 36719,
              "src": "1812:8:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66041,
        "nodeType": "ImportDirective",
        "src": "1882:98:143",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol",
        "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 26137,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66040,
              "name": "Initializable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 26136,
              "src": "1891:13:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66043,
        "nodeType": "ImportDirective",
        "src": "1982:102:143",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 28989,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66042,
              "name": "ContextUpgradeable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 28988,
              "src": "1991:18:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 66045,
        "nodeType": "ImportDirective",
        "src": "2086:121:143",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 67263,
        "sourceUnit": 26337,
        "symbolAliases": [
          {
            "foreign": {
              "id": 66044,
              "name": "ReentrancyGuardUpgradeable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 26336,
              "src": "2095:26:143",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 67262,
        "nodeType": "ContractDefinition",
        "src": "2499:24490:143",
        "nodes": [
          {
            "id": 66062,
            "nodeType": "UsingForDirective",
            "src": "2702:27:143",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 66059,
              "name": "SafeERC20",
              "nameLocations": [
                "2708:9:143"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 33782,
              "src": "2708:9:143"
            },
            "typeName": {
              "id": 66061,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 66060,
                "name": "IERC20",
                "nameLocations": [
                  "2722:6:143"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 33440,
                "src": "2722:6:143"
              },
              "referencedDeclaration": 33440,
              "src": "2722:6:143",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20_$33440",
                "typeString": "contract IERC20"
              }
            }
          },
          {
            "id": 66065,
            "nodeType": "UsingForDirective",
            "src": "2735:27:143",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 66063,
              "name": "SafeMath",
              "nameLocations": [
                "2741:8:143"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 36719,
              "src": "2741:8:143"
            },
            "typeName": {
              "id": 66064,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2754:7:143",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 66068,
            "nodeType": "UsingForDirective",
            "src": "2770:29:143",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 66066,
              "name": "WadRayMath",
              "nameLocations": [
                "2776:10:143"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 63459,
              "src": "2776:10:143"
            },
            "typeName": {
              "id": 66067,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2791:7:143",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 66072,
            "nodeType": "UsingForDirective",
            "src": "2805:41:143",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 66069,
              "name": "ReserveLogic",
              "nameLocations": [
                "2811:12:143"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 61316,
              "src": "2811:12:143"
            },
            "typeName": {
              "id": 66071,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 66070,
                "name": "DataTypes.Reserve",
                "nameLocations": [
                  "2828:9:143",
                  "2838:7:143"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 63713,
                "src": "2828:17:143"
              },
              "referencedDeclaration": 63713,
              "src": "2828:17:143",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Reserve_$63713_storage_ptr",
                "typeString": "struct DataTypes.Reserve"
              }
            }
          },
          {
            "id": 66076,
            "nodeType": "UsingForDirective",
            "src": "2852:65:143",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 66073,
              "name": "ReserveConfiguration",
              "nameLocations": [
                "2858:20:143"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 56503,
              "src": "2858:20:143"
            },
            "typeName": {
              "id": 66075,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 66074,
                "name": "DataTypes.ReserveConfigurationMap",
                "nameLocations": [
                  "2883:9:143",
                  "2893:23:143"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 63746,
                "src": "2883:33:143"
              },
              "referencedDeclaration": 63746,
              "src": "2883:33:143",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$63746_storage_ptr",
                "typeString": "struct DataTypes.ReserveConfigurationMap"
              }
            }
          },
          {
            "id": 66095,
            "nodeType": "FunctionDefinition",
            "src": "3273:173:143",
            "nodes": [],
            "body": {
              "id": 66094,
              "nodeType": "Block",
              "src": "3337:109:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 66086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 66084,
                      "name": "_maxNumberOfReserves",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67314,
                      "src": "3348:20:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "323536",
                      "id": 66085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3371:3:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_256_by_1",
                        "typeString": "int_const 256"
                      },
                      "value": "256"
                    },
                    "src": "3348:26:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 66087,
                  "nodeType": "ExpressionStatement",
                  "src": "3348:26:143"
                },
                {
                  "expression": {
                    "id": 66092,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 66088,
                      "name": "_addressProvider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67283,
                      "src": "3386:16:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                        "typeString": "contract IAddressProvider"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 66090,
                          "name": "addressProvider",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 66079,
                          "src": "3422:15:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 66089,
                        "name": "IAddressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45420,
                        "src": "3405:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IAddressProvider_$45420_$",
                          "typeString": "type(contract IAddressProvider)"
                        }
                      },
                      "id": 66091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3405:33:143",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                        "typeString": "contract IAddressProvider"
                      }
                    },
                    "src": "3386:52:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                      "typeString": "contract IAddressProvider"
                    }
                  },
                  "id": 66093,
                  "nodeType": "ExpressionStatement",
                  "src": "3386:52:143"
                }
              ]
            },
            "documentation": {
              "id": 66077,
              "nodeType": "StructuredDocumentation",
              "src": "2925:342:143",
              "text": " @dev Function is invoked by the proxy contract when the LendingPool contract is added to the\n AddressProvider of the market.\n - Caching the address of the AddressProvider in order to reduce gas consumption\n   on subsequent operations\n @param addressProvider The address of the AddressProvider*"
            },
            "functionSelector": "c4d66de8",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66082,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66081,
                  "name": "initializer",
                  "nameLocations": [
                    "3325:11:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26038,
                  "src": "3325:11:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "3325:11:143"
              }
            ],
            "name": "initialize",
            "nameLocation": "3282:10:143",
            "parameters": {
              "id": 66080,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66079,
                  "mutability": "mutable",
                  "name": "addressProvider",
                  "nameLocation": "3301:15:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66095,
                  "src": "3293:23:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66078,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3293:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3292:25:143"
            },
            "returnParameters": {
              "id": 66083,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3337:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 66109,
            "nodeType": "ModifierDefinition",
            "src": "3454:124:143",
            "nodes": [],
            "body": {
              "id": 66108,
              "nodeType": "Block",
              "src": "3482:96:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 66103,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 66098,
                              "name": "_addressProvider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 67283,
                              "src": "3501:16:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                                "typeString": "contract IAddressProvider"
                              }
                            },
                            "id": 66099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3518:15:143",
                            "memberName": "getConfigurator",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 45239,
                            "src": "3501:32:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 66100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3501:34:143",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 66101,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              67261
                            ],
                            "referencedDeclaration": 67261,
                            "src": "3539:10:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 66102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3539:12:143",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3501:50:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4331",
                        "id": 66104,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3553:4:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7c8a46b75fb4f22ffcb6a001d21cdfe621df9af052bfee526b19a22f3dd9d853",
                          "typeString": "literal_string \"C1\""
                        },
                        "value": "C1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7c8a46b75fb4f22ffcb6a001d21cdfe621df9af052bfee526b19a22f3dd9d853",
                          "typeString": "literal_string \"C1\""
                        }
                      ],
                      "id": 66097,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3493:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 66105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3493:65:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66106,
                  "nodeType": "ExpressionStatement",
                  "src": "3493:65:143"
                },
                {
                  "id": 66107,
                  "nodeType": "PlaceholderStatement",
                  "src": "3569:1:143"
                }
              ]
            },
            "name": "onlyConfigurator",
            "nameLocation": "3463:16:143",
            "parameters": {
              "id": 66096,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3479:2:143"
            },
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 66116,
            "nodeType": "ModifierDefinition",
            "src": "3586:72:143",
            "nodes": [],
            "body": {
              "id": 66115,
              "nodeType": "Block",
              "src": "3611:47:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 66111,
                      "name": "_whenNotPaused",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66127,
                      "src": "3622:14:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 66112,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3622:16:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66113,
                  "nodeType": "ExpressionStatement",
                  "src": "3622:16:143"
                },
                {
                  "id": 66114,
                  "nodeType": "PlaceholderStatement",
                  "src": "3649:1:143"
                }
              ]
            },
            "name": "whenNotPaused",
            "nameLocation": "3595:13:143",
            "parameters": {
              "id": 66110,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3608:2:143"
            },
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 66127,
            "nodeType": "FunctionDefinition",
            "src": "3672:97:143",
            "nodes": [],
            "body": {
              "id": 66126,
              "nodeType": "Block",
              "src": "3712:57:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66121,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3731:8:143",
                        "subExpression": {
                          "id": 66120,
                          "name": "_paused",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67325,
                          "src": "3732:7:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "expression": {
                          "id": 66122,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 56900,
                          "src": "3741:6:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$56900_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 66123,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "3748:12:143",
                        "memberName": "LP_IS_PAUSED",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 56611,
                        "src": "3741:19:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 66119,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3723:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 66124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3723:38:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66125,
                  "nodeType": "ExpressionStatement",
                  "src": "3723:38:143"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_whenNotPaused",
            "nameLocation": "3681:14:143",
            "parameters": {
              "id": 66117,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3695:2:143"
            },
            "returnParameters": {
              "id": 66118,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3712:0:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 66146,
            "nodeType": "FunctionDefinition",
            "src": "4161:1924:143",
            "nodes": [],
            "body": {
              "id": 66145,
              "nodeType": "Block",
              "src": "4435:1650:143",
              "nodes": [],
              "statements": []
            },
            "baseFunctions": [
              46710
            ],
            "documentation": {
              "id": 66128,
              "nodeType": "StructuredDocumentation",
              "src": "3777:378:143",
              "text": "@notice Initializes a reserve.\n @param input The init reserve input parameters.\n @param fToken The derivative fToken address.\n @param stableDebtToken The derivative stableDebtToken address.\n @param variableDebtToken The derivative variableDebtToken address.\n @dev Calls internal `_initReserve` function if modifiers are succeeded.    "
            },
            "functionSelector": "45a64925",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66141,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66140,
                  "name": "onlyConfigurator",
                  "nameLocations": [
                    "4385:16:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66109,
                  "src": "4385:16:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "4385:16:143"
              }
            ],
            "name": "initReserve",
            "nameLocation": "4170:11:143",
            "overrides": {
              "id": 66139,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4367:8:143"
            },
            "parameters": {
              "id": 66138,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66131,
                  "mutability": "mutable",
                  "name": "input",
                  "nameLocation": "4230:5:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66146,
                  "src": "4192:43:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_InitReserveInput_$63562_calldata_ptr",
                    "typeString": "struct ConfigTypes.InitReserveInput"
                  },
                  "typeName": {
                    "id": 66130,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 66129,
                      "name": "ConfigTypes.InitReserveInput",
                      "nameLocations": [
                        "4192:11:143",
                        "4204:16:143"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 63562,
                      "src": "4192:28:143"
                    },
                    "referencedDeclaration": 63562,
                    "src": "4192:28:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_InitReserveInput_$63562_storage_ptr",
                      "typeString": "struct ConfigTypes.InitReserveInput"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66133,
                  "mutability": "mutable",
                  "name": "fToken",
                  "nameLocation": "4254:6:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66146,
                  "src": "4246:14:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66132,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4246:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66135,
                  "mutability": "mutable",
                  "name": "stableDebtToken",
                  "nameLocation": "4279:15:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66146,
                  "src": "4271:23:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66134,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4271:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66137,
                  "mutability": "mutable",
                  "name": "variableDebtToken",
                  "nameLocation": "4313:17:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66146,
                  "src": "4305:25:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66136,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4305:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4181:156:143"
            },
            "returnParameters": {
              "id": 66144,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66143,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66146,
                  "src": "4421:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66142,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4421:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4420:9:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66180,
            "nodeType": "FunctionDefinition",
            "src": "6352:599:143",
            "nodes": [],
            "body": {
              "id": 66179,
              "nodeType": "Block",
              "src": "6577:374:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66166,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67283,
                        "src": "6629:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      {
                        "id": 66167,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "6660:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 66170,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                67261
                              ],
                              "referencedDeclaration": 67261,
                              "src": "6745:10:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 66171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6745:12:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66172,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66149,
                            "src": "6784:6:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66173,
                            "name": "reserveId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66151,
                            "src": "6821:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66174,
                            "name": "onBehalfOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66153,
                            "src": "6861:10:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66175,
                            "name": "referralCode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66155,
                            "src": "6904:12:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          ],
                          "expression": {
                            "id": 66168,
                            "name": "DataTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64253,
                            "src": "6684:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                              "typeString": "type(library DataTypes)"
                            }
                          },
                          "id": 66169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6694:20:143",
                          "memberName": "ExecuteDepositParams",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63820,
                          "src": "6684:30:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ExecuteDepositParams_$63820_storage_ptr_$",
                            "typeString": "type(struct DataTypes.ExecuteDepositParams storage pointer)"
                          }
                        },
                        "id": 66176,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "6734:9:143",
                          "6776:6:143",
                          "6810:9:143",
                          "6849:10:143",
                          "6890:12:143"
                        ],
                        "names": [
                          "initiator",
                          "amount",
                          "reserveId",
                          "onBehalfOf",
                          "referralCode"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "6684:248:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteDepositParams_$63820_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteDepositParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        },
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteDepositParams_$63820_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteDepositParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66163,
                        "name": "SupplyLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61780,
                        "src": "6588:11:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SupplyLogic_$61780_$",
                          "typeString": "type(library SupplyLogic)"
                        }
                      },
                      "id": 66165,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6600:14:143",
                      "memberName": "executeDeposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 61397,
                      "src": "6588:26:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IAddressProvider_$45420_$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteDepositParams_$63820_memory_ptr_$returns$__$",
                        "typeString": "function (contract IAddressProvider,mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteDepositParams memory)"
                      }
                    },
                    "id": 66177,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6588:355:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66178,
                  "nodeType": "ExpressionStatement",
                  "src": "6588:355:143"
                }
              ]
            },
            "baseFunctions": [
              46721
            ],
            "documentation": {
              "id": 66147,
              "nodeType": "StructuredDocumentation",
              "src": "6093:253:143",
              "text": "@notice Deposit assets into the lending pool.\n @param amount The amount of ERC20 tokens.\n @param reserveId The id of the reserve.\n @param onBehalfOf Where to credit the deposit.\n @param referralCode Any referral code."
            },
            "functionSelector": "1de8a7c2",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66159,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66158,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "6535:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "6535:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "6535:12:143"
              },
              {
                "id": 66161,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66160,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "6557:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "6557:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "6557:13:143"
              }
            ],
            "name": "deposit",
            "nameLocation": "6361:7:143",
            "overrides": {
              "id": 66157,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6517:8:143"
            },
            "parameters": {
              "id": 66156,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66149,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "6387:6:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66180,
                  "src": "6379:14:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66148,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6379:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66151,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "6412:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66180,
                  "src": "6404:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66150,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6404:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66153,
                  "mutability": "mutable",
                  "name": "onBehalfOf",
                  "nameLocation": "6440:10:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66180,
                  "src": "6432:18:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66152,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6432:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66155,
                  "mutability": "mutable",
                  "name": "referralCode",
                  "nameLocation": "6468:12:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66180,
                  "src": "6461:19:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 66154,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "6461:6:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6368:119:143"
            },
            "returnParameters": {
              "id": 66162,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6577:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66217,
            "nodeType": "FunctionDefinition",
            "src": "6959:670:143",
            "nodes": [],
            "body": {
              "id": 66216,
              "nodeType": "Block",
              "src": "7236:393:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66203,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67283,
                        "src": "7293:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      {
                        "id": 66204,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "7324:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 66207,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                67261
                              ],
                              "referencedDeclaration": 67261,
                              "src": "7414:10:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 66208,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7414:12:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66209,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66183,
                            "src": "7454:7:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          {
                            "id": 66210,
                            "name": "reserveIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66186,
                            "src": "7493:10:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          {
                            "id": 66211,
                            "name": "onBehalfOfs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66189,
                            "src": "7536:11:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "id": 66212,
                            "name": "referralCodes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66192,
                            "src": "7581:13:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint16_$dyn_calldata_ptr",
                              "typeString": "uint16[] calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint16_$dyn_calldata_ptr",
                              "typeString": "uint16[] calldata"
                            }
                          ],
                          "expression": {
                            "id": 66205,
                            "name": "DataTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64253,
                            "src": "7348:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                              "typeString": "type(library DataTypes)"
                            }
                          },
                          "id": 66206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "7358:25:143",
                          "memberName": "ExecuteBatchDepositParams",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63835,
                          "src": "7348:35:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ExecuteBatchDepositParams_$63835_storage_ptr_$",
                            "typeString": "type(struct DataTypes.ExecuteBatchDepositParams storage pointer)"
                          }
                        },
                        "id": 66213,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "7403:9:143",
                          "7445:7:143",
                          "7481:10:143",
                          "7523:11:143",
                          "7566:13:143"
                        ],
                        "names": [
                          "initiator",
                          "amounts",
                          "reserveIds",
                          "onBehalfOfs",
                          "referralCodes"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "7348:262:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteBatchDepositParams_$63835_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchDepositParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        },
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteBatchDepositParams_$63835_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchDepositParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66200,
                        "name": "SupplyLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61780,
                        "src": "7247:11:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SupplyLogic_$61780_$",
                          "typeString": "type(library SupplyLogic)"
                        }
                      },
                      "id": 66202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7259:19:143",
                      "memberName": "executeBatchDeposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 61485,
                      "src": "7247:31:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IAddressProvider_$45420_$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteBatchDepositParams_$63835_memory_ptr_$returns$__$",
                        "typeString": "function (contract IAddressProvider,mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteBatchDepositParams memory)"
                      }
                    },
                    "id": 66214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7247:374:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66215,
                  "nodeType": "ExpressionStatement",
                  "src": "7247:374:143"
                }
              ]
            },
            "baseFunctions": [
              46736
            ],
            "functionSelector": "4b33a967",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66196,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66195,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "7195:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "7195:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "7195:12:143"
              },
              {
                "id": 66198,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66197,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "7217:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "7217:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "7217:13:143"
              }
            ],
            "name": "batchDeposit",
            "nameLocation": "6968:12:143",
            "overrides": {
              "id": 66194,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7177:8:143"
            },
            "parameters": {
              "id": 66193,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66183,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nameLocation": "7010:7:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66217,
                  "src": "6991:26:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66181,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "6991:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66182,
                    "nodeType": "ArrayTypeName",
                    "src": "6991:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66186,
                  "mutability": "mutable",
                  "name": "reserveIds",
                  "nameLocation": "7047:10:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66217,
                  "src": "7028:29:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66184,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "7028:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66185,
                    "nodeType": "ArrayTypeName",
                    "src": "7028:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66189,
                  "mutability": "mutable",
                  "name": "onBehalfOfs",
                  "nameLocation": "7087:11:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66217,
                  "src": "7068:30:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66187,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "7068:7:143",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 66188,
                    "nodeType": "ArrayTypeName",
                    "src": "7068:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66192,
                  "mutability": "mutable",
                  "name": "referralCodes",
                  "nameLocation": "7127:13:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66217,
                  "src": "7109:31:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_calldata_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66190,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "7109:6:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 66191,
                    "nodeType": "ArrayTypeName",
                    "src": "7109:8:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6980:167:143"
            },
            "returnParameters": {
              "id": 66199,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7236:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66247,
            "nodeType": "FunctionDefinition",
            "src": "7969:471:143",
            "nodes": [],
            "body": {
              "id": 66246,
              "nodeType": "Block",
              "src": "8157:283:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66235,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "8210:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 66238,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                67261
                              ],
                              "referencedDeclaration": 67261,
                              "src": "8296:10:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 66239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8296:12:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66240,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66220,
                            "src": "8335:6:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66241,
                            "name": "reserveId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66222,
                            "src": "8371:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66242,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66224,
                            "src": "8403:2:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 66236,
                            "name": "DataTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64253,
                            "src": "8234:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                              "typeString": "type(library DataTypes)"
                            }
                          },
                          "id": 66237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8244:21:143",
                          "memberName": "ExecuteWithdrawParams",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63844,
                          "src": "8234:31:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ExecuteWithdrawParams_$63844_storage_ptr_$",
                            "typeString": "type(struct DataTypes.ExecuteWithdrawParams storage pointer)"
                          }
                        },
                        "id": 66243,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "8285:9:143",
                          "8327:6:143",
                          "8360:9:143",
                          "8399:2:143"
                        ],
                        "names": [
                          "initiator",
                          "amount",
                          "reserveId",
                          "to"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "8234:187:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteWithdrawParams_$63844_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteWithdrawParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteWithdrawParams_$63844_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteWithdrawParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66232,
                        "name": "SupplyLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61780,
                        "src": "8168:11:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SupplyLogic_$61780_$",
                          "typeString": "type(library SupplyLogic)"
                        }
                      },
                      "id": 66234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8180:15:143",
                      "memberName": "executeWithdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 61502,
                      "src": "8168:27:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteWithdrawParams_$63844_memory_ptr_$returns$__$",
                        "typeString": "function (mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteWithdrawParams memory)"
                      }
                    },
                    "id": 66244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8168:264:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66245,
                  "nodeType": "ExpressionStatement",
                  "src": "8168:264:143"
                }
              ]
            },
            "baseFunctions": [
              46745
            ],
            "documentation": {
              "id": 66218,
              "nodeType": "StructuredDocumentation",
              "src": "7637:326:143",
              "text": "@notice Withdraw assets from the lending pool.\n @param amount The amount of ERC20 tokens.\n @param reserveId The reserve id.\n @param to The address that will receive the underlying, same as msg.sender if the user wants to receive to their wallet or different if the benefitiary is a different wallet"
            },
            "functionSelector": "0ad58d2f",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66228,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66227,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "8115:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "8115:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "8115:12:143"
              },
              {
                "id": 66230,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66229,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "8137:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "8137:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "8137:13:143"
              }
            ],
            "name": "withdraw",
            "nameLocation": "7978:8:143",
            "overrides": {
              "id": 66226,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8097:8:143"
            },
            "parameters": {
              "id": 66225,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66220,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "8005:6:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66247,
                  "src": "7997:14:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66219,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7997:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66222,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "8030:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66247,
                  "src": "8022:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66221,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8022:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66224,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "8058:2:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66247,
                  "src": "8050:10:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66223,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8050:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7986:81:143"
            },
            "returnParameters": {
              "id": 66231,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8157:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66279,
            "nodeType": "FunctionDefinition",
            "src": "8448:526:143",
            "nodes": [],
            "body": {
              "id": 66278,
              "nodeType": "Block",
              "src": "8675:299:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66267,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "8733:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 66270,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                67261
                              ],
                              "referencedDeclaration": 67261,
                              "src": "8824:10:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 66271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8824:12:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66272,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66250,
                            "src": "8864:7:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          {
                            "id": 66273,
                            "name": "reserveIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66253,
                            "src": "8902:10:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          {
                            "id": 66274,
                            "name": "tos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66256,
                            "src": "8936:3:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          ],
                          "expression": {
                            "id": 66268,
                            "name": "DataTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64253,
                            "src": "8757:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                              "typeString": "type(library DataTypes)"
                            }
                          },
                          "id": 66269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8767:26:143",
                          "memberName": "ExecuteBatchWithdrawParams",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63856,
                          "src": "8757:36:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ExecuteBatchWithdrawParams_$63856_storage_ptr_$",
                            "typeString": "type(struct DataTypes.ExecuteBatchWithdrawParams storage pointer)"
                          }
                        },
                        "id": 66275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "8813:9:143",
                          "8855:7:143",
                          "8890:10:143",
                          "8931:3:143"
                        ],
                        "names": [
                          "initiator",
                          "amounts",
                          "reserveIds",
                          "tos"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "8757:198:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteBatchWithdrawParams_$63856_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchWithdrawParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteBatchWithdrawParams_$63856_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchWithdrawParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66264,
                        "name": "SupplyLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61780,
                        "src": "8686:11:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SupplyLogic_$61780_$",
                          "typeString": "type(library SupplyLogic)"
                        }
                      },
                      "id": 66266,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8698:20:143",
                      "memberName": "executeBatchWithdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 61571,
                      "src": "8686:32:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteBatchWithdrawParams_$63856_memory_ptr_$returns$__$",
                        "typeString": "function (mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteBatchWithdrawParams memory)"
                      }
                    },
                    "id": 66276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8686:280:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66277,
                  "nodeType": "ExpressionStatement",
                  "src": "8686:280:143"
                }
              ]
            },
            "baseFunctions": [
              46757
            ],
            "functionSelector": "9e97a156",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66260,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66259,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "8633:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "8633:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "8633:12:143"
              },
              {
                "id": 66262,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66261,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "8655:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "8655:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "8655:13:143"
              }
            ],
            "name": "batchWithdraw",
            "nameLocation": "8457:13:143",
            "overrides": {
              "id": 66258,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8615:8:143"
            },
            "parameters": {
              "id": 66257,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66250,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nameLocation": "8500:7:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66279,
                  "src": "8481:26:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66248,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "8481:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66249,
                    "nodeType": "ArrayTypeName",
                    "src": "8481:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66253,
                  "mutability": "mutable",
                  "name": "reserveIds",
                  "nameLocation": "8537:10:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66279,
                  "src": "8518:29:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66251,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "8518:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66252,
                    "nodeType": "ArrayTypeName",
                    "src": "8518:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66256,
                  "mutability": "mutable",
                  "name": "tos",
                  "nameLocation": "8577:3:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66279,
                  "src": "8558:22:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66254,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "8558:7:143",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 66255,
                    "nodeType": "ArrayTypeName",
                    "src": "8558:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8470:117:143"
            },
            "returnParameters": {
              "id": 66263,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8675:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66322,
            "nodeType": "FunctionDefinition",
            "src": "9593:790:143",
            "nodes": [],
            "body": {
              "id": 66321,
              "nodeType": "Block",
              "src": "9899:484:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66305,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67283,
                        "src": "9950:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      {
                        "id": 66306,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "9981:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 66309,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                67261
                              ],
                              "referencedDeclaration": 67261,
                              "src": "10065:10:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 66310,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10065:12:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66311,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66282,
                            "src": "10104:6:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66312,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66284,
                            "src": "10138:7:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66313,
                            "name": "tokenValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66286,
                            "src": "10176:10:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66314,
                            "name": "reserveId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66288,
                            "src": "10216:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66315,
                            "name": "duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66290,
                            "src": "10254:8:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66316,
                            "name": "onBehalfOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66292,
                            "src": "10293:10:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66317,
                            "name": "referralCode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66294,
                            "src": "10336:12:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          ],
                          "expression": {
                            "id": 66307,
                            "name": "DataTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64253,
                            "src": "10005:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                              "typeString": "type(library DataTypes)"
                            }
                          },
                          "id": 66308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "10015:19:143",
                          "memberName": "ExecuteBorrowParams",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63873,
                          "src": "10005:29:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ExecuteBorrowParams_$63873_storage_ptr_$",
                            "typeString": "type(struct DataTypes.ExecuteBorrowParams storage pointer)"
                          }
                        },
                        "id": 66318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "10054:9:143",
                          "10096:6:143",
                          "10129:7:143",
                          "10164:10:143",
                          "10205:9:143",
                          "10244:8:143",
                          "10281:10:143",
                          "10322:12:143"
                        ],
                        "names": [
                          "initiator",
                          "amount",
                          "tokenId",
                          "tokenValue",
                          "reserveId",
                          "duration",
                          "onBehalfOf",
                          "referralCode"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "10005:359:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteBorrowParams_$63873_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBorrowParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        },
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteBorrowParams_$63873_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBorrowParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66302,
                        "name": "BorrowLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 58413,
                        "src": "9910:11:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_BorrowLogic_$58413_$",
                          "typeString": "type(library BorrowLogic)"
                        }
                      },
                      "id": 66304,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "9922:13:143",
                      "memberName": "executeBorrow",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 57119,
                      "src": "9910:25:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IAddressProvider_$45420_$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteBorrowParams_$63873_memory_ptr_$returns$__$",
                        "typeString": "function (contract IAddressProvider,mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteBorrowParams memory)"
                      }
                    },
                    "id": 66319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9910:465:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66320,
                  "nodeType": "ExpressionStatement",
                  "src": "9910:465:143"
                }
              ]
            },
            "baseFunctions": [
              46774
            ],
            "documentation": {
              "id": 66280,
              "nodeType": "StructuredDocumentation",
              "src": "8982:605:143",
              "text": "@notice External function to create a borrow position.\n @param amount The amount of ERC20 tokens to be borrowed.\n @param tokenId The tokenId of the ERC721 / ERC1155 token to be deposited. \n @param tokenValue The number of same-value tokens supplied (0 implies ERC721)\n @param reserveId The id of the reserve to borrow against. \n @param duration The duration of the loan, 0 if open-ended\n @param onBehalfOf The address to receive the loan.\n @param referralCode Code used to register the integrator originated the operation, for potential rewards."
            },
            "functionSelector": "9c74daf8",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66298,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66297,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "9858:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "9858:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "9858:12:143"
              },
              {
                "id": 66300,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66299,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "9880:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "9880:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "9880:13:143"
              }
            ],
            "name": "borrow",
            "nameLocation": "9602:6:143",
            "overrides": {
              "id": 66296,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9840:8:143"
            },
            "parameters": {
              "id": 66295,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66282,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "9627:6:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66322,
                  "src": "9619:14:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66281,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9619:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66284,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "9653:7:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66322,
                  "src": "9645:15:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66283,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9645:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66286,
                  "mutability": "mutable",
                  "name": "tokenValue",
                  "nameLocation": "9679:10:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66322,
                  "src": "9671:18:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66285,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9671:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66288,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "9708:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66322,
                  "src": "9700:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66287,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9700:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66290,
                  "mutability": "mutable",
                  "name": "duration",
                  "nameLocation": "9736:8:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66322,
                  "src": "9728:16:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66289,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9728:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66292,
                  "mutability": "mutable",
                  "name": "onBehalfOf",
                  "nameLocation": "9763:10:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66322,
                  "src": "9755:18:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66291,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9755:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66294,
                  "mutability": "mutable",
                  "name": "referralCode",
                  "nameLocation": "9791:12:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66322,
                  "src": "9784:19:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 66293,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "9784:6:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9608:202:143"
            },
            "returnParameters": {
              "id": 66301,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9899:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66376,
            "nodeType": "FunctionDefinition",
            "src": "10475:896:143",
            "nodes": [],
            "body": {
              "id": 66375,
              "nodeType": "Block",
              "src": "10832:539:143",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    66353
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 66353,
                      "mutability": "mutable",
                      "name": "params",
                      "nameLocation": "10885:6:143",
                      "nodeType": "VariableDeclaration",
                      "scope": 66375,
                      "src": "10843:48:143",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecuteBatchBorrowParams_$63894_memory_ptr",
                        "typeString": "struct DataTypes.ExecuteBatchBorrowParams"
                      },
                      "typeName": {
                        "id": 66352,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 66351,
                          "name": "DataTypes.ExecuteBatchBorrowParams",
                          "nameLocations": [
                            "10843:9:143",
                            "10853:24:143"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 63894,
                          "src": "10843:34:143"
                        },
                        "referencedDeclaration": 63894,
                        "src": "10843:34:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteBatchBorrowParams_$63894_storage_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchBorrowParams"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 66366,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 66356,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            67261
                          ],
                          "referencedDeclaration": 67261,
                          "src": "10955:10:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                            "typeString": "function () view returns (address)"
                          }
                        },
                        "id": 66357,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10955:12:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 66358,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66326,
                        "src": "10991:7:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "id": 66359,
                        "name": "tokenIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66329,
                        "src": "11023:8:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "id": 66360,
                        "name": "tokenValues",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66332,
                        "src": "11059:11:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "id": 66361,
                        "name": "reserveIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66335,
                        "src": "11097:10:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "id": 66362,
                        "name": "duration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66337,
                        "src": "11132:8:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 66363,
                        "name": "onBehalfOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66339,
                        "src": "11167:10:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 66364,
                        "name": "referralCode",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66341,
                        "src": "11206:12:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "expression": {
                        "id": 66354,
                        "name": "DataTypes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64253,
                        "src": "10894:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                          "typeString": "type(library DataTypes)"
                        }
                      },
                      "id": 66355,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10904:24:143",
                      "memberName": "ExecuteBatchBorrowParams",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 63894,
                      "src": "10894:34:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_ExecuteBatchBorrowParams_$63894_storage_ptr_$",
                        "typeString": "type(struct DataTypes.ExecuteBatchBorrowParams storage pointer)"
                      }
                    },
                    "id": 66365,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [
                      "10944:9:143",
                      "10982:7:143",
                      "11013:8:143",
                      "11046:11:143",
                      "11085:10:143",
                      "11122:8:143",
                      "11155:10:143",
                      "11192:12:143"
                    ],
                    "names": [
                      "initiator",
                      "amounts",
                      "tokenIds",
                      "tokenValues",
                      "reserveIds",
                      "duration",
                      "onBehalfOf",
                      "referralCode"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "10894:339:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecuteBatchBorrowParams_$63894_memory_ptr",
                      "typeString": "struct DataTypes.ExecuteBatchBorrowParams memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10843:390:143"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66370,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67283,
                        "src": "11291:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      {
                        "id": 66371,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "11322:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "id": 66372,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66353,
                        "src": "11346:6:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteBatchBorrowParams_$63894_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchBorrowParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        },
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteBatchBorrowParams_$63894_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchBorrowParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66367,
                        "name": "BorrowLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 58413,
                        "src": "11246:11:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_BorrowLogic_$58413_$",
                          "typeString": "type(library BorrowLogic)"
                        }
                      },
                      "id": 66369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11258:18:143",
                      "memberName": "executeBatchBorrow",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 57213,
                      "src": "11246:30:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IAddressProvider_$45420_$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteBatchBorrowParams_$63894_memory_ptr_$returns$__$",
                        "typeString": "function (contract IAddressProvider,mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteBatchBorrowParams memory)"
                      }
                    },
                    "id": 66373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11246:117:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66374,
                  "nodeType": "ExpressionStatement",
                  "src": "11246:117:143"
                }
              ]
            },
            "baseFunctions": [
              46795
            ],
            "documentation": {
              "id": 66323,
              "nodeType": "StructuredDocumentation",
              "src": "10391:78:143",
              "text": "@dev Stack too deep to be able to be able to pass arrays for all variables"
            },
            "functionSelector": "c28cadf7",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66345,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66344,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "10791:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "10791:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "10791:12:143"
              },
              {
                "id": 66347,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66346,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "10813:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "10813:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "10813:13:143"
              }
            ],
            "name": "batchBorrow",
            "nameLocation": "10484:11:143",
            "overrides": {
              "id": 66343,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10773:8:143"
            },
            "parameters": {
              "id": 66342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66326,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nameLocation": "10525:7:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66376,
                  "src": "10506:26:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66324,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10506:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66325,
                    "nodeType": "ArrayTypeName",
                    "src": "10506:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66329,
                  "mutability": "mutable",
                  "name": "tokenIds",
                  "nameLocation": "10562:8:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66376,
                  "src": "10543:27:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66327,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10543:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66328,
                    "nodeType": "ArrayTypeName",
                    "src": "10543:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66332,
                  "mutability": "mutable",
                  "name": "tokenValues",
                  "nameLocation": "10600:11:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66376,
                  "src": "10581:30:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66330,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10581:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66331,
                    "nodeType": "ArrayTypeName",
                    "src": "10581:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66335,
                  "mutability": "mutable",
                  "name": "reserveIds",
                  "nameLocation": "10641:10:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66376,
                  "src": "10622:29:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66333,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10622:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66334,
                    "nodeType": "ArrayTypeName",
                    "src": "10622:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66337,
                  "mutability": "mutable",
                  "name": "duration",
                  "nameLocation": "10670:8:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66376,
                  "src": "10662:16:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66336,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10662:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66339,
                  "mutability": "mutable",
                  "name": "onBehalfOf",
                  "nameLocation": "10697:10:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66376,
                  "src": "10689:18:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66338,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10689:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66341,
                  "mutability": "mutable",
                  "name": "referralCode",
                  "nameLocation": "10725:12:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66376,
                  "src": "10718:19:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 66340,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "10718:6:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10495:249:143"
            },
            "returnParameters": {
              "id": 66348,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10832:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66404,
            "nodeType": "FunctionDefinition",
            "src": "11544:443:143",
            "nodes": [],
            "body": {
              "id": 66403,
              "nodeType": "Block",
              "src": "11706:281:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66392,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67283,
                        "src": "11756:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      {
                        "id": 66393,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "11787:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 66396,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                67261
                              ],
                              "referencedDeclaration": 67261,
                              "src": "11870:10:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 66397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11870:12:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66398,
                            "name": "borrowId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66379,
                            "src": "11911:8:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66399,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66381,
                            "src": "11946:6:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 66394,
                            "name": "DataTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64253,
                            "src": "11811:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                              "typeString": "type(library DataTypes)"
                            }
                          },
                          "id": 66395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "11821:18:143",
                          "memberName": "ExecuteRepayParams",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63901,
                          "src": "11811:28:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ExecuteRepayParams_$63901_storage_ptr_$",
                            "typeString": "type(struct DataTypes.ExecuteRepayParams storage pointer)"
                          }
                        },
                        "id": 66400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "11859:9:143",
                          "11901:8:143",
                          "11938:6:143"
                        ],
                        "names": [
                          "initiator",
                          "borrowId",
                          "amount"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "11811:157:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteRepayParams_$63901_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteRepayParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        },
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteRepayParams_$63901_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteRepayParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66389,
                        "name": "BorrowLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 58413,
                        "src": "11717:11:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_BorrowLogic_$58413_$",
                          "typeString": "type(library BorrowLogic)"
                        }
                      },
                      "id": 66391,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11729:12:143",
                      "memberName": "executeRepay",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 57234,
                      "src": "11717:24:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IAddressProvider_$45420_$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteRepayParams_$63901_memory_ptr_$returns$__$",
                        "typeString": "function (contract IAddressProvider,mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteRepayParams memory)"
                      }
                    },
                    "id": 66401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11717:262:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66402,
                  "nodeType": "ExpressionStatement",
                  "src": "11717:262:143"
                }
              ]
            },
            "baseFunctions": [
              46802
            ],
            "documentation": {
              "id": 66377,
              "nodeType": "StructuredDocumentation",
              "src": "11379:159:143",
              "text": "@notice To repay a borrow position.\n @param borrowId The id of the borrow to repay.\n @param amount The amount of ERC20 tokens to be repaid."
            },
            "functionSelector": "d8aed145",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66385,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66384,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "11665:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "11665:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "11665:12:143"
              },
              {
                "id": 66387,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66386,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "11687:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "11687:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "11687:13:143"
              }
            ],
            "name": "repay",
            "nameLocation": "11553:5:143",
            "overrides": {
              "id": 66383,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11647:8:143"
            },
            "parameters": {
              "id": 66382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66379,
                  "mutability": "mutable",
                  "name": "borrowId",
                  "nameLocation": "11577:8:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66404,
                  "src": "11569:16:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66378,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11569:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66381,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "11604:6:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66404,
                  "src": "11596:14:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66380,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11596:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11558:59:143"
            },
            "returnParameters": {
              "id": 66388,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11706:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66433,
            "nodeType": "FunctionDefinition",
            "src": "11995:487:143",
            "nodes": [],
            "body": {
              "id": 66432,
              "nodeType": "Block",
              "src": "12185:297:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66421,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67283,
                        "src": "12240:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      {
                        "id": 66422,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "12271:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 66425,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                67261
                              ],
                              "referencedDeclaration": 67261,
                              "src": "12359:10:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 66426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12359:12:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66427,
                            "name": "borrowIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66407,
                            "src": "12401:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          {
                            "id": 66428,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66410,
                            "src": "12438:7:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          ],
                          "expression": {
                            "id": 66423,
                            "name": "DataTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64253,
                            "src": "12295:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                              "typeString": "type(library DataTypes)"
                            }
                          },
                          "id": 66424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "12305:23:143",
                          "memberName": "ExecuteBatchRepayParams",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63910,
                          "src": "12295:33:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ExecuteBatchRepayParams_$63910_storage_ptr_$",
                            "typeString": "type(struct DataTypes.ExecuteBatchRepayParams storage pointer)"
                          }
                        },
                        "id": 66429,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "12348:9:143",
                          "12390:9:143",
                          "12429:7:143"
                        ],
                        "names": [
                          "initiator",
                          "borrowIds",
                          "amounts"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "12295:168:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteBatchRepayParams_$63910_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchRepayParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        },
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteBatchRepayParams_$63910_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchRepayParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66418,
                        "name": "BorrowLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 58413,
                        "src": "12196:11:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_BorrowLogic_$58413_$",
                          "typeString": "type(library BorrowLogic)"
                        }
                      },
                      "id": 66420,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "12208:17:143",
                      "memberName": "executeBatchRepay",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 57292,
                      "src": "12196:29:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IAddressProvider_$45420_$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteBatchRepayParams_$63910_memory_ptr_$returns$__$",
                        "typeString": "function (contract IAddressProvider,mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteBatchRepayParams memory)"
                      }
                    },
                    "id": 66430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12196:278:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66431,
                  "nodeType": "ExpressionStatement",
                  "src": "12196:278:143"
                }
              ]
            },
            "baseFunctions": [
              46811
            ],
            "functionSelector": "ff7039c7",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66414,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66413,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "12144:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "12144:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "12144:12:143"
              },
              {
                "id": 66416,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66415,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "12166:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "12166:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "12166:13:143"
              }
            ],
            "name": "batchRepay",
            "nameLocation": "12004:10:143",
            "overrides": {
              "id": 66412,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12126:8:143"
            },
            "parameters": {
              "id": 66411,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66407,
                  "mutability": "mutable",
                  "name": "borrowIds",
                  "nameLocation": "12044:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66433,
                  "src": "12025:28:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66405,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12025:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66406,
                    "nodeType": "ArrayTypeName",
                    "src": "12025:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66410,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nameLocation": "12083:7:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66433,
                  "src": "12064:26:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66408,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12064:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66409,
                    "nodeType": "ArrayTypeName",
                    "src": "12064:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12014:83:143"
            },
            "returnParameters": {
              "id": 66417,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12185:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66463,
            "nodeType": "FunctionDefinition",
            "src": "12490:517:143",
            "nodes": [],
            "body": {
              "id": 66462,
              "nodeType": "Block",
              "src": "12681:326:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66450,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67283,
                        "src": "12735:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      {
                        "id": 66451,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "12766:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 66454,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                67261
                              ],
                              "referencedDeclaration": 67261,
                              "src": "12853:10:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 66455,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12853:12:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66456,
                            "name": "borrowId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66435,
                            "src": "12894:8:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66457,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66437,
                            "src": "12929:6:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66458,
                            "name": "duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66439,
                            "src": "12964:8:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 66452,
                            "name": "DataTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64253,
                            "src": "12790:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                              "typeString": "type(library DataTypes)"
                            }
                          },
                          "id": 66453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "12800:22:143",
                          "memberName": "ExecuteRefinanceParams",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63919,
                          "src": "12790:32:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ExecuteRefinanceParams_$63919_storage_ptr_$",
                            "typeString": "type(struct DataTypes.ExecuteRefinanceParams storage pointer)"
                          }
                        },
                        "id": 66459,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "12842:9:143",
                          "12884:8:143",
                          "12921:6:143",
                          "12954:8:143"
                        ],
                        "names": [
                          "initiator",
                          "borrowId",
                          "amount",
                          "duration"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "12790:198:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteRefinanceParams_$63919_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteRefinanceParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        },
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteRefinanceParams_$63919_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteRefinanceParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66447,
                        "name": "BorrowLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 58413,
                        "src": "12692:11:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_BorrowLogic_$58413_$",
                          "typeString": "type(library BorrowLogic)"
                        }
                      },
                      "id": 66449,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "12704:16:143",
                      "memberName": "executeRefinance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 57313,
                      "src": "12692:28:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IAddressProvider_$45420_$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteRefinanceParams_$63919_memory_ptr_$returns$__$",
                        "typeString": "function (contract IAddressProvider,mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteRefinanceParams memory)"
                      }
                    },
                    "id": 66460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12692:307:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66461,
                  "nodeType": "ExpressionStatement",
                  "src": "12692:307:143"
                }
              ]
            },
            "baseFunctions": [
              46820
            ],
            "functionSelector": "044df1f2",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66443,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66442,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "12640:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "12640:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "12640:12:143"
              },
              {
                "id": 66445,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66444,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "12662:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "12662:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "12662:13:143"
              }
            ],
            "name": "refinance",
            "nameLocation": "12499:9:143",
            "overrides": {
              "id": 66441,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12622:8:143"
            },
            "parameters": {
              "id": 66440,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66435,
                  "mutability": "mutable",
                  "name": "borrowId",
                  "nameLocation": "12527:8:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66463,
                  "src": "12519:16:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66434,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12519:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66437,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "12554:6:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66463,
                  "src": "12546:14:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66436,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12546:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66439,
                  "mutability": "mutable",
                  "name": "duration",
                  "nameLocation": "12579:8:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66463,
                  "src": "12571:16:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66438,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12571:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12508:86:143"
            },
            "returnParameters": {
              "id": 66446,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12681:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66496,
            "nodeType": "FunctionDefinition",
            "src": "13015:574:143",
            "nodes": [],
            "body": {
              "id": 66495,
              "nodeType": "Block",
              "src": "13247:342:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66483,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67283,
                        "src": "13306:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      {
                        "id": 66484,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "13337:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 66487,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                67261
                              ],
                              "referencedDeclaration": 67261,
                              "src": "13429:10:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 66488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13429:12:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66489,
                            "name": "borrowIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66466,
                            "src": "13471:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          {
                            "id": 66490,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66469,
                            "src": "13508:7:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          {
                            "id": 66491,
                            "name": "durations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66472,
                            "src": "13545:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          ],
                          "expression": {
                            "id": 66485,
                            "name": "DataTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64253,
                            "src": "13361:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                              "typeString": "type(library DataTypes)"
                            }
                          },
                          "id": 66486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "13371:27:143",
                          "memberName": "ExecuteBatchRefinanceParams",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63931,
                          "src": "13361:37:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ExecuteBatchRefinanceParams_$63931_storage_ptr_$",
                            "typeString": "type(struct DataTypes.ExecuteBatchRefinanceParams storage pointer)"
                          }
                        },
                        "id": 66492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "13418:9:143",
                          "13460:9:143",
                          "13499:7:143",
                          "13534:9:143"
                        ],
                        "names": [
                          "initiator",
                          "borrowIds",
                          "amounts",
                          "durations"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "13361:209:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteBatchRefinanceParams_$63931_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchRefinanceParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        },
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteBatchRefinanceParams_$63931_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchRefinanceParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66480,
                        "name": "BorrowLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 58413,
                        "src": "13258:11:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_BorrowLogic_$58413_$",
                          "typeString": "type(library BorrowLogic)"
                        }
                      },
                      "id": 66482,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13270:21:143",
                      "memberName": "executeBatchRefinance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 57386,
                      "src": "13258:33:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IAddressProvider_$45420_$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteBatchRefinanceParams_$63931_memory_ptr_$returns$__$",
                        "typeString": "function (contract IAddressProvider,mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteBatchRefinanceParams memory)"
                      }
                    },
                    "id": 66493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13258:323:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66494,
                  "nodeType": "ExpressionStatement",
                  "src": "13258:323:143"
                }
              ]
            },
            "baseFunctions": [
              46832
            ],
            "functionSelector": "621759de",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66476,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66475,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "13206:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "13206:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "13206:12:143"
              },
              {
                "id": 66478,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66477,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "13228:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "13228:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "13228:13:143"
              }
            ],
            "name": "batchRefinance",
            "nameLocation": "13024:14:143",
            "overrides": {
              "id": 66474,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13188:8:143"
            },
            "parameters": {
              "id": 66473,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66466,
                  "mutability": "mutable",
                  "name": "borrowIds",
                  "nameLocation": "13068:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66496,
                  "src": "13049:28:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66464,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "13049:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66465,
                    "nodeType": "ArrayTypeName",
                    "src": "13049:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66469,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nameLocation": "13107:7:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66496,
                  "src": "13088:26:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66467,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "13088:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66468,
                    "nodeType": "ArrayTypeName",
                    "src": "13088:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66472,
                  "mutability": "mutable",
                  "name": "durations",
                  "nameLocation": "13144:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66496,
                  "src": "13125:28:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66470,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "13125:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66471,
                    "nodeType": "ArrayTypeName",
                    "src": "13125:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13038:122:143"
            },
            "returnParameters": {
              "id": 66479,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13247:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66524,
            "nodeType": "FunctionDefinition",
            "src": "13767:463:143",
            "nodes": [],
            "body": {
              "id": 66523,
              "nodeType": "Block",
              "src": "13934:296:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66512,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67283,
                        "src": "13989:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      {
                        "id": 66513,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "14020:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 66516,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                67261
                              ],
                              "referencedDeclaration": 67261,
                              "src": "14105:10:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 66517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14105:12:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66518,
                            "name": "borrowId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66499,
                            "src": "14146:8:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66519,
                            "name": "onBehalfOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66501,
                            "src": "14185:10:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 66514,
                            "name": "DataTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64253,
                            "src": "14044:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                              "typeString": "type(library DataTypes)"
                            }
                          },
                          "id": 66515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "14054:20:143",
                          "memberName": "ExecuteAuctionParams",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63938,
                          "src": "14044:30:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ExecuteAuctionParams_$63938_storage_ptr_$",
                            "typeString": "type(struct DataTypes.ExecuteAuctionParams storage pointer)"
                          }
                        },
                        "id": 66520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "14094:9:143",
                          "14136:8:143",
                          "14173:10:143"
                        ],
                        "names": [
                          "initiator",
                          "borrowId",
                          "onBehalfOf"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "14044:167:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteAuctionParams_$63938_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteAuctionParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        },
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteAuctionParams_$63938_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteAuctionParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66509,
                        "name": "LiquidateLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 60459,
                        "src": "13945:14:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_LiquidateLogic_$60459_$",
                          "typeString": "type(library LiquidateLogic)"
                        }
                      },
                      "id": 66511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13960:14:143",
                      "memberName": "executeAuction",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 59677,
                      "src": "13945:29:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IAddressProvider_$45420_$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteAuctionParams_$63938_memory_ptr_$returns$__$",
                        "typeString": "function (contract IAddressProvider,mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteAuctionParams memory)"
                      }
                    },
                    "id": 66521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13945:277:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66522,
                  "nodeType": "ExpressionStatement",
                  "src": "13945:277:143"
                }
              ]
            },
            "baseFunctions": [
              46839
            ],
            "documentation": {
              "id": 66497,
              "nodeType": "StructuredDocumentation",
              "src": "13597:164:143",
              "text": "@notice To trigger a liquidation auction\n @param borrowId The id of the borrow.\n @param onBehalfOf The wallet to receive the auction caller fee."
            },
            "functionSelector": "118cfad3",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66505,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66504,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "13893:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "13893:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "13893:12:143"
              },
              {
                "id": 66507,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66506,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "13915:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "13915:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "13915:13:143"
              }
            ],
            "name": "auction",
            "nameLocation": "13776:7:143",
            "overrides": {
              "id": 66503,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13875:8:143"
            },
            "parameters": {
              "id": 66502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66499,
                  "mutability": "mutable",
                  "name": "borrowId",
                  "nameLocation": "13802:8:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66524,
                  "src": "13794:16:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66498,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13794:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66501,
                  "mutability": "mutable",
                  "name": "onBehalfOf",
                  "nameLocation": "13829:10:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66524,
                  "src": "13821:18:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66500,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13821:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13783:63:143"
            },
            "returnParameters": {
              "id": 66508,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13934:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66553,
            "nodeType": "FunctionDefinition",
            "src": "14238:506:143",
            "nodes": [],
            "body": {
              "id": 66552,
              "nodeType": "Block",
              "src": "14434:310:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66541,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67283,
                        "src": "14494:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      {
                        "id": 66542,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "14525:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 66545,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                67261
                              ],
                              "referencedDeclaration": 67261,
                              "src": "14615:10:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 66546,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14615:12:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66547,
                            "name": "borrowIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66527,
                            "src": "14657:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          {
                            "id": 66548,
                            "name": "onBehalfOfs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66530,
                            "src": "14698:11:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          ],
                          "expression": {
                            "id": 66543,
                            "name": "DataTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64253,
                            "src": "14549:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                              "typeString": "type(library DataTypes)"
                            }
                          },
                          "id": 66544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "14559:25:143",
                          "memberName": "ExecuteBatchAuctionParams",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63947,
                          "src": "14549:35:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ExecuteBatchAuctionParams_$63947_storage_ptr_$",
                            "typeString": "type(struct DataTypes.ExecuteBatchAuctionParams storage pointer)"
                          }
                        },
                        "id": 66549,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "14604:9:143",
                          "14646:9:143",
                          "14685:11:143"
                        ],
                        "names": [
                          "initiator",
                          "borrowIds",
                          "onBehalfOfs"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "14549:176:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteBatchAuctionParams_$63947_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchAuctionParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        },
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteBatchAuctionParams_$63947_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchAuctionParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66538,
                        "name": "LiquidateLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 60459,
                        "src": "14445:14:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_LiquidateLogic_$60459_$",
                          "typeString": "type(library LiquidateLogic)"
                        }
                      },
                      "id": 66540,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14460:19:143",
                      "memberName": "executeBatchAuction",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 59724,
                      "src": "14445:34:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IAddressProvider_$45420_$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteBatchAuctionParams_$63947_memory_ptr_$returns$__$",
                        "typeString": "function (contract IAddressProvider,mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteBatchAuctionParams memory)"
                      }
                    },
                    "id": 66550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14445:291:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66551,
                  "nodeType": "ExpressionStatement",
                  "src": "14445:291:143"
                }
              ]
            },
            "baseFunctions": [
              46848
            ],
            "functionSelector": "34e69b62",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66534,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66533,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "14393:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "14393:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "14393:12:143"
              },
              {
                "id": 66536,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66535,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "14415:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "14415:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "14415:13:143"
              }
            ],
            "name": "batchAuction",
            "nameLocation": "14247:12:143",
            "overrides": {
              "id": 66532,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14375:8:143"
            },
            "parameters": {
              "id": 66531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66527,
                  "mutability": "mutable",
                  "name": "borrowIds",
                  "nameLocation": "14289:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66553,
                  "src": "14270:28:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66525,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "14270:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66526,
                    "nodeType": "ArrayTypeName",
                    "src": "14270:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66530,
                  "mutability": "mutable",
                  "name": "onBehalfOfs",
                  "nameLocation": "14328:11:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66553,
                  "src": "14309:30:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66528,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "14309:7:143",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 66529,
                    "nodeType": "ArrayTypeName",
                    "src": "14309:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14259:87:143"
            },
            "returnParameters": {
              "id": 66537,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14434:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66587,
            "nodeType": "FunctionDefinition",
            "src": "15061:565:143",
            "nodes": [],
            "body": {
              "id": 66586,
              "nodeType": "Block",
              "src": "15274:352:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66573,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67283,
                        "src": "15325:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      {
                        "id": 66574,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "15356:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 66577,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                67261
                              ],
                              "referencedDeclaration": 67261,
                              "src": "15437:10:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 66578,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15437:12:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66579,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66556,
                            "src": "15475:5:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66580,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66558,
                            "src": "15507:6:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66581,
                            "name": "borrowId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66560,
                            "src": "15542:8:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 66582,
                            "name": "onBehalfOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66562,
                            "src": "15581:10:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 66575,
                            "name": "DataTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64253,
                            "src": "15380:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                              "typeString": "type(library DataTypes)"
                            }
                          },
                          "id": 66576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "15390:16:143",
                          "memberName": "ExecuteBidParams",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63958,
                          "src": "15380:26:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ExecuteBidParams_$63958_storage_ptr_$",
                            "typeString": "type(struct DataTypes.ExecuteBidParams storage pointer)"
                          }
                        },
                        "id": 66583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "15426:9:143",
                          "15468:5:143",
                          "15499:6:143",
                          "15532:8:143",
                          "15569:10:143"
                        ],
                        "names": [
                          "initiator",
                          "asset",
                          "amount",
                          "borrowId",
                          "onBehalfOf"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "15380:227:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteBidParams_$63958_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBidParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        },
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteBidParams_$63958_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBidParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66570,
                        "name": "LiquidateLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 60459,
                        "src": "15285:14:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_LiquidateLogic_$60459_$",
                          "typeString": "type(library LiquidateLogic)"
                        }
                      },
                      "id": 66572,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15300:10:143",
                      "memberName": "executeBid",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 59745,
                      "src": "15285:25:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IAddressProvider_$45420_$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteBidParams_$63958_memory_ptr_$returns$__$",
                        "typeString": "function (contract IAddressProvider,mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteBidParams memory)"
                      }
                    },
                    "id": 66584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15285:333:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66585,
                  "nodeType": "ExpressionStatement",
                  "src": "15285:333:143"
                }
              ]
            },
            "baseFunctions": [
              46859
            ],
            "documentation": {
              "id": 66554,
              "nodeType": "StructuredDocumentation",
              "src": "14752:303:143",
              "text": "@notice To purchase the underlying NFT of a defaulted borrow.\n @param asset The asset contract address.\n @param amount The amount of ERC20 tokens to be paid.\n @param borrowId The id of the defaulted borrow.\n @param onBehalfOf The wallet to receive the underlying NFT."
            },
            "functionSelector": "a7ff3b23",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66566,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66565,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "15233:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "15233:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "15233:12:143"
              },
              {
                "id": 66568,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66567,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "15255:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "15255:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "15255:13:143"
              }
            ],
            "name": "bid",
            "nameLocation": "15070:3:143",
            "overrides": {
              "id": 66564,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15215:8:143"
            },
            "parameters": {
              "id": 66563,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66556,
                  "mutability": "mutable",
                  "name": "asset",
                  "nameLocation": "15092:5:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66587,
                  "src": "15084:13:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66555,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15084:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66558,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "15116:6:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66587,
                  "src": "15108:14:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66557,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15108:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66560,
                  "mutability": "mutable",
                  "name": "borrowId",
                  "nameLocation": "15142:8:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66587,
                  "src": "15134:16:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66559,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15134:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66562,
                  "mutability": "mutable",
                  "name": "onBehalfOf",
                  "nameLocation": "15169:10:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66587,
                  "src": "15161:18:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66561,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15161:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15073:113:143"
            },
            "returnParameters": {
              "id": 66569,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15274:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66624,
            "nodeType": "FunctionDefinition",
            "src": "15634:636:143",
            "nodes": [],
            "body": {
              "id": 66623,
              "nodeType": "Block",
              "src": "15900:370:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66610,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67283,
                        "src": "15956:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      {
                        "id": 66611,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "15987:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 66614,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                67261
                              ],
                              "referencedDeclaration": 67261,
                              "src": "16073:10:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 66615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16073:12:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 66616,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66590,
                            "src": "16112:6:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "id": 66617,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66593,
                            "src": "16146:7:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          {
                            "id": 66618,
                            "name": "borrowIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66596,
                            "src": "16183:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          {
                            "id": 66619,
                            "name": "onBehalfOfs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66599,
                            "src": "16224:11:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          ],
                          "expression": {
                            "id": 66612,
                            "name": "DataTypes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 64253,
                            "src": "16011:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$64253_$",
                              "typeString": "type(library DataTypes)"
                            }
                          },
                          "id": 66613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "16021:21:143",
                          "memberName": "ExecuteBatchBidParams",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63973,
                          "src": "16011:31:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ExecuteBatchBidParams_$63973_storage_ptr_$",
                            "typeString": "type(struct DataTypes.ExecuteBatchBidParams storage pointer)"
                          }
                        },
                        "id": 66620,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "16062:9:143",
                          "16104:6:143",
                          "16137:7:143",
                          "16172:9:143",
                          "16211:11:143"
                        ],
                        "names": [
                          "initiator",
                          "assets",
                          "amounts",
                          "borrowIds",
                          "onBehalfOfs"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "16011:240:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteBatchBidParams_$63973_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchBidParams memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        },
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_struct$_ExecuteBatchBidParams_$63973_memory_ptr",
                          "typeString": "struct DataTypes.ExecuteBatchBidParams memory"
                        }
                      ],
                      "expression": {
                        "id": 66607,
                        "name": "LiquidateLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 60459,
                        "src": "15911:14:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_LiquidateLogic_$60459_$",
                          "typeString": "type(library LiquidateLogic)"
                        }
                      },
                      "id": 66609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15926:15:143",
                      "memberName": "executeBatchBid",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 59822,
                      "src": "15911:30:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_contract$_IAddressProvider_$45420_$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_struct$_ExecuteBatchBidParams_$63973_memory_ptr_$returns$__$",
                        "typeString": "function (contract IAddressProvider,mapping(uint256 => struct DataTypes.Reserve storage ref),struct DataTypes.ExecuteBatchBidParams memory)"
                      }
                    },
                    "id": 66621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15911:351:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66622,
                  "nodeType": "ExpressionStatement",
                  "src": "15911:351:143"
                }
              ]
            },
            "baseFunctions": [
              46874
            ],
            "functionSelector": "2684dd09",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66603,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66602,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "15859:12:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26307,
                  "src": "15859:12:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "15859:12:143"
              },
              {
                "id": 66605,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66604,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "15881:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "15881:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "15881:13:143"
              }
            ],
            "name": "batchBid",
            "nameLocation": "15643:8:143",
            "overrides": {
              "id": 66601,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15841:8:143"
            },
            "parameters": {
              "id": 66600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66590,
                  "mutability": "mutable",
                  "name": "assets",
                  "nameLocation": "15681:6:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66624,
                  "src": "15662:25:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66588,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "15662:7:143",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 66589,
                    "nodeType": "ArrayTypeName",
                    "src": "15662:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66593,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nameLocation": "15717:7:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66624,
                  "src": "15698:26:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66591,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "15698:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66592,
                    "nodeType": "ArrayTypeName",
                    "src": "15698:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66596,
                  "mutability": "mutable",
                  "name": "borrowIds",
                  "nameLocation": "15755:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66624,
                  "src": "15736:28:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66594,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "15736:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66595,
                    "nodeType": "ArrayTypeName",
                    "src": "15736:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66599,
                  "mutability": "mutable",
                  "name": "onBehalfOfs",
                  "nameLocation": "15794:11:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66624,
                  "src": "15775:30:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66597,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "15775:7:143",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 66598,
                    "nodeType": "ArrayTypeName",
                    "src": "15775:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15651:161:143"
            },
            "returnParameters": {
              "id": 66606,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15900:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66640,
            "nodeType": "FunctionDefinition",
            "src": "16447:227:143",
            "nodes": [],
            "body": {
              "id": 66639,
              "nodeType": "Block",
              "src": "16614:60:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "baseExpression": {
                        "id": 66634,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "16632:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      "id": 66636,
                      "indexExpression": {
                        "id": 66635,
                        "name": "reserveId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66627,
                        "src": "16642:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "16632:20:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                        "typeString": "struct DataTypes.Reserve storage ref"
                      }
                    },
                    "id": 66637,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16653:13:143",
                    "memberName": "configuration",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 63680,
                    "src": "16632:34:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$63746_storage",
                      "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                    }
                  },
                  "functionReturnParameters": 66633,
                  "id": 66638,
                  "nodeType": "Return",
                  "src": "16625:41:143"
                }
              ]
            },
            "baseFunctions": [
              46882
            ],
            "documentation": {
              "id": 66625,
              "nodeType": "StructuredDocumentation",
              "src": "16278:163:143",
              "text": " @dev Returns the configuration of the reserve\n @param reserveId The id of the reserve\n @return The configuration of the reserve*"
            },
            "functionSelector": "eadff055",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReserveConfiguration",
            "nameLocation": "16456:23:143",
            "overrides": {
              "id": 66629,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "16540:8:143"
            },
            "parameters": {
              "id": 66628,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66627,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "16488:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66640,
                  "src": "16480:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66626,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16480:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16479:19:143"
            },
            "returnParameters": {
              "id": 66633,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66632,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66640,
                  "src": "16567:40:143",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ReserveConfigurationMap_$63746_memory_ptr",
                    "typeString": "struct DataTypes.ReserveConfigurationMap"
                  },
                  "typeName": {
                    "id": 66631,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 66630,
                      "name": "DataTypes.ReserveConfigurationMap",
                      "nameLocations": [
                        "16567:9:143",
                        "16577:23:143"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 63746,
                      "src": "16567:33:143"
                    },
                    "referencedDeclaration": 63746,
                    "src": "16567:33:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$63746_storage_ptr",
                      "typeString": "struct DataTypes.ReserveConfigurationMap"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16566:42:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66658,
            "nodeType": "FunctionDefinition",
            "src": "16682:203:143",
            "nodes": [],
            "body": {
              "id": 66657,
              "nodeType": "Block",
              "src": "16814:71:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 66655,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "baseExpression": {
                          "id": 66650,
                          "name": "_reserves",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67288,
                          "src": "16825:9:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                            "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                          }
                        },
                        "id": 66652,
                        "indexExpression": {
                          "id": 66651,
                          "name": "reserveId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 66642,
                          "src": "16835:9:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "16825:20:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                          "typeString": "struct DataTypes.Reserve storage ref"
                        }
                      },
                      "id": 66653,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "16846:14:143",
                      "memberName": "maxTokenSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 63698,
                      "src": "16825:35:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 66654,
                      "name": "maxTokenSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66644,
                      "src": "16863:14:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16825:52:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 66656,
                  "nodeType": "ExpressionStatement",
                  "src": "16825:52:143"
                }
              ]
            },
            "baseFunctions": [
              47017
            ],
            "functionSelector": "d6ee0f73",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66648,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66647,
                  "name": "onlyConfigurator",
                  "nameLocations": [
                    "16797:16:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66109,
                  "src": "16797:16:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "16797:16:143"
              }
            ],
            "name": "setReserveMaxSupply",
            "nameLocation": "16691:19:143",
            "overrides": {
              "id": 66646,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "16788:8:143"
            },
            "parameters": {
              "id": 66645,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66642,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "16729:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66658,
                  "src": "16721:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66641,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16721:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66644,
                  "mutability": "mutable",
                  "name": "maxTokenSupply",
                  "nameLocation": "16757:14:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66658,
                  "src": "16749:22:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66643,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16749:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16710:68:143"
            },
            "returnParameters": {
              "id": 66649,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16814:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66699,
            "nodeType": "FunctionDefinition",
            "src": "17086:365:143",
            "nodes": [],
            "body": {
              "id": 66698,
              "nodeType": "Block",
              "src": "17149:302:143",
              "nodes": [],
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 66669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 66667,
                      "name": "_paused",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67325,
                      "src": "17164:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 66668,
                      "name": "val",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66661,
                      "src": "17175:3:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "17164:14:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 66697,
                  "nodeType": "IfStatement",
                  "src": "17160:284:143",
                  "trueBody": {
                    "id": 66696,
                    "nodeType": "Block",
                    "src": "17180:264:143",
                    "statements": [
                      {
                        "expression": {
                          "id": 66672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 66670,
                            "name": "_paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 67325,
                            "src": "17191:7:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 66671,
                            "name": "val",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66661,
                            "src": "17201:3:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "17191:13:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 66673,
                        "nodeType": "ExpressionStatement",
                        "src": "17191:13:143"
                      },
                      {
                        "condition": {
                          "id": 66674,
                          "name": "_paused",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67325,
                          "src": "17219:7:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 66694,
                          "nodeType": "Block",
                          "src": "17322:111:143",
                          "statements": [
                            {
                              "expression": {
                                "id": 66689,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 66684,
                                  "name": "_pauseDurationTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 67329,
                                  "src": "17337:18:143",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 66688,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 66685,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "17358:5:143",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 66686,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "17364:9:143",
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "src": "17358:15:143",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 66687,
                                    "name": "_pauseStartTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 67327,
                                    "src": "17376:15:143",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17358:33:143",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17337:54:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 66690,
                              "nodeType": "ExpressionStatement",
                              "src": "17337:54:143"
                            },
                            {
                              "eventCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 66691,
                                  "name": "Unpaused",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 46563,
                                  "src": "17411:8:143",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 66692,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17411:10:143",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 66693,
                              "nodeType": "EmitStatement",
                              "src": "17406:15:143"
                            }
                          ]
                        },
                        "id": 66695,
                        "nodeType": "IfStatement",
                        "src": "17215:218:143",
                        "trueBody": {
                          "id": 66683,
                          "nodeType": "Block",
                          "src": "17228:88:143",
                          "statements": [
                            {
                              "expression": {
                                "id": 66678,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 66675,
                                  "name": "_pauseStartTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 67327,
                                  "src": "17243:15:143",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 66676,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "17261:5:143",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 66677,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "17267:9:143",
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "src": "17261:15:143",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17243:33:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 66679,
                              "nodeType": "ExpressionStatement",
                              "src": "17243:33:143"
                            },
                            {
                              "eventCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 66680,
                                  "name": "Paused",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 46560,
                                  "src": "17296:6:143",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 66681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17296:8:143",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 66682,
                              "nodeType": "EmitStatement",
                              "src": "17291:13:143"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "baseFunctions": [
              46913
            ],
            "documentation": {
              "id": 66659,
              "nodeType": "StructuredDocumentation",
              "src": "16893:187:143",
              "text": " @dev Set the _pause state of the pool\n - Only callable by the LendPoolConfigurator contract\n @param val `true` to pause the pool, `false` to un-pause it"
            },
            "functionSelector": "bedb86fb",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66665,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66664,
                  "name": "onlyConfigurator",
                  "nameLocations": [
                    "17132:16:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66109,
                  "src": "17132:16:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "17132:16:143"
              }
            ],
            "name": "setPause",
            "nameLocation": "17095:8:143",
            "overrides": {
              "id": 66663,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "17123:8:143"
            },
            "parameters": {
              "id": 66662,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66661,
                  "mutability": "mutable",
                  "name": "val",
                  "nameLocation": "17109:3:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66699,
                  "src": "17104:8:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 66660,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17104:4:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17103:10:143"
            },
            "returnParameters": {
              "id": 66666,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17149:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66709,
            "nodeType": "FunctionDefinition",
            "src": "17522:89:143",
            "nodes": [],
            "body": {
              "id": 66708,
              "nodeType": "Block",
              "src": "17578:33:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 66706,
                    "name": "_paused",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 67325,
                    "src": "17596:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 66705,
                  "id": 66707,
                  "nodeType": "Return",
                  "src": "17589:14:143"
                }
              ]
            },
            "baseFunctions": [
              46926
            ],
            "documentation": {
              "id": 66700,
              "nodeType": "StructuredDocumentation",
              "src": "17459:57:143",
              "text": " @dev Returns if the LendPool is paused"
            },
            "functionSelector": "5c975abb",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "paused",
            "nameLocation": "17531:6:143",
            "overrides": {
              "id": 66702,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "17554:8:143"
            },
            "parameters": {
              "id": 66701,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17537:2:143"
            },
            "returnParameters": {
              "id": 66705,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66704,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66709,
                  "src": "17572:4:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 66703,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17572:4:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17571:6:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66733,
            "nodeType": "FunctionDefinition",
            "src": "17619:247:143",
            "nodes": [],
            "body": {
              "id": 66732,
              "nodeType": "Block",
              "src": "17718:148:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 66721,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 66719,
                      "name": "_pauseStartTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67327,
                      "src": "17729:15:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 66720,
                      "name": "startTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66711,
                      "src": "17747:9:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17729:27:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 66722,
                  "nodeType": "ExpressionStatement",
                  "src": "17729:27:143"
                },
                {
                  "expression": {
                    "id": 66725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 66723,
                      "name": "_pauseDurationTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67329,
                      "src": "17767:18:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 66724,
                      "name": "durationTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66713,
                      "src": "17788:12:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17767:33:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 66726,
                  "nodeType": "ExpressionStatement",
                  "src": "17767:33:143"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 66728,
                        "name": "startTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66711,
                        "src": "17834:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 66729,
                        "name": "durationTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66713,
                        "src": "17845:12:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 66727,
                      "name": "PausedTimeUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 46570,
                      "src": "17816:17:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 66730,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17816:42:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66731,
                  "nodeType": "EmitStatement",
                  "src": "17811:47:143"
                }
              ]
            },
            "baseFunctions": [
              46920
            ],
            "functionSelector": "2f923ff7",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66717,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66716,
                  "name": "onlyConfigurator",
                  "nameLocations": [
                    "17701:16:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66109,
                  "src": "17701:16:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "17701:16:143"
              }
            ],
            "name": "setPausedTime",
            "nameLocation": "17628:13:143",
            "overrides": {
              "id": 66715,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "17692:8:143"
            },
            "parameters": {
              "id": 66714,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66711,
                  "mutability": "mutable",
                  "name": "startTime",
                  "nameLocation": "17650:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66733,
                  "src": "17642:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66710,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17642:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66713,
                  "mutability": "mutable",
                  "name": "durationTime",
                  "nameLocation": "17669:12:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66733,
                  "src": "17661:20:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66712,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17661:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17641:41:143"
            },
            "returnParameters": {
              "id": 66718,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17718:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66746,
            "nodeType": "FunctionDefinition",
            "src": "17874:138:143",
            "nodes": [],
            "body": {
              "id": 66745,
              "nodeType": "Block",
              "src": "17949:63:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "components": [
                      {
                        "id": 66741,
                        "name": "_pauseStartTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67327,
                        "src": "17968:15:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 66742,
                        "name": "_pauseDurationTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67329,
                        "src": "17985:18:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 66743,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "17967:37:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 66740,
                  "id": 66744,
                  "nodeType": "Return",
                  "src": "17960:44:143"
                }
              ]
            },
            "baseFunctions": [
              46933
            ],
            "functionSelector": "8fc42188",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPausedTime",
            "nameLocation": "17883:13:143",
            "overrides": {
              "id": 66735,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "17913:8:143"
            },
            "parameters": {
              "id": 66734,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17896:2:143"
            },
            "returnParameters": {
              "id": 66740,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66737,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66746,
                  "src": "17931:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66736,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17931:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66739,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66746,
                  "src": "17940:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66738,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17940:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17930:18:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66757,
            "nodeType": "FunctionDefinition",
            "src": "18112:122:143",
            "nodes": [],
            "body": {
              "id": 66756,
              "nodeType": "Block",
              "src": "18192:42:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 66754,
                    "name": "_addressProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 67283,
                    "src": "18210:16:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                      "typeString": "contract IAddressProvider"
                    }
                  },
                  "functionReturnParameters": 66753,
                  "id": 66755,
                  "nodeType": "Return",
                  "src": "18203:23:143"
                }
              ]
            },
            "baseFunctions": [
              46939
            ],
            "documentation": {
              "id": 66747,
              "nodeType": "StructuredDocumentation",
              "src": "18020:86:143",
              "text": " @dev Returns the cached AddressProvider connected to this contract*"
            },
            "functionSelector": "f8c68934",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressProvider",
            "nameLocation": "18121:18:143",
            "overrides": {
              "id": 66749,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "18156:8:143"
            },
            "parameters": {
              "id": 66748,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18139:2:143"
            },
            "returnParameters": {
              "id": 66753,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66752,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66757,
                  "src": "18174:16:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                    "typeString": "contract IAddressProvider"
                  },
                  "typeName": {
                    "id": 66751,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 66750,
                      "name": "IAddressProvider",
                      "nameLocations": [
                        "18174:16:143"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 45420,
                      "src": "18174:16:143"
                    },
                    "referencedDeclaration": 45420,
                    "src": "18174:16:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                      "typeString": "contract IAddressProvider"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18173:18:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66770,
            "nodeType": "FunctionDefinition",
            "src": "18242:125:143",
            "nodes": [],
            "body": {
              "id": 66769,
              "nodeType": "Block",
              "src": "18322:45:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 66767,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 66765,
                      "name": "_maxNumberOfReserves",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67314,
                      "src": "18333:20:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 66766,
                      "name": "val",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66759,
                      "src": "18356:3:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18333:26:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 66768,
                  "nodeType": "ExpressionStatement",
                  "src": "18333:26:143"
                }
              ]
            },
            "baseFunctions": [
              47005
            ],
            "functionSelector": "746c35a2",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66763,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66762,
                  "name": "onlyConfigurator",
                  "nameLocations": [
                    "18305:16:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66109,
                  "src": "18305:16:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "18305:16:143"
              }
            ],
            "name": "setMaxNumberOfReserves",
            "nameLocation": "18251:22:143",
            "overrides": {
              "id": 66761,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "18296:8:143"
            },
            "parameters": {
              "id": 66760,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66759,
                  "mutability": "mutable",
                  "name": "val",
                  "nameLocation": "18282:3:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66770,
                  "src": "18274:11:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66758,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18274:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18273:13:143"
            },
            "returnParameters": {
              "id": 66764,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18322:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66785,
            "nodeType": "FunctionDefinition",
            "src": "18546:201:143",
            "nodes": [],
            "body": {
              "id": 66784,
              "nodeType": "Block",
              "src": "18701:46:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 66780,
                      "name": "_reserves",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67288,
                      "src": "18719:9:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                        "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                      }
                    },
                    "id": 66782,
                    "indexExpression": {
                      "id": 66781,
                      "name": "reserveId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66773,
                      "src": "18729:9:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "18719:20:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                      "typeString": "struct DataTypes.Reserve storage ref"
                    }
                  },
                  "functionReturnParameters": 66779,
                  "id": 66783,
                  "nodeType": "Return",
                  "src": "18712:27:143"
                }
              ]
            },
            "baseFunctions": [
              46969
            ],
            "documentation": {
              "id": 66771,
              "nodeType": "StructuredDocumentation",
              "src": "18375:165:143",
              "text": " @dev Returns the state and configuration of the reserve\n @param reserveId The id of the reserve\n @return The state of the reserve*"
            },
            "functionSelector": "77778db3",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReserve",
            "nameLocation": "18555:10:143",
            "overrides": {
              "id": 66775,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "18642:8:143"
            },
            "parameters": {
              "id": 66774,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66773,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "18584:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66785,
                  "src": "18576:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66772,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18576:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18565:35:143"
            },
            "returnParameters": {
              "id": 66779,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66778,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66785,
                  "src": "18669:24:143",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Reserve_$63713_memory_ptr",
                    "typeString": "struct DataTypes.Reserve"
                  },
                  "typeName": {
                    "id": 66777,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 66776,
                      "name": "DataTypes.Reserve",
                      "nameLocations": [
                        "18669:9:143",
                        "18679:7:143"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 63713,
                      "src": "18669:17:143"
                    },
                    "referencedDeclaration": 63713,
                    "src": "18669:17:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Reserve_$63713_storage_ptr",
                      "typeString": "struct DataTypes.Reserve"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18668:26:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66810,
            "nodeType": "FunctionDefinition",
            "src": "18755:307:143",
            "nodes": [],
            "body": {
              "id": 66809,
              "nodeType": "Block",
              "src": "18981:81:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 66799,
                          "name": "_reserveIds",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67296,
                          "src": "18999:11:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$",
                            "typeString": "mapping(address => mapping(address => mapping(uint256 => uint256)))"
                          }
                        },
                        "id": 66801,
                        "indexExpression": {
                          "id": 66800,
                          "name": "collateral",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 66787,
                          "src": "19011:10:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "18999:23:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                          "typeString": "mapping(address => mapping(uint256 => uint256))"
                        }
                      },
                      "id": 66803,
                      "indexExpression": {
                        "id": 66802,
                        "name": "asset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66789,
                        "src": "19023:5:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "18999:30:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 66807,
                    "indexExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 66806,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 66804,
                        "name": "maxTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66791,
                        "src": "19030:10:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "id": 66805,
                        "name": "minTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66793,
                        "src": "19043:10:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "19030:23:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "18999:55:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 66798,
                  "id": 66808,
                  "nodeType": "Return",
                  "src": "18992:62:143"
                }
              ]
            },
            "baseFunctions": [
              46982
            ],
            "functionSelector": "52120e23",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReserveId",
            "nameLocation": "18764:12:143",
            "overrides": {
              "id": 66795,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "18938:8:143"
            },
            "parameters": {
              "id": 66794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66787,
                  "mutability": "mutable",
                  "name": "collateral",
                  "nameLocation": "18795:10:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66810,
                  "src": "18787:18:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66786,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18787:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66789,
                  "mutability": "mutable",
                  "name": "asset",
                  "nameLocation": "18824:5:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66810,
                  "src": "18816:13:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66788,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18816:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66791,
                  "mutability": "mutable",
                  "name": "maxTokenId",
                  "nameLocation": "18849:10:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66810,
                  "src": "18841:18:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66790,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18841:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66793,
                  "mutability": "mutable",
                  "name": "minTokenId",
                  "nameLocation": "18878:10:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66810,
                  "src": "18870:18:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66792,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18870:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18776:119:143"
            },
            "returnParameters": {
              "id": 66798,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66797,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66810,
                  "src": "18966:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66796,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18966:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18965:9:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66847,
            "nodeType": "FunctionDefinition",
            "src": "19070:308:143",
            "nodes": [],
            "body": {
              "id": 66846,
              "nodeType": "Block",
              "src": "19203:175:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 66823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 66817,
                      "name": "reservesList",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66815,
                      "src": "19214:12:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 66821,
                          "name": "_reservesCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67312,
                          "src": "19243:14:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 66820,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "19229:13:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (uint256[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 66818,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "19233:7:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 66819,
                          "nodeType": "ArrayTypeName",
                          "src": "19233:9:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        }
                      },
                      "id": 66822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19229:29:143",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "19214:44:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "id": 66824,
                  "nodeType": "ExpressionStatement",
                  "src": "19214:44:143"
                },
                {
                  "body": {
                    "id": 66844,
                    "nodeType": "Block",
                    "src": "19311:60:143",
                    "statements": [
                      {
                        "expression": {
                          "id": 66842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 66835,
                              "name": "reservesList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 66815,
                              "src": "19326:12:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 66837,
                            "indexExpression": {
                              "id": 66836,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 66826,
                              "src": "19339:1:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "19326:15:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 66838,
                                "name": "_reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 67288,
                                "src": "19344:9:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                                  "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                                }
                              },
                              "id": 66840,
                              "indexExpression": {
                                "id": 66839,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 66826,
                                "src": "19354:1:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "19344:12:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                                "typeString": "struct DataTypes.Reserve storage ref"
                              }
                            },
                            "id": 66841,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "19357:2:143",
                            "memberName": "id",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63696,
                            "src": "19344:15:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19326:33:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 66843,
                        "nodeType": "ExpressionStatement",
                        "src": "19326:33:143"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 66831,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 66829,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66826,
                      "src": "19286:1:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 66830,
                      "name": "_reservesCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67312,
                      "src": "19290:14:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19286:18:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 66845,
                  "initializationExpression": {
                    "assignments": [
                      66826
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 66826,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "19279:1:143",
                        "nodeType": "VariableDeclaration",
                        "scope": 66845,
                        "src": "19274:6:143",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 66825,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19274:4:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 66828,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 66827,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19283:1:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19274:10:143"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 66833,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "19306:3:143",
                      "subExpression": {
                        "id": 66832,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66826,
                        "src": "19306:1:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66834,
                    "nodeType": "ExpressionStatement",
                    "src": "19306:3:143"
                  },
                  "nodeType": "ForStatement",
                  "src": "19269:102:143"
                }
              ]
            },
            "baseFunctions": [
              46988
            ],
            "functionSelector": "d1946dbc",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReservesList",
            "nameLocation": "19079:15:143",
            "overrides": {
              "id": 66812,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "19139:8:143"
            },
            "parameters": {
              "id": 66811,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19094:2:143"
            },
            "returnParameters": {
              "id": 66816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66815,
                  "mutability": "mutable",
                  "name": "reservesList",
                  "nameLocation": "19183:12:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66847,
                  "src": "19166:29:143",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66813,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "19166:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 66814,
                    "nodeType": "ArrayTypeName",
                    "src": "19166:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19165:31:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66857,
            "nodeType": "FunctionDefinition",
            "src": "19386:182:143",
            "nodes": [],
            "body": {
              "id": 66856,
              "nodeType": "Block",
              "src": "19516:52:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 66854,
                    "name": "_initializedCollateralList",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 67303,
                    "src": "19534:26:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 66853,
                  "id": 66855,
                  "nodeType": "Return",
                  "src": "19527:33:143"
                }
              ]
            },
            "baseFunctions": [
              46994
            ],
            "functionSelector": "31e884bb",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getInitializedCollaterals",
            "nameLocation": "19395:25:143",
            "overrides": {
              "id": 66849,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "19465:8:143"
            },
            "parameters": {
              "id": 66848,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19420:2:143"
            },
            "returnParameters": {
              "id": 66853,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66852,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66857,
                  "src": "19492:16:143",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66850,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "19492:7:143",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 66851,
                    "nodeType": "ArrayTypeName",
                    "src": "19492:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19491:18:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66867,
            "nodeType": "FunctionDefinition",
            "src": "19576:172:143",
            "nodes": [],
            "body": {
              "id": 66866,
              "nodeType": "Block",
              "src": "19701:47:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 66864,
                    "name": "_initializedAssetList",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 67310,
                    "src": "19719:21:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 66863,
                  "id": 66865,
                  "nodeType": "Return",
                  "src": "19712:28:143"
                }
              ]
            },
            "baseFunctions": [
              47000
            ],
            "functionSelector": "3b4ecdb2",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getInitializedAssets",
            "nameLocation": "19585:20:143",
            "overrides": {
              "id": 66859,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "19650:8:143"
            },
            "parameters": {
              "id": 66858,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19605:2:143"
            },
            "returnParameters": {
              "id": 66863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66862,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66867,
                  "src": "19677:16:143",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 66860,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "19677:7:143",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 66861,
                    "nodeType": "ArrayTypeName",
                    "src": "19677:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19676:18:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66877,
            "nodeType": "FunctionDefinition",
            "src": "19866:119:143",
            "nodes": [],
            "body": {
              "id": 66876,
              "nodeType": "Block",
              "src": "19939:46:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 66874,
                    "name": "_maxNumberOfReserves",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 67314,
                    "src": "19957:20:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 66873,
                  "id": 66875,
                  "nodeType": "Return",
                  "src": "19950:27:143"
                }
              ]
            },
            "baseFunctions": [
              47010
            ],
            "documentation": {
              "id": 66868,
              "nodeType": "StructuredDocumentation",
              "src": "19756:104:143",
              "text": " @dev Returns the maximum number of reserves supported to be listed in this LendPool"
            },
            "functionSelector": "08ac08b9",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getMaxNumberOfReserves",
            "nameLocation": "19875:22:143",
            "overrides": {
              "id": 66870,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "19912:8:143"
            },
            "parameters": {
              "id": 66869,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19897:2:143"
            },
            "returnParameters": {
              "id": 66873,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66872,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66877,
                  "src": "19930:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66871,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19930:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19929:9:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 66933,
            "nodeType": "FunctionDefinition",
            "src": "20541:613:143",
            "nodes": [],
            "body": {
              "id": 66932,
              "nodeType": "Block",
              "src": "20824:330:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 66896,
                    "name": "from",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 66882,
                    "src": "20835:4:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 66897,
                  "nodeType": "ExpressionStatement",
                  "src": "20835:4:143"
                },
                {
                  "expression": {
                    "id": 66898,
                    "name": "to",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 66884,
                    "src": "20850:2:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 66899,
                  "nodeType": "ExpressionStatement",
                  "src": "20850:2:143"
                },
                {
                  "expression": {
                    "id": 66900,
                    "name": "amount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 66886,
                    "src": "20863:6:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 66901,
                  "nodeType": "ExpressionStatement",
                  "src": "20863:6:143"
                },
                {
                  "expression": {
                    "id": 66902,
                    "name": "balanceFromBefore",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 66888,
                    "src": "20880:17:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 66903,
                  "nodeType": "ExpressionStatement",
                  "src": "20880:17:143"
                },
                {
                  "expression": {
                    "id": 66904,
                    "name": "balanceToBefore",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 66890,
                    "src": "20908:15:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 66905,
                  "nodeType": "ExpressionStatement",
                  "src": "20908:15:143"
                },
                {
                  "assignments": [
                    66910
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 66910,
                      "mutability": "mutable",
                      "name": "reserve",
                      "nameLocation": "20962:7:143",
                      "nodeType": "VariableDeclaration",
                      "scope": 66932,
                      "src": "20936:33:143",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Reserve_$63713_storage_ptr",
                        "typeString": "struct DataTypes.Reserve"
                      },
                      "typeName": {
                        "id": 66909,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 66908,
                          "name": "DataTypes.Reserve",
                          "nameLocations": [
                            "20936:9:143",
                            "20946:7:143"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 63713,
                          "src": "20936:17:143"
                        },
                        "referencedDeclaration": 63713,
                        "src": "20936:17:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reserve_$63713_storage_ptr",
                          "typeString": "struct DataTypes.Reserve"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 66914,
                  "initialValue": {
                    "baseExpression": {
                      "id": 66911,
                      "name": "_reserves",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67288,
                      "src": "20972:9:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                        "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                      }
                    },
                    "id": 66913,
                    "indexExpression": {
                      "id": 66912,
                      "name": "reserveId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 66880,
                      "src": "20982:9:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "20972:20:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                      "typeString": "struct DataTypes.Reserve storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20936:56:143"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 66920,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 66916,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              67261
                            ],
                            "referencedDeclaration": 67261,
                            "src": "21011:10:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 66917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21011:12:143",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 66918,
                            "name": "reserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66910,
                            "src": "21027:7:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Reserve_$63713_storage_ptr",
                              "typeString": "struct DataTypes.Reserve storage pointer"
                            }
                          },
                          "id": 66919,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "21035:13:143",
                          "memberName": "fTokenAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 63686,
                          "src": "21027:21:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "21011:37:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "expression": {
                          "id": 66921,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 56900,
                          "src": "21050:6:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$56900_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 66922,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "21057:27:143",
                        "memberName": "LP_CALLER_MUST_BE_AN_FTOKEN",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 56638,
                        "src": "21050:34:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 66915,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "21003:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 66923,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21003:82:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66924,
                  "nodeType": "ExpressionStatement",
                  "src": "21003:82:143"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66928,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66882,
                        "src": "21131:4:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 66929,
                        "name": "reserve",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66910,
                        "src": "21137:7:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reserve_$63713_storage_ptr",
                          "typeString": "struct DataTypes.Reserve storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Reserve_$63713_storage_ptr",
                          "typeString": "struct DataTypes.Reserve storage pointer"
                        }
                      ],
                      "expression": {
                        "id": 66925,
                        "name": "ValidationLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62908,
                        "src": "21098:15:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ValidationLogic_$62908_$",
                          "typeString": "type(library ValidationLogic)"
                        }
                      },
                      "id": 66927,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "21114:16:143",
                      "memberName": "validateTransfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 62661,
                      "src": "21098:32:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_struct$_Reserve_$63713_storage_ptr_$returns$__$",
                        "typeString": "function (address,struct DataTypes.Reserve storage pointer) pure"
                      }
                    },
                    "id": 66930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21098:47:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 66931,
                  "nodeType": "ExpressionStatement",
                  "src": "21098:47:143"
                }
              ]
            },
            "baseFunctions": [
              46954
            ],
            "documentation": {
              "id": 66878,
              "nodeType": "StructuredDocumentation",
              "src": "19993:542:143",
              "text": " @dev Validates and finalizes an fToken transfer\n - Only callable by the overlying fToken of the `asset`  \n @param reserveId The id of the fToken reserve\n @param from The user from which the fToken are transferred\n @param to The user receiving the fTokens\n @param amount The amount being transferred/withdrawn\n @param balanceFromBefore The fToken balance of the `from` user before the transfer\n @param balanceToBefore The fToken balance of the `to` user before the transfer"
            },
            "functionSelector": "6c130dc7",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 66894,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 66893,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "20804:13:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66116,
                  "src": "20804:13:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "20804:13:143"
              }
            ],
            "name": "finalizeTransfer",
            "nameLocation": "20550:16:143",
            "overrides": {
              "id": 66892,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "20786:8:143"
            },
            "parameters": {
              "id": 66891,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66880,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "20585:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66933,
                  "src": "20577:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66879,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20577:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66882,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "20613:4:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66933,
                  "src": "20605:12:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66881,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20605:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66884,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "20636:2:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66933,
                  "src": "20628:10:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66883,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20628:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66886,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "20657:6:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66933,
                  "src": "20649:14:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66885,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20649:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66888,
                  "mutability": "mutable",
                  "name": "balanceFromBefore",
                  "nameLocation": "20682:17:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66933,
                  "src": "20674:25:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66887,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20674:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66890,
                  "mutability": "mutable",
                  "name": "balanceToBefore",
                  "nameLocation": "20718:15:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66933,
                  "src": "20710:23:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66889,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20710:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20566:174:143"
            },
            "returnParameters": {
              "id": 66895,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20824:0:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66948,
            "nodeType": "FunctionDefinition",
            "src": "21162:164:143",
            "nodes": [],
            "body": {
              "id": 66947,
              "nodeType": "Block",
              "src": "21258:68:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "baseExpression": {
                          "id": 66941,
                          "name": "_reserves",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67288,
                          "src": "21276:9:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                            "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                          }
                        },
                        "id": 66943,
                        "indexExpression": {
                          "id": 66942,
                          "name": "reserveId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 66935,
                          "src": "21286:9:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "21276:20:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                          "typeString": "struct DataTypes.Reserve storage ref"
                        }
                      },
                      "id": 66944,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "21297:19:143",
                      "memberName": "getNormalizedIncome",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 60773,
                      "src": "21276:40:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Reserve_$63713_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Reserve_$63713_storage_ptr_$",
                        "typeString": "function (struct DataTypes.Reserve storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 66945,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21276:42:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 66940,
                  "id": 66946,
                  "nodeType": "Return",
                  "src": "21269:49:143"
                }
              ]
            },
            "baseFunctions": [
              46898
            ],
            "functionSelector": "dcc5cded",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReserveNormalizedIncome",
            "nameLocation": "21171:26:143",
            "overrides": {
              "id": 66937,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "21231:8:143"
            },
            "parameters": {
              "id": 66936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66935,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "21206:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66948,
                  "src": "21198:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66934,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21198:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21197:19:143"
            },
            "returnParameters": {
              "id": 66940,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66939,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66948,
                  "src": "21249:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66938,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21249:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21248:9:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66964,
            "nodeType": "FunctionDefinition",
            "src": "21520:168:143",
            "nodes": [],
            "body": {
              "id": 66963,
              "nodeType": "Block",
              "src": "21622:66:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "baseExpression": {
                          "id": 66957,
                          "name": "_reserves",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67288,
                          "src": "21640:9:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                            "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                          }
                        },
                        "id": 66959,
                        "indexExpression": {
                          "id": 66958,
                          "name": "reserveId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 66951,
                          "src": "21650:9:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "21640:20:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                          "typeString": "struct DataTypes.Reserve storage ref"
                        }
                      },
                      "id": 66960,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "21661:17:143",
                      "memberName": "getNormalizedDebt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 60815,
                      "src": "21640:38:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Reserve_$63713_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Reserve_$63713_storage_ptr_$",
                        "typeString": "function (struct DataTypes.Reserve storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 66961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21640:40:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 66956,
                  "id": 66962,
                  "nodeType": "Return",
                  "src": "21633:47:143"
                }
              ]
            },
            "baseFunctions": [
              46961
            ],
            "documentation": {
              "id": 66949,
              "nodeType": "StructuredDocumentation",
              "src": "21334:180:143",
              "text": " @dev Returns the normalized variable debt per unit of asset\n @param reserveId The min id of the reserve\n @return The reserve normalized variable debt"
            },
            "functionSelector": "9034c18c",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReserveNormalizedVariableDebt",
            "nameLocation": "21529:32:143",
            "overrides": {
              "id": 66953,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "21595:8:143"
            },
            "parameters": {
              "id": 66952,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66951,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "21570:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66964,
                  "src": "21562:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66950,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21562:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21561:19:143"
            },
            "returnParameters": {
              "id": 66956,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66955,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66964,
                  "src": "21613:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66954,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21613:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21612:9:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 66983,
            "nodeType": "FunctionDefinition",
            "src": "21899:185:143",
            "nodes": [],
            "body": {
              "id": 66982,
              "nodeType": "Block",
              "src": "22007:77:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 66979,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 66969,
                        "src": "22071:4:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "baseExpression": {
                          "id": 66975,
                          "name": "_reserves",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67288,
                          "src": "22025:9:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                            "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                          }
                        },
                        "id": 66977,
                        "indexExpression": {
                          "id": 66976,
                          "name": "reserveId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 66967,
                          "src": "22035:9:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "22025:20:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                          "typeString": "struct DataTypes.Reserve storage ref"
                        }
                      },
                      "id": 66978,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "22046:24:143",
                      "memberName": "getReserveUserStableRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 60835,
                      "src": "22025:45:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Reserve_$63713_storage_ptr_$_t_address_$returns$_t_uint256_$bound_to$_t_struct$_Reserve_$63713_storage_ptr_$",
                        "typeString": "function (struct DataTypes.Reserve storage pointer,address) view returns (uint256)"
                      }
                    },
                    "id": 66980,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22025:51:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 66974,
                  "id": 66981,
                  "nodeType": "Return",
                  "src": "22018:58:143"
                }
              ]
            },
            "baseFunctions": [
              46907
            ],
            "documentation": {
              "id": 66965,
              "nodeType": "StructuredDocumentation",
              "src": "21696:197:143",
              "text": " @dev Returns the reserve user stable rate\n @param reserveId The min id of the reserve\n @param user The address of the user\n @return The reserve user stable rate"
            },
            "functionSelector": "2e4e8eb4",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReserveUserStableRate",
            "nameLocation": "21908:24:143",
            "overrides": {
              "id": 66971,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "21980:8:143"
            },
            "parameters": {
              "id": 66970,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66967,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "21941:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66983,
                  "src": "21933:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66966,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21933:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66969,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "21960:4:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 66983,
                  "src": "21952:12:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 66968,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21952:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21932:33:143"
            },
            "returnParameters": {
              "id": 66974,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66973,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 66983,
                  "src": "21998:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66972,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21998:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21997:9:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 67005,
            "nodeType": "FunctionDefinition",
            "src": "22246:285:143",
            "nodes": [],
            "body": {
              "id": 67004,
              "nodeType": "Block",
              "src": "22460:71:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "expression": {
                          "baseExpression": {
                            "id": 66997,
                            "name": "_reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 67288,
                            "src": "22478:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                              "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                            }
                          },
                          "id": 66999,
                          "indexExpression": {
                            "id": 66998,
                            "name": "reserveId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 66986,
                            "src": "22488:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "22478:20:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                            "typeString": "struct DataTypes.Reserve storage ref"
                          }
                        },
                        "id": 67000,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "22499:13:143",
                        "memberName": "configuration",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 63680,
                        "src": "22478:34:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$63746_storage",
                          "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                        }
                      },
                      "id": 67001,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "22513:8:143",
                      "memberName": "getFlags",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 56338,
                      "src": "22478:43:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$63746_storage_ptr_$returns$_t_bool_$_t_bool_$_t_bool_$_t_bool_$bound_to$_t_struct$_ReserveConfigurationMap_$63746_storage_ptr_$",
                        "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (bool,bool,bool,bool)"
                      }
                    },
                    "id": 67002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22478:45:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                      "typeString": "tuple(bool,bool,bool,bool)"
                    }
                  },
                  "functionReturnParameters": 66996,
                  "id": 67003,
                  "nodeType": "Return",
                  "src": "22471:52:143"
                }
              ]
            },
            "documentation": {
              "id": 66984,
              "nodeType": "StructuredDocumentation",
              "src": "22092:148:143",
              "text": " @dev Returns the state of the resev\n @param reserveId The min id of the reserve\n @return The reserve user stable rate"
            },
            "functionSelector": "993ff816",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReserveFlags",
            "nameLocation": "22255:15:143",
            "parameters": {
              "id": 66987,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66986,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "22279:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67005,
                  "src": "22271:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66985,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22271:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22270:19:143"
            },
            "returnParameters": {
              "id": 66996,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 66989,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67005,
                  "src": "22379:4:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 66988,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22379:4:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66991,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67005,
                  "src": "22399:4:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 66990,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22399:4:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66993,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67005,
                  "src": "22418:4:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 66992,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22418:4:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 66995,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67005,
                  "src": "22438:4:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 66994,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22438:4:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22364:89:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 67024,
            "nodeType": "FunctionDefinition",
            "src": "22812:219:143",
            "nodes": [],
            "body": {
              "id": 67023,
              "nodeType": "Block",
              "src": "22958:73:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 67021,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "baseExpression": {
                          "id": 67016,
                          "name": "_reserves",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67288,
                          "src": "22969:9:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                            "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                          }
                        },
                        "id": 67018,
                        "indexExpression": {
                          "id": 67017,
                          "name": "reserveId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67008,
                          "src": "22979:9:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "22969:20:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                          "typeString": "struct DataTypes.Reserve storage ref"
                        }
                      },
                      "id": 67019,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "22990:19:143",
                      "memberName": "interestRateAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 63692,
                      "src": "22969:40:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 67020,
                      "name": "rateAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67010,
                      "src": "23012:11:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "22969:54:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 67022,
                  "nodeType": "ExpressionStatement",
                  "src": "22969:54:143"
                }
              ]
            },
            "baseFunctions": [
              47024
            ],
            "documentation": {
              "id": 67006,
              "nodeType": "StructuredDocumentation",
              "src": "22539:267:143",
              "text": " @dev Updates the address of the interest rate strategy contract\n - Only callable by the Configurator contract\n @param reserveId The min id of the reserve\n @param rateAddress The address of the interest rate strategy contract*"
            },
            "functionSelector": "19322775",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 67014,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 67013,
                  "name": "onlyConfigurator",
                  "nameLocations": [
                    "22936:16:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66109,
                  "src": "22936:16:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "22936:16:143"
              }
            ],
            "name": "setReserveInterestRateAddress",
            "nameLocation": "22821:29:143",
            "overrides": {
              "id": 67012,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "22918:8:143"
            },
            "parameters": {
              "id": 67011,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67008,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "22859:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67024,
                  "src": "22851:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67007,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22851:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67010,
                  "mutability": "mutable",
                  "name": "rateAddress",
                  "nameLocation": "22878:11:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67024,
                  "src": "22870:19:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 67009,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "22870:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22850:40:143"
            },
            "returnParameters": {
              "id": 67015,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22958:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 67044,
            "nodeType": "FunctionDefinition",
            "src": "23289:184:143",
            "nodes": [],
            "body": {
              "id": 67043,
              "nodeType": "Block",
              "src": "23399:74:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 67041,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "expression": {
                          "baseExpression": {
                            "id": 67035,
                            "name": "_reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 67288,
                            "src": "23410:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                              "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                            }
                          },
                          "id": 67037,
                          "indexExpression": {
                            "id": 67036,
                            "name": "reserveId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 67027,
                            "src": "23420:9:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23410:20:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                            "typeString": "struct DataTypes.Reserve storage ref"
                          }
                        },
                        "id": 67038,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "23431:13:143",
                        "memberName": "configuration",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 63680,
                        "src": "23410:34:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$63746_storage",
                          "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                        }
                      },
                      "id": 67039,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "23445:4:143",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 63745,
                      "src": "23410:39:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 67040,
                      "name": "configuration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67029,
                      "src": "23452:13:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23410:55:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 67042,
                  "nodeType": "ExpressionStatement",
                  "src": "23410:55:143"
                }
              ]
            },
            "baseFunctions": [
              47031
            ],
            "documentation": {
              "id": 67025,
              "nodeType": "StructuredDocumentation",
              "src": "23039:244:143",
              "text": " @dev Sets the configuration bitmap of the reserve as a whole\n - Only callable by the Configurator contract\n @param reserveId The min id of the reserve\n @param configuration The new configuration bitmap*"
            },
            "functionSelector": "89a7245d",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 67033,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 67032,
                  "name": "onlyConfigurator",
                  "nameLocations": [
                    "23382:16:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66109,
                  "src": "23382:16:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "23382:16:143"
              }
            ],
            "name": "setReserveConfiguration",
            "nameLocation": "23298:23:143",
            "overrides": {
              "id": 67031,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "23373:8:143"
            },
            "parameters": {
              "id": 67030,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67027,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "23330:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67044,
                  "src": "23322:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67026,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23322:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67029,
                  "mutability": "mutable",
                  "name": "configuration",
                  "nameLocation": "23349:13:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67044,
                  "src": "23341:21:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67028,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23341:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23321:42:143"
            },
            "returnParameters": {
              "id": 67034,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23399:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 67065,
            "nodeType": "FunctionDefinition",
            "src": "23481:201:143",
            "nodes": [],
            "body": {
              "id": 67064,
              "nodeType": "Block",
              "src": "23586:96:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 67061,
                        "name": "creator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67048,
                        "src": "23666:7:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "expression": {
                              "baseExpression": {
                                "id": 67055,
                                "name": "_reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 67288,
                                "src": "23605:9:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                                  "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                                }
                              },
                              "id": 67057,
                              "indexExpression": {
                                "id": 67056,
                                "name": "reserveId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 67046,
                                "src": "23615:9:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "23605:20:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                                "typeString": "struct DataTypes.Reserve storage ref"
                              }
                            },
                            "id": 67058,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "23626:13:143",
                            "memberName": "fTokenAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63686,
                            "src": "23605:34:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 67054,
                          "name": "IFToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 46422,
                          "src": "23597:7:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IFToken_$46422_$",
                            "typeString": "type(contract IFToken)"
                          }
                        },
                        "id": 67059,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23597:43:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IFToken_$46422",
                          "typeString": "contract IFToken"
                        }
                      },
                      "id": 67060,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "23641:24:143",
                      "memberName": "setReserveCreatorAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 46361,
                      "src": "23597:68:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 67062,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23597:77:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 67063,
                  "nodeType": "ExpressionStatement",
                  "src": "23597:77:143"
                }
              ]
            },
            "baseFunctions": [
              47038
            ],
            "functionSelector": "bbce5cf3",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 67052,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 67051,
                  "name": "onlyConfigurator",
                  "nameLocations": [
                    "23569:16:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66109,
                  "src": "23569:16:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "23569:16:143"
              }
            ],
            "name": "setReserveCreatorAddress",
            "nameLocation": "23490:24:143",
            "overrides": {
              "id": 67050,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "23560:8:143"
            },
            "parameters": {
              "id": 67049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67046,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "23523:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67065,
                  "src": "23515:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67045,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23515:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67048,
                  "mutability": "mutable",
                  "name": "creator",
                  "nameLocation": "23542:7:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67065,
                  "src": "23534:15:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 67047,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "23534:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23514:36:143"
            },
            "returnParameters": {
              "id": 67053,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23586:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 67086,
            "nodeType": "FunctionDefinition",
            "src": "23690:213:143",
            "nodes": [],
            "body": {
              "id": 67085,
              "nodeType": "Block",
              "src": "23801:102:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 67082,
                        "name": "percentage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67069,
                        "src": "23884:10:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "expression": {
                              "baseExpression": {
                                "id": 67076,
                                "name": "_reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 67288,
                                "src": "23820:9:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                                  "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                                }
                              },
                              "id": 67078,
                              "indexExpression": {
                                "id": 67077,
                                "name": "reserveId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 67067,
                                "src": "23830:9:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "23820:20:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                                "typeString": "struct DataTypes.Reserve storage ref"
                              }
                            },
                            "id": 67079,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "23841:13:143",
                            "memberName": "fTokenAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63686,
                            "src": "23820:34:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 67075,
                          "name": "IFToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 46422,
                          "src": "23812:7:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IFToken_$46422_$",
                            "typeString": "type(contract IFToken)"
                          }
                        },
                        "id": 67080,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23812:43:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IFToken_$46422",
                          "typeString": "contract IFToken"
                        }
                      },
                      "id": 67081,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "23856:27:143",
                      "memberName": "setReserveCreatorPercentage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 46371,
                      "src": "23812:71:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 67083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23812:83:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 67084,
                  "nodeType": "ExpressionStatement",
                  "src": "23812:83:143"
                }
              ]
            },
            "baseFunctions": [
              47045
            ],
            "functionSelector": "e49c8a52",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 67073,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 67072,
                  "name": "onlyConfigurator",
                  "nameLocations": [
                    "23784:16:143"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 66109,
                  "src": "23784:16:143"
                },
                "nodeType": "ModifierInvocation",
                "src": "23784:16:143"
              }
            ],
            "name": "setReserveCreatorPercentage",
            "nameLocation": "23699:27:143",
            "overrides": {
              "id": 67071,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "23775:8:143"
            },
            "parameters": {
              "id": 67070,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67067,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "23735:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67086,
                  "src": "23727:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67066,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23727:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67069,
                  "mutability": "mutable",
                  "name": "percentage",
                  "nameLocation": "23754:10:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67086,
                  "src": "23746:18:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67068,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23746:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23726:39:143"
            },
            "returnParameters": {
              "id": 67074,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23801:0:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 67105,
            "nodeType": "FunctionDefinition",
            "src": "23913:252:143",
            "nodes": [],
            "body": {
              "id": 67104,
              "nodeType": "Block",
              "src": "24012:153:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 67099,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67283,
                        "src": "24081:16:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      {
                        "id": 67100,
                        "name": "_reserves",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67288,
                        "src": "24113:9:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        }
                      },
                      {
                        "id": 67101,
                        "name": "borrowId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67088,
                        "src": "24138:8:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                          "typeString": "contract IAddressProvider"
                        },
                        {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                          "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 67097,
                        "name": "LiquidateLogic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 60459,
                        "src": "24030:14:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_LiquidateLogic_$60459_$",
                          "typeString": "type(library LiquidateLogic)"
                        }
                      },
                      "id": 67098,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "24045:21:143",
                      "memberName": "getBorrowHealthFactor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 60458,
                      "src": "24030:36:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_contract$_IAddressProvider_$45420_$_t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (contract IAddressProvider,mapping(uint256 => struct DataTypes.Reserve storage ref),uint256) view returns (uint256,uint256,uint256)"
                      }
                    },
                    "id": 67102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24030:127:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 67096,
                  "id": 67103,
                  "nodeType": "Return",
                  "src": "24023:134:143"
                }
              ]
            },
            "baseFunctions": [
              47056
            ],
            "functionSelector": "c46a90f5",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBorrowHealthFactor",
            "nameLocation": "23922:21:143",
            "parameters": {
              "id": 67089,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67088,
                  "mutability": "mutable",
                  "name": "borrowId",
                  "nameLocation": "23952:8:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67105,
                  "src": "23944:16:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67087,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23944:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23943:18:143"
            },
            "returnParameters": {
              "id": 67096,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67091,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67105,
                  "src": "23985:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67090,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23985:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67093,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67105,
                  "src": "23994:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67092,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23994:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67095,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67105,
                  "src": "24003:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67094,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24003:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23984:27:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 67130,
            "nodeType": "FunctionDefinition",
            "src": "24173:280:143",
            "nodes": [],
            "body": {
              "id": 67129,
              "nodeType": "Block",
              "src": "24275:178:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "components": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "expression": {
                              "baseExpression": {
                                "id": 67115,
                                "name": "_reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 67288,
                                "src": "24308:9:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                                  "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                                }
                              },
                              "id": 67117,
                              "indexExpression": {
                                "id": 67116,
                                "name": "reserveId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 67107,
                                "src": "24318:9:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24308:20:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                                "typeString": "struct DataTypes.Reserve storage ref"
                              }
                            },
                            "id": 67118,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "24329:13:143",
                            "memberName": "configuration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63680,
                            "src": "24308:34:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$63746_storage",
                              "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                            }
                          },
                          "id": 67119,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24343:19:143",
                          "memberName": "getLiquidationBonus",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 55827,
                          "src": "24308:54:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$63746_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$63746_storage_ptr_$",
                            "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (uint256)"
                          }
                        },
                        "id": 67120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24308:56:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "expression": {
                              "baseExpression": {
                                "id": 67121,
                                "name": "_reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 67288,
                                "src": "24379:9:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Reserve_$63713_storage_$",
                                  "typeString": "mapping(uint256 => struct DataTypes.Reserve storage ref)"
                                }
                              },
                              "id": 67123,
                              "indexExpression": {
                                "id": 67122,
                                "name": "reserveId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 67107,
                                "src": "24389:9:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24379:20:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Reserve_$63713_storage",
                                "typeString": "struct DataTypes.Reserve storage ref"
                              }
                            },
                            "id": 67124,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "24400:13:143",
                            "memberName": "configuration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 63680,
                            "src": "24379:34:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$63746_storage",
                              "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                            }
                          },
                          "id": 67125,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24414:18:143",
                          "memberName": "getAuctionDuration",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 56202,
                          "src": "24379:53:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$63746_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$63746_storage_ptr_$",
                            "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (uint256)"
                          }
                        },
                        "id": 67126,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24379:55:143",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 67127,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "24293:152:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 67114,
                  "id": 67128,
                  "nodeType": "Return",
                  "src": "24286:159:143"
                }
              ]
            },
            "baseFunctions": [
              46891
            ],
            "functionSelector": "a58497a5",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAuctionConfiguration",
            "nameLocation": "24182:23:143",
            "overrides": {
              "id": 67109,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "24239:8:143"
            },
            "parameters": {
              "id": 67108,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67107,
                  "mutability": "mutable",
                  "name": "reserveId",
                  "nameLocation": "24214:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67130,
                  "src": "24206:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67106,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24206:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24205:19:143"
            },
            "returnParameters": {
              "id": 67114,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67111,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67130,
                  "src": "24257:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67110,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24257:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67113,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67130,
                  "src": "24266:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67112,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24266:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24256:18:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 67150,
            "nodeType": "FunctionDefinition",
            "src": "24714:164:143",
            "nodes": [],
            "body": {
              "id": 67149,
              "nodeType": "Block",
              "src": "24822:56:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "expression": {
                        "id": 67145,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -28,
                        "src": "24840:4:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_LendingPool_$67262",
                          "typeString": "contract LendingPool"
                        }
                      },
                      "id": 67146,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "24845:16:143",
                      "memberName": "onERC721Received",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 67150,
                      "src": "24840:21:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                        "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                      }
                    },
                    "id": 67147,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "24862:8:143",
                    "memberName": "selector",
                    "nodeType": "MemberAccess",
                    "src": "24840:30:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 67144,
                  "id": 67148,
                  "nodeType": "Return",
                  "src": "24833:37:143"
                }
              ]
            },
            "baseFunctions": [
              28518
            ],
            "documentation": {
              "id": 67131,
              "nodeType": "StructuredDocumentation",
              "src": "24461:247:143",
              "text": "@notice For the receiving of ERC721 tokens to this contract address.\n @dev An ERC721 `safeTransferFrom` will revert unless this Solidity selector is returned.\n @return Always returns `IERC721Receiver.onERC721Received.selector`."
            },
            "functionSelector": "150b7a02",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "onERC721Received",
            "nameLocation": "24723:16:143",
            "overrides": {
              "id": 67141,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "24796:8:143"
            },
            "parameters": {
              "id": 67140,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67133,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67150,
                  "src": "24740:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 67132,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "24740:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67135,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67150,
                  "src": "24749:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 67134,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "24749:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67137,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67150,
                  "src": "24758:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67136,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24758:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67139,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67150,
                  "src": "24767:12:143",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 67138,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "24767:5:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24739:41:143"
            },
            "returnParameters": {
              "id": 67144,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67143,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67150,
                  "src": "24814:6:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 67142,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "24814:6:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24813:8:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 67172,
            "nodeType": "FunctionDefinition",
            "src": "25143:175:143",
            "nodes": [],
            "body": {
              "id": 67171,
              "nodeType": "Block",
              "src": "25261:57:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "expression": {
                        "id": 67167,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -28,
                        "src": "25279:4:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_LendingPool_$67262",
                          "typeString": "contract LendingPool"
                        }
                      },
                      "id": 67168,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "25284:17:143",
                      "memberName": "onERC1155Received",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 67172,
                      "src": "25279:22:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                      }
                    },
                    "id": 67169,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "25302:8:143",
                    "memberName": "selector",
                    "nodeType": "MemberAccess",
                    "src": "25279:31:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 67166,
                  "id": 67170,
                  "nodeType": "Return",
                  "src": "25272:38:143"
                }
              ]
            },
            "baseFunctions": [
              26358
            ],
            "documentation": {
              "id": 67151,
              "nodeType": "StructuredDocumentation",
              "src": "24886:251:143",
              "text": "@notice For the receiving of ERC1155 tokens to this contract address.\n @dev An ERC1155 `safeTransferFrom` will revert unless this Solidity selector is returned.\n @return Always returns `IERC1155Receiver.onERC1155Received.selector`."
            },
            "functionSelector": "f23a6e61",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "onERC1155Received",
            "nameLocation": "25152:17:143",
            "overrides": {
              "id": 67163,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "25235:8:143"
            },
            "parameters": {
              "id": 67162,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67153,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67172,
                  "src": "25170:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 67152,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25170:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67155,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67172,
                  "src": "25179:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 67154,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25179:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67157,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67172,
                  "src": "25188:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67156,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "25188:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67159,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67172,
                  "src": "25197:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67158,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "25197:7:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67161,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67172,
                  "src": "25206:12:143",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 67160,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "25206:5:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25169:50:143"
            },
            "returnParameters": {
              "id": 67166,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67165,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67172,
                  "src": "25253:6:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 67164,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "25253:6:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25252:8:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 67197,
            "nodeType": "FunctionDefinition",
            "src": "25608:213:143",
            "nodes": [],
            "body": {
              "id": 67196,
              "nodeType": "Block",
              "src": "25757:64:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 67192,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 56900,
                          "src": "25775:6:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$56900_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 67193,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "25782:30:143",
                        "memberName": "CT_ERC1155_BATCH_NOT_SUPPORTED",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 56746,
                        "src": "25775:37:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 67191,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "25768:6:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 67194,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25768:45:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 67195,
                  "nodeType": "ExpressionStatement",
                  "src": "25768:45:143"
                }
              ]
            },
            "baseFunctions": [
              26376
            ],
            "documentation": {
              "id": 67173,
              "nodeType": "StructuredDocumentation",
              "src": "25326:276:143",
              "text": "@notice For the receiving of multiple ERC1155 tokens types to this contract address.\n @dev An ERC1155 `safeBatchTransferFrom` will revert unless this Solidity selector is returned.\n @return Always returns `IERC1155Receiver.onERC1155BatchReceived.selector`."
            },
            "functionSelector": "bc197c81",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "onERC1155BatchReceived",
            "nameLocation": "25617:22:143",
            "overrides": {
              "id": 67187,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "25731:8:143"
            },
            "parameters": {
              "id": 67186,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67175,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67197,
                  "src": "25640:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 67174,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25640:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67177,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67197,
                  "src": "25649:7:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 67176,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25649:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67180,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67197,
                  "src": "25658:18:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 67178,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "25658:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 67179,
                    "nodeType": "ArrayTypeName",
                    "src": "25658:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67183,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67197,
                  "src": "25678:18:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 67181,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "25678:7:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 67182,
                    "nodeType": "ArrayTypeName",
                    "src": "25678:9:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67185,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67197,
                  "src": "25698:14:143",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 67184,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "25698:5:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25639:74:143"
            },
            "returnParameters": {
              "id": 67190,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67189,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67197,
                  "src": "25749:6:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 67188,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "25749:6:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25748:8:143"
            },
            "scope": 67262,
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "external"
          },
          {
            "id": 67228,
            "nodeType": "FunctionDefinition",
            "src": "26036:338:143",
            "nodes": [],
            "body": {
              "id": 67227,
              "nodeType": "Block",
              "src": "26128:246:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 67225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 67218,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 67211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 67206,
                          "name": "_interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67200,
                          "src": "26159:12:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 67208,
                                "name": "IERC1155ReceiverUpgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26377,
                                "src": "26180:27:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC1155ReceiverUpgradeable_$26377_$",
                                  "typeString": "type(contract IERC1155ReceiverUpgradeable)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_contract$_IERC1155ReceiverUpgradeable_$26377_$",
                                  "typeString": "type(contract IERC1155ReceiverUpgradeable)"
                                }
                              ],
                              "id": 67207,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "26175:4:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 67209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26175:33:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155ReceiverUpgradeable_$26377",
                              "typeString": "type(contract IERC1155ReceiverUpgradeable)"
                            }
                          },
                          "id": 67210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26209:11:143",
                          "memberName": "interfaceId",
                          "nodeType": "MemberAccess",
                          "src": "26175:45:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "26159:61:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 67217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 67212,
                          "name": "_interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67200,
                          "src": "26237:12:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 67214,
                                "name": "IERC721ReceiverUpgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28519,
                                "src": "26258:26:143",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721ReceiverUpgradeable_$28519_$",
                                  "typeString": "type(contract IERC721ReceiverUpgradeable)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721ReceiverUpgradeable_$28519_$",
                                  "typeString": "type(contract IERC721ReceiverUpgradeable)"
                                }
                              ],
                              "id": 67213,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "26253:4:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 67215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26253:32:143",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721ReceiverUpgradeable_$28519",
                              "typeString": "type(contract IERC721ReceiverUpgradeable)"
                            }
                          },
                          "id": 67216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26286:11:143",
                          "memberName": "interfaceId",
                          "nodeType": "MemberAccess",
                          "src": "26253:44:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "26237:60:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "26159:138:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 67224,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 67219,
                        "name": "_interfaceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67200,
                        "src": "26314:12:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 67221,
                              "name": "IERC165Upgradeable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 29293,
                              "src": "26335:18:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$29293_$",
                                "typeString": "type(contract IERC165Upgradeable)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_contract$_IERC165Upgradeable_$29293_$",
                                "typeString": "type(contract IERC165Upgradeable)"
                              }
                            ],
                            "id": 67220,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -27,
                            "src": "26330:4:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 67222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26330:24:143",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165Upgradeable_$29293",
                            "typeString": "type(contract IERC165Upgradeable)"
                          }
                        },
                        "id": 67223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "26355:11:143",
                        "memberName": "interfaceId",
                        "nodeType": "MemberAccess",
                        "src": "26330:36:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "26314:52:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "26159:207:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 67205,
                  "id": 67226,
                  "nodeType": "Return",
                  "src": "26139:227:143"
                }
              ]
            },
            "baseFunctions": [
              29292
            ],
            "documentation": {
              "id": 67198,
              "nodeType": "StructuredDocumentation",
              "src": "25829:201:143",
              "text": "@dev Checks whether this contract implements the interface defined by `interfaceId`.\n @param _interfaceId Id of the interface\n @return true if this contract implements the interface"
            },
            "functionSelector": "01ffc9a7",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nameLocation": "26045:17:143",
            "overrides": {
              "id": 67202,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "26104:8:143"
            },
            "parameters": {
              "id": 67201,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67200,
                  "mutability": "mutable",
                  "name": "_interfaceId",
                  "nameLocation": "26070:12:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67228,
                  "src": "26063:19:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 67199,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "26063:6:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26062:21:143"
            },
            "returnParameters": {
              "id": 67205,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67204,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67228,
                  "src": "26122:4:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 67203,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26122:4:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26121:6:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 67242,
            "nodeType": "FunctionDefinition",
            "src": "26415:153:143",
            "nodes": [],
            "body": {
              "id": 67241,
              "nodeType": "Block",
              "src": "26491:77:143",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 67239,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 67235,
                      "name": "forwarder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67230,
                      "src": "26509:9:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 67236,
                          "name": "_addressProvider",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67283,
                          "src": "26522:16:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAddressProvider_$45420",
                            "typeString": "contract IAddressProvider"
                          }
                        },
                        "id": 67237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "26539:19:143",
                        "memberName": "getExecutionManager",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 45169,
                        "src": "26522:36:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                          "typeString": "function () view external returns (address)"
                        }
                      },
                      "id": 67238,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "26522:38:143",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "26509:51:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 67234,
                  "id": 67240,
                  "nodeType": "Return",
                  "src": "26502:58:143"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isTrustedForwarder",
            "nameLocation": "26424:18:143",
            "parameters": {
              "id": 67231,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67230,
                  "mutability": "mutable",
                  "name": "forwarder",
                  "nameLocation": "26451:9:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67242,
                  "src": "26443:17:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 67229,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "26443:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26442:19:143"
            },
            "returnParameters": {
              "id": 67234,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67233,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 67242,
                  "src": "26485:4:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 67232,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26485:4:143",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26484:6:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 67261,
            "nodeType": "FunctionDefinition",
            "src": "26576:410:143",
            "nodes": [],
            "body": {
              "id": 67260,
              "nodeType": "Block",
              "src": "26654:332:143",
              "nodes": [],
              "statements": [
                {
                  "condition": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 67249,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "26688:3:143",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 67250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "26692:6:143",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "26688:10:143",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 67248,
                      "name": "isTrustedForwarder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67242,
                      "src": "26669:18:143",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 67251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26669:30:143",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 67258,
                    "nodeType": "Block",
                    "src": "26927:52:143",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 67254,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "26949:5:143",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_LendingPool_$67262_$",
                                "typeString": "type(contract super LendingPool)"
                              }
                            },
                            "id": 67255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "26955:10:143",
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28973,
                            "src": "26949:16:143",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 67256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26949:18:143",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 67247,
                        "id": 67257,
                        "nodeType": "Return",
                        "src": "26942:25:143"
                      }
                    ]
                  },
                  "id": 67259,
                  "nodeType": "IfStatement",
                  "src": "26665:314:143",
                  "trueBody": {
                    "id": 67253,
                    "nodeType": "Block",
                    "src": "26701:220:143",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "26820:90:143",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "26839:56:143",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26853:2:143",
                                    "type": "",
                                    "value": "96"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "calldatasize",
                                              "nodeType": "YulIdentifier",
                                              "src": "26874:12:143"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "26874:14:143"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "26890:2:143",
                                            "type": "",
                                            "value": "20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "26870:3:143"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "26870:23:143"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "26857:12:143"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26857:37:143"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "26849:3:143"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26849:46:143"
                              },
                              "variableNames": [
                                {
                                  "name": "sender",
                                  "nodeType": "YulIdentifier",
                                  "src": "26839:6:143"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 67246,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "26839:6:143",
                            "valueSize": 1
                          }
                        ],
                        "id": 67252,
                        "nodeType": "InlineAssembly",
                        "src": "26811:99:143"
                      }
                    ]
                  }
                }
              ]
            },
            "baseFunctions": [
              28973
            ],
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_msgSender",
            "nameLocation": "26585:10:143",
            "overrides": {
              "id": 67244,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "26620:8:143"
            },
            "parameters": {
              "id": 67243,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26595:2:143"
            },
            "returnParameters": {
              "id": 67247,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 67246,
                  "mutability": "mutable",
                  "name": "sender",
                  "nameLocation": "26646:6:143",
                  "nodeType": "VariableDeclaration",
                  "scope": 67261,
                  "src": "26638:14:143",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 67245,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "26638:7:143",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26637:16:143"
            },
            "scope": 67262,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 66047,
              "name": "ILendingPool",
              "nameLocations": [
                "2529:12:143"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 47057,
              "src": "2529:12:143"
            },
            "id": 66048,
            "nodeType": "InheritanceSpecifier",
            "src": "2529:12:143"
          },
          {
            "baseName": {
              "id": 66049,
              "name": "ContextUpgradeable",
              "nameLocations": [
                "2549:18:143"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 28988,
              "src": "2549:18:143"
            },
            "id": 66050,
            "nodeType": "InheritanceSpecifier",
            "src": "2549:18:143"
          },
          {
            "baseName": {
              "id": 66051,
              "name": "ReentrancyGuardUpgradeable",
              "nameLocations": [
                "2575:26:143"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 26336,
              "src": "2575:26:143"
            },
            "id": 66052,
            "nodeType": "InheritanceSpecifier",
            "src": "2575:26:143"
          },
          {
            "baseName": {
              "id": 66053,
              "name": "IERC721ReceiverUpgradeable",
              "nameLocations": [
                "2608:26:143"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 28519,
              "src": "2608:26:143"
            },
            "id": 66054,
            "nodeType": "InheritanceSpecifier",
            "src": "2608:26:143"
          },
          {
            "baseName": {
              "id": 66055,
              "name": "IERC1155ReceiverUpgradeable",
              "nameLocations": [
                "2641:27:143"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 26377,
              "src": "2641:27:143"
            },
            "id": 66056,
            "nodeType": "InheritanceSpecifier",
            "src": "2641:27:143"
          },
          {
            "baseName": {
              "id": 66057,
              "name": "LendingPoolStorage",
              "nameLocations": [
                "2675:18:143"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 67334,
              "src": "2675:18:143"
            },
            "id": 66058,
            "nodeType": "InheritanceSpecifier",
            "src": "2675:18:143"
          }
        ],
        "canonicalName": "LendingPool",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 66046,
          "nodeType": "StructuredDocumentation",
          "src": "2211:288:143",
          "text": "@title Lending Pool contract for instant, permissionless NFT-backed loans\n @author FluidNFT\n @notice Allows for the borrow/repay of loans and deposit/withdraw of assets.\n @dev This is our protocol's point of access.\n - For Upgradeable DO NOT ADJUST inheritance order"
        },
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          67262,
          67334,
          26377,
          29293,
          28519,
          26336,
          28988,
          26136,
          47057
        ],
        "name": "LendingPool",
        "nameLocation": "2508:11:143",
        "scope": 67263,
        "usedErrors": []
      }
    ],
    "license": "AGPL-3.0"
  },
  "id": 143
}

Last updated