Debt Tokens

Debt tokens are interest-accruing tokens that are minted and burned on borrow and repay, representing the debt owed by the token holder. There are 2 types of debt tokens:

  • Stable debt tokens, representing a debt to the protocol with a stable interest rate

  • Variable debt tokens, representing a debt to the protocol with a variable interest rate

EIP20 Methods

Although debt tokens are modelled on the ERC20/EIP20 standard, they are non-transferrable. Therefore they do not implement any of the standard ERC20/EIP20 functions relating to transfer() and allowance().

balanceOf() will always return the most up to date accumulated debt of the user.

totalSupply() will always return the most up to date total debt accrued by all protocol users for that specific type (stable vs variable) of debt token.

Shared Methods

UNDERLYING_ASSET_ADDRESS()

function UNDERLYING_ASSET_ADDRESS()

Returns the underlying asset of the debt token.

POOL()

function POOL()

Returns the address of the associated LendingPool for the debt token.

approveDelegation**()**

function approveDelegation(address delegatee, uint256 amount)

Sets the amount of allowance for delegatee to borrow of a particular debt token.

Used in credit delegation.

Parameter Name
Type
Description

delegatee

address

the user receiving the allowance

amount

uint256

the allowance amounts given to user

borrowAllowance**()**

function borrowAllowance(address fromUser, address toUser)

Returns the borrow allowance toUser has been given by fromUser.

Used in credit delegation.

Parameter Name
Type
Description

fromUser

address

the user giving allowance

toUser

address

the user receiving the allowance

Returns the current allowance of toUser for a particular debt token.

Stable Debt Methods

getSupplyData**()**

function getSupplyData()

Returns the supply / deposit data for the debt token.

Return values

Type
Description

uint256

principal supply

uint256

total supply

uint256

average borrow rate

uint40

timestamp for last supply update

getTotalSupplyAndAvgRate**()**

function getTotalSupplyAndAvgRate()

Returns the total supply and average stable rate of the token.

Return values

Type
Description

uint256

total supply

uint256

average stable rate

principalBalanceOf()

function principalBalanceOf(address user)

Returns the principal debt balance of the user.

getUserLastUpdated**()**

function getUserLastUpdated(address user)

Returns the timestamp of the last action taken by user as uint40.

getAverageStableRate**()**

function getAverageStableRate()

Returns the average stable rate across all the stable rate debt in the protocol as uint256.

getUserStableRate**()**

function getUserStableRate(address user)

Returns the stable rate of user as uint256.

Variable Debt Methods

scaledBalanceOf**()**

function scaledBalanceOf(address user)

Returns the principal debt balance of user.

scaledTotalSupply**()**

function scaledTotalSupply()

Returns the scaled total supply of the variable debt token.

This represents sum(borrows/index)sum( borrows / index ) .

getScaledUserBalanceAndSupply**()**

function getScaledUserBalanceAndSupply(address user)

Returns the principal balance of the user and principal total supply.

Return values

Type
Description

uint256

principal balance of user

uint256

principal total supply

ABI

StableDebtToken ABI
{
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "fromUser",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "toUser",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "BorrowAllowanceDelegated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "currentBalance",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "balanceIncrease",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "avgStableRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTotalSupply",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "underlyingCollateral",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "underlyingAsset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "pool",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "incentivesController",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "debtTokenDecimals",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "debtTokenName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "debtTokenSymbol",
          "type": "string"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "currentBalance",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "balanceIncrease",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "avgStableRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTotalSupply",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "POOL",
      "outputs": [
        {
          "internalType": "contract ILendingPool",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UNDERLYING_ASSET_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approveDelegation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "fromUser",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "toUser",
          "type": "address"
        }
      ],
      "name": "borrowAllowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAverageStableRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPoolIncentivesController",
      "outputs": [
        {
          "internalType": "contract IPoolIncentivesController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSupplyData",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint40",
          "name": "",
          "type": "uint40"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTotalSupplyAndAvgRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTotalSupplyLastUpdated",
      "outputs": [
        {
          "internalType": "uint40",
          "name": "",
          "type": "uint40"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getUserLastUpdated",
      "outputs": [
        {
          "internalType": "uint40",
          "name": "",
          "type": "uint40"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getUserStableRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addressProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "underlyingCollateral",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "underlyingAsset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "underlyingMaxTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "underlyingMinTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "debtTokenDecimals",
          "type": "uint8"
        },
        {
          "internalType": "string",
          "name": "debtTokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "debtTokenSymbol",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "rate",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "principalBalanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611df1806100ed6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806390f6fcf2116100de578063b3f1c93d11610097578063dd62ed3e11610071578063dd62ed3e14610378578063e748489014610386578063e78c9b3b14610395578063f731e9be146103be57600080fd5b8063b3f1c93d1461033f578063c04a8a1014610352578063c634dfaa1461036557600080fd5b806390f6fcf2146102fd57806395d89b41146103055780639dc29fac1461030d578063a457c2d714610247578063a9059cbb14610320578063b16a19de1461032e57600080fd5b8063313ce5671161014b57806370a082311161012557806370a082311461026d5780637535d24614610280578063797743381461028857806379ce6b8c146102b757600080fd5b8063313ce5671461023257806339509351146102475780636bd76d241461025a57600080fd5b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d457806319ef9268146101ea5780631e5fa51f1461020a57806323b872dd1461021f575b600080fd5b61019b6103db565b6040516101a89190611885565b60405180910390f35b6101c46101bf3660046118b0565b61046d565b60405190151581526020016101a8565b6101dc6104b6565b6040519081526020016101a8565b6101f26104c8565b6040516001600160a01b0390911681526020016101a8565b61021d61021836600461197f565b6104d2565b005b6101c461022d366004611a47565b61069e565b60655460405160ff90911681526020016101a8565b6101c46102553660046118b0565b6106e2565b6101dc610268366004611a88565b61072d565b6101dc61027b366004611ac1565b61075a565b6101f26107d3565b6102906107dd565b6040805194855260208501939093529183015264ffffffffff1660608201526080016101a8565b6102e76102c5366004611ac1565b6001600160a01b03166000908152606d602052604090205464ffffffffff1690565b60405164ffffffffff90911681526020016101a8565b606c546101dc565b61019b610814565b61021d61031b3660046118b0565b610823565b6101c461022d3660046118b0565b6069546001600160a01b03166101f2565b6101c461034d366004611ade565b610af7565b61021d6103603660046118b0565b610e9c565b6101dc610373366004611ac1565b610f13565b6101dc610255366004611a88565b606f5464ffffffffff166102e7565b6101dc6103a3366004611ac1565b6001600160a01b03166000908152606e602052604090205490565b6103c6610f1e565b604080519283526020830191909152016101a8565b6060603680546103ea90611b24565b80601f016020809104026020016040519081016040528092919081815260200182805461041690611b24565b80156104635780601f1061043857610100808354040283529160200191610463565b820191906000526020600020905b81548152906001019060200180831161044657829003601f168201915b5050505050905090565b60405162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b60448201526000906064015b60405180910390fd5b60006104c3606c54610f37565b905090565b60006104c3610f82565b600054610100900460ff16158080156104f25750600054600160ff909116105b8061050c5750303b15801561050c575060005460ff166001145b61056f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104ad565b6000805460ff191660011790558015610592576000805461ff0019166101001790555b61059d838386610ff0565b606780546001600160a01b03808c166001600160a01b031992831617909255606880548b841690831617905560698054928a1692909116919091179055606a869055606b8590556105ec611012565b6001600160a01b0316876001600160a01b0316896001600160a01b03167fd59b5facb5e38ab634162423aec2545750f69daf91fe145954e2a2b449597d4c610632610f82565b8888886040516106459493929190611b5e565b60405180910390a48015610693576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b60405162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b60448201526000906064016104ad565b60405162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f5254454400000000000000000060448201526000906064016104ad565b6001600160a01b038083166000908152606660209081526040808320938516835292905220545b92915050565b6000806107668361105c565b6001600160a01b0384166000908152606e6020526040812054919250829003610793575060009392505050565b6001600160a01b0384166000908152606d60205260408120546107be90839064ffffffffff16611077565b90506107ca83826110bd565b95945050505050565b60006104c3611012565b6000806000806000606c5490506107f360355490565b6107fc82610f37565b606f54919790965091945064ffffffffff1692509050565b6060603780546103ea90611b24565b61082b611012565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906108795760405162461bcd60e51b81526004016104ad9190611885565b5060008061088684611100565b925092505060006108956104b6565b6001600160a01b0386166000908152606e60205260408120549192509081908684116108c5576000606c5561093d565b6108cf848861115c565b915060006108e86108df86611168565b606c54906110bd565b905060006108ff6108f88a611168565b84906110bd565b9050818110610916576000606c819055945061093a565b61093261092285611168565b61092c848461115c565b90611178565b606c81905594505b50505b85870361097a576001600160a01b0388166000908152606e60209081526040808320839055606d9091529020805464ffffffffff191690556109a8565b6001600160a01b0388166000908152606d60205260409020805464ffffffffff19164264ffffffffff161790555b606f805464ffffffffff19164264ffffffffff1617905586851115610a495760006109d3868961115c565b90506109e08982876111ac565b6040805182815260208101899052908101879052606081018390526080810185905260a081018490526001600160a01b038a169081907fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9060c00160405180910390a350610abe565b6000610a55888761115c565b9050610a6289828761124a565b604080518281526020810189905290810187905260608101859052608081018490526001600160a01b038a16907f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e89060a00160405180910390a2505b6040518781526000906001600160a01b038a1690600080516020611d9c8339815191529060200160405180910390a35050505050505050565b6000610b01611012565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610b4f5760405162461bcd60e51b81526004016104ad9190611885565b50610b826040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b846001600160a01b0316866001600160a01b031614158015610c2c5750606760009054906101000a90046001600160a01b03166001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c169190611ba8565b6001600160a01b0316866001600160a01b031614155b15610c3c57610c3c8587866112a0565b600080610c4887611100565b9250925050610c556104b6565b808452606c546080850152610c6a90876113c0565b6020840152610c7886611168565b6040840152610cd6610c92610c8d84896113c0565b611168565b604085015161092c90610ca590896110bd565b610cd0610cb187611168565b6001600160a01b038d166000908152606e6020526040902054906110bd565b906113c0565b6060840181905260408051808201909152600381526234383560e81b6020820152906fffffffffffffffffffffffffffffffff1015610d285760405162461bcd60e51b81526004016104ad9190611885565b5060608301516001600160a01b0388166000908152606e6020908152604080832093909355606d8152919020805464ffffffffff421664ffffffffff199182168117909255606f80549091169091179055830151610dbe90610d8990611168565b61092c610da38660400151896110bd90919063ffffffff16565b610cd0610db38860000151611168565b6080890151906110bd565b606c8190556080840152610ddd87610dd688846113c0565b85516111ac565b6040518681526001600160a01b03881690600090600080516020611d9c8339815191529060200160405180910390a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a60200151604051610e8896959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a350159695505050505050565b3360008181526066602090815260408083206001600160a01b038781168086529190935292208490556069549192917fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e19116604080516001600160a01b039092168252602082018690520160405180910390a35050565b60006107548261105c565b606c546000908190610f2f81610f37565b939092509050565b600080610f4360355490565b905080600003610f565750600092915050565b606f54600090610f6e90859064ffffffffff166113cc565b9050610f7a82826110bd565b949350505050565b6067546040805163033df24d60e31b815290516000926001600160a01b0316916319ef92689160048083019260209291908290030181865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190611ba8565b610ffa83836113d9565b6065805460ff191660ff929092169190911790555050565b60675460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015610fcc573d6000803e3d6000fd5b6001600160a01b031660009081526033602052604090205490565b60008061108b64ffffffffff841642611bdb565b90506b033b2e3c9fd0803ce80000006301e133806110a98387611bee565b6110b39190611c0d565b610f7a9190611c2f565b60006110f96b033b2e3c9fd0803ce80000006110f36110dc868661140e565b610cd060026b033b2e3c9fd0803ce8000000611c0d565b9061141a565b9392505050565b60008060008061110f8561105c565b90508060000361112a57600080600093509350935050611155565b600061113f826111398861075a565b9061115c565b90508161114c81836113c0565b90955093509150505b9193909250565b60006110f98284611bdb565b600061075482633b9aca0061140e565b600080611186600284611c0d565b9050610f7a836110f36111a5876b033b2e3c9fd0803ce800000061140e565b84906113c0565b60006111b78461105c565b90506111c38484611426565b60006111cd610f82565b90506001600160a01b03811615611243576040516318c39f1760e11b81526001600160a01b03868116600483015260248201859052604482018490528216906331873e2e90606401600060405180830381600087803b15801561122f57600080fd5b505af1158015610693573d6000803e3d6000fd5b5050505050565b60006112558461105c565b905082811015604051806040016040528060038152602001621a1c1b60e91b815250906112955760405162461bcd60e51b81526004016104ad9190611885565b506111c384846114dc565b6001600160a01b038084166000908152606660209081526040808320938616835292815290829020548251808401909352600383526235303360e81b918301919091528211156113035760405162461bcd60e51b81526004016104ad9190611885565b506001600160a01b038084166000908152606660209081526040808320938616835292905290812054611337908390611bdb565b6001600160a01b038086166000818152606660209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e16113996069546001600160a01b031690565b604080516001600160a01b039092168252602082018690520160405180910390a350505050565b60006110f98284611c2f565b60006110f9838342611500565b600054610100900460ff166114005760405162461bcd60e51b81526004016104ad90611c42565b61140a8282611629565b5050565b60006110f98284611bee565b60006110f98284611c0d565b600061143160355490565b9050600061143e8461105c565b905061144a848461166e565b6000611454610f82565b6001600160a01b0316146114d65761146a610f82565b6040516318c39f1760e11b81526001600160a01b038681166004830152602482018590526044820184905291909116906331873e2e90606401600060405180830381600087803b1580156114bd57600080fd5b505af11580156114d1573d6000803e3d6000fd5b505050505b50505050565b60006114e760355490565b905060006114f48461105c565b905061144a848461171d565b60008061151464ffffffffff851684611bdb565b905080600003611533576b033b2e3c9fd0803ce80000009150506110f9565b6000611540600183611bdb565b905060006002831161155357600061155e565b61155e600284611bdb565b905060006115706301e1338089611c0d565b9050600061157e82806110bd565b9050600061158c82846110bd565b9050600060028361159d888a611bee565b6115a79190611bee565b6115b19190611c0d565b90506000600683876115c38a8c611bee565b6115cd9190611bee565b6115d79190611bee565b6115e19190611c0d565b905080826115ef8a88611bee565b611605906b033b2e3c9fd0803ce8000000611c2f565b61160f9190611c2f565b6116199190611c2f565b9c9b505050505050505050505050565b600054610100900460ff166116505760405162461bcd60e51b81526004016104ad90611c42565b603661165c8382611cdb565b5060376116698282611cdb565b505050565b6001600160a01b0382166116c45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104ad565b80603560008282546116d69190611c2f565b90915550506001600160a01b038216600081815260336020908152604080832080548601905551848152600080516020611d9c833981519152910160405180910390a35050565b6001600160a01b03821661177d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104ad565b6001600160a01b038216600090815260336020526040902054818110156117f15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104ad565b6001600160a01b0383166000818152603360209081526040808320868603905560358054879003905551858152919291600080516020611d9c833981519152910160405180910390a3505050565b6000815180845260005b8181101561186557602081850181015186830182015201611849565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006110f9602083018461183f565b6001600160a01b03811681146118ad57600080fd5b50565b600080604083850312156118c357600080fd5b82356118ce81611898565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261190357600080fd5b813567ffffffffffffffff8082111561191e5761191e6118dc565b604051601f8301601f19908116603f01168101908282118183101715611946576119466118dc565b8160405283815286602085880101111561195f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600080600080610100898b03121561199c57600080fd5b88356119a781611898565b975060208901356119b781611898565b965060408901356119c781611898565b9550606089013594506080890135935060a089013560ff811681146119eb57600080fd5b925060c089013567ffffffffffffffff80821115611a0857600080fd5b611a148c838d016118f2565b935060e08b0135915080821115611a2a57600080fd5b50611a378b828c016118f2565b9150509295985092959890939650565b600080600060608486031215611a5c57600080fd5b8335611a6781611898565b92506020840135611a7781611898565b929592945050506040919091013590565b60008060408385031215611a9b57600080fd5b8235611aa681611898565b91506020830135611ab681611898565b809150509250929050565b600060208284031215611ad357600080fd5b81356110f981611898565b60008060008060808587031215611af457600080fd5b8435611aff81611898565b93506020850135611b0f81611898565b93969395505050506040820135916060013590565b600181811c90821680611b3857607f821691505b602082108103611b5857634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b038516815260ff84166020820152608060408201819052600090611b8b9083018561183f565b8281036060840152611b9d818561183f565b979650505050505050565b600060208284031215611bba57600080fd5b81516110f981611898565b634e487b7160e01b600052601160045260246000fd5b8181038181111561075457610754611bc5565b6000816000190483118215151615611c0857611c08611bc5565b500290565b600082611c2a57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561075457610754611bc5565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561166957600081815260208120601f850160051c81016020861015611cb45750805b601f850160051c820191505b81811015611cd357828155600101611cc0565b505050505050565b815167ffffffffffffffff811115611cf557611cf56118dc565b611d0981611d038454611b24565b84611c8d565b602080601f831160018114611d3e5760008415611d265750858301515b600019600386901b1c1916600185901b178555611cd3565b600085815260208120601f198616915b82811015611d6d57888601518255948401946001909101908401611d4e565b5085821015611d8b5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204f5f21f5925202fd57687ffc69e6cc118f51001ebb99222cf0b10110cd3e90ee64736f6c63430008100033",
    "sourceMap": "1327:15512:160:-:0;;;1948:55;;;;;;;;;-1:-1:-1;1973:22:160;:20;:22::i;:::-;1327:15512;;5928:279:18;5996:13;;;;;;;5995:14;5987:66;;;;-1:-1:-1;;;5987:66:18;;216:2:187;5987:66:18;;;198:21:187;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:187;;;338:37;392:19;;5987:66:18;;;;;;;;6067:12;;6082:15;6067:12;;;:30;6063:138;;;6113:12;:30;;-1:-1:-1;;6113:30:18;6128:15;6113:30;;;;;;6162:28;;564:36:187;;;6162:28:18;;552:2:187;537:18;6162:28:18;;;;;;;6063:138;5928:279::o;422:184:187:-;1327:15512:160;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806390f6fcf2116100de578063b3f1c93d11610097578063dd62ed3e11610071578063dd62ed3e14610378578063e748489014610386578063e78c9b3b14610395578063f731e9be146103be57600080fd5b8063b3f1c93d1461033f578063c04a8a1014610352578063c634dfaa1461036557600080fd5b806390f6fcf2146102fd57806395d89b41146103055780639dc29fac1461030d578063a457c2d714610247578063a9059cbb14610320578063b16a19de1461032e57600080fd5b8063313ce5671161014b57806370a082311161012557806370a082311461026d5780637535d24614610280578063797743381461028857806379ce6b8c146102b757600080fd5b8063313ce5671461023257806339509351146102475780636bd76d241461025a57600080fd5b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d457806319ef9268146101ea5780631e5fa51f1461020a57806323b872dd1461021f575b600080fd5b61019b6103db565b6040516101a89190611885565b60405180910390f35b6101c46101bf3660046118b0565b61046d565b60405190151581526020016101a8565b6101dc6104b6565b6040519081526020016101a8565b6101f26104c8565b6040516001600160a01b0390911681526020016101a8565b61021d61021836600461197f565b6104d2565b005b6101c461022d366004611a47565b61069e565b60655460405160ff90911681526020016101a8565b6101c46102553660046118b0565b6106e2565b6101dc610268366004611a88565b61072d565b6101dc61027b366004611ac1565b61075a565b6101f26107d3565b6102906107dd565b6040805194855260208501939093529183015264ffffffffff1660608201526080016101a8565b6102e76102c5366004611ac1565b6001600160a01b03166000908152606d602052604090205464ffffffffff1690565b60405164ffffffffff90911681526020016101a8565b606c546101dc565b61019b610814565b61021d61031b3660046118b0565b610823565b6101c461022d3660046118b0565b6069546001600160a01b03166101f2565b6101c461034d366004611ade565b610af7565b61021d6103603660046118b0565b610e9c565b6101dc610373366004611ac1565b610f13565b6101dc610255366004611a88565b606f5464ffffffffff166102e7565b6101dc6103a3366004611ac1565b6001600160a01b03166000908152606e602052604090205490565b6103c6610f1e565b604080519283526020830191909152016101a8565b6060603680546103ea90611b24565b80601f016020809104026020016040519081016040528092919081815260200182805461041690611b24565b80156104635780601f1061043857610100808354040283529160200191610463565b820191906000526020600020905b81548152906001019060200180831161044657829003601f168201915b5050505050905090565b60405162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b60448201526000906064015b60405180910390fd5b60006104c3606c54610f37565b905090565b60006104c3610f82565b600054610100900460ff16158080156104f25750600054600160ff909116105b8061050c5750303b15801561050c575060005460ff166001145b61056f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104ad565b6000805460ff191660011790558015610592576000805461ff0019166101001790555b61059d838386610ff0565b606780546001600160a01b03808c166001600160a01b031992831617909255606880548b841690831617905560698054928a1692909116919091179055606a869055606b8590556105ec611012565b6001600160a01b0316876001600160a01b0316896001600160a01b03167fd59b5facb5e38ab634162423aec2545750f69daf91fe145954e2a2b449597d4c610632610f82565b8888886040516106459493929190611b5e565b60405180910390a48015610693576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b60405162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b60448201526000906064016104ad565b60405162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f5254454400000000000000000060448201526000906064016104ad565b6001600160a01b038083166000908152606660209081526040808320938516835292905220545b92915050565b6000806107668361105c565b6001600160a01b0384166000908152606e6020526040812054919250829003610793575060009392505050565b6001600160a01b0384166000908152606d60205260408120546107be90839064ffffffffff16611077565b90506107ca83826110bd565b95945050505050565b60006104c3611012565b6000806000806000606c5490506107f360355490565b6107fc82610f37565b606f54919790965091945064ffffffffff1692509050565b6060603780546103ea90611b24565b61082b611012565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906108795760405162461bcd60e51b81526004016104ad9190611885565b5060008061088684611100565b925092505060006108956104b6565b6001600160a01b0386166000908152606e60205260408120549192509081908684116108c5576000606c5561093d565b6108cf848861115c565b915060006108e86108df86611168565b606c54906110bd565b905060006108ff6108f88a611168565b84906110bd565b9050818110610916576000606c819055945061093a565b61093261092285611168565b61092c848461115c565b90611178565b606c81905594505b50505b85870361097a576001600160a01b0388166000908152606e60209081526040808320839055606d9091529020805464ffffffffff191690556109a8565b6001600160a01b0388166000908152606d60205260409020805464ffffffffff19164264ffffffffff161790555b606f805464ffffffffff19164264ffffffffff1617905586851115610a495760006109d3868961115c565b90506109e08982876111ac565b6040805182815260208101899052908101879052606081018390526080810185905260a081018490526001600160a01b038a169081907fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9060c00160405180910390a350610abe565b6000610a55888761115c565b9050610a6289828761124a565b604080518281526020810189905290810187905260608101859052608081018490526001600160a01b038a16907f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e89060a00160405180910390a2505b6040518781526000906001600160a01b038a1690600080516020611d9c8339815191529060200160405180910390a35050505050505050565b6000610b01611012565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610b4f5760405162461bcd60e51b81526004016104ad9190611885565b50610b826040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b846001600160a01b0316866001600160a01b031614158015610c2c5750606760009054906101000a90046001600160a01b03166001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c169190611ba8565b6001600160a01b0316866001600160a01b031614155b15610c3c57610c3c8587866112a0565b600080610c4887611100565b9250925050610c556104b6565b808452606c546080850152610c6a90876113c0565b6020840152610c7886611168565b6040840152610cd6610c92610c8d84896113c0565b611168565b604085015161092c90610ca590896110bd565b610cd0610cb187611168565b6001600160a01b038d166000908152606e6020526040902054906110bd565b906113c0565b6060840181905260408051808201909152600381526234383560e81b6020820152906fffffffffffffffffffffffffffffffff1015610d285760405162461bcd60e51b81526004016104ad9190611885565b5060608301516001600160a01b0388166000908152606e6020908152604080832093909355606d8152919020805464ffffffffff421664ffffffffff199182168117909255606f80549091169091179055830151610dbe90610d8990611168565b61092c610da38660400151896110bd90919063ffffffff16565b610cd0610db38860000151611168565b6080890151906110bd565b606c8190556080840152610ddd87610dd688846113c0565b85516111ac565b6040518681526001600160a01b03881690600090600080516020611d9c8339815191529060200160405180910390a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a60200151604051610e8896959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a350159695505050505050565b3360008181526066602090815260408083206001600160a01b038781168086529190935292208490556069549192917fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e19116604080516001600160a01b039092168252602082018690520160405180910390a35050565b60006107548261105c565b606c546000908190610f2f81610f37565b939092509050565b600080610f4360355490565b905080600003610f565750600092915050565b606f54600090610f6e90859064ffffffffff166113cc565b9050610f7a82826110bd565b949350505050565b6067546040805163033df24d60e31b815290516000926001600160a01b0316916319ef92689160048083019260209291908290030181865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190611ba8565b610ffa83836113d9565b6065805460ff191660ff929092169190911790555050565b60675460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015610fcc573d6000803e3d6000fd5b6001600160a01b031660009081526033602052604090205490565b60008061108b64ffffffffff841642611bdb565b90506b033b2e3c9fd0803ce80000006301e133806110a98387611bee565b6110b39190611c0d565b610f7a9190611c2f565b60006110f96b033b2e3c9fd0803ce80000006110f36110dc868661140e565b610cd060026b033b2e3c9fd0803ce8000000611c0d565b9061141a565b9392505050565b60008060008061110f8561105c565b90508060000361112a57600080600093509350935050611155565b600061113f826111398861075a565b9061115c565b90508161114c81836113c0565b90955093509150505b9193909250565b60006110f98284611bdb565b600061075482633b9aca0061140e565b600080611186600284611c0d565b9050610f7a836110f36111a5876b033b2e3c9fd0803ce800000061140e565b84906113c0565b60006111b78461105c565b90506111c38484611426565b60006111cd610f82565b90506001600160a01b03811615611243576040516318c39f1760e11b81526001600160a01b03868116600483015260248201859052604482018490528216906331873e2e90606401600060405180830381600087803b15801561122f57600080fd5b505af1158015610693573d6000803e3d6000fd5b5050505050565b60006112558461105c565b905082811015604051806040016040528060038152602001621a1c1b60e91b815250906112955760405162461bcd60e51b81526004016104ad9190611885565b506111c384846114dc565b6001600160a01b038084166000908152606660209081526040808320938616835292815290829020548251808401909352600383526235303360e81b918301919091528211156113035760405162461bcd60e51b81526004016104ad9190611885565b506001600160a01b038084166000908152606660209081526040808320938616835292905290812054611337908390611bdb565b6001600160a01b038086166000818152606660209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e16113996069546001600160a01b031690565b604080516001600160a01b039092168252602082018690520160405180910390a350505050565b60006110f98284611c2f565b60006110f9838342611500565b600054610100900460ff166114005760405162461bcd60e51b81526004016104ad90611c42565b61140a8282611629565b5050565b60006110f98284611bee565b60006110f98284611c0d565b600061143160355490565b9050600061143e8461105c565b905061144a848461166e565b6000611454610f82565b6001600160a01b0316146114d65761146a610f82565b6040516318c39f1760e11b81526001600160a01b038681166004830152602482018590526044820184905291909116906331873e2e90606401600060405180830381600087803b1580156114bd57600080fd5b505af11580156114d1573d6000803e3d6000fd5b505050505b50505050565b60006114e760355490565b905060006114f48461105c565b905061144a848461171d565b60008061151464ffffffffff851684611bdb565b905080600003611533576b033b2e3c9fd0803ce80000009150506110f9565b6000611540600183611bdb565b905060006002831161155357600061155e565b61155e600284611bdb565b905060006115706301e1338089611c0d565b9050600061157e82806110bd565b9050600061158c82846110bd565b9050600060028361159d888a611bee565b6115a79190611bee565b6115b19190611c0d565b90506000600683876115c38a8c611bee565b6115cd9190611bee565b6115d79190611bee565b6115e19190611c0d565b905080826115ef8a88611bee565b611605906b033b2e3c9fd0803ce8000000611c2f565b61160f9190611c2f565b6116199190611c2f565b9c9b505050505050505050505050565b600054610100900460ff166116505760405162461bcd60e51b81526004016104ad90611c42565b603661165c8382611cdb565b5060376116698282611cdb565b505050565b6001600160a01b0382166116c45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104ad565b80603560008282546116d69190611c2f565b90915550506001600160a01b038216600081815260336020908152604080832080548601905551848152600080516020611d9c833981519152910160405180910390a35050565b6001600160a01b03821661177d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104ad565b6001600160a01b038216600090815260336020526040902054818110156117f15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104ad565b6001600160a01b0383166000818152603360209081526040808320868603905560358054879003905551858152919291600080516020611d9c833981519152910160405180910390a3505050565b6000815180845260005b8181101561186557602081850181015186830182015201611849565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006110f9602083018461183f565b6001600160a01b03811681146118ad57600080fd5b50565b600080604083850312156118c357600080fd5b82356118ce81611898565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261190357600080fd5b813567ffffffffffffffff8082111561191e5761191e6118dc565b604051601f8301601f19908116603f01168101908282118183101715611946576119466118dc565b8160405283815286602085880101111561195f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600080600080610100898b03121561199c57600080fd5b88356119a781611898565b975060208901356119b781611898565b965060408901356119c781611898565b9550606089013594506080890135935060a089013560ff811681146119eb57600080fd5b925060c089013567ffffffffffffffff80821115611a0857600080fd5b611a148c838d016118f2565b935060e08b0135915080821115611a2a57600080fd5b50611a378b828c016118f2565b9150509295985092959890939650565b600080600060608486031215611a5c57600080fd5b8335611a6781611898565b92506020840135611a7781611898565b929592945050506040919091013590565b60008060408385031215611a9b57600080fd5b8235611aa681611898565b91506020830135611ab681611898565b809150509250929050565b600060208284031215611ad357600080fd5b81356110f981611898565b60008060008060808587031215611af457600080fd5b8435611aff81611898565b93506020850135611b0f81611898565b93969395505050506040820135916060013590565b600181811c90821680611b3857607f821691505b602082108103611b5857634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b038516815260ff84166020820152608060408201819052600090611b8b9083018561183f565b8281036060840152611b9d818561183f565b979650505050505050565b600060208284031215611bba57600080fd5b81516110f981611898565b634e487b7160e01b600052601160045260246000fd5b8181038181111561075457610754611bc5565b6000816000190483118215151615611c0857611c08611bc5565b500290565b600082611c2a57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561075457610754611bc5565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561166957600081815260208120601f850160051c81016020861015611cb45750805b601f850160051c820191505b81811015611cd357828155600101611cc0565b505050505050565b815167ffffffffffffffff811115611cf557611cf56118dc565b611d0981611d038454611b24565b84611c8d565b602080601f831160018114611d3e5760008415611d265750858301515b600019600386901b1c1916600185901b178555611cd3565b600085815260208120601f198616915b82811015611d6d57888601518255948401946001909101908401611d4e565b5085821015611d8b5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204f5f21f5925202fd57687ffc69e6cc118f51001ebb99222cf0b10110cd3e90ee64736f6c63430008100033",
    "sourceMap": "1327:15512:160:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:98:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2948:248:162;;;;;;:::i;:::-;;:::i;:::-;;;1288:14:187;;1281:22;1263:41;;1251:2;1236:18;2948:248:162;1123:187:187;12485:204:160;;;:::i;:::-;;;1461:25:187;;;1449:2;1434:18;12485:204:160;1315:177:187;13772:154:160;;;:::i;:::-;;;-1:-1:-1;;;;;1696:32:187;;;1678:51;;1666:2;1651:18;13772:154:160;1497:238:187;2692:1049:160;;;;;;:::i;:::-;;:::i;:::-;;3202:320:162;;;;;;:::i;:::-;;:::i;1025:145:163:-;1149:15;;1025:145;;1149:15;;;;4470:36:187;;4458:2;4443:18;1025:145:163;4328:184:187;3528:226:162;;;;;;:::i;:::-;;:::i;2064:195::-;;;;;;:::i;:::-;;:::i;4682:531:160:-;;;;;;:::i;:::-;;:::i;13582:94::-;;;:::i;11795:343::-;;;:::i;:::-;;;;5621:25:187;;;5677:2;5662:18;;5655:34;;;;5705:18;;;5698:34;5780:12;5768:25;5763:2;5748:18;;5741:53;5608:3;5593:19;11795:343:160;5392:408:187;4128:133:160;;;;;;:::i;:::-;-1:-1:-1;;;;;4236:17:160;4210:6;4236:17;;;:11;:17;;;;;;;;;4128:133;;;;5979:12:187;5967:25;;;5949:44;;5937:2;5922:18;4128:133:160;5805:194:187;3882:121:160;3981:14;;3882:121;;2702:102:23;;;:::i;8118:2582:160:-;;;;;;:::i;:::-;;:::i;2421:253:162:-;;;;;;:::i;13370:108:160:-;13454:16;;-1:-1:-1;;;;;13454:16:160;13370:108;;5992:1938;;;;;;:::i;:::-;;:::i;1593:250:162:-;;;;;;:::i;:::-;;:::i;13113:138:160:-;;;;;;:::i;:::-;;:::i;2680:262:162:-;;;;;;:::i;12787:122:160:-;12880:21;;;;12787:122;;4417:138;;;;;;:::i;:::-;-1:-1:-1;;;;;4525:22:160;4498:7;4525:22;;;:16;:22;;;;;;;4417:138;12233:189;;;:::i;:::-;;;;6916:25:187;;;6972:2;6957:18;;6950:34;;;;6889:18;12233:189:160;6742:248:187;2491:98:23;2545:13;2577:5;2570:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:98;:::o;2948:248:162:-;3157:32;;-1:-1:-1;;;3157:32:162;;7582:2:187;3157:32:162;;;7564:21:187;7621:2;7601:18;;;7594:30;-1:-1:-1;;;7640:18:187;;;7633:52;3103:4:162;;7702:18:187;;3157:32:162;;;;;;;;12485:204:160;12616:7;12649:32;12666:14;;12649:16;:32::i;:::-;12642:39;;12485:204;:::o;13772:154::-;13843:25;13888:30;:28;:30::i;2692:1049::-;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;;7933:2:187;3314:201:18;;;7915:21:187;7972:2;7952:18;;;7945:30;8011:34;7991:18;;;7984:62;-1:-1:-1;;;8062:18:187;;;8055:44;8116:19;;3314:201:18;7731:410:187;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;3091:75:160::1;3116:13;3131:15;3148:17;3091:24;:75::i;:::-;3179:16;:52:::0;;-1:-1:-1;;;;;3179:52:160;;::::1;-1:-1:-1::0;;;;;;3179:52:160;;::::1;;::::0;;;3244:21:::1;:44:::0;;;;::::1;::::0;;::::1;;::::0;;3299:16:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3344:21:::1;:44:::0;;;3399:21:::1;:44:::0;;;3560:17:::1;:15;:17::i;:::-;-1:-1:-1::0;;;;;3461:272:160::1;3522:15;-1:-1:-1::0;;;;;3461:272:160::1;3487:20;-1:-1:-1::0;;;;;3461:272:160::1;;3601:30;:28;:30::i;:::-;3647:17;3679:13;3707:15;3461:272;;;;;;;;;:::i;:::-;;;;;;;;3640:14:18::0;3636:99;;;3686:5;3670:21;;-1:-1:-1;;3670:21:18;;;3710:14;;-1:-1:-1;4470:36:187;;3710:14:18;;4458:2:187;4443:18;3710:14:18;;;;;;;3636:99;3258:483;2692:1049:160;;;;;;;;:::o;3202:320:162:-;3483:32;;-1:-1:-1;;;3483:32:162;;9112:2:187;3483:32:162;;;9094:21:187;9151:2;9131:18;;;9124:30;-1:-1:-1;;;9170:18:187;;;9163:52;3411:4:162;;9232:18:187;;3483:32:162;8910:346:187;3528:226:162;3714:33;;-1:-1:-1;;;3714:33:162;;9463:2:187;3714:33:162;;;9445:21:187;9502:2;9482:18;;;9475:30;9541:25;9521:18;;;9514:53;3657:4:162;;9584:18:187;;3714:33:162;9261:347:187;2064:195:162;-1:-1:-1;;;;;2217:27:162;;;2187:7;2217:27;;;:17;:27;;;;;;;;:35;;;;;;;;;;2064:195;;;;;:::o;4682:531:160:-;4844:7;4870:22;4895:24;4911:7;4895:15;:24::i;:::-;-1:-1:-1;;;;;4951:25:160;;4930:18;4951:25;;;:16;:25;;;;;;4870:49;;-1:-1:-1;4991:19:160;;;4987:60;;-1:-1:-1;5034:1:160;;4682:531;-1:-1:-1;;;4682:531:160:o;4987:60::-;-1:-1:-1;;;;;5135:20:160;;5057:16;5135:20;;;:11;:20;;;;;;5089:67;;5123:10;;5135:20;;5089:33;:67::i;:::-;5057:99;-1:-1:-1;5174:31:160;:14;5057:99;5174:21;:31::i;:::-;5167:38;4682:531;-1:-1:-1;;;;;4682:531:160:o;13582:94::-;13619:12;13651:17;:15;:17::i;11795:343::-;11900:7;11922;11944;11966:6;12000:15;12018:14;;12000:32;;12051:19;3666:12:23;;;3579:106;12051:19:160;12072:25;12089:7;12072:16;:25::i;:::-;12108:21;;12043:87;;;;-1:-1:-1;12099:7:160;;-1:-1:-1;12108:21:160;;;-1:-1:-1;11795:343:160;-1:-1:-1;11795:343:160:o;2702:102:23:-;2758:13;2790:7;2783:14;;;;;:::i;8118:2582:160:-;1145:17:162;:15;:17::i;:::-;-1:-1:-1;;;;;1121:42:162;929:10:33;-1:-1:-1;;;;;1121:42:162;;1165:37;;;;;;;;;;;;;-1:-1:-1;;;1165:37:162;;;1113:90;;;;;-1:-1:-1;;;1113:90:162;;;;;;;;:::i;:::-;;8210:22:160::1;8234:23:::0;8261:31:::1;8287:4;8261:25;:31::i;:::-;8207:85;;;;;8305:22;8330:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;8451:22:160;::::1;8354:24;8451:22:::0;;;:16:::1;:22;::::0;;;;;8305:38;;-1:-1:-1;8354:24:160;;;8813;;::::1;8809:790;;8871:1;8854:14;:18:::0;8809:790:::1;;;8918:26;:14:::0;8937:6;8918:18:::1;:26::i;:::-;8905:39;;8959:17;8979:48;9001:25;:14;:23;:25::i;:::-;8979:14;::::0;;:21:::1;:48::i;:::-;8959:68;;9042:18;9063:40;9085:17;:6;:15;:17::i;:::-;9063:14:::0;;:21:::1;:40::i;:::-;9042:61;;9373:9;9359:10;:23;9355:233;;9439:1;9422:14;:18;;;9403:37;;9355:233;;;9517:55;9550:21;:10;:19;:21::i;:::-;9517:25;:9:::0;9531:10;9517:13:::1;:25::i;:::-;:32:::0;::::1;:55::i;:::-;9500:14;:72;;;9481:91;;9355:233;8890:709;;8809:790;9625:14;9615:6;:24:::0;9611:235:::1;;-1:-1:-1::0;;;;;9656:22:160;::::1;9681:1;9656:22:::0;;;:16:::1;:22;::::0;;;;;;;:26;;;9697:11:::1;:17:::0;;;;;:21;;-1:-1:-1;;9697:21:160::1;::::0;;9611:235:::1;;;-1:-1:-1::0;;;;;9791:17:160;::::1;;::::0;;;:11:::1;:17;::::0;;;;:43;;-1:-1:-1;;9791:43:160::1;9818:15;9791:43;;;::::0;;9611:235:::1;9892:21;:47:::0;;-1:-1:-1;;9892:47:160::1;9923:15;9892:47;;;::::0;;9956:24;;::::1;9952:689;;;9997:20;10020:27;:15:::0;10040:6;10020:19:::1;:27::i;:::-;9997:50;;10062:41;10068:4;10074:12;10088:14;10062:5;:41::i;:::-;10123:260;::::0;;9900:25:187;;;9956:2;9941:18;;9934:34;;;9984:18;;;9977:34;;;10042:2;10027:18;;10020:34;;;10085:3;10070:19;;10063:35;;;10129:3;10114:19;;10107:35;;;-1:-1:-1;;;;;10123:260:160;::::1;::::0;;;::::1;::::0;9887:3:187;9872:19;10123:260:160::1;;;;;;;9982:413;9952:689;;;10416:20;10439:27;:6:::0;10450:15;10439:10:::1;:27::i;:::-;10416:50;;10481:41;10487:4;10493:12;10507:14;10481:5;:41::i;:::-;10542:87;::::0;;10412:25:187;;;10468:2;10453:18;;10446:34;;;10496:18;;;10489:34;;;10554:2;10539:18;;10532:34;;;10597:3;10582:19;;10575:35;;;-1:-1:-1;;;;;10542:87:160;::::1;::::0;::::1;::::0;10399:3:187;10384:19;10542:87:160::1;;;;;;;10401:240;9952:689;10658:34;::::0;1461:25:187;;;10681:1:160::1;::::0;-1:-1:-1;;;;;10658:34:160;::::1;::::0;-1:-1:-1;;;;;;;;;;;10658:34:160;1449:2:187;1434:18;10658:34:160::1;;;;;;;8196:2504;;;;;;8118:2582:::0;;:::o;5992:1938::-;6156:4;1145:17:162;:15;:17::i;:::-;-1:-1:-1;;;;;1121:42:162;929:10:33;-1:-1:-1;;;;;1121:42:162;;1165:37;;;;;;;;;;;;;-1:-1:-1;;;1165:37:162;;;1113:90;;;;;-1:-1:-1;;;1113:90:162;;;;;;;;:::i;:::-;;6173:25:160::1;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6173:25:160::1;6237:10;-1:-1:-1::0;;;;;6229:18:160::1;:4;-1:-1:-1::0;;;;;6229:18:160::1;;;:76;;;;;6272:16;;;;;;;;;-1:-1:-1::0;;;;;6272:16:160::1;-1:-1:-1::0;;;;;6272:31:160::1;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6264:41:160::1;:4;-1:-1:-1::0;;;;;6264:41:160::1;;;6229:76;6211:179;;;6328:50;6353:10;6365:4;6371:6;6328:24;:50::i;:::-;6405:22;6429:23:::0;6456:37:::1;6482:10;6456:25;:37::i;:::-;6402:91;;;;;6528:13;:11;:13::i;:::-;6506:35:::0;;;6580:14:::1;::::0;6552:25:::1;::::0;::::1;:42:::0;6623:31:::1;::::0;6647:6;6623:23:::1;:31::i;:::-;6605:15;::::0;::::1;:49:::0;6686:17:::1;:6:::0;:15:::1;:17::i;:::-;6667:16;::::0;::::1;:36:::0;6737:185:::1;6884:37;:26;:14:::0;6903:6;6884:18:::1;:26::i;:::-;:35;:37::i;:::-;6832:16;::::0;::::1;::::0;6737:125:::1;::::0;6832:29:::1;::::0;6856:4;6832:23:::1;:29::i;:::-;6737:76;6787:25;:14;:23;:25::i;:::-;-1:-1:-1::0;;;;;6737:28:160;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;:49:::1;:76::i;:::-;:94:::0;::::1;:125::i;:185::-;6716:18;::::0;::::1;:206:::0;;;6984:31:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;6984:31:160;::::1;::::0;;6965:17:::1;-1:-1:-1::0;6943:39:160::1;6935:81;;;;-1:-1:-1::0;;;6935:81:160::1;;;;;;;;:::i;:::-;-1:-1:-1::0;7058:18:160::1;::::0;::::1;::::0;-1:-1:-1;;;;;7027:28:160;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;;:49;;;;7149:11:::1;:23:::0;;;;;:49;;::::1;7182:15;7149:49;-1:-1:-1::0;;7149:49:160;;::::1;::::0;::::1;::::0;;;7125:21:::1;:73:::0;;;;::::1;::::0;;::::1;::::0;;7458:15;::::1;::::0;7311:174:::1;::::0;7458:26:::1;::::0;:24:::1;:26::i;:::-;7311:129;7410:29;7422:4;:16;;;7410:4;:11;;:29;;;;:::i;:::-;7311:84;7364:30;:4;:19;;;:28;:30::i;:::-;7311:35;::::0;::::1;::::0;;:52:::1;:84::i;:174::-;7294:14;:191:::0;;;7266:25:::1;::::0;::::1;:219:::0;7498:67:::1;7504:10:::0;7516:27:::1;:6:::0;7527:15;7516:10:::1;:27::i;:::-;7545:19:::0;;7498:5:::1;:67::i;:::-;7583:40;::::0;1461:25:187;;;-1:-1:-1;;;;;7583:40:160;::::1;::::0;7600:1:::1;::::0;-1:-1:-1;;;;;;;;;;;7583:40:160;1449:2:187;1434:18;7583:40:160::1;;;;;;;7679:10;-1:-1:-1::0;;;;;7641:242:160::1;7660:4;-1:-1:-1::0;;;;;7641:242:160::1;;7704:6;7725:14;7754:15;7784:4;:18;;;7817:4;:25;;;7857:4;:15;;;7641:242;;;;;;;;;;9900:25:187::0;;;9956:2;9941:18;;9934:34;;;;9999:2;9984:18;;9977:34;;;;10042:2;10027:18;;10020:34;10085:3;10070:19;;10063:35;10129:3;10114:19;;10107:35;9887:3;9872:19;;9613:535;7641:242:160::1;;;;;;;;-1:-1:-1::0;7903:19:160;;5992:1938;-1:-1:-1;;;;;;5992:1938:160:o;1593:250:162:-;929:10:33;1683:31:162;;;;:17;:31;;;;;;;;-1:-1:-1;;;;;1683:42:162;;;;;;;;;;;;:51;;;13454:16:160;;1683:42:162;;929:10:33;1749:87:162;;13454:16:160;1749:87:162;;;-1:-1:-1;;;;;11069:32:187;;;11051:51;;11133:2;11118:18;;11111:34;;;11024:18;1749:87:162;;;;;;;1593:250;;:::o;13113:138:160:-;13195:7;13222:21;13238:4;13222:15;:21::i;12233:189::-;12346:14;;12299:7;;;;12379:25;12346:14;12379:16;:25::i;:::-;12371:43;12406:7;;-1:-1:-1;12233:189:160;-1:-1:-1;12233:189:160:o;14890:405::-;14964:7;14984:23;15010:19;3666:12:23;;;3579:106;15010:19:160;14984:45;;15046:15;15065:1;15046:20;15042:61;;-1:-1:-1;15090:1:160;;14890:405;-1:-1:-1;;14890:405:160:o;15042:61::-;15204:21;;15115:25;;15157:69;;15195:7;;15204:21;;15157:37;:69::i;:::-;15115:111;-1:-1:-1;15246:41:160;:15;15115:111;15246:22;:41::i;:::-;15239:48;14890:405;-1:-1:-1;;;;14890:405:160:o;14020:198::-;14163:16;;:46;;;-1:-1:-1;;;14163:46:160;;;;14092:25;;-1:-1:-1;;;;;14163:16:160;;:44;;:46;;;;;;;;;;;;;;:16;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;758:201:163:-;889:28;902:5;909:7;889:12;:28::i;:::-;926:15;:27;;-1:-1:-1;;926:27:163;;;;;;;;;;;;-1:-1:-1;;758:201:163:o;14527:146:160:-;14631:16;;:33;;;-1:-1:-1;;;14631:33:160;;;;14586:12;;-1:-1:-1;;;;;14631:16:160;;:31;;:33;;;;;;;;;;;;;;:16;:33;;;;;;;;;;;;;;3743:125:23;-1:-1:-1;;;;;3843:18:23;3817:7;3843:18;;;:9;:18;;;;;;;3743:125::o;565:303:144:-;663:7;;734:48;753:28;;;734:15;:48;:::i;:::-;709:73;-1:-1:-1;524:4:146;239:8:144;798:23;806:14;798:4;:23;:::i;:::-;797:44;;;;:::i;:::-;796:67;;;;:::i;1291:126:146:-;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:21::-;:25;;:30::i;:::-;1372:37;1291:126;-1:-1:-1;;;1291:126:146:o;10990:666:160:-;11103:7;11125;11147;11182:32;11217:21;11233:4;11217:15;:21::i;:::-;11182:56;;11255:24;11283:1;11255:29;11251:78;;11309:1;11312;11315;11301:16;;;;;;;;;11251:78;11417:23;11443:45;11463:24;11443:15;11453:4;11443:9;:15::i;:::-;:19;;:45::i;:::-;11417:71;-1:-1:-1;11523:24:160;11562:45;11523:24;11417:71;11562:28;:45::i;:::-;11501:147;;-1:-1:-1;11501:147:160;-1:-1:-1;11622:15:160;-1:-1:-1;;10990:666:160;;;;;;:::o;3122:96:71:-;3180:7;3206:5;3210:1;3206;:5;:::i;1771:107:146:-;1823:7;1850:20;:1;629:3;1850:5;:20::i;1425:158::-;1486:7;;1522:5;1526:1;1522;:5;:::i;:::-;1506:21;-1:-1:-1;1547:28:146;1573:1;1547:21;1557:10;:1;524:4;1557:5;:10::i;:::-;1547:5;;:9;:21::i;15545:482:160:-;15671:25;15699:24;15715:7;15699:15;:24::i;:::-;15671:52;;15734:28;15746:7;15755:6;15734:11;:28::i;:::-;15775:46;15824:30;:28;:30::i;:::-;15775:79;-1:-1:-1;;;;;;15871:43:160;;;15867:153;;15931:77;;-1:-1:-1;;;15931:77:160;;-1:-1:-1;;;;;12166:32:187;;;15931:77:160;;;12148:51:187;12215:18;;;12208:34;;;12258:18;;;12251:34;;;15931:33:160;;;;;12121:18:187;;15931:77:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15867:153;15660:367;;15545:482;;;:::o;16272:564::-;16398:25;16426:24;16442:7;16426:15;:24::i;:::-;16398:52;;16492:6;16471:17;:27;;16500:31;;;;;;;;;;;;;-1:-1:-1;;;16500:31:160;;;16463:69;;;;;-1:-1:-1;;;16463:69:160;;;;;;;;:::i;:::-;;16543:28;16555:7;16564:6;16543:11;:28::i;4002:501:162:-;-1:-1:-1;;;;;4147:28:162;;;;;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;;4198:37;;;;;;;;;;;-1:-1:-1;;;4198:37:162;;;;;;;4147:49;-1:-1:-1;4147:49:162;4139:97;;;;-1:-1:-1;;;4139:97:162;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;4278:28:162;;;4255:20;4278:28;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;:48;;4320:6;;4278:48;:::i;:::-;-1:-1:-1;;;;;4336:28:162;;;;;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;:54;;;4255:71;;-1:-1:-1;4336:39:162;4406:90;4453:28;13454:16:160;;-1:-1:-1;;;;;13454:16:160;;13370:108;4453:28:162;4406:90;;;-1:-1:-1;;;;;11069:32:187;;;11051:51;;11133:2;11118:18;;11111:34;;;11024:18;4406:90:162;;;;;;;4129:374;4002:501;;;:::o;2755:96:71:-;2813:7;2839:5;2843:1;2839;:5;:::i;2721:200:144:-;2823:7;2845:71;2873:4;2879:19;2900:15;2845:27;:71::i;2114:147:23:-;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;2216:38:23::1;2239:5;2246:7;2216:22;:38::i;:::-;2114:147:::0;;:::o;3465:96:71:-;3523:7;3549:5;3553:1;3549;:5;:::i;3850:96::-;3908:7;3934:5;3938:1;3934;:5;:::i;2233:398:163:-;2314:22;2339:19;3666:12:23;;;3579:106;2339:19:163;2314:44;;2365:25;2393:24;2409:7;2393:15;:24::i;:::-;2365:52;;2426:28;2438:7;2447:6;2426:11;:28::i;:::-;2518:1;2475:30;:28;:30::i;:::-;-1:-1:-1;;;;;2467:53:163;;2463:163;;2531:30;:28;:30::i;:::-;:87;;-1:-1:-1;;;2531:87:163;;-1:-1:-1;;;;;12166:32:187;;;2531:87:163;;;12148:51:187;12215:18;;;12208:34;;;12258:18;;;12251:34;;;2531:43:163;;;;;;;12121:18:187;;2531:87:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:163;2307:324;;2233:398;;:::o;2637:::-;2718:22;2743:19;3666:12:23;;;3579:106;2743:19:163;2718:44;;2769:25;2797:24;2813:7;2797:15;:24::i;:::-;2769:52;;2830:28;2842:7;2851:6;2830:11;:28::i;1609:827:144:-;1753:7;;1813:49;1833:28;;;1813:16;:49;:::i;:::-;1799:63;;1873:3;1880:1;1873:8;1869:52;;524:4:146;1891:23:144;;;;;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:144;2037:23;239:8;2037:4;:23;:::i;:::-;2013:47;-1:-1:-1;2067:20:144;2090:35;2013:47;;2090:20;:35::i;:::-;2067:58;-1:-1:-1;2131:22:144;2156:34;2067:58;2176:13;2156:19;:34::i;:::-;2131:59;-1:-1:-1;2197:18:144;2259:1;2242:12;2219:19;2226:11;2219:3;:19;:::i;:::-;:36;;;;:::i;:::-;2218:42;;;;:::i;:::-;2197:63;-1:-1:-1;2266:17:144;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:144;2406:10;2380:21;2397:3;2380:13;:21;:::i;:::-;2360:42;;524:4:146;2360:42:144;:::i;:::-;:57;;;;:::i;:::-;:71;;;;:::i;:::-;2353:78;1609:827;-1:-1:-1;;;;;;;;;;;;1609:827:144:o;2267:159:23:-;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;2379:5:23::1;:13;2387:5:::0;2379;:13:::1;:::i;:::-;-1:-1:-1::0;2402:7:23::1;:17;2412:7:::0;2402;:17:::1;:::i;:::-;;2267:159:::0;;:::o;8904:535::-;-1:-1:-1;;;;;8987:21:23;;8979:65;;;;-1:-1:-1;;;8979:65:23;;15114:2:187;8979:65:23;;;15096:21:187;15153:2;15133:18;;;15126:30;15192:33;15172:18;;;15165:61;15243:18;;8979:65:23;14912:355:187;8979:65:23;9131:6;9115:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;9283:18:23;;;;;;:9;:18;;;;;;;;:28;;;;;;9336:37;1461:25:187;;;-1:-1:-1;;;;;;;;;;;9336:37:23;1434:18:187;9336:37:23;;;;;;;2114:147;;:::o;9759:659::-;-1:-1:-1;;;;;9842:21:23;;9834:67;;;;-1:-1:-1;;;9834:67:23;;15474:2:187;9834:67:23;;;15456:21:187;15513:2;15493:18;;;15486:30;15552:34;15532:18;;;15525:62;-1:-1:-1;;;15603:18:187;;;15596:31;15644:19;;9834:67:23;15272:397:187;9834:67:23;-1:-1:-1;;;;;9997:18:23;;9972:22;9997:18;;;:9;:18;;;;;;10033:24;;;;10025:71;;;;-1:-1:-1;;;10025:71:23;;15876:2:187;10025:71:23;;;15858:21:187;15915:2;15895:18;;;15888:30;15954:34;15934:18;;;15927:62;-1:-1:-1;;;16005:18:187;;;15998:32;16047:19;;10025:71:23;15674:398:187;10025:71:23;-1:-1:-1;;;;;10130:18:23;;;;;;:9;:18;;;;;;;;10151:23;;;10130:44;;10267:12;:22;;;;;;;10315:37;1461:25:187;;;10130:18:23;;;-1:-1:-1;;;;;;;;;;;10315:37:23;1434:18:187;10315:37:23;;;;;;;2402:17:::1;2267:159:::0;;:::o;14:423:187:-;56:3;94:5;88:12;121:6;116:3;109:19;146:1;156:162;170:6;167:1;164:13;156:162;;;232:4;288:13;;;284:22;;278:29;260:11;;;256:20;;249:59;185:12;156:162;;;160:3;363:1;356:4;347:6;342:3;338:16;334:27;327:38;426:4;419:2;415:7;410:2;402:6;398:15;394:29;389:3;385:39;381:50;374:57;;;14:423;;;;:::o;442:220::-;591:2;580:9;573:21;554:4;611:45;652:2;641:9;637:18;629:6;611:45;:::i;667:131::-;-1:-1:-1;;;;;742:31:187;;732:42;;722:70;;788:1;785;778:12;722:70;667:131;:::o;803:315::-;871:6;879;932:2;920:9;911:7;907:23;903:32;900:52;;;948:1;945;938:12;900:52;987:9;974:23;1006:31;1031:5;1006:31;:::i;:::-;1056:5;1108:2;1093:18;;;;1080:32;;-1:-1:-1;;;803:315:187:o;1740:127::-;1801:10;1796:3;1792:20;1789:1;1782:31;1832:4;1829:1;1822:15;1856:4;1853:1;1846:15;1872:719;1915:5;1968:3;1961:4;1953:6;1949:17;1945:27;1935:55;;1986:1;1983;1976:12;1935:55;2022:6;2009:20;2048:18;2085:2;2081;2078:10;2075:36;;;2091:18;;:::i;:::-;2166:2;2160:9;2134:2;2220:13;;-1:-1:-1;;2216:22:187;;;2240:2;2212:31;2208:40;2196:53;;;2264:18;;;2284:22;;;2261:46;2258:72;;;2310:18;;:::i;:::-;2350:10;2346:2;2339:22;2385:2;2377:6;2370:18;2431:3;2424:4;2419:2;2411:6;2407:15;2403:26;2400:35;2397:55;;;2448:1;2445;2438:12;2397:55;2512:2;2505:4;2497:6;2493:17;2486:4;2478:6;2474:17;2461:54;2559:1;2552:4;2547:2;2539:6;2535:15;2531:26;2524:37;2579:6;2570:15;;;;;;1872:719;;;;:::o;2596:1266::-;2736:6;2744;2752;2760;2768;2776;2784;2792;2845:3;2833:9;2824:7;2820:23;2816:33;2813:53;;;2862:1;2859;2852:12;2813:53;2901:9;2888:23;2920:31;2945:5;2920:31;:::i;:::-;2970:5;-1:-1:-1;3027:2:187;3012:18;;2999:32;3040:33;2999:32;3040:33;:::i;:::-;3092:7;-1:-1:-1;3151:2:187;3136:18;;3123:32;3164:33;3123:32;3164:33;:::i;:::-;3216:7;-1:-1:-1;3270:2:187;3255:18;;3242:32;;-1:-1:-1;3321:3:187;3306:19;;3293:33;;-1:-1:-1;3378:3:187;3363:19;;3350:33;3427:4;3414:18;;3402:31;;3392:59;;3447:1;3444;3437:12;3392:59;3470:7;-1:-1:-1;3528:3:187;3513:19;;3500:33;3552:18;3582:14;;;3579:34;;;3609:1;3606;3599:12;3579:34;3632:50;3674:7;3665:6;3654:9;3650:22;3632:50;:::i;:::-;3622:60;;3735:3;3724:9;3720:19;3707:33;3691:49;;3765:2;3755:8;3752:16;3749:36;;;3781:1;3778;3771:12;3749:36;;3804:52;3848:7;3837:8;3826:9;3822:24;3804:52;:::i;:::-;3794:62;;;2596:1266;;;;;;;;;;;:::o;3867:456::-;3944:6;3952;3960;4013:2;4001:9;3992:7;3988:23;3984:32;3981:52;;;4029:1;4026;4019:12;3981:52;4068:9;4055:23;4087:31;4112:5;4087:31;:::i;:::-;4137:5;-1:-1:-1;4194:2:187;4179:18;;4166:32;4207:33;4166:32;4207:33;:::i;:::-;3867:456;;4259:7;;-1:-1:-1;;;4313:2:187;4298:18;;;;4285:32;;3867:456::o;4517:388::-;4585:6;4593;4646:2;4634:9;4625:7;4621:23;4617:32;4614:52;;;4662:1;4659;4652:12;4614:52;4701:9;4688:23;4720:31;4745:5;4720:31;:::i;:::-;4770:5;-1:-1:-1;4827:2:187;4812:18;;4799:32;4840:33;4799:32;4840:33;:::i;:::-;4892:7;4882:17;;;4517:388;;;;;:::o;4910:247::-;4969:6;5022:2;5010:9;5001:7;4997:23;4993:32;4990:52;;;5038:1;5035;5028:12;4990:52;5077:9;5064:23;5096:31;5121:5;5096:31;:::i;6212:525::-;6298:6;6306;6314;6322;6375:3;6363:9;6354:7;6350:23;6346:33;6343:53;;;6392:1;6389;6382:12;6343:53;6431:9;6418:23;6450:31;6475:5;6450:31;:::i;:::-;6500:5;-1:-1:-1;6557:2:187;6542:18;;6529:32;6570:33;6529:32;6570:33;:::i;:::-;6212:525;;6622:7;;-1:-1:-1;;;;6676:2:187;6661:18;;6648:32;;6727:2;6712:18;6699:32;;6212:525::o;6995:380::-;7074:1;7070:12;;;;7117;;;7138:61;;7192:4;7184:6;7180:17;7170:27;;7138:61;7245:2;7237:6;7234:14;7214:18;7211:38;7208:161;;7291:10;7286:3;7282:20;7279:1;7272:31;7326:4;7323:1;7316:15;7354:4;7351:1;7344:15;7208:161;;6995:380;;;:::o;8146:560::-;-1:-1:-1;;;;;8395:32:187;;8377:51;;8476:4;8464:17;;8459:2;8444:18;;8437:45;8518:3;8513:2;8498:18;;8491:31;;;-1:-1:-1;;8545:46:187;;8571:19;;8563:6;8545:46;:::i;:::-;8639:9;8631:6;8627:22;8622:2;8611:9;8607:18;8600:50;8667:33;8693:6;8685;8667:33;:::i;:::-;8659:41;8146:560;-1:-1:-1;;;;;;;8146:560:187:o;10621:251::-;10691:6;10744:2;10732:9;10723:7;10719:23;10715:32;10712:52;;;10760:1;10757;10750:12;10712:52;10792:9;10786:16;10811:31;10836:5;10811:31;:::i;11156:127::-;11217:10;11212:3;11208:20;11205:1;11198:31;11248:4;11245:1;11238:15;11272:4;11269:1;11262:15;11288:128;11355:9;;;11376:11;;;11373:37;;;11390:18;;:::i;11421:168::-;11461:7;11527:1;11523;11519:6;11515:14;11512:1;11509:21;11504:1;11497:9;11490:17;11486:45;11483:71;;;11534:18;;:::i;:::-;-1:-1:-1;11574:9:187;;11421:168::o;11594:217::-;11634:1;11660;11650:132;;11704:10;11699:3;11695:20;11692:1;11685:31;11739:4;11736:1;11729:15;11767:4;11764:1;11757:15;11650:132;-1:-1:-1;11796:9:187;;11594:217::o;11816:125::-;11881:9;;;11902:10;;;11899:36;;;11915:18;;:::i;12296:407::-;12498:2;12480:21;;;12537:2;12517:18;;;12510:30;12576:34;12571:2;12556:18;;12549:62;-1:-1:-1;;;12642:2:187;12627:18;;12620:41;12693:3;12678:19;;12296:407::o;12834:545::-;12936:2;12931:3;12928:11;12925:448;;;12972:1;12997:5;12993:2;12986:17;13042:4;13038:2;13028:19;13112:2;13100:10;13096:19;13093:1;13089:27;13083:4;13079:38;13148:4;13136:10;13133:20;13130:47;;;-1:-1:-1;13171:4:187;13130:47;13226:2;13221:3;13217:12;13214:1;13210:20;13204:4;13200:31;13190:41;;13281:82;13299:2;13292:5;13289:13;13281:82;;;13344:17;;;13325:1;13314:13;13281:82;;;13285:3;;;12834:545;;;:::o;13555:1352::-;13681:3;13675:10;13708:18;13700:6;13697:30;13694:56;;;13730:18;;:::i;:::-;13759:97;13849:6;13809:38;13841:4;13835:11;13809:38;:::i;:::-;13803:4;13759:97;:::i;:::-;13911:4;;13975:2;13964:14;;13992:1;13987:663;;;;14694:1;14711:6;14708:89;;;-1:-1:-1;14763:19:187;;;14757:26;14708:89;-1:-1:-1;;13512:1:187;13508:11;;;13504:24;13500:29;13490:40;13536:1;13532:11;;;13487:57;14810:81;;13957:944;;13987:663;12781:1;12774:14;;;12818:4;12805:18;;-1:-1:-1;;14023:20:187;;;14141:236;14155:7;14152:1;14149:14;14141:236;;;14244:19;;;14238:26;14223:42;;14336:27;;;;14304:1;14292:14;;;;14171:19;;14141:236;;;14145:3;14405:6;14396:7;14393:19;14390:201;;;14466:19;;;14460:26;-1:-1:-1;;14549:1:187;14545:14;;;14561:3;14541:24;14537:37;14533:42;14518:58;14503:74;;14390:201;-1:-1:-1;;;;;14637:1:187;14621:14;;;14617:22;14604:36;;-1:-1:-1;13555:1352:187:o",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "POOL()": "7535d246",
    "UNDERLYING_ASSET_ADDRESS()": "b16a19de",
    "allowance(address,address)": "dd62ed3e",
    "approve(address,uint256)": "095ea7b3",
    "approveDelegation(address,uint256)": "c04a8a10",
    "balanceOf(address)": "70a08231",
    "borrowAllowance(address,address)": "6bd76d24",
    "burn(address,uint256)": "9dc29fac",
    "decimals()": "313ce567",
    "decreaseAllowance(address,uint256)": "a457c2d7",
    "getAverageStableRate()": "90f6fcf2",
    "getPoolIncentivesController()": "19ef9268",
    "getSupplyData()": "79774338",
    "getTotalSupplyAndAvgRate()": "f731e9be",
    "getTotalSupplyLastUpdated()": "e7484890",
    "getUserLastUpdated(address)": "79ce6b8c",
    "getUserStableRate(address)": "e78c9b3b",
    "increaseAllowance(address,uint256)": "39509351",
    "initialize(address,address,address,uint256,uint256,uint8,string,string)": "1e5fa51f",
    "mint(address,address,uint256,uint256)": "b3f1c93d",
    "name()": "06fdde03",
    "principalBalanceOf(address)": "c634dfaa",
    "symbol()": "95d89b41",
    "totalSupply()": "18160ddd",
    "transfer(address,uint256)": "a9059cbb",
    "transferFrom(address,address,uint256)": "23b872dd"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toUser\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BorrowAllowanceDelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"currentBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balanceIncrease\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"avgStableRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalSupply\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlyingCollateral\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"incentivesController\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"debtTokenDecimals\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"debtTokenName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"debtTokenSymbol\",\"type\":\"string\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"currentBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balanceIncrease\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"avgStableRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalSupply\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"POOL\",\"outputs\":[{\"internalType\":\"contract ILendingPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_ASSET_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toUser\",\"type\":\"address\"}],\"name\":\"borrowAllowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAverageStableRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolIncentivesController\",\"outputs\":[{\"internalType\":\"contract IPoolIncentivesController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalSupplyAndAvgRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalSupplyLastUpdated\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserLastUpdated\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserStableRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressProvider\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingMaxTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"underlyingMinTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"debtTokenDecimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"debtTokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"debtTokenSymbol\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"principalBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"FluidNFT\",\"details\":\"Debt tokens are non-transferable and so diverge from the ERC20 standard.\",\"kind\":\"dev\",\"methods\":{\"POOL()\":{\"details\":\"Returns the address of the lending pool where this aToken is used*\"},\"UNDERLYING_ASSET_ADDRESS()\":{\"details\":\"Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)*\"},\"approveDelegation(address,uint256)\":{\"details\":\"delegates borrowing power to a user on the specific debt token\",\"params\":{\"amount\":\"the maximum amount being delegated. Delegation will still respect the liquidation constraints (even if delegated, a delegatee cannot force a delegator HF to go below 1)*\",\"delegatee\":\"the address receiving the delegated borrowing power\"}},\"balanceOf(address)\":{\"details\":\"Calculates the current user debt balance\",\"returns\":{\"_0\":\"The accumulated debt of the user*\"}},\"borrowAllowance(address,address)\":{\"details\":\"returns the borrow allowance of the user\",\"params\":{\"fromUser\":\"The user to giving allowance\",\"toUser\":\"The user to give allowance to\"},\"returns\":{\"_0\":\"the current allowance of toUser*\"}},\"burn(address,uint256)\":{\"details\":\"Burns debt of `user`\",\"params\":{\"amount\":\"The amount of debt tokens getting burned*\",\"user\":\"The address of the user getting his debt burned\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"decimals()\":{\"details\":\"Returns the decimals of the token.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getAverageStableRate()\":{\"details\":\"Returns the average stable rate across all the stable rate debt\",\"returns\":{\"_0\":\"the average stable rate*\"}},\"getPoolIncentivesController()\":{\"details\":\"Returns the address of the incentives controller contract*\"},\"getSupplyData()\":{\"details\":\"Returns the principal and total supply, the average borrow rate and the last supply update timestamp*\"},\"getTotalSupplyAndAvgRate()\":{\"details\":\"Returns the the total supply and the average stable rate*\"},\"getTotalSupplyLastUpdated()\":{\"details\":\"Returns the timestamp at which the total supply was updated*\"},\"getUserLastUpdated(address)\":{\"details\":\"Returns the timestamp of the last user action\",\"returns\":{\"_0\":\"The last update timestamp*\"}},\"getUserStableRate(address)\":{\"details\":\"Returns the stable rate of the user\",\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"_0\":\"The stable rate of user*\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"initialize(address,address,address,uint256,uint256,uint8,string,string)\":{\"details\":\"Initializes the debt token.\",\"params\":{\"addressProvider\":\"The address provider \",\"debtTokenDecimals\":\"The decimals of the debtToken, same as the underlying asset's\",\"debtTokenName\":\"The name of the token\",\"debtTokenSymbol\":\"The symbol of the token\",\"underlyingAsset\":\"The address of the underlying asset of this debtToken\",\"underlyingCollateral\":\"The address of the underlying collateral of this debtToken\",\"underlyingMaxTokenId\":\"The max tokenId of the underlying collateral of this debtToken\",\"underlyingMinTokenId\":\"The min tokenId of the underlying collateral of this debtToken\"}},\"mint(address,address,uint256,uint256)\":{\"details\":\"Mints debt token to the `onBehalfOf` address. -  Only callable by the LendingPool - The resulting rate is the weighted average between the rate of the new debt and the rate of the previous debt\",\"params\":{\"amount\":\"The amount of debt tokens to mint\",\"onBehalfOf\":\"The address receiving the debt tokens\",\"rate\":\"The rate of the debt being minted*\",\"user\":\"The address receiving the borrowed underlying, being the delegatee in case of credit delegate, or same as `onBehalfOf` otherwise\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"principalBalanceOf(address)\":{\"details\":\"Returns the principal debt balance of the user from\",\"params\":{\"user\":\"The user's address\"},\"returns\":{\"_0\":\"The debt balance of the user since the last burn/mint action*\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the total supply*\"},\"transfer(address,uint256)\":{\"details\":\"Being non transferrable, the debt token does not implement any of the standard ERC20 functions for transfer and allowance.*\"}},\"title\":\"StableDebtToken\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows for the tracking of debt for the purposes of APY calculations at a stable rate mode.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/protocol/tokenization/StableDebtToken.sol\":\"StableDebtToken\"},\"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/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935\",\"dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xb1d9e69cf8073efa574b31b1f840e20709139c19bfb27e60b16393d6073f3d42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c39b800e55781c0f7a644ec9cc615664dbe2f009198e537e6acaad3086ba093\",\"dweb:/ipfs/Qmaugq2wsB1ASX8Kv29NwXqYhZY8HRNqcdvmBe9UUNEq2V\"]},\"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/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/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/ICreditDelegationToken.sol\":{\"keccak256\":\"0xd503435c6285ec39fbe57260dfa5245e8087fb336faf9a3759d345f3150247dc\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://339566f8416bbc263e4bc2de02a23fe35e232f701298d59b1c5937ab4eea3880\",\"dweb:/ipfs/QmdJyM2xuyLBZnWfQR8fUiUhvazAWsVTvD9agj2HapdmmK\"]},\"src/interfaces/IInitializableDebtToken.sol\":{\"keccak256\":\"0x29bcf86201c67f90d1620b5da4a0de05c611bf1fb15afeb6d2b30a70ec8aebca\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://e17c25e400ac37f1cd29b9cfdba2d4bc34aa6e0c705a619acf0c69f9136150d6\",\"dweb:/ipfs/QmTcNqEpq8UbZf6o6AgwJVjuNbrNbsZWfRMhQnuZArJQ6Q\"]},\"src/interfaces/ILendingPool.sol\":{\"keccak256\":\"0x345ab4285354bb5184bdd501d7c37920a711215b6f6c2db05b05d585f2454115\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://3b6264b135760dcdd59b9a3566c1305b00084922da177159a85c206ef6a91266\",\"dweb:/ipfs/QmSotEH7zF3vrEgo2gZuunWwroHgc6bw7TVRntzv7jsJn1\"]},\"src/interfaces/IPoolIncentivesController.sol\":{\"keccak256\":\"0x7cb2c32050814e6d6d962a603104facc3bb1dad15171304e3ee756648e8f9ae1\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://cf534f592706b2a61c539c03e5d1e199c15472bcfb4ee69838e5c93ba7914466\",\"dweb:/ipfs/QmPrvXhJigK1Ke51YwAWHon1Kv88WT26iD3MwzCaPDs1Kv\"]},\"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/protocol/libraries/helpers/Errors.sol\":{\"keccak256\":\"0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3\",\"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM\"]},\"src/protocol/libraries/math/MathUtils.sol\":{\"keccak256\":\"0x1c856137c4ef9d713b19a65adeb47c4490bd3b8414d7f28b364625226926779f\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://15c029cd4a3becaa47c72c1f5c18986b0a3cb488d8145e0bf88ce618a3d70841\",\"dweb:/ipfs/QmSYaWpWPbEHkRCegu5edAuRS3HTwyN2mFoSKm4yfGeec9\"]},\"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\":\"0x070f7865fe84ce4c9ebd86bbe24771607fbdb4e8777510b46cb5064e4d9b90a3\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://504fd0c937cc69cc0737c4ef5dcec477017ccbff609b45b210274fd7bf0792cf\",\"dweb:/ipfs/QmeW1TkAHib7XRBVmgMRTdmsa4Rg9HVToTMnifEE1C7mTi\"]},\"src/protocol/tokenization/StableDebtToken.sol\":{\"keccak256\":\"0x101a2f883130cd5b551f4d0e815ed7e911a1c8f35d884e2d2c4148263fc6eb81\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://6406cd3edbeb703adb79752a81080ccbd87fb93394b654685cd7aad529772ba1\",\"dweb:/ipfs/QmZxvjR5oTe6jWqyuTyiiKRpSiz6nhFoRvuVEZZwbBiHCS\"]},\"src/protocol/tokenization/base/DebtTokenBase.sol\":{\"keccak256\":\"0x7a3cc782fbb4308dc2981007d00d94a507da3185db59628f209116af4e31f342\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://a709ab96e62f86169fa36f760df6cfe9db532f5ce0b95e9437cdc93ec86273dc\",\"dweb:/ipfs/QmXJ8az9pqhhp4XSufsPTA1bhz5KHGDdFsm53itWrhi3gJ\"]},\"src/protocol/tokenization/base/IncentivizedERC20.sol\":{\"keccak256\":\"0xeef558a6fb8826dd7eff89e1eb24072b5533825cbbfd3ee950623bb433ecabc6\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://4453844f67a9d9339dda3d5081073188d45b8fd274aea524b239e3462ef67236\",\"dweb:/ipfs/QmVxGsuhu1NGFd5WqnGZns8pY1VEUALhMUTx76x6hxhkn8\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.16+commit.07a7930e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Approval",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "fromUser",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "toUser",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "asset",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "BorrowAllowanceDelegated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "currentBalance",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "balanceIncrease",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "avgStableRate",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "newTotalSupply",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Burn",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "version",
              "type": "uint8",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Initialized",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "underlyingCollateral",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "pool",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "incentivesController",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint8",
              "name": "debtTokenDecimals",
              "type": "uint8",
              "indexed": false
            },
            {
              "internalType": "string",
              "name": "debtTokenName",
              "type": "string",
              "indexed": false
            },
            {
              "internalType": "string",
              "name": "debtTokenSymbol",
              "type": "string",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Initialized",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "currentBalance",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "balanceIncrease",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "newRate",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "avgStableRate",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "newTotalSupply",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Mint",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Transfer",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "POOL",
          "outputs": [
            {
              "internalType": "contract ILendingPool",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "UNDERLYING_ASSET_ADDRESS",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegatee",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "approveDelegation"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "fromUser",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "toUser",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "borrowAllowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "burn"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "subtractedValue",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "decreaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getAverageStableRate",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getPoolIncentivesController",
          "outputs": [
            {
              "internalType": "contract IPoolIncentivesController",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getSupplyData",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint40",
              "name": "",
              "type": "uint40"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getTotalSupplyAndAvgRate",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getTotalSupplyLastUpdated",
          "outputs": [
            {
              "internalType": "uint40",
              "name": "",
              "type": "uint40"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getUserLastUpdated",
          "outputs": [
            {
              "internalType": "uint40",
              "name": "",
              "type": "uint40"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getUserStableRate",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "addedValue",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "increaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addressProvider",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "underlyingCollateral",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "underlyingMaxTokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "underlyingMinTokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "debtTokenDecimals",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "debtTokenName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "debtTokenSymbol",
              "type": "string"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "initialize"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "rate",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "mint",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "principalBalanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "POOL()": {
            "details": "Returns the address of the lending pool where this aToken is used*"
          },
          "UNDERLYING_ASSET_ADDRESS()": {
            "details": "Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)*"
          },
          "approveDelegation(address,uint256)": {
            "details": "delegates borrowing power to a user on the specific debt token",
            "params": {
              "amount": "the maximum amount being delegated. Delegation will still respect the liquidation constraints (even if delegated, a delegatee cannot force a delegator HF to go below 1)*",
              "delegatee": "the address receiving the delegated borrowing power"
            }
          },
          "balanceOf(address)": {
            "details": "Calculates the current user debt balance",
            "returns": {
              "_0": "The accumulated debt of the user*"
            }
          },
          "borrowAllowance(address,address)": {
            "details": "returns the borrow allowance of the user",
            "params": {
              "fromUser": "The user to giving allowance",
              "toUser": "The user to give allowance to"
            },
            "returns": {
              "_0": "the current allowance of toUser*"
            }
          },
          "burn(address,uint256)": {
            "details": "Burns debt of `user`",
            "params": {
              "amount": "The amount of debt tokens getting burned*",
              "user": "The address of the user getting his debt burned"
            }
          },
          "constructor": {
            "custom:oz-upgrades-unsafe-allow": "constructor"
          },
          "decimals()": {
            "details": "Returns the decimals of the token."
          },
          "decreaseAllowance(address,uint256)": {
            "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
          },
          "getAverageStableRate()": {
            "details": "Returns the average stable rate across all the stable rate debt",
            "returns": {
              "_0": "the average stable rate*"
            }
          },
          "getPoolIncentivesController()": {
            "details": "Returns the address of the incentives controller contract*"
          },
          "getSupplyData()": {
            "details": "Returns the principal and total supply, the average borrow rate and the last supply update timestamp*"
          },
          "getTotalSupplyAndAvgRate()": {
            "details": "Returns the the total supply and the average stable rate*"
          },
          "getTotalSupplyLastUpdated()": {
            "details": "Returns the timestamp at which the total supply was updated*"
          },
          "getUserLastUpdated(address)": {
            "details": "Returns the timestamp of the last user action",
            "returns": {
              "_0": "The last update timestamp*"
            }
          },
          "getUserStableRate(address)": {
            "details": "Returns the stable rate of the user",
            "params": {
              "user": "The address of the user"
            },
            "returns": {
              "_0": "The stable rate of user*"
            }
          },
          "increaseAllowance(address,uint256)": {
            "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
          },
          "initialize(address,address,address,uint256,uint256,uint8,string,string)": {
            "details": "Initializes the debt token.",
            "params": {
              "addressProvider": "The address provider ",
              "debtTokenDecimals": "The decimals of the debtToken, same as the underlying asset's",
              "debtTokenName": "The name of the token",
              "debtTokenSymbol": "The symbol of the token",
              "underlyingAsset": "The address of the underlying asset of this debtToken",
              "underlyingCollateral": "The address of the underlying collateral of this debtToken",
              "underlyingMaxTokenId": "The max tokenId of the underlying collateral of this debtToken",
              "underlyingMinTokenId": "The min tokenId of the underlying collateral of this debtToken"
            }
          },
          "mint(address,address,uint256,uint256)": {
            "details": "Mints debt token to the `onBehalfOf` address. -  Only callable by the LendingPool - The resulting rate is the weighted average between the rate of the new debt and the rate of the previous debt",
            "params": {
              "amount": "The amount of debt tokens to mint",
              "onBehalfOf": "The address receiving the debt tokens",
              "rate": "The rate of the debt being minted*",
              "user": "The address receiving the borrowed underlying, being the delegatee in case of credit delegate, or same as `onBehalfOf` otherwise"
            }
          },
          "name()": {
            "details": "Returns the name of the token."
          },
          "principalBalanceOf(address)": {
            "details": "Returns the principal debt balance of the user from",
            "params": {
              "user": "The user's address"
            },
            "returns": {
              "_0": "The debt balance of the user since the last burn/mint action*"
            }
          },
          "symbol()": {
            "details": "Returns the symbol of the token, usually a shorter version of the name."
          },
          "totalSupply()": {
            "details": "Returns the total supply*"
          },
          "transfer(address,uint256)": {
            "details": "Being non transferrable, the debt token does not implement any of the standard ERC20 functions for transfer and allowance.*"
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "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/tokenization/StableDebtToken.sol": "StableDebtToken"
      },
      "libraries": {}
    },
    "sources": {
      "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/token/ERC20/ERC20Upgradeable.sol": {
        "keccak256": "0xb1d9e69cf8073efa574b31b1f840e20709139c19bfb27e60b16393d6073f3d42",
        "urls": [
          "bzz-raw://7c39b800e55781c0f7a644ec9cc615664dbe2f009198e537e6acaad3086ba093",
          "dweb:/ipfs/Qmaugq2wsB1ASX8Kv29NwXqYhZY8HRNqcdvmBe9UUNEq2V"
        ],
        "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/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/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/ICreditDelegationToken.sol": {
        "keccak256": "0xd503435c6285ec39fbe57260dfa5245e8087fb336faf9a3759d345f3150247dc",
        "urls": [
          "bzz-raw://339566f8416bbc263e4bc2de02a23fe35e232f701298d59b1c5937ab4eea3880",
          "dweb:/ipfs/QmdJyM2xuyLBZnWfQR8fUiUhvazAWsVTvD9agj2HapdmmK"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IInitializableDebtToken.sol": {
        "keccak256": "0x29bcf86201c67f90d1620b5da4a0de05c611bf1fb15afeb6d2b30a70ec8aebca",
        "urls": [
          "bzz-raw://e17c25e400ac37f1cd29b9cfdba2d4bc34aa6e0c705a619acf0c69f9136150d6",
          "dweb:/ipfs/QmTcNqEpq8UbZf6o6AgwJVjuNbrNbsZWfRMhQnuZArJQ6Q"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/ILendingPool.sol": {
        "keccak256": "0x345ab4285354bb5184bdd501d7c37920a711215b6f6c2db05b05d585f2454115",
        "urls": [
          "bzz-raw://3b6264b135760dcdd59b9a3566c1305b00084922da177159a85c206ef6a91266",
          "dweb:/ipfs/QmSotEH7zF3vrEgo2gZuunWwroHgc6bw7TVRntzv7jsJn1"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IPoolIncentivesController.sol": {
        "keccak256": "0x7cb2c32050814e6d6d962a603104facc3bb1dad15171304e3ee756648e8f9ae1",
        "urls": [
          "bzz-raw://cf534f592706b2a61c539c03e5d1e199c15472bcfb4ee69838e5c93ba7914466",
          "dweb:/ipfs/QmPrvXhJigK1Ke51YwAWHon1Kv88WT26iD3MwzCaPDs1Kv"
        ],
        "license": "AGPL-3.0"
      },
      "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/protocol/libraries/helpers/Errors.sol": {
        "keccak256": "0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52",
        "urls": [
          "bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3",
          "dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM"
        ],
        "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/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": "0x070f7865fe84ce4c9ebd86bbe24771607fbdb4e8777510b46cb5064e4d9b90a3",
        "urls": [
          "bzz-raw://504fd0c937cc69cc0737c4ef5dcec477017ccbff609b45b210274fd7bf0792cf",
          "dweb:/ipfs/QmeW1TkAHib7XRBVmgMRTdmsa4Rg9HVToTMnifEE1C7mTi"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/tokenization/StableDebtToken.sol": {
        "keccak256": "0x101a2f883130cd5b551f4d0e815ed7e911a1c8f35d884e2d2c4148263fc6eb81",
        "urls": [
          "bzz-raw://6406cd3edbeb703adb79752a81080ccbd87fb93394b654685cd7aad529772ba1",
          "dweb:/ipfs/QmZxvjR5oTe6jWqyuTyiiKRpSiz6nhFoRvuVEZZwbBiHCS"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/tokenization/base/DebtTokenBase.sol": {
        "keccak256": "0x7a3cc782fbb4308dc2981007d00d94a507da3185db59628f209116af4e31f342",
        "urls": [
          "bzz-raw://a709ab96e62f86169fa36f760df6cfe9db532f5ce0b95e9437cdc93ec86273dc",
          "dweb:/ipfs/QmXJ8az9pqhhp4XSufsPTA1bhz5KHGDdFsm53itWrhi3gJ"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/tokenization/base/IncentivizedERC20.sol": {
        "keccak256": "0xeef558a6fb8826dd7eff89e1eb24072b5533825cbbfd3ee950623bb433ecabc6",
        "urls": [
          "bzz-raw://4453844f67a9d9339dda3d5081073188d45b8fd274aea524b239e3462ef67236",
          "dweb:/ipfs/QmVxGsuhu1NGFd5WqnGZns8pY1VEUALhMUTx76x6hxhkn8"
        ],
        "license": "AGPL-3.0"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "src/protocol/tokenization/StableDebtToken.sol",
    "id": 71314,
    "exportedSymbols": {
      "DebtTokenBase": [
        72045
      ],
      "ERC20Upgradeable": [
        27111
      ],
      "Errors": [
        57944
      ],
      "IAddressProvider": [
        46447
      ],
      "IERC20Upgradeable": [
        27189
      ],
      "ILendingPool": [
        48084
      ],
      "IPoolIncentivesController": [
        48421
      ],
      "IStableDebtToken": [
        48707
      ],
      "IncentivizedERC20": [
        72276
      ],
      "Initializable": [
        26136
      ],
      "MathUtils": [
        64132
      ],
      "SafeMath": [
        36719
      ],
      "StableDebtToken": [
        71313
      ],
      "WadRayMath": [
        64503
      ]
    },
    "nodeType": "SourceUnit",
    "src": "38:16803:160",
    "nodes": [
      {
        "id": 70329,
        "nodeType": "PragmaDirective",
        "src": "38:23:160",
        "nodes": [],
        "literals": [
          "solidity",
          "0.8",
          ".16"
        ]
      },
      {
        "id": 70331,
        "nodeType": "ImportDirective",
        "src": "65:73:160",
        "nodes": [],
        "absolutePath": "src/interfaces/IStableDebtToken.sol",
        "file": "../../interfaces/IStableDebtToken.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71314,
        "sourceUnit": 48708,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70330,
              "name": "IStableDebtToken",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 48707,
              "src": "74:16:160",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70333,
        "nodeType": "ImportDirective",
        "src": "140:65:160",
        "nodes": [],
        "absolutePath": "src/interfaces/ILendingPool.sol",
        "file": "../../interfaces/ILendingPool.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71314,
        "sourceUnit": 48085,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70332,
              "name": "ILendingPool",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 48084,
              "src": "149:12:160",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70335,
        "nodeType": "ImportDirective",
        "src": "207:73:160",
        "nodes": [],
        "absolutePath": "src/interfaces/IAddressProvider.sol",
        "file": "../../interfaces/IAddressProvider.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71314,
        "sourceUnit": 46448,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70334,
              "name": "IAddressProvider",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 46447,
              "src": "216:16:160",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70337,
        "nodeType": "ImportDirective",
        "src": "282:91:160",
        "nodes": [],
        "absolutePath": "src/interfaces/IPoolIncentivesController.sol",
        "file": "../../interfaces/IPoolIncentivesController.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71314,
        "sourceUnit": 48422,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70336,
              "name": "IPoolIncentivesController",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 48421,
              "src": "291:25:160",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70339,
        "nodeType": "ImportDirective",
        "src": "377:57:160",
        "nodes": [],
        "absolutePath": "src/protocol/tokenization/base/DebtTokenBase.sol",
        "file": "./base/DebtTokenBase.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71314,
        "sourceUnit": 72046,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70338,
              "name": "DebtTokenBase",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 72045,
              "src": "386:13:160",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70341,
        "nodeType": "ImportDirective",
        "src": "436:65:160",
        "nodes": [],
        "absolutePath": "src/protocol/tokenization/base/IncentivizedERC20.sol",
        "file": "./base/IncentivizedERC20.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71314,
        "sourceUnit": 72277,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70340,
              "name": "IncentivizedERC20",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 72276,
              "src": "445:17:160",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70343,
        "nodeType": "ImportDirective",
        "src": "505:60:160",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/math/MathUtils.sol",
        "file": "../libraries/math/MathUtils.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71314,
        "sourceUnit": 64133,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70342,
              "name": "MathUtils",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 64132,
              "src": "514:9:160",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70345,
        "nodeType": "ImportDirective",
        "src": "567:62:160",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/math/WadRayMath.sol",
        "file": "../libraries/math/WadRayMath.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71314,
        "sourceUnit": 64504,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70344,
              "name": "WadRayMath",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 64503,
              "src": "576:10:160",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70347,
        "nodeType": "ImportDirective",
        "src": "631:56:160",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/helpers/Errors.sol",
        "file": "../libraries/helpers/Errors.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71314,
        "sourceUnit": 57945,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70346,
              "name": "Errors",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 57944,
              "src": "640:6:160",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70349,
        "nodeType": "ImportDirective",
        "src": "691:106:160",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71314,
        "sourceUnit": 27190,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70348,
              "name": "IERC20Upgradeable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 27189,
              "src": "700:17:160",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70351,
        "nodeType": "ImportDirective",
        "src": "799:104:160",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71314,
        "sourceUnit": 27112,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70350,
              "name": "ERC20Upgradeable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 27111,
              "src": "808:16:160",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70353,
        "nodeType": "ImportDirective",
        "src": "905:98:160",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol",
        "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71314,
        "sourceUnit": 26137,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70352,
              "name": "Initializable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 26136,
              "src": "914:13:160",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70355,
        "nodeType": "ImportDirective",
        "src": "1005:75:160",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/utils/math/SafeMath.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71314,
        "sourceUnit": 36720,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70354,
              "name": "SafeMath",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 36719,
              "src": "1014:8:160",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 71313,
        "nodeType": "ContractDefinition",
        "src": "1327:15512:160",
        "nodes": [
          {
            "id": 70363,
            "nodeType": "UsingForDirective",
            "src": "1394:29:160",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 70361,
              "name": "WadRayMath",
              "nameLocations": [
                "1400:10:160"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 64503,
              "src": "1400:10:160"
            },
            "typeName": {
              "id": 70362,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1415:7:160",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 70366,
            "nodeType": "UsingForDirective",
            "src": "1429:27:160",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 70364,
              "name": "SafeMath",
              "nameLocations": [
                "1435:8:160"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 36719,
              "src": "1435:8:160"
            },
            "typeName": {
              "id": 70365,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1448:7:160",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 70369,
            "nodeType": "VariableDeclaration",
            "src": "1464:42:160",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_addressProvider",
            "nameLocation": "1490:16:160",
            "scope": 71313,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IAddressProvider_$46447",
              "typeString": "contract IAddressProvider"
            },
            "typeName": {
              "id": 70368,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 70367,
                "name": "IAddressProvider",
                "nameLocations": [
                  "1464:16:160"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 46447,
                "src": "1464:16:160"
              },
              "referencedDeclaration": 46447,
              "src": "1464:16:160",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                "typeString": "contract IAddressProvider"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 70371,
            "nodeType": "VariableDeclaration",
            "src": "1519:38:160",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_underlyingCollateral",
            "nameLocation": "1536:21:160",
            "scope": 71313,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 70370,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1519:7:160",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 70373,
            "nodeType": "VariableDeclaration",
            "src": "1564:33:160",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_underlyingAsset",
            "nameLocation": "1581:16:160",
            "scope": 71313,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 70372,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1564:7:160",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 70375,
            "nodeType": "VariableDeclaration",
            "src": "1604:38:160",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_underlyingMaxTokenId",
            "nameLocation": "1621:21:160",
            "scope": 71313,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 70374,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1604:7:160",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 70377,
            "nodeType": "VariableDeclaration",
            "src": "1649:38:160",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_underlyingMinTokenId",
            "nameLocation": "1666:21:160",
            "scope": 71313,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 70376,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1649:7:160",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 70379,
            "nodeType": "VariableDeclaration",
            "src": "1696:31:160",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_avgStableRate",
            "nameLocation": "1713:14:160",
            "scope": 71313,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 70378,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1696:7:160",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 70383,
            "nodeType": "VariableDeclaration",
            "src": "1734:47:160",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_timestamps",
            "nameLocation": "1770:11:160",
            "scope": 71313,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
              "typeString": "mapping(address => uint40)"
            },
            "typeName": {
              "id": 70382,
              "keyType": {
                "id": 70380,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1742:7:160",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1734:26:160",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
                "typeString": "mapping(address => uint40)"
              },
              "valueType": {
                "id": 70381,
                "name": "uint40",
                "nodeType": "ElementaryTypeName",
                "src": "1753:6:160",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "id": 70387,
            "nodeType": "VariableDeclaration",
            "src": "1788:53:160",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_usersStableRate",
            "nameLocation": "1825:16:160",
            "scope": 71313,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 70386,
              "keyType": {
                "id": 70384,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1796:7:160",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1788:27:160",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 70385,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1807:7:160",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "id": 70389,
            "nodeType": "VariableDeclaration",
            "src": "1848:37:160",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_totalSupplyTimestamp",
            "nameLocation": "1864:21:160",
            "scope": 71313,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint40",
              "typeString": "uint40"
            },
            "typeName": {
              "id": 70388,
              "name": "uint40",
              "nodeType": "ElementaryTypeName",
              "src": "1848:6:160",
              "typeDescriptions": {
                "typeIdentifier": "t_uint40",
                "typeString": "uint40"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 70397,
            "nodeType": "FunctionDefinition",
            "src": "1948:55:160",
            "nodes": [],
            "body": {
              "id": 70396,
              "nodeType": "Block",
              "src": "1962:41:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 70393,
                      "name": "_disableInitializers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26117,
                      "src": "1973:20:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 70394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1973:22:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 70395,
                  "nodeType": "ExpressionStatement",
                  "src": "1973:22:160"
                }
              ]
            },
            "documentation": {
              "id": 70390,
              "nodeType": "StructuredDocumentation",
              "src": "1894:48:160",
              "text": "@custom:oz-upgrades-unsafe-allow constructor"
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 70391,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1959:2:160"
            },
            "returnParameters": {
              "id": 70392,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1962:0:160"
            },
            "scope": 71313,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 70467,
            "nodeType": "FunctionDefinition",
            "src": "2692:1049:160",
            "nodes": [],
            "body": {
              "id": 70466,
              "nodeType": "Block",
              "src": "3080:661:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 70421,
                        "name": "debtTokenName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70412,
                        "src": "3116:13:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 70422,
                        "name": "debtTokenSymbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70414,
                        "src": "3131:15:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 70423,
                        "name": "debtTokenDecimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70410,
                        "src": "3148:17:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 70420,
                      "name": "__IncentivizedERC20_init",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 72081,
                      "src": "3091:24:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$__$",
                        "typeString": "function (string memory,string memory,uint8)"
                      }
                    },
                    "id": 70424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3091:75:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 70425,
                  "nodeType": "ExpressionStatement",
                  "src": "3091:75:160"
                },
                {
                  "expression": {
                    "id": 70430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 70426,
                      "name": "_addressProvider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70369,
                      "src": "3179:16:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                        "typeString": "contract IAddressProvider"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 70428,
                          "name": "addressProvider",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 70400,
                          "src": "3215:15:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 70427,
                        "name": "IAddressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46447,
                        "src": "3198:16:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IAddressProvider_$46447_$",
                          "typeString": "type(contract IAddressProvider)"
                        }
                      },
                      "id": 70429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3198:33:160",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                        "typeString": "contract IAddressProvider"
                      }
                    },
                    "src": "3179:52:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                      "typeString": "contract IAddressProvider"
                    }
                  },
                  "id": 70431,
                  "nodeType": "ExpressionStatement",
                  "src": "3179:52:160"
                },
                {
                  "expression": {
                    "id": 70434,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 70432,
                      "name": "_underlyingCollateral",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70371,
                      "src": "3244:21:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 70433,
                      "name": "underlyingCollateral",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70402,
                      "src": "3268:20:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3244:44:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 70435,
                  "nodeType": "ExpressionStatement",
                  "src": "3244:44:160"
                },
                {
                  "expression": {
                    "id": 70438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 70436,
                      "name": "_underlyingAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70373,
                      "src": "3299:16:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 70437,
                      "name": "underlyingAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70404,
                      "src": "3318:15:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3299:34:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 70439,
                  "nodeType": "ExpressionStatement",
                  "src": "3299:34:160"
                },
                {
                  "expression": {
                    "id": 70442,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 70440,
                      "name": "_underlyingMaxTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70375,
                      "src": "3344:21:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 70441,
                      "name": "underlyingMaxTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70406,
                      "src": "3368:20:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3344:44:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 70443,
                  "nodeType": "ExpressionStatement",
                  "src": "3344:44:160"
                },
                {
                  "expression": {
                    "id": 70446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 70444,
                      "name": "_underlyingMinTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70377,
                      "src": "3399:21:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 70445,
                      "name": "underlyingMinTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70408,
                      "src": "3423:20:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3399:44:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 70447,
                  "nodeType": "ExpressionStatement",
                  "src": "3399:44:160"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 70449,
                        "name": "underlyingCollateral",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70402,
                        "src": "3487:20:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 70450,
                        "name": "underlyingAsset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70404,
                        "src": "3522:15:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 70453,
                              "name": "_getLendingPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                71169
                              ],
                              "referencedDeclaration": 71169,
                              "src": "3560:15:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
                                "typeString": "function () view returns (contract ILendingPool)"
                              }
                            },
                            "id": 70454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3560:17:160",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$48084",
                              "typeString": "contract ILendingPool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ILendingPool_$48084",
                              "typeString": "contract ILendingPool"
                            }
                          ],
                          "id": 70452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3552:7:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 70451,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3552:7:160",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 70455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3552:26:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 70458,
                              "name": "_getPoolIncentivesController",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                71144
                              ],
                              "referencedDeclaration": 71144,
                              "src": "3601:28:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IPoolIncentivesController_$48421_$",
                                "typeString": "function () view returns (contract IPoolIncentivesController)"
                              }
                            },
                            "id": 70459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3601:30:160",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                              "typeString": "contract IPoolIncentivesController"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                              "typeString": "contract IPoolIncentivesController"
                            }
                          ],
                          "id": 70457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3593:7:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 70456,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3593:7:160",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 70460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3593:39:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 70461,
                        "name": "debtTokenDecimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70410,
                        "src": "3647:17:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 70462,
                        "name": "debtTokenName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70412,
                        "src": "3679:13:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 70463,
                        "name": "debtTokenSymbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70414,
                        "src": "3707:15:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 70448,
                      "name": "Initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        25982,
                        47473
                      ],
                      "referencedDeclaration": 47473,
                      "src": "3461:11:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint8_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,address,address,uint8,string memory,string memory)"
                      }
                    },
                    "id": 70464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3461:272:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 70465,
                  "nodeType": "EmitStatement",
                  "src": "3456:277:160"
                }
              ]
            },
            "baseFunctions": [
              48621
            ],
            "documentation": {
              "id": 70398,
              "nodeType": "StructuredDocumentation",
              "src": "2011:675:160",
              "text": " @dev Initializes the debt token.\n @param addressProvider The address provider \n @param underlyingCollateral The address of the underlying collateral of this debtToken\n @param underlyingAsset The address of the underlying asset of this debtToken\n @param underlyingMaxTokenId The max tokenId of the underlying collateral of this debtToken\n @param underlyingMinTokenId The min tokenId of the underlying collateral of this debtToken\n @param debtTokenDecimals The decimals of the debtToken, same as the underlying asset's\n @param debtTokenName The name of the token\n @param debtTokenSymbol The symbol of the token"
            },
            "functionSelector": "1e5fa51f",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 70418,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 70417,
                  "name": "initializer",
                  "nameLocations": [
                    "3062:11:160"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26038,
                  "src": "3062:11:160"
                },
                "nodeType": "ModifierInvocation",
                "src": "3062:11:160"
              }
            ],
            "name": "initialize",
            "nameLocation": "2701:10:160",
            "overrides": {
              "id": 70416,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3043:8:160"
            },
            "parameters": {
              "id": 70415,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70400,
                  "mutability": "mutable",
                  "name": "addressProvider",
                  "nameLocation": "2730:15:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70467,
                  "src": "2722:23:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70399,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2722:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70402,
                  "mutability": "mutable",
                  "name": "underlyingCollateral",
                  "nameLocation": "2764:20:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70467,
                  "src": "2756:28:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70401,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2756:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70404,
                  "mutability": "mutable",
                  "name": "underlyingAsset",
                  "nameLocation": "2803:15:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70467,
                  "src": "2795:23:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70403,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2795:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70406,
                  "mutability": "mutable",
                  "name": "underlyingMaxTokenId",
                  "nameLocation": "2837:20:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70467,
                  "src": "2829:28:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 70405,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2829:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70408,
                  "mutability": "mutable",
                  "name": "underlyingMinTokenId",
                  "nameLocation": "2876:20:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70467,
                  "src": "2868:28:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 70407,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2868:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70410,
                  "mutability": "mutable",
                  "name": "debtTokenDecimals",
                  "nameLocation": "2913:17:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70467,
                  "src": "2907:23:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 70409,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2907:5:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70412,
                  "mutability": "mutable",
                  "name": "debtTokenName",
                  "nameLocation": "2955:13:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70467,
                  "src": "2941:27:160",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 70411,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2941:6:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70414,
                  "mutability": "mutable",
                  "name": "debtTokenSymbol",
                  "nameLocation": "2993:15:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70467,
                  "src": "2979:29:160",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 70413,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2979:6:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2711:304:160"
            },
            "returnParameters": {
              "id": 70419,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3080:0:160"
            },
            "scope": 71313,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 70477,
            "nodeType": "FunctionDefinition",
            "src": "3882:121:160",
            "nodes": [],
            "body": {
              "id": 70476,
              "nodeType": "Block",
              "src": "3963:40:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 70474,
                    "name": "_avgStableRate",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 70379,
                    "src": "3981:14:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 70473,
                  "id": 70475,
                  "nodeType": "Return",
                  "src": "3974:21:160"
                }
              ]
            },
            "baseFunctions": [
              48649
            ],
            "documentation": {
              "id": 70468,
              "nodeType": "StructuredDocumentation",
              "src": "3749:127:160",
              "text": " @dev Returns the average stable rate across all the stable rate debt\n @return the average stable rate*"
            },
            "functionSelector": "90f6fcf2",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAverageStableRate",
            "nameLocation": "3891:20:160",
            "overrides": {
              "id": 70470,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3936:8:160"
            },
            "parameters": {
              "id": 70469,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3911:2:160"
            },
            "returnParameters": {
              "id": 70473,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70472,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 70477,
                  "src": "3954:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 70471,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3954:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3953:9:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "external"
          },
          {
            "id": 70491,
            "nodeType": "FunctionDefinition",
            "src": "4128:133:160",
            "nodes": [],
            "body": {
              "id": 70490,
              "nodeType": "Block",
              "src": "4218:43:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 70486,
                      "name": "_timestamps",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70383,
                      "src": "4236:11:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
                        "typeString": "mapping(address => uint40)"
                      }
                    },
                    "id": 70488,
                    "indexExpression": {
                      "id": 70487,
                      "name": "user",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70480,
                      "src": "4248:4:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4236:17:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    }
                  },
                  "functionReturnParameters": 70485,
                  "id": 70489,
                  "nodeType": "Return",
                  "src": "4229:24:160"
                }
              ]
            },
            "baseFunctions": [
              48665
            ],
            "documentation": {
              "id": 70478,
              "nodeType": "StructuredDocumentation",
              "src": "4011:111:160",
              "text": " @dev Returns the timestamp of the last user action\n @return The last update timestamp*"
            },
            "functionSelector": "79ce6b8c",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUserLastUpdated",
            "nameLocation": "4137:18:160",
            "overrides": {
              "id": 70482,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4192:8:160"
            },
            "parameters": {
              "id": 70481,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70480,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "4164:4:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70491,
                  "src": "4156:12:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70479,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4156:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4155:14:160"
            },
            "returnParameters": {
              "id": 70485,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70484,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 70491,
                  "src": "4210:6:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  },
                  "typeName": {
                    "id": 70483,
                    "name": "uint40",
                    "nodeType": "ElementaryTypeName",
                    "src": "4210:6:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4209:8:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "external"
          },
          {
            "id": 70505,
            "nodeType": "FunctionDefinition",
            "src": "4417:138:160",
            "nodes": [],
            "body": {
              "id": 70504,
              "nodeType": "Block",
              "src": "4507:48:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 70500,
                      "name": "_usersStableRate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70387,
                      "src": "4525:16:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 70502,
                    "indexExpression": {
                      "id": 70501,
                      "name": "user",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70494,
                      "src": "4542:4:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4525:22:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 70499,
                  "id": 70503,
                  "nodeType": "Return",
                  "src": "4518:29:160"
                }
              ]
            },
            "baseFunctions": [
              48657
            ],
            "documentation": {
              "id": 70492,
              "nodeType": "StructuredDocumentation",
              "src": "4269:142:160",
              "text": " @dev Returns the stable rate of the user\n @param user The address of the user\n @return The stable rate of user*"
            },
            "functionSelector": "e78c9b3b",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUserStableRate",
            "nameLocation": "4426:17:160",
            "overrides": {
              "id": 70496,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4480:8:160"
            },
            "parameters": {
              "id": 70495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70494,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "4452:4:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70505,
                  "src": "4444:12:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70493,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4444:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4443:14:160"
            },
            "returnParameters": {
              "id": 70499,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70498,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 70505,
                  "src": "4498:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 70497,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4498:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4497:9:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "external"
          },
          {
            "id": 70552,
            "nodeType": "FunctionDefinition",
            "src": "4682:531:160",
            "nodes": [],
            "body": {
              "id": 70551,
              "nodeType": "Block",
              "src": "4859:354:160",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    70517
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 70517,
                      "mutability": "mutable",
                      "name": "accountBalance",
                      "nameLocation": "4878:14:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 70551,
                      "src": "4870:22:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 70516,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4870:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 70522,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 70520,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70508,
                        "src": "4911:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 70518,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "4895:5:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
                          "typeString": "type(contract super StableDebtToken)"
                        }
                      },
                      "id": 70519,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4901:9:160",
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 26618,
                      "src": "4895:15:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view returns (uint256)"
                      }
                    },
                    "id": 70521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4895:24:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4870:49:160"
                },
                {
                  "assignments": [
                    70524
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 70524,
                      "mutability": "mutable",
                      "name": "stableRate",
                      "nameLocation": "4938:10:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 70551,
                      "src": "4930:18:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 70523,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4930:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 70528,
                  "initialValue": {
                    "baseExpression": {
                      "id": 70525,
                      "name": "_usersStableRate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70387,
                      "src": "4951:16:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 70527,
                    "indexExpression": {
                      "id": 70526,
                      "name": "account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70508,
                      "src": "4968:7:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4951:25:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4930:46:160"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 70531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 70529,
                      "name": "accountBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70517,
                      "src": "4991:14:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 70530,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5009:1:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4991:19:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 70535,
                  "nodeType": "IfStatement",
                  "src": "4987:60:160",
                  "trueBody": {
                    "id": 70534,
                    "nodeType": "Block",
                    "src": "5012:35:160",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "30",
                          "id": 70532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5034:1:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 70515,
                        "id": 70533,
                        "nodeType": "Return",
                        "src": "5027:8:160"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    70537
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 70537,
                      "mutability": "mutable",
                      "name": "interest",
                      "nameLocation": "5065:8:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 70551,
                      "src": "5057:16:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 70536,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5057:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 70545,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 70540,
                        "name": "stableRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70524,
                        "src": "5123:10:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 70541,
                          "name": "_timestamps",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 70383,
                          "src": "5135:11:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
                            "typeString": "mapping(address => uint40)"
                          }
                        },
                        "id": 70543,
                        "indexExpression": {
                          "id": 70542,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 70508,
                          "src": "5147:7:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5135:20:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      ],
                      "expression": {
                        "id": 70538,
                        "name": "MathUtils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64132,
                        "src": "5089:9:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MathUtils_$64132_$",
                          "typeString": "type(library MathUtils)"
                        }
                      },
                      "id": 70539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5099:23:160",
                      "memberName": "calculateLinearInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 63999,
                      "src": "5089:33:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint40_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint40) view returns (uint256)"
                      }
                    },
                    "id": 70544,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5089:67:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5057:99:160"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 70548,
                        "name": "interest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70537,
                        "src": "5196:8:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 70546,
                        "name": "accountBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70517,
                        "src": "5174:14:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 70547,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5189:6:160",
                      "memberName": "rayMul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 64384,
                      "src": "5174:21:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 70549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5174:31:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 70515,
                  "id": 70550,
                  "nodeType": "Return",
                  "src": "5167:38:160"
                }
              ]
            },
            "baseFunctions": [
              26618,
              27146
            ],
            "documentation": {
              "id": 70506,
              "nodeType": "StructuredDocumentation",
              "src": "4563:113:160",
              "text": " @dev Calculates the current user debt balance\n @return The accumulated debt of the user*"
            },
            "functionSelector": "70a08231",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nameLocation": "4691:9:160",
            "overrides": {
              "id": 70512,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 70510,
                  "name": "ERC20Upgradeable",
                  "nameLocations": [
                    "4788:16:160"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 27111,
                  "src": "4788:16:160"
                },
                {
                  "id": 70511,
                  "name": "IERC20Upgradeable",
                  "nameLocations": [
                    "4806:17:160"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 27189,
                  "src": "4806:17:160"
                }
              ],
              "src": "4778:46:160"
            },
            "parameters": {
              "id": 70509,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70508,
                  "mutability": "mutable",
                  "name": "account",
                  "nameLocation": "4709:7:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70552,
                  "src": "4701:15:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70507,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4701:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4700:17:160"
            },
            "returnParameters": {
              "id": 70515,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70514,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 70552,
                  "src": "4844:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 70513,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4844:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4843:9:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 70563,
            "nodeType": "StructDefinition",
            "src": "5221:192:160",
            "nodes": [],
            "canonicalName": "StableDebtToken.MintLocalVars",
            "members": [
              {
                "constant": false,
                "id": 70554,
                "mutability": "mutable",
                "name": "previousSupply",
                "nameLocation": "5261:14:160",
                "nodeType": "VariableDeclaration",
                "scope": 70563,
                "src": "5253:22:160",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 70553,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "5253:7:160",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 70556,
                "mutability": "mutable",
                "name": "nextSupply",
                "nameLocation": "5294:10:160",
                "nodeType": "VariableDeclaration",
                "scope": 70563,
                "src": "5286:18:160",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 70555,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "5286:7:160",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 70558,
                "mutability": "mutable",
                "name": "amountInRay",
                "nameLocation": "5323:11:160",
                "nodeType": "VariableDeclaration",
                "scope": 70563,
                "src": "5315:19:160",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 70557,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "5315:7:160",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 70560,
                "mutability": "mutable",
                "name": "newStableRate",
                "nameLocation": "5353:13:160",
                "nodeType": "VariableDeclaration",
                "scope": 70563,
                "src": "5345:21:160",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 70559,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "5345:7:160",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 70562,
                "mutability": "mutable",
                "name": "currentAvgStableRate",
                "nameLocation": "5385:20:160",
                "nodeType": "VariableDeclaration",
                "scope": 70563,
                "src": "5377:28:160",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 70561,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "5377:7:160",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "MintLocalVars",
            "nameLocation": "5228:13:160",
            "scope": 71313,
            "visibility": "public"
          },
          {
            "id": 70766,
            "nodeType": "FunctionDefinition",
            "src": "5992:1938:160",
            "nodes": [],
            "body": {
              "id": 70765,
              "nodeType": "Block",
              "src": "6162:1768:160",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    70582
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 70582,
                      "mutability": "mutable",
                      "name": "vars",
                      "nameLocation": "6194:4:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 70765,
                      "src": "6173:25:160",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                        "typeString": "struct StableDebtToken.MintLocalVars"
                      },
                      "typeName": {
                        "id": 70581,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 70580,
                          "name": "MintLocalVars",
                          "nameLocations": [
                            "6173:13:160"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 70563,
                          "src": "6173:13:160"
                        },
                        "referencedDeclaration": 70563,
                        "src": "6173:13:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MintLocalVars_$70563_storage_ptr",
                          "typeString": "struct StableDebtToken.MintLocalVars"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 70583,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6173:25:160"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 70592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 70586,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 70584,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70566,
                        "src": "6229:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "id": 70585,
                        "name": "onBehalfOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70568,
                        "src": "6237:10:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "6229:18:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 70591,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 70587,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70566,
                        "src": "6264:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 70588,
                            "name": "_addressProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70369,
                            "src": "6272:16:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                              "typeString": "contract IAddressProvider"
                            }
                          },
                          "id": 70589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6289:14:160",
                          "memberName": "getWETHGateway",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46441,
                          "src": "6272:31:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 70590,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6272:33:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "6264:41:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6229:76:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 70600,
                  "nodeType": "IfStatement",
                  "src": "6211:179:160",
                  "trueBody": {
                    "id": 70599,
                    "nodeType": "Block",
                    "src": "6317:73:160",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 70594,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70568,
                              "src": "6353:10:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 70595,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70566,
                              "src": "6365:4:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 70596,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70570,
                              "src": "6371:6:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 70593,
                            "name": "_decreaseBorrowAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 72032,
                            "src": "6328:24:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 70597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6328:50:160",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 70598,
                        "nodeType": "ExpressionStatement",
                        "src": "6328:50:160"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    null,
                    70602,
                    70604
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 70602,
                      "mutability": "mutable",
                      "name": "currentBalance",
                      "nameLocation": "6413:14:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 70765,
                      "src": "6405:22:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 70601,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6405:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 70604,
                      "mutability": "mutable",
                      "name": "balanceIncrease",
                      "nameLocation": "6437:15:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 70765,
                      "src": "6429:23:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 70603,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6429:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 70608,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 70606,
                        "name": "onBehalfOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70568,
                        "src": "6482:10:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 70605,
                      "name": "_calculateBalanceIncrease",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71010,
                      "src": "6456:25:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (address) view returns (uint256,uint256,uint256)"
                      }
                    },
                    "id": 70607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6456:37:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6402:91:160"
                },
                {
                  "expression": {
                    "id": 70614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 70609,
                        "name": "vars",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70582,
                        "src": "6506:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                          "typeString": "struct StableDebtToken.MintLocalVars memory"
                        }
                      },
                      "id": 70611,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "6511:14:160",
                      "memberName": "previousSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 70554,
                      "src": "6506:19:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 70612,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          71072
                        ],
                        "referencedDeclaration": 71072,
                        "src": "6528:11:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 70613,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6528:13:160",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6506:35:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 70615,
                  "nodeType": "ExpressionStatement",
                  "src": "6506:35:160"
                },
                {
                  "expression": {
                    "id": 70620,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 70616,
                        "name": "vars",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70582,
                        "src": "6552:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                          "typeString": "struct StableDebtToken.MintLocalVars memory"
                        }
                      },
                      "id": 70618,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "6557:20:160",
                      "memberName": "currentAvgStableRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 70562,
                      "src": "6552:25:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 70619,
                      "name": "_avgStableRate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70379,
                      "src": "6580:14:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6552:42:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 70621,
                  "nodeType": "ExpressionStatement",
                  "src": "6552:42:160"
                },
                {
                  "expression": {
                    "id": 70630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 70622,
                        "name": "vars",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70582,
                        "src": "6605:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                          "typeString": "struct StableDebtToken.MintLocalVars memory"
                        }
                      },
                      "id": 70624,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "6610:10:160",
                      "memberName": "nextSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 70556,
                      "src": "6605:15:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 70628,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 70570,
                          "src": "6647:6:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "expression": {
                            "id": 70625,
                            "name": "vars",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70582,
                            "src": "6623:4:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                              "typeString": "struct StableDebtToken.MintLocalVars memory"
                            }
                          },
                          "id": 70626,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6628:14:160",
                          "memberName": "previousSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 70554,
                          "src": "6623:19:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 70627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "6643:3:160",
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 36583,
                        "src": "6623:23:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 70629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6623:31:160",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6605:49:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 70631,
                  "nodeType": "ExpressionStatement",
                  "src": "6605:49:160"
                },
                {
                  "expression": {
                    "id": 70638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 70632,
                        "name": "vars",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70582,
                        "src": "6667:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                          "typeString": "struct StableDebtToken.MintLocalVars memory"
                        }
                      },
                      "id": 70634,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "6672:11:160",
                      "memberName": "amountInRay",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 70558,
                      "src": "6667:16:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 70635,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 70570,
                          "src": "6686:6:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 70636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "6693:8:160",
                        "memberName": "wadToRay",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 64446,
                        "src": "6686:15:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256) pure returns (uint256)"
                        }
                      },
                      "id": 70637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6686:17:160",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6667:36:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 70639,
                  "nodeType": "ExpressionStatement",
                  "src": "6667:36:160"
                },
                {
                  "expression": {
                    "id": 70666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 70640,
                        "name": "vars",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70582,
                        "src": "6716:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                          "typeString": "struct StableDebtToken.MintLocalVars memory"
                        }
                      },
                      "id": 70642,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "6721:13:160",
                      "memberName": "newStableRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 70560,
                      "src": "6716:18:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 70661,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 70570,
                                  "src": "6903:6:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 70659,
                                  "name": "currentBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 70602,
                                  "src": "6884:14:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 70660,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6899:3:160",
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 36583,
                                "src": "6884:18:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 70662,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6884:26:160",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 70663,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6911:8:160",
                            "memberName": "wadToRay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 64446,
                            "src": "6884:35:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 70664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6884:37:160",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 70655,
                                  "name": "rate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 70572,
                                  "src": "6856:4:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "expression": {
                                    "id": 70652,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 70582,
                                    "src": "6832:4:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                                      "typeString": "struct StableDebtToken.MintLocalVars memory"
                                    }
                                  },
                                  "id": 70653,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6837:11:160",
                                  "memberName": "amountInRay",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 70558,
                                  "src": "6832:16:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 70654,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6849:6:160",
                                "memberName": "rayMul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 64384,
                                "src": "6832:23:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 70656,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6832:29:160",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 70647,
                                      "name": "currentBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 70602,
                                      "src": "6787:14:160",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 70648,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "6802:8:160",
                                    "memberName": "wadToRay",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 64446,
                                    "src": "6787:23:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 70649,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6787:25:160",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "baseExpression": {
                                    "id": 70643,
                                    "name": "_usersStableRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 70387,
                                    "src": "6737:16:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 70645,
                                  "indexExpression": {
                                    "id": 70644,
                                    "name": "onBehalfOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 70568,
                                    "src": "6754:10:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6737:28:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 70646,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6780:6:160",
                                "memberName": "rayMul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 64384,
                                "src": "6737:49:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 70650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6737:76:160",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 70651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6828:3:160",
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 36583,
                            "src": "6737:94:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 70657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6737:125:160",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 70658,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "6877:6:160",
                        "memberName": "rayDiv",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 64411,
                        "src": "6737:146:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 70665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6737:185:160",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6716:206:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 70667,
                  "nodeType": "ExpressionStatement",
                  "src": "6716:206:160"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 70676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 70669,
                            "name": "vars",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70582,
                            "src": "6943:4:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                              "typeString": "struct StableDebtToken.MintLocalVars memory"
                            }
                          },
                          "id": 70670,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6948:13:160",
                          "memberName": "newStableRate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 70560,
                          "src": "6943:18:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 70673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6970:7:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint128_$",
                                  "typeString": "type(uint128)"
                                },
                                "typeName": {
                                  "id": 70672,
                                  "name": "uint128",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6970:7:160",
                                  "typeDescriptions": {}
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_uint128_$",
                                  "typeString": "type(uint128)"
                                }
                              ],
                              "id": 70671,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "6965:4:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 70674,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6965:13:160",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_uint128",
                              "typeString": "type(uint128)"
                            }
                          },
                          "id": 70675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6979:3:160",
                          "memberName": "max",
                          "nodeType": "MemberAccess",
                          "src": "6965:17:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "src": "6943:39:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "expression": {
                          "id": 70677,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 57944,
                          "src": "6984:6:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$57944_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 70678,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "6991:24:160",
                        "memberName": "LPL_STABLE_DEBT_OVERFLOW",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 57748,
                        "src": "6984:31:160",
                        "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": 70668,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6935:7:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 70679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6935:81:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 70680,
                  "nodeType": "ExpressionStatement",
                  "src": "6935:81:160"
                },
                {
                  "expression": {
                    "id": 70686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 70681,
                        "name": "_usersStableRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70387,
                        "src": "7027:16:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 70683,
                      "indexExpression": {
                        "id": 70682,
                        "name": "onBehalfOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70568,
                        "src": "7044:10:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7027:28:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 70684,
                        "name": "vars",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70582,
                        "src": "7058:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                          "typeString": "struct StableDebtToken.MintLocalVars memory"
                        }
                      },
                      "id": 70685,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7063:13:160",
                      "memberName": "newStableRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 70560,
                      "src": "7058:18:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7027:49:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 70687,
                  "nodeType": "ExpressionStatement",
                  "src": "7027:49:160"
                },
                {
                  "expression": {
                    "id": 70698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 70688,
                      "name": "_totalSupplyTimestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70389,
                      "src": "7125:21:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 70697,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "baseExpression": {
                          "id": 70689,
                          "name": "_timestamps",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 70383,
                          "src": "7149:11:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
                            "typeString": "mapping(address => uint40)"
                          }
                        },
                        "id": 70691,
                        "indexExpression": {
                          "id": 70690,
                          "name": "onBehalfOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 70568,
                          "src": "7161:10:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "7149:23:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "expression": {
                              "id": 70694,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "7182:5:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 70695,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7188:9:160",
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "7182:15:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 70693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7175:6:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint40_$",
                            "typeString": "type(uint40)"
                          },
                          "typeName": {
                            "id": 70692,
                            "name": "uint40",
                            "nodeType": "ElementaryTypeName",
                            "src": "7175:6:160",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 70696,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7175:23:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "src": "7149:49:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "src": "7125:73:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    }
                  },
                  "id": 70699,
                  "nodeType": "ExpressionStatement",
                  "src": "7125:73:160"
                },
                {
                  "expression": {
                    "id": 70726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 70700,
                        "name": "vars",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70582,
                        "src": "7266:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                          "typeString": "struct StableDebtToken.MintLocalVars memory"
                        }
                      },
                      "id": 70702,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "7271:20:160",
                      "memberName": "currentAvgStableRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 70562,
                      "src": "7266:25:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 70725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 70703,
                        "name": "_avgStableRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70379,
                        "src": "7294:14:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "expression": {
                                  "id": 70720,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 70582,
                                  "src": "7458:4:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                                    "typeString": "struct StableDebtToken.MintLocalVars memory"
                                  }
                                },
                                "id": 70721,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "7463:10:160",
                                "memberName": "nextSupply",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 70556,
                                "src": "7458:15:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 70722,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7474:8:160",
                              "memberName": "wadToRay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 64446,
                              "src": "7458:24:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 70723,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7458:26:160",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 70715,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 70582,
                                      "src": "7422:4:160",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                                        "typeString": "struct StableDebtToken.MintLocalVars memory"
                                      }
                                    },
                                    "id": 70716,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "7427:11:160",
                                    "memberName": "amountInRay",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 70558,
                                    "src": "7422:16:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 70713,
                                    "name": "rate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 70572,
                                    "src": "7410:4:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 70714,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7415:6:160",
                                  "memberName": "rayMul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 64384,
                                  "src": "7410:11:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 70717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7410:29:160",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "expression": {
                                          "id": 70707,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 70582,
                                          "src": "7364:4:160",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                                            "typeString": "struct StableDebtToken.MintLocalVars memory"
                                          }
                                        },
                                        "id": 70708,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "7369:14:160",
                                        "memberName": "previousSupply",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 70554,
                                        "src": "7364:19:160",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 70709,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "7384:8:160",
                                      "memberName": "wadToRay",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 64446,
                                      "src": "7364:28:160",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 70710,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7364:30:160",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "expression": {
                                      "id": 70704,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 70582,
                                      "src": "7311:4:160",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                                        "typeString": "struct StableDebtToken.MintLocalVars memory"
                                      }
                                    },
                                    "id": 70705,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "7326:20:160",
                                    "memberName": "currentAvgStableRate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 70562,
                                    "src": "7311:35:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 70706,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "7357:6:160",
                                  "memberName": "rayMul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 64384,
                                  "src": "7311:52:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 70711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7311:84:160",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 70712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7406:3:160",
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 36583,
                              "src": "7311:98:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 70718,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7311:129:160",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 70719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "7451:6:160",
                          "memberName": "rayDiv",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 64411,
                          "src": "7311:146:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 70724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7311:174:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "7294:191:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7266:219:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 70727,
                  "nodeType": "ExpressionStatement",
                  "src": "7266:219:160"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 70729,
                        "name": "onBehalfOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70568,
                        "src": "7504:10:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 70732,
                            "name": "balanceIncrease",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70604,
                            "src": "7527:15:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 70730,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70570,
                            "src": "7516:6:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 70731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "7523:3:160",
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 36583,
                          "src": "7516:10:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 70733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7516:27:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 70734,
                          "name": "vars",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 70582,
                          "src": "7545:4:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                            "typeString": "struct StableDebtToken.MintLocalVars memory"
                          }
                        },
                        "id": 70735,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "7550:14:160",
                        "memberName": "previousSupply",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 70554,
                        "src": "7545:19:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 70728,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        71254,
                        72226
                      ],
                      "referencedDeclaration": 71254,
                      "src": "7498:5:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 70736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7498:67:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 70737,
                  "nodeType": "ExpressionStatement",
                  "src": "7498:67:160"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 70741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7600:1:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 70740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7592:7:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 70739,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7592:7:160",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 70742,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7592:10:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 70743,
                        "name": "onBehalfOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70568,
                        "src": "7604:10:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 70744,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70570,
                        "src": "7616:6:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 70738,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27123,
                      "src": "7583:8:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 70745,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7583:40:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 70746,
                  "nodeType": "EmitStatement",
                  "src": "7578:45:160"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 70748,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70566,
                        "src": "7660:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 70749,
                        "name": "onBehalfOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70568,
                        "src": "7679:10:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 70750,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70570,
                        "src": "7704:6:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 70751,
                        "name": "currentBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70602,
                        "src": "7725:14:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 70752,
                        "name": "balanceIncrease",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70604,
                        "src": "7754:15:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 70753,
                          "name": "vars",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 70582,
                          "src": "7784:4:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                            "typeString": "struct StableDebtToken.MintLocalVars memory"
                          }
                        },
                        "id": 70754,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "7789:13:160",
                        "memberName": "newStableRate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 70560,
                        "src": "7784:18:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 70755,
                          "name": "vars",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 70582,
                          "src": "7817:4:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                            "typeString": "struct StableDebtToken.MintLocalVars memory"
                          }
                        },
                        "id": 70756,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "7822:20:160",
                        "memberName": "currentAvgStableRate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 70562,
                        "src": "7817:25:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 70757,
                          "name": "vars",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 70582,
                          "src": "7857:4:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
                            "typeString": "struct StableDebtToken.MintLocalVars memory"
                          }
                        },
                        "id": 70758,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "7862:10:160",
                        "memberName": "nextSupply",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 70556,
                        "src": "7857:15:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "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_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 70747,
                      "name": "Mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 48587,
                      "src": "7641:4:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,uint256,uint256,uint256,uint256)"
                      }
                    },
                    "id": 70759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7641:242:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 70760,
                  "nodeType": "EmitStatement",
                  "src": "7636:247:160"
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 70763,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 70761,
                      "name": "currentBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70602,
                      "src": "7903:14:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 70762,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7921:1:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7903:19:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 70579,
                  "id": 70764,
                  "nodeType": "Return",
                  "src": "7896:26:160"
                }
              ]
            },
            "baseFunctions": [
              48635
            ],
            "documentation": {
              "id": 70564,
              "nodeType": "StructuredDocumentation",
              "src": "5421:565:160",
              "text": " @dev Mints debt token to the `onBehalfOf` address.\n -  Only callable by the LendingPool\n - The resulting rate is the weighted average between the rate of the new debt\n and the rate of the previous debt\n @param user The address receiving the borrowed underlying, being the delegatee in case\n of credit delegate, or same as `onBehalfOf` otherwise\n @param onBehalfOf The address receiving the debt tokens\n @param amount The amount of debt tokens to mint\n @param rate The rate of the debt being minted*"
            },
            "functionSelector": "b3f1c93d",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 70576,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 70575,
                  "name": "onlyLendingPool",
                  "nameLocations": [
                    "6131:15:160"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 71811,
                  "src": "6131:15:160"
                },
                "nodeType": "ModifierInvocation",
                "src": "6131:15:160"
              }
            ],
            "name": "mint",
            "nameLocation": "6001:4:160",
            "overrides": {
              "id": 70574,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6122:8:160"
            },
            "parameters": {
              "id": 70573,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70566,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "6024:4:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70766,
                  "src": "6016:12:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70565,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6016:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70568,
                  "mutability": "mutable",
                  "name": "onBehalfOf",
                  "nameLocation": "6047:10:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70766,
                  "src": "6039:18:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70567,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6039:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70570,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "6076:6:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70766,
                  "src": "6068:14:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 70569,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6068:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70572,
                  "mutability": "mutable",
                  "name": "rate",
                  "nameLocation": "6101:4:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70766,
                  "src": "6093:12:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 70571,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6093:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6005:107:160"
            },
            "returnParameters": {
              "id": 70579,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70578,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 70766,
                  "src": "6156:4:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 70577,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6156:4:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6155:6:160"
            },
            "scope": 71313,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 70963,
            "nodeType": "FunctionDefinition",
            "src": "8118:2582:160",
            "nodes": [],
            "body": {
              "id": 70962,
              "nodeType": "Block",
              "src": "8196:2504:160",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    null,
                    70778,
                    70780
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 70778,
                      "mutability": "mutable",
                      "name": "currentBalance",
                      "nameLocation": "8218:14:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 70962,
                      "src": "8210:22:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 70777,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8210:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 70780,
                      "mutability": "mutable",
                      "name": "balanceIncrease",
                      "nameLocation": "8242:15:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 70962,
                      "src": "8234:23:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 70779,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8234:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 70784,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 70782,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70769,
                        "src": "8287:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 70781,
                      "name": "_calculateBalanceIncrease",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71010,
                      "src": "8261:25:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (address) view returns (uint256,uint256,uint256)"
                      }
                    },
                    "id": 70783,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8261:31:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8207:85:160"
                },
                {
                  "assignments": [
                    70786
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 70786,
                      "mutability": "mutable",
                      "name": "previousSupply",
                      "nameLocation": "8313:14:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 70962,
                      "src": "8305:22:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 70785,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8305:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 70789,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 70787,
                      "name": "totalSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        71072
                      ],
                      "referencedDeclaration": 71072,
                      "src": "8330:11:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 70788,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8330:13:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8305:38:160"
                },
                {
                  "assignments": [
                    70791
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 70791,
                      "mutability": "mutable",
                      "name": "newAvgStableRate",
                      "nameLocation": "8362:16:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 70962,
                      "src": "8354:24:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 70790,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8354:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 70793,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 70792,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8381:1:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8354:28:160"
                },
                {
                  "assignments": [
                    70795
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 70795,
                      "mutability": "mutable",
                      "name": "nextSupply",
                      "nameLocation": "8401:10:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 70962,
                      "src": "8393:18:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 70794,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8393:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 70797,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 70796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8414:1:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8393:22:160"
                },
                {
                  "assignments": [
                    70799
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 70799,
                      "mutability": "mutable",
                      "name": "userStableRate",
                      "nameLocation": "8434:14:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 70962,
                      "src": "8426:22:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 70798,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8426:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 70803,
                  "initialValue": {
                    "baseExpression": {
                      "id": 70800,
                      "name": "_usersStableRate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70387,
                      "src": "8451:16:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 70802,
                    "indexExpression": {
                      "id": 70801,
                      "name": "user",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70769,
                      "src": "8468:4:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8451:22:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8426:47:160"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 70806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 70804,
                      "name": "previousSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70786,
                      "src": "8813:14:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "id": 70805,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70771,
                      "src": "8831:6:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8813:24:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 70863,
                    "nodeType": "Block",
                    "src": "8890:709:160",
                    "statements": [
                      {
                        "expression": {
                          "id": 70817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 70812,
                            "name": "nextSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70795,
                            "src": "8905:10:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 70815,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 70771,
                                "src": "8937:6:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 70813,
                                "name": "previousSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 70786,
                                "src": "8918:14:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 70814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8933:3:160",
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 36598,
                              "src": "8918:18:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 70816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8918:26:160",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8905:39:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 70818,
                        "nodeType": "ExpressionStatement",
                        "src": "8905:39:160"
                      },
                      {
                        "assignments": [
                          70820
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 70820,
                            "mutability": "mutable",
                            "name": "firstTerm",
                            "nameLocation": "8967:9:160",
                            "nodeType": "VariableDeclaration",
                            "scope": 70863,
                            "src": "8959:17:160",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 70819,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8959:7:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 70827,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 70823,
                                  "name": "previousSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 70786,
                                  "src": "9001:14:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 70824,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "9016:8:160",
                                "memberName": "wadToRay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 64446,
                                "src": "9001:23:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 70825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9001:25:160",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 70821,
                              "name": "_avgStableRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70379,
                              "src": "8979:14:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 70822,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8994:6:160",
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 64384,
                            "src": "8979:21:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 70826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8979:48:160",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8959:68:160"
                      },
                      {
                        "assignments": [
                          70829
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 70829,
                            "mutability": "mutable",
                            "name": "secondTerm",
                            "nameLocation": "9050:10:160",
                            "nodeType": "VariableDeclaration",
                            "scope": 70863,
                            "src": "9042:18:160",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 70828,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9042:7:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 70836,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 70832,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 70771,
                                  "src": "9085:6:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 70833,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "9092:8:160",
                                "memberName": "wadToRay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 64446,
                                "src": "9085:15:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 70834,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9085:17:160",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 70830,
                              "name": "userStableRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70799,
                              "src": "9063:14:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 70831,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9078:6:160",
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 64384,
                            "src": "9063:21:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 70835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9063:40:160",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9042:61:160"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 70839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 70837,
                            "name": "secondTerm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70829,
                            "src": "9359:10:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "id": 70838,
                            "name": "firstTerm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70820,
                            "src": "9373:9:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9359:23:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 70861,
                          "nodeType": "Block",
                          "src": "9462:126:160",
                          "statements": [
                            {
                              "expression": {
                                "id": 70859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 70847,
                                  "name": "newAvgStableRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 70791,
                                  "src": "9481:16:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 70858,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 70848,
                                    "name": "_avgStableRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 70379,
                                    "src": "9500:14:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "id": 70854,
                                            "name": "nextSupply",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 70795,
                                            "src": "9550:10:160",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 70855,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "9561:8:160",
                                          "memberName": "wadToRay",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 64446,
                                          "src": "9550:19:160",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 70856,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9550:21:160",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 70851,
                                            "name": "secondTerm",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 70829,
                                            "src": "9531:10:160",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 70849,
                                            "name": "firstTerm",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 70820,
                                            "src": "9517:9:160",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 70850,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "9527:3:160",
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 36598,
                                          "src": "9517:13:160",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 70852,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9517:25:160",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 70853,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "9543:6:160",
                                      "memberName": "rayDiv",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 64411,
                                      "src": "9517:32:160",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 70857,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9517:55:160",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "9500:72:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9481:91:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 70860,
                              "nodeType": "ExpressionStatement",
                              "src": "9481:91:160"
                            }
                          ]
                        },
                        "id": 70862,
                        "nodeType": "IfStatement",
                        "src": "9355:233:160",
                        "trueBody": {
                          "id": 70846,
                          "nodeType": "Block",
                          "src": "9384:72:160",
                          "statements": [
                            {
                              "expression": {
                                "id": 70844,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 70840,
                                  "name": "newAvgStableRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 70791,
                                  "src": "9403:16:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 70843,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 70841,
                                    "name": "_avgStableRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 70379,
                                    "src": "9422:14:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "hexValue": "30",
                                    "id": 70842,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9439:1:160",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "9422:18:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9403:37:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 70845,
                              "nodeType": "ExpressionStatement",
                              "src": "9403:37:160"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 70864,
                  "nodeType": "IfStatement",
                  "src": "8809:790:160",
                  "trueBody": {
                    "id": 70811,
                    "nodeType": "Block",
                    "src": "8839:45:160",
                    "statements": [
                      {
                        "expression": {
                          "id": 70809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 70807,
                            "name": "_avgStableRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70379,
                            "src": "8854:14:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 70808,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8871:1:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8854:18:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 70810,
                        "nodeType": "ExpressionStatement",
                        "src": "8854:18:160"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 70867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 70865,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70771,
                      "src": "9615:6:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "id": 70866,
                      "name": "currentBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70778,
                      "src": "9625:14:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9615:24:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 70891,
                    "nodeType": "Block",
                    "src": "9736:110:160",
                    "statements": [
                      {
                        "expression": {
                          "id": 70889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 70881,
                              "name": "_timestamps",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70383,
                              "src": "9791:11:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
                                "typeString": "mapping(address => uint40)"
                              }
                            },
                            "id": 70883,
                            "indexExpression": {
                              "id": 70882,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70769,
                              "src": "9803:4:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9791:17:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 70886,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "9818:5:160",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 70887,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "9824:9:160",
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "9818:15:160",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 70885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9811:6:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint40_$",
                                "typeString": "type(uint40)"
                              },
                              "typeName": {
                                "id": 70884,
                                "name": "uint40",
                                "nodeType": "ElementaryTypeName",
                                "src": "9811:6:160",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 70888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9811:23:160",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "src": "9791:43:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "id": 70890,
                        "nodeType": "ExpressionStatement",
                        "src": "9791:43:160"
                      }
                    ]
                  },
                  "id": 70892,
                  "nodeType": "IfStatement",
                  "src": "9611:235:160",
                  "trueBody": {
                    "id": 70880,
                    "nodeType": "Block",
                    "src": "9641:89:160",
                    "statements": [
                      {
                        "expression": {
                          "id": 70872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 70868,
                              "name": "_usersStableRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70387,
                              "src": "9656:16:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 70870,
                            "indexExpression": {
                              "id": 70869,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70769,
                              "src": "9673:4:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9656:22:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 70871,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9681:1:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9656:26:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 70873,
                        "nodeType": "ExpressionStatement",
                        "src": "9656:26:160"
                      },
                      {
                        "expression": {
                          "id": 70878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 70874,
                              "name": "_timestamps",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70383,
                              "src": "9697:11:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
                                "typeString": "mapping(address => uint40)"
                              }
                            },
                            "id": 70876,
                            "indexExpression": {
                              "id": 70875,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70769,
                              "src": "9709:4:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9697:17:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 70877,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9717:1:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9697:21:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "id": 70879,
                        "nodeType": "ExpressionStatement",
                        "src": "9697:21:160"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 70899,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 70893,
                      "name": "_totalSupplyTimestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70389,
                      "src": "9892:21:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 70896,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "9923:5:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 70897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "9929:9:160",
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "src": "9923:15:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 70895,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "9916:6:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint40_$",
                          "typeString": "type(uint40)"
                        },
                        "typeName": {
                          "id": 70894,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "9916:6:160",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 70898,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9916:23:160",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "src": "9892:47:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    }
                  },
                  "id": 70900,
                  "nodeType": "ExpressionStatement",
                  "src": "9892:47:160"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 70903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 70901,
                      "name": "balanceIncrease",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70780,
                      "src": "9956:15:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 70902,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70771,
                      "src": "9974:6:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9956:24:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 70951,
                    "nodeType": "Block",
                    "src": "10401:240:160",
                    "statements": [
                      {
                        "assignments": [
                          70930
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 70930,
                            "mutability": "mutable",
                            "name": "amountToBurn",
                            "nameLocation": "10424:12:160",
                            "nodeType": "VariableDeclaration",
                            "scope": 70951,
                            "src": "10416:20:160",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 70929,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10416:7:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 70935,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 70933,
                              "name": "balanceIncrease",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70780,
                              "src": "10450:15:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 70931,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70771,
                              "src": "10439:6:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 70932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10446:3:160",
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 36598,
                            "src": "10439:10:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 70934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10439:27:160",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10416:50:160"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 70937,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70769,
                              "src": "10487:4:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 70938,
                              "name": "amountToBurn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70930,
                              "src": "10493:12:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 70939,
                              "name": "previousSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70786,
                              "src": "10507:14:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 70936,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              71312,
                              72275
                            ],
                            "referencedDeclaration": 71312,
                            "src": "10481:5:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 70940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10481:41:160",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 70941,
                        "nodeType": "ExpressionStatement",
                        "src": "10481:41:160"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 70943,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70769,
                              "src": "10547:4:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 70944,
                              "name": "amountToBurn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70930,
                              "src": "10553:12:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 70945,
                              "name": "currentBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70778,
                              "src": "10567:14:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 70946,
                              "name": "balanceIncrease",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70780,
                              "src": "10583:15:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 70947,
                              "name": "newAvgStableRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70791,
                              "src": "10600:16:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 70948,
                              "name": "nextSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70795,
                              "src": "10618:10:160",
                              "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"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 70942,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 48602,
                            "src": "10542:4:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 70949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10542:87:160",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 70950,
                        "nodeType": "EmitStatement",
                        "src": "10537:92:160"
                      }
                    ]
                  },
                  "id": 70952,
                  "nodeType": "IfStatement",
                  "src": "9952:689:160",
                  "trueBody": {
                    "id": 70928,
                    "nodeType": "Block",
                    "src": "9982:413:160",
                    "statements": [
                      {
                        "assignments": [
                          70905
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 70905,
                            "mutability": "mutable",
                            "name": "amountToMint",
                            "nameLocation": "10005:12:160",
                            "nodeType": "VariableDeclaration",
                            "scope": 70928,
                            "src": "9997:20:160",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 70904,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9997:7:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 70910,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 70908,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70771,
                              "src": "10040:6:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 70906,
                              "name": "balanceIncrease",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70780,
                              "src": "10020:15:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 70907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10036:3:160",
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 36598,
                            "src": "10020:19:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 70909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10020:27:160",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9997:50:160"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 70912,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70769,
                              "src": "10068:4:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 70913,
                              "name": "amountToMint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70905,
                              "src": "10074:12:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 70914,
                              "name": "previousSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70786,
                              "src": "10088:14:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 70911,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              71254,
                              72226
                            ],
                            "referencedDeclaration": 71254,
                            "src": "10062:5:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 70915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10062:41:160",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 70916,
                        "nodeType": "ExpressionStatement",
                        "src": "10062:41:160"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 70918,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70769,
                              "src": "10146:4:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 70919,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70769,
                              "src": "10169:4:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 70920,
                              "name": "amountToMint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70905,
                              "src": "10192:12:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 70921,
                              "name": "currentBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70778,
                              "src": "10223:14:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 70922,
                              "name": "balanceIncrease",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70780,
                              "src": "10256:15:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 70923,
                              "name": "userStableRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70799,
                              "src": "10290:14:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 70924,
                              "name": "newAvgStableRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70791,
                              "src": "10323:16:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 70925,
                              "name": "nextSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70795,
                              "src": "10358:10:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "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_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 70917,
                            "name": "Mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 48587,
                            "src": "10123:4:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 70926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10123:260:160",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 70927,
                        "nodeType": "EmitStatement",
                        "src": "10118:265:160"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 70954,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70769,
                        "src": "10667:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 70957,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10681:1:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 70956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10673:7:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 70955,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10673:7:160",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 70958,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10673:10:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 70959,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70771,
                        "src": "10685:6:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 70953,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27123,
                      "src": "10658:8:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 70960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10658:34:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 70961,
                  "nodeType": "EmitStatement",
                  "src": "10653:39:160"
                }
              ]
            },
            "baseFunctions": [
              48643
            ],
            "documentation": {
              "id": 70767,
              "nodeType": "StructuredDocumentation",
              "src": "7938:174:160",
              "text": " @dev Burns debt of `user`\n @param user The address of the user getting his debt burned\n @param amount The amount of debt tokens getting burned*"
            },
            "functionSelector": "9dc29fac",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 70775,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 70774,
                  "name": "onlyLendingPool",
                  "nameLocations": [
                    "8180:15:160"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 71811,
                  "src": "8180:15:160"
                },
                "nodeType": "ModifierInvocation",
                "src": "8180:15:160"
              }
            ],
            "name": "burn",
            "nameLocation": "8127:4:160",
            "overrides": {
              "id": 70773,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8171:8:160"
            },
            "parameters": {
              "id": 70772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70769,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "8140:4:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70963,
                  "src": "8132:12:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70768,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8132:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70771,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "8154:6:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 70963,
                  "src": "8146:14:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 70770,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8146:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8131:30:160"
            },
            "returnParameters": {
              "id": 70776,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8196:0:160"
            },
            "scope": 71313,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 71010,
            "nodeType": "FunctionDefinition",
            "src": "10990:666:160",
            "nodes": [],
            "body": {
              "id": 71009,
              "nodeType": "Block",
              "src": "11171:485:160",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    70976
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 70976,
                      "mutability": "mutable",
                      "name": "previousPrincipalBalance",
                      "nameLocation": "11190:24:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 71009,
                      "src": "11182:32:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 70975,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11182:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 70981,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 70979,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70966,
                        "src": "11233:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 70977,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "11217:5:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
                          "typeString": "type(contract super StableDebtToken)"
                        }
                      },
                      "id": 70978,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11223:9:160",
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 26618,
                      "src": "11217:15:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view returns (uint256)"
                      }
                    },
                    "id": 70980,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11217:21:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11182:56:160"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 70984,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 70982,
                      "name": "previousPrincipalBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70976,
                      "src": "11255:24:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 70983,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11283:1:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11255:29:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 70991,
                  "nodeType": "IfStatement",
                  "src": "11251:78:160",
                  "trueBody": {
                    "id": 70990,
                    "nodeType": "Block",
                    "src": "11286:43:160",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "hexValue": "30",
                              "id": 70985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11309:1:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "hexValue": "30",
                              "id": 70986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11312:1:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "hexValue": "30",
                              "id": 70987,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11315:1:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 70988,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "11308:9:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                            "typeString": "tuple(int_const 0,int_const 0,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 70974,
                        "id": 70989,
                        "nodeType": "Return",
                        "src": "11301:16:160"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    70993
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 70993,
                      "mutability": "mutable",
                      "name": "balanceIncrease",
                      "nameLocation": "11425:15:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 71009,
                      "src": "11417:23:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 70992,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11417:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71000,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 70998,
                        "name": "previousPrincipalBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70976,
                        "src": "11463:24:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "id": 70995,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70966,
                            "src": "11453:4:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 70994,
                          "name": "balanceOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            70552
                          ],
                          "referencedDeclaration": 70552,
                          "src": "11443:9:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view returns (uint256)"
                          }
                        },
                        "id": 70996,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11443:15:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 70997,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11459:3:160",
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 36598,
                      "src": "11443:19:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 70999,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11443:45:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11417:71:160"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "id": 71001,
                        "name": "previousPrincipalBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70976,
                        "src": "11523:24:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 71004,
                            "name": "balanceIncrease",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70993,
                            "src": "11591:15:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 71002,
                            "name": "previousPrincipalBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70976,
                            "src": "11562:24:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 71003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "11587:3:160",
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 36583,
                          "src": "11562:28:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 71005,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11562:45:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 71006,
                        "name": "balanceIncrease",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70993,
                        "src": "11622:15:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 71007,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "11508:140:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 70974,
                  "id": 71008,
                  "nodeType": "Return",
                  "src": "11501:147:160"
                }
              ]
            },
            "documentation": {
              "id": 70964,
              "nodeType": "StructuredDocumentation",
              "src": "10708:276:160",
              "text": " @dev Calculates the increase in balance since the last user interaction\n @param user The address of the user for which the interest is being accumulated\n @return The previous principal balance, the new principal balance and the balance increase*"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_calculateBalanceIncrease",
            "nameLocation": "10999:25:160",
            "parameters": {
              "id": 70967,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70966,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "11033:4:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 71010,
                  "src": "11025:12:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70965,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11025:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11024:14:160"
            },
            "returnParameters": {
              "id": 70974,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70969,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71010,
                  "src": "11103:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 70968,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11103:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70971,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71010,
                  "src": "11125:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 70970,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11125:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70973,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71010,
                  "src": "11147:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 70972,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11147:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11088:77:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 71038,
            "nodeType": "FunctionDefinition",
            "src": "11795:343:160",
            "nodes": [],
            "body": {
              "id": 71037,
              "nodeType": "Block",
              "src": "11989:149:160",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    71024
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71024,
                      "mutability": "mutable",
                      "name": "avgRate",
                      "nameLocation": "12008:7:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 71037,
                      "src": "12000:15:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 71023,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12000:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71026,
                  "initialValue": {
                    "id": 71025,
                    "name": "_avgStableRate",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 70379,
                    "src": "12018:14:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12000:32:160"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 71027,
                            "name": "super",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -25,
                            "src": "12051:5:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
                              "typeString": "type(contract super StableDebtToken)"
                            }
                          },
                          "id": 71028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "12057:11:160",
                          "memberName": "totalSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 26604,
                          "src": "12051:17:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 71029,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12051:19:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 71031,
                            "name": "avgRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 71024,
                            "src": "12089:7:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 71030,
                          "name": "_calcTotalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 71204,
                          "src": "12072:16:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) view returns (uint256)"
                          }
                        },
                        "id": 71032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12072:25:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 71033,
                        "name": "avgRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71024,
                        "src": "12099:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 71034,
                        "name": "_totalSupplyTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70389,
                        "src": "12108:21:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      }
                    ],
                    "id": 71035,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "12050:80:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint40_$",
                      "typeString": "tuple(uint256,uint256,uint256,uint40)"
                    }
                  },
                  "functionReturnParameters": 71022,
                  "id": 71036,
                  "nodeType": "Return",
                  "src": "12043:87:160"
                }
              ]
            },
            "baseFunctions": [
              48677
            ],
            "documentation": {
              "id": 71011,
              "nodeType": "StructuredDocumentation",
              "src": "11664:125:160",
              "text": " @dev Returns the principal and total supply, the average borrow rate and the last supply update timestamp*"
            },
            "functionSelector": "79774338",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSupplyData",
            "nameLocation": "11804:13:160",
            "overrides": {
              "id": 71013,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11859:8:160"
            },
            "parameters": {
              "id": 71012,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11817:2:160"
            },
            "returnParameters": {
              "id": 71022,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71015,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71038,
                  "src": "11900:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71014,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11900:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71017,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71038,
                  "src": "11922:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71016,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11922:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71019,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71038,
                  "src": "11944:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71018,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11944:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71021,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71038,
                  "src": "11966:6:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  },
                  "typeName": {
                    "id": 71020,
                    "name": "uint40",
                    "nodeType": "ElementaryTypeName",
                    "src": "11966:6:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11885:98:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 71058,
            "nodeType": "FunctionDefinition",
            "src": "12233:189:160",
            "nodes": [],
            "body": {
              "id": 71057,
              "nodeType": "Block",
              "src": "12317:105:160",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    71048
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71048,
                      "mutability": "mutable",
                      "name": "avgRate",
                      "nameLocation": "12336:7:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 71057,
                      "src": "12328:15:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 71047,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12328:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71050,
                  "initialValue": {
                    "id": 71049,
                    "name": "_avgStableRate",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 70379,
                    "src": "12346:14:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12328:32:160"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "arguments": [
                          {
                            "id": 71052,
                            "name": "avgRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 71048,
                            "src": "12396:7:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 71051,
                          "name": "_calcTotalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 71204,
                          "src": "12379:16:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) view returns (uint256)"
                          }
                        },
                        "id": 71053,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12379:25:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 71054,
                        "name": "avgRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71048,
                        "src": "12406:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 71055,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "12378:36:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 71046,
                  "id": 71056,
                  "nodeType": "Return",
                  "src": "12371:43:160"
                }
              ]
            },
            "baseFunctions": [
              48691
            ],
            "documentation": {
              "id": 71039,
              "nodeType": "StructuredDocumentation",
              "src": "12146:81:160",
              "text": " @dev Returns the the total supply and the average stable rate*"
            },
            "functionSelector": "f731e9be",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTotalSupplyAndAvgRate",
            "nameLocation": "12242:24:160",
            "overrides": {
              "id": 71041,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12281:8:160"
            },
            "parameters": {
              "id": 71040,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12266:2:160"
            },
            "returnParameters": {
              "id": 71046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71043,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71058,
                  "src": "12299:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71042,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12299:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71045,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71058,
                  "src": "12308:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71044,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12308:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12298:18:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 71072,
            "nodeType": "FunctionDefinition",
            "src": "12485:204:160",
            "nodes": [],
            "body": {
              "id": 71071,
              "nodeType": "Block",
              "src": "12631:58:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 71068,
                        "name": "_avgStableRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70379,
                        "src": "12666:14:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 71067,
                      "name": "_calcTotalSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71204,
                      "src": "12649:16:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256)"
                      }
                    },
                    "id": 71069,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12649:32:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 71066,
                  "id": 71070,
                  "nodeType": "Return",
                  "src": "12642:39:160"
                }
              ]
            },
            "baseFunctions": [
              26604,
              27138
            ],
            "documentation": {
              "id": 71059,
              "nodeType": "StructuredDocumentation",
              "src": "12430:49:160",
              "text": " @dev Returns the total supply*"
            },
            "functionSelector": "18160ddd",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalSupply",
            "nameLocation": "12494:11:160",
            "overrides": {
              "id": 71063,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 71061,
                  "name": "ERC20Upgradeable",
                  "nameLocations": [
                    "12560:16:160"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 27111,
                  "src": "12560:16:160"
                },
                {
                  "id": 71062,
                  "name": "IERC20Upgradeable",
                  "nameLocations": [
                    "12578:17:160"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 27189,
                  "src": "12578:17:160"
                }
              ],
              "src": "12550:46:160"
            },
            "parameters": {
              "id": 71060,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12505:2:160"
            },
            "returnParameters": {
              "id": 71066,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71065,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71072,
                  "src": "12616:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71064,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12616:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12615:9:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 71082,
            "nodeType": "FunctionDefinition",
            "src": "12787:122:160",
            "nodes": [],
            "body": {
              "id": 71081,
              "nodeType": "Block",
              "src": "12862:47:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 71079,
                    "name": "_totalSupplyTimestamp",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 70389,
                    "src": "12880:21:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    }
                  },
                  "functionReturnParameters": 71078,
                  "id": 71080,
                  "nodeType": "Return",
                  "src": "12873:28:160"
                }
              ]
            },
            "baseFunctions": [
              48683
            ],
            "documentation": {
              "id": 71073,
              "nodeType": "StructuredDocumentation",
              "src": "12697:84:160",
              "text": " @dev Returns the timestamp at which the total supply was updated*"
            },
            "functionSelector": "e7484890",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTotalSupplyLastUpdated",
            "nameLocation": "12796:25:160",
            "overrides": {
              "id": 71075,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12836:8:160"
            },
            "parameters": {
              "id": 71074,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12821:2:160"
            },
            "returnParameters": {
              "id": 71078,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71077,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71082,
                  "src": "12854:6:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  },
                  "typeName": {
                    "id": 71076,
                    "name": "uint40",
                    "nodeType": "ElementaryTypeName",
                    "src": "12854:6:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12853:8:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 71097,
            "nodeType": "FunctionDefinition",
            "src": "13113:138:160",
            "nodes": [],
            "body": {
              "id": 71096,
              "nodeType": "Block",
              "src": "13204:47:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 71093,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71085,
                        "src": "13238:4:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 71091,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "13222:5:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
                          "typeString": "type(contract super StableDebtToken)"
                        }
                      },
                      "id": 71092,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13228:9:160",
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 26618,
                      "src": "13222:15:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view returns (uint256)"
                      }
                    },
                    "id": 71094,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13222:21:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 71090,
                  "id": 71095,
                  "nodeType": "Return",
                  "src": "13215:28:160"
                }
              ]
            },
            "baseFunctions": [
              48699
            ],
            "documentation": {
              "id": 71083,
              "nodeType": "StructuredDocumentation",
              "src": "12917:190:160",
              "text": " @dev Returns the principal debt balance of the user from\n @param user The user's address\n @return The debt balance of the user since the last burn/mint action*"
            },
            "functionSelector": "c634dfaa",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "principalBalanceOf",
            "nameLocation": "13122:18:160",
            "overrides": {
              "id": 71087,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13177:8:160"
            },
            "parameters": {
              "id": 71086,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71085,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "13149:4:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 71097,
                  "src": "13141:12:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71084,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13141:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13140:14:160"
            },
            "returnParameters": {
              "id": 71090,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71089,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71097,
                  "src": "13195:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71088,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13195:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13194:9:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "external"
          },
          {
            "id": 71106,
            "nodeType": "FunctionDefinition",
            "src": "13370:108:160",
            "nodes": [],
            "body": {
              "id": 71105,
              "nodeType": "Block",
              "src": "13436:42:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 71103,
                    "name": "_underlyingAsset",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 70373,
                    "src": "13454:16:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 71102,
                  "id": 71104,
                  "nodeType": "Return",
                  "src": "13447:23:160"
                }
              ]
            },
            "documentation": {
              "id": 71098,
              "nodeType": "StructuredDocumentation",
              "src": "13259:105:160",
              "text": " @dev Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)*"
            },
            "functionSelector": "b16a19de",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "UNDERLYING_ASSET_ADDRESS",
            "nameLocation": "13379:24:160",
            "parameters": {
              "id": 71099,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13403:2:160"
            },
            "returnParameters": {
              "id": 71102,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71101,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71106,
                  "src": "13427:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71100,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13427:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13426:9:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 71117,
            "nodeType": "FunctionDefinition",
            "src": "13582:94:160",
            "nodes": [],
            "body": {
              "id": 71116,
              "nodeType": "Block",
              "src": "13633:43:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 71113,
                      "name": "_getLendingPool",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        71169
                      ],
                      "referencedDeclaration": 71169,
                      "src": "13651:15:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
                        "typeString": "function () view returns (contract ILendingPool)"
                      }
                    },
                    "id": 71114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13651:17:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$48084",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "functionReturnParameters": 71112,
                  "id": 71115,
                  "nodeType": "Return",
                  "src": "13644:24:160"
                }
              ]
            },
            "documentation": {
              "id": 71107,
              "nodeType": "StructuredDocumentation",
              "src": "13486:90:160",
              "text": " @dev Returns the address of the lending pool where this aToken is used*"
            },
            "functionSelector": "7535d246",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "POOL",
            "nameLocation": "13591:4:160",
            "parameters": {
              "id": 71108,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13595:2:160"
            },
            "returnParameters": {
              "id": 71112,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71111,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71117,
                  "src": "13619:12:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPool_$48084",
                    "typeString": "contract ILendingPool"
                  },
                  "typeName": {
                    "id": 71110,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 71109,
                      "name": "ILendingPool",
                      "nameLocations": [
                        "13619:12:160"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 48084,
                      "src": "13619:12:160"
                    },
                    "referencedDeclaration": 48084,
                    "src": "13619:12:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$48084",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13618:14:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 71129,
            "nodeType": "FunctionDefinition",
            "src": "13772:154:160",
            "nodes": [],
            "body": {
              "id": 71128,
              "nodeType": "Block",
              "src": "13870:56:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 71125,
                      "name": "_getPoolIncentivesController",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        71144
                      ],
                      "referencedDeclaration": 71144,
                      "src": "13888:28:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IPoolIncentivesController_$48421_$",
                        "typeString": "function () view returns (contract IPoolIncentivesController)"
                      }
                    },
                    "id": 71126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13888:30:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                      "typeString": "contract IPoolIncentivesController"
                    }
                  },
                  "functionReturnParameters": 71124,
                  "id": 71127,
                  "nodeType": "Return",
                  "src": "13881:37:160"
                }
              ]
            },
            "baseFunctions": [
              48706
            ],
            "documentation": {
              "id": 71118,
              "nodeType": "StructuredDocumentation",
              "src": "13684:82:160",
              "text": " @dev Returns the address of the incentives controller contract*"
            },
            "functionSelector": "19ef9268",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPoolIncentivesController",
            "nameLocation": "13781:27:160",
            "overrides": {
              "id": 71120,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13825:8:160"
            },
            "parameters": {
              "id": 71119,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13808:2:160"
            },
            "returnParameters": {
              "id": 71124,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71123,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71129,
                  "src": "13843:25:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                    "typeString": "contract IPoolIncentivesController"
                  },
                  "typeName": {
                    "id": 71122,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 71121,
                      "name": "IPoolIncentivesController",
                      "nameLocations": [
                        "13843:25:160"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 48421,
                      "src": "13843:25:160"
                    },
                    "referencedDeclaration": 48421,
                    "src": "13843:25:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                      "typeString": "contract IPoolIncentivesController"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13842:27:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 71144,
            "nodeType": "FunctionDefinition",
            "src": "14020:198:160",
            "nodes": [],
            "body": {
              "id": 71143,
              "nodeType": "Block",
              "src": "14119:99:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 71138,
                            "name": "_addressProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70369,
                            "src": "14163:16:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                              "typeString": "contract IAddressProvider"
                            }
                          },
                          "id": 71139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "14180:27:160",
                          "memberName": "getPoolIncentivesController",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46361,
                          "src": "14163:44:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 71140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14163:46:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 71137,
                      "name": "IPoolIncentivesController",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 48421,
                      "src": "14137:25:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IPoolIncentivesController_$48421_$",
                        "typeString": "type(contract IPoolIncentivesController)"
                      }
                    },
                    "id": 71141,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14137:73:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                      "typeString": "contract IPoolIncentivesController"
                    }
                  },
                  "functionReturnParameters": 71136,
                  "id": 71142,
                  "nodeType": "Return",
                  "src": "14130:80:160"
                }
              ]
            },
            "baseFunctions": [
              72100
            ],
            "documentation": {
              "id": 71130,
              "nodeType": "StructuredDocumentation",
              "src": "13934:80:160",
              "text": " @dev For internal usage in the logic of the parent contracts*"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getPoolIncentivesController",
            "nameLocation": "14029:28:160",
            "overrides": {
              "id": 71132,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14074:8:160"
            },
            "parameters": {
              "id": 71131,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14057:2:160"
            },
            "returnParameters": {
              "id": 71136,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71135,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71144,
                  "src": "14092:25:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                    "typeString": "contract IPoolIncentivesController"
                  },
                  "typeName": {
                    "id": 71134,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 71133,
                      "name": "IPoolIncentivesController",
                      "nameLocations": [
                        "14092:25:160"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 48421,
                      "src": "14092:25:160"
                    },
                    "referencedDeclaration": 48421,
                    "src": "14092:25:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                      "typeString": "contract IPoolIncentivesController"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14091:27:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 71154,
            "nodeType": "FunctionDefinition",
            "src": "14312:121:160",
            "nodes": [],
            "body": {
              "id": 71153,
              "nodeType": "Block",
              "src": "14391:42:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 71151,
                    "name": "_underlyingAsset",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 70373,
                    "src": "14409:16:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 71150,
                  "id": 71152,
                  "nodeType": "Return",
                  "src": "14402:23:160"
                }
              ]
            },
            "baseFunctions": [
              72038
            ],
            "documentation": {
              "id": 71145,
              "nodeType": "StructuredDocumentation",
              "src": "14226:80:160",
              "text": " @dev For internal usage in the logic of the parent contracts*"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getUnderlyingAssetAddress",
            "nameLocation": "14321:26:160",
            "overrides": {
              "id": 71147,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14364:8:160"
            },
            "parameters": {
              "id": 71146,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14347:2:160"
            },
            "returnParameters": {
              "id": 71150,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71149,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71154,
                  "src": "14382:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71148,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14382:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14381:9:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 71169,
            "nodeType": "FunctionDefinition",
            "src": "14527:146:160",
            "nodes": [],
            "body": {
              "id": 71168,
              "nodeType": "Block",
              "src": "14600:73:160",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 71163,
                            "name": "_addressProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70369,
                            "src": "14631:16:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                              "typeString": "contract IAddressProvider"
                            }
                          },
                          "id": 71164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "14648:14:160",
                          "memberName": "getLendingPool",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46256,
                          "src": "14631:31:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 71165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14631:33:160",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 71162,
                      "name": "ILendingPool",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 48084,
                      "src": "14618:12:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ILendingPool_$48084_$",
                        "typeString": "type(contract ILendingPool)"
                      }
                    },
                    "id": 71166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14618:47:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$48084",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "functionReturnParameters": 71161,
                  "id": 71167,
                  "nodeType": "Return",
                  "src": "14611:54:160"
                }
              ]
            },
            "baseFunctions": [
              72044
            ],
            "documentation": {
              "id": 71155,
              "nodeType": "StructuredDocumentation",
              "src": "14441:80:160",
              "text": " @dev For internal usage in the logic of the parent contracts*"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getLendingPool",
            "nameLocation": "14536:15:160",
            "overrides": {
              "id": 71157,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14568:8:160"
            },
            "parameters": {
              "id": 71156,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14551:2:160"
            },
            "returnParameters": {
              "id": 71161,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71160,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71169,
                  "src": "14586:12:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPool_$48084",
                    "typeString": "contract ILendingPool"
                  },
                  "typeName": {
                    "id": 71159,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 71158,
                      "name": "ILendingPool",
                      "nameLocations": [
                        "14586:12:160"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 48084,
                      "src": "14586:12:160"
                    },
                    "referencedDeclaration": 48084,
                    "src": "14586:12:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$48084",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14585:14:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 71204,
            "nodeType": "FunctionDefinition",
            "src": "14890:405:160",
            "nodes": [],
            "body": {
              "id": 71203,
              "nodeType": "Block",
              "src": "14973:322:160",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    71178
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71178,
                      "mutability": "mutable",
                      "name": "principalSupply",
                      "nameLocation": "14992:15:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 71203,
                      "src": "14984:23:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 71177,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14984:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71182,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 71179,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "15010:5:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
                          "typeString": "type(contract super StableDebtToken)"
                        }
                      },
                      "id": 71180,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15016:11:160",
                      "memberName": "totalSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 26604,
                      "src": "15010:17:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 71181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15010:19:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14984:45:160"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 71185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 71183,
                      "name": "principalSupply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71178,
                      "src": "15046:15:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 71184,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15065:1:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "15046:20:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 71189,
                  "nodeType": "IfStatement",
                  "src": "15042:61:160",
                  "trueBody": {
                    "id": 71188,
                    "nodeType": "Block",
                    "src": "15068:35:160",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "30",
                          "id": 71186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15090:1:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 71176,
                        "id": 71187,
                        "nodeType": "Return",
                        "src": "15083:8:160"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    71191
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71191,
                      "mutability": "mutable",
                      "name": "cumulatedInterest",
                      "nameLocation": "15123:17:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 71203,
                      "src": "15115:25:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 71190,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15115:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71197,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 71194,
                        "name": "avgRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71172,
                        "src": "15195:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 71195,
                        "name": "_totalSupplyTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70389,
                        "src": "15204:21:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      ],
                      "expression": {
                        "id": 71192,
                        "name": "MathUtils",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64132,
                        "src": "15157:9:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MathUtils_$64132_$",
                          "typeString": "type(library MathUtils)"
                        }
                      },
                      "id": 71193,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15167:27:160",
                      "memberName": "calculateCompoundedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 64131,
                      "src": "15157:37:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint40_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint40) view returns (uint256)"
                      }
                    },
                    "id": 71196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15157:69:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15115:111:160"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 71200,
                        "name": "cumulatedInterest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71191,
                        "src": "15269:17:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 71198,
                        "name": "principalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71178,
                        "src": "15246:15:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 71199,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15262:6:160",
                      "memberName": "rayMul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 64384,
                      "src": "15246:22:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 71201,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15246:41:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 71176,
                  "id": 71202,
                  "nodeType": "Return",
                  "src": "15239:48:160"
                }
              ]
            },
            "documentation": {
              "id": 71170,
              "nodeType": "StructuredDocumentation",
              "src": "14681:203:160",
              "text": " @dev Calculates the total supply\n @param avgRate The average rate at which the total supply increases\n @return The debt balance of the user since the last burn/mint action*"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_calcTotalSupply",
            "nameLocation": "14899:16:160",
            "parameters": {
              "id": 71173,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71172,
                  "mutability": "mutable",
                  "name": "avgRate",
                  "nameLocation": "14924:7:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 71204,
                  "src": "14916:15:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71171,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14916:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14915:17:160"
            },
            "returnParameters": {
              "id": 71176,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71175,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71204,
                  "src": "14964:7:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71174,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14964:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14963:9:160"
            },
            "scope": 71313,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "id": 71254,
            "nodeType": "FunctionDefinition",
            "src": "15545:482:160",
            "nodes": [],
            "body": {
              "id": 71253,
              "nodeType": "Block",
              "src": "15660:367:160",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    71215
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71215,
                      "mutability": "mutable",
                      "name": "oldAccountBalance",
                      "nameLocation": "15679:17:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 71253,
                      "src": "15671:25:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 71214,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15671:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71220,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 71218,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71207,
                        "src": "15715:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 71216,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "15699:5:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
                          "typeString": "type(contract super StableDebtToken)"
                        }
                      },
                      "id": 71217,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15705:9:160",
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 26618,
                      "src": "15699:15:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view returns (uint256)"
                      }
                    },
                    "id": 71219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15699:24:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15671:52:160"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 71224,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71207,
                        "src": "15746:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 71225,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71209,
                        "src": "15755:6:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 71221,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "15734:5:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
                          "typeString": "type(contract super StableDebtToken)"
                        }
                      },
                      "id": 71223,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15740:5:160",
                      "memberName": "_mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 72226,
                      "src": "15734:11:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 71226,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15734:28:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71227,
                  "nodeType": "ExpressionStatement",
                  "src": "15734:28:160"
                },
                {
                  "assignments": [
                    71230
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71230,
                      "mutability": "mutable",
                      "name": "incentivesController",
                      "nameLocation": "15801:20:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 71253,
                      "src": "15775:46:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                        "typeString": "contract IPoolIncentivesController"
                      },
                      "typeName": {
                        "id": 71229,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 71228,
                          "name": "IPoolIncentivesController",
                          "nameLocations": [
                            "15775:25:160"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 48421,
                          "src": "15775:25:160"
                        },
                        "referencedDeclaration": 48421,
                        "src": "15775:25:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                          "typeString": "contract IPoolIncentivesController"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71233,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 71231,
                      "name": "_getPoolIncentivesController",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        71144
                      ],
                      "referencedDeclaration": 71144,
                      "src": "15824:28:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IPoolIncentivesController_$48421_$",
                        "typeString": "function () view returns (contract IPoolIncentivesController)"
                      }
                    },
                    "id": 71232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15824:30:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                      "typeString": "contract IPoolIncentivesController"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15775:79:160"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 71242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 71236,
                          "name": "incentivesController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 71230,
                          "src": "15879:20:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                            "typeString": "contract IPoolIncentivesController"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                            "typeString": "contract IPoolIncentivesController"
                          }
                        ],
                        "id": 71235,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "15871:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 71234,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15871:7:160",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 71237,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15871:29:160",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 71240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15912:1:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 71239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "15904:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 71238,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15904:7:160",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 71241,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15904:10:160",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "15871:43:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 71252,
                  "nodeType": "IfStatement",
                  "src": "15867:153:160",
                  "trueBody": {
                    "id": 71251,
                    "nodeType": "Block",
                    "src": "15916:104:160",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 71246,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 71207,
                              "src": "15965:7:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 71247,
                              "name": "oldTotalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 71211,
                              "src": "15974:14:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 71248,
                              "name": "oldAccountBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 71215,
                              "src": "15990:17:160",
                              "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": 71243,
                              "name": "incentivesController",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 71230,
                              "src": "15931:20:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                                "typeString": "contract IPoolIncentivesController"
                              }
                            },
                            "id": 71245,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "15952:12:160",
                            "memberName": "handleAction",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 48388,
                            "src": "15931:33:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256) external"
                            }
                          },
                          "id": 71249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15931:77:160",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 71250,
                        "nodeType": "ExpressionStatement",
                        "src": "15931:77:160"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 71205,
              "nodeType": "StructuredDocumentation",
              "src": "15303:236:160",
              "text": " @dev Mints stable debt tokens to an user\n @param account The account receiving the debt tokens\n @param amount The amount being minted\n @param oldTotalSupply the total supply before the minting event*"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mint",
            "nameLocation": "15554:5:160",
            "parameters": {
              "id": 71212,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71207,
                  "mutability": "mutable",
                  "name": "account",
                  "nameLocation": "15578:7:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 71254,
                  "src": "15570:15:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71206,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15570:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71209,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "15604:6:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 71254,
                  "src": "15596:14:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71208,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15596:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71211,
                  "mutability": "mutable",
                  "name": "oldTotalSupply",
                  "nameLocation": "15629:14:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 71254,
                  "src": "15621:22:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71210,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15621:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15559:91:160"
            },
            "returnParameters": {
              "id": 71213,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15660:0:160"
            },
            "scope": 71313,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 71312,
            "nodeType": "FunctionDefinition",
            "src": "16272:564:160",
            "nodes": [],
            "body": {
              "id": 71311,
              "nodeType": "Block",
              "src": "16387:449:160",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    71265
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71265,
                      "mutability": "mutable",
                      "name": "oldAccountBalance",
                      "nameLocation": "16406:17:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 71311,
                      "src": "16398:25:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 71264,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16398:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71270,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 71268,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71257,
                        "src": "16442:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 71266,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "16426:5:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
                          "typeString": "type(contract super StableDebtToken)"
                        }
                      },
                      "id": 71267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16432:9:160",
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 26618,
                      "src": "16426:15:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view returns (uint256)"
                      }
                    },
                    "id": 71269,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16426:24:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16398:52:160"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 71274,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 71272,
                          "name": "oldAccountBalance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 71265,
                          "src": "16471:17:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "id": 71273,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 71259,
                          "src": "16492:6:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "16471:27:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "expression": {
                          "id": 71275,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 57944,
                          "src": "16500:6:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$57944_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 71276,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "16507:24:160",
                        "memberName": "LPL_BURN_EXCEEDS_BALANCE",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 57751,
                        "src": "16500:31:160",
                        "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": 71271,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "16463:7:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 71277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16463:69:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71278,
                  "nodeType": "ExpressionStatement",
                  "src": "16463:69:160"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 71282,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71257,
                        "src": "16555:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 71283,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71259,
                        "src": "16564:6:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 71279,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "16543:5:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
                          "typeString": "type(contract super StableDebtToken)"
                        }
                      },
                      "id": 71281,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16549:5:160",
                      "memberName": "_burn",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 72275,
                      "src": "16543:11:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 71284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16543:28:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71285,
                  "nodeType": "ExpressionStatement",
                  "src": "16543:28:160"
                },
                {
                  "assignments": [
                    71288
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71288,
                      "mutability": "mutable",
                      "name": "incentivesController",
                      "nameLocation": "16610:20:160",
                      "nodeType": "VariableDeclaration",
                      "scope": 71311,
                      "src": "16584:46:160",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                        "typeString": "contract IPoolIncentivesController"
                      },
                      "typeName": {
                        "id": 71287,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 71286,
                          "name": "IPoolIncentivesController",
                          "nameLocations": [
                            "16584:25:160"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 48421,
                          "src": "16584:25:160"
                        },
                        "referencedDeclaration": 48421,
                        "src": "16584:25:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                          "typeString": "contract IPoolIncentivesController"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71291,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 71289,
                      "name": "_getPoolIncentivesController",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        71144
                      ],
                      "referencedDeclaration": 71144,
                      "src": "16633:28:160",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IPoolIncentivesController_$48421_$",
                        "typeString": "function () view returns (contract IPoolIncentivesController)"
                      }
                    },
                    "id": 71290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16633:30:160",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                      "typeString": "contract IPoolIncentivesController"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16584:79:160"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 71300,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 71294,
                          "name": "incentivesController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 71288,
                          "src": "16688:20:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                            "typeString": "contract IPoolIncentivesController"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                            "typeString": "contract IPoolIncentivesController"
                          }
                        ],
                        "id": 71293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "16680:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 71292,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16680:7:160",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 71295,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16680:29:160",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 71298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16721:1:160",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 71297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "16713:7:160",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 71296,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16713:7:160",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 71299,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16713:10:160",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "16680:43:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 71310,
                  "nodeType": "IfStatement",
                  "src": "16676:153:160",
                  "trueBody": {
                    "id": 71309,
                    "nodeType": "Block",
                    "src": "16725:104:160",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 71304,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 71257,
                              "src": "16774:7:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 71305,
                              "name": "oldTotalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 71261,
                              "src": "16783:14:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 71306,
                              "name": "oldAccountBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 71265,
                              "src": "16799:17:160",
                              "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": 71301,
                              "name": "incentivesController",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 71288,
                              "src": "16740:20:160",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                                "typeString": "contract IPoolIncentivesController"
                              }
                            },
                            "id": 71303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "16761:12:160",
                            "memberName": "handleAction",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 48388,
                            "src": "16740:33:160",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256) external"
                            }
                          },
                          "id": 71307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16740:77:160",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 71308,
                        "nodeType": "ExpressionStatement",
                        "src": "16740:77:160"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 71255,
              "nodeType": "StructuredDocumentation",
              "src": "16035:231:160",
              "text": " @dev Burns stable debt tokens of an user\n @param account The user getting his debt burned\n @param amount The amount being burned\n @param oldTotalSupply The total supply before the burning event*"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_burn",
            "nameLocation": "16281:5:160",
            "parameters": {
              "id": 71262,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71257,
                  "mutability": "mutable",
                  "name": "account",
                  "nameLocation": "16305:7:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 71312,
                  "src": "16297:15:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71256,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16297:7:160",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71259,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "16331:6:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 71312,
                  "src": "16323:14:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71258,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16323:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71261,
                  "mutability": "mutable",
                  "name": "oldTotalSupply",
                  "nameLocation": "16356:14:160",
                  "nodeType": "VariableDeclaration",
                  "scope": 71312,
                  "src": "16348:22:160",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71260,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16348:7:160",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16286:91:160"
            },
            "returnParameters": {
              "id": 71263,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16387:0:160"
            },
            "scope": 71313,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 70357,
              "name": "IStableDebtToken",
              "nameLocations": [
                "1355:16:160"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 48707,
              "src": "1355:16:160"
            },
            "id": 70358,
            "nodeType": "InheritanceSpecifier",
            "src": "1355:16:160"
          },
          {
            "baseName": {
              "id": 70359,
              "name": "DebtTokenBase",
              "nameLocations": [
                "1373:13:160"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 72045,
              "src": "1373:13:160"
            },
            "id": 70360,
            "nodeType": "InheritanceSpecifier",
            "src": "1373:13:160"
          }
        ],
        "canonicalName": "StableDebtToken",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 70356,
          "nodeType": "StructuredDocumentation",
          "src": "1084:243:160",
          "text": "@title StableDebtToken\n @author FluidNFT\n @notice Allows for the tracking of debt for the purposes of APY calculations\n at a stable rate mode.\n @dev Debt tokens are non-transferable and so diverge from the ERC20 standard."
        },
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          71313,
          72045,
          47120,
          72276,
          27111,
          27214,
          27189,
          28988,
          26136,
          48707,
          47494
        ],
        "name": "StableDebtToken",
        "nameLocation": "1336:15:160",
        "scope": 71314,
        "usedErrors": []
      }
    ],
    "license": "AGPL-3.0"
  },
  "id": 160
}
VariableDebtToken ABI
{
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "fromUser",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "toUser",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "BorrowAllowanceDelegated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "underlyingCollateral",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "underlyingAsset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "pool",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "incentivesController",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "debtTokenDecimals",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "debtTokenName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "debtTokenSymbol",
          "type": "string"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "POOL",
      "outputs": [
        {
          "internalType": "contract ILendingPool",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UNDERLYING_ASSET_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approveDelegation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "fromUser",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "toUser",
          "type": "address"
        }
      ],
      "name": "borrowAllowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPoolIncentivesController",
      "outputs": [
        {
          "internalType": "contract IPoolIncentivesController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getScaledUserBalanceAndSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addressProvider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "underlyingCollateral",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "underlyingAsset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "underlyingMaxTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "underlyingMinTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "debtTokenDecimals",
          "type": "uint8"
        },
        {
          "internalType": "string",
          "name": "debtTokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "debtTokenSymbol",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "initiator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "scaledBalanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "scaledTotalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61188a806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063b16a19de1161007c578063b16a19de146102cd578063b1bf962d146102de578063b3f1c93d146102e6578063c04a8a10146102f9578063dd62ed3e1461030c578063f5298aca1461031a57600080fd5b806370a082311461029c5780637535d246146102af57806395d89b41146102b7578063a457c2d714610250578063a9059cbb146102bf57600080fd5b80631da24f3e1161010a5780631da24f3e146102005780631e5fa51f1461021357806323b872dd14610228578063313ce5671461023b57806339509351146102505780636bd76d241461026357600080fd5b806306fdde0314610147578063095ea7b3146101655780630afbcdc91461018857806318160ddd146101ca57806319ef9268146101e0575b600080fd5b61014f61032d565b60405161015c91906112d0565b60405180910390f35b6101786101733660046112fb565b6103bf565b604051901515815260200161015c565b6101b5610196366004611327565b6001600160a01b03166000908152603360205260409020546035549091565b6040805192835260208301919091520161015c565b6101d2610408565b60405190815260200161015c565b6101e861051c565b6040516001600160a01b03909116815260200161015c565b6101d261020e366004611327565b61052b565b6102266102213660046113e7565b61054b565b005b6101786102363660046114af565b610717565b60655460405160ff909116815260200161015c565b61017861025e3660046112fb565b61075b565b6101d26102713660046114f0565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b6101d26102aa366004611327565b6107a6565b6101e86108e3565b61014f6108ed565b6101786102363660046112fb565b6069546001600160a01b03166101e8565b6101d26108fc565b6101786102f4366004611529565b610907565b6102266103073660046112fb565b610b02565b6101d261025e3660046114f0565b61017861032836600461156f565b610b79565b60606036805461033c906115a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610368906115a4565b80156103b55780601f1061038a576101008083540402835291602001916103b5565b820191906000526020600020905b81548152906001019060200180831161039857829003601f168201915b5050505050905090565b60405162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b60448201526000906064015b60405180910390fd5b600080610413610ca2565b606854606954606a54606b546040516352120e2360e01b81526001600160a01b0394851660048201529284166024840152604483019190915260648201529192506105169190831690639034c18c9082906352120e2390608401602060405180830381865afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae91906115de565b6040518263ffffffff1660e01b81526004016104cc91815260200190565b602060405180830381865afa1580156104e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050d91906115de565b60355490610d10565b91505090565b6000610526610d59565b905090565b6001600160a01b0381166000908152603360205260408120545b92915050565b600054610100900460ff161580801561056b5750600054600160ff909116105b806105855750303b158015610585575060005460ff166001145b6105e85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ff565b6000805460ff19166001179055801561060b576000805461ff0019166101001790555b610616838386610da3565b606780546001600160a01b03808c166001600160a01b031992831617909255606880548b841690831617905560698054928a1692909116919091179055606a869055606b859055610665610ca2565b6001600160a01b0316876001600160a01b0316896001600160a01b03167fd59b5facb5e38ab634162423aec2545750f69daf91fe145954e2a2b449597d4c6106ab610d59565b8888886040516106be94939291906115f7565b60405180910390a4801561070c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b60405162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b60448201526000906064016103ff565b60405162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f5254454400000000000000000060448201526000906064016103ff565b6001600160a01b038116600090815260336020526040812054806000036107d05750600092915050565b60006107da610ca2565b606854606954606a54606b546040516352120e2360e01b81526001600160a01b0394851660048201529284166024840152604483019190915260648201529192506108db9190831690639034c18c9082906352120e2390608401602060405180830381865afa158015610851573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087591906115de565b6040518263ffffffff1660e01b815260040161089391815260200190565b602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d491906115de565b8390610d10565b949350505050565b6000610526610ca2565b60606037805461033c906115a4565b600061052660355490565b6000610911610ca2565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b8152509061095f5760405162461bcd60e51b81526004016103ff91906112d0565b50836001600160a01b0316856001600160a01b031614158015610a0a5750606760009054906101000a90046001600160a01b03166001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f49190611641565b6001600160a01b0316856001600160a01b031614155b15610a1a57610a1a848685610dc5565b6001600160a01b03841660009081526033602052604081205490610a3e8585610ee5565b60408051808201909152600381526235303160e81b602082015290915081610a795760405162461bcd60e51b81526004016103ff91906112d0565b50610a848682610f19565b6040518581526001600160a01b038716906000906000805160206118358339815191529060200160405180910390a360408051868152602081018690526001600160a01b038816917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2501595945050505050565b3360008181526066602090815260408083206001600160a01b038781168086529190935292208490556069549192917fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e19116604080516001600160a01b039092168252602082018690520160405180910390a35050565b6000610b83610ca2565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610bd15760405162461bcd60e51b81526004016103ff91906112d0565b506000610bde8484610ee5565b6040805180820190915260038152621a981960e91b602082015290915081610c195760405162461bcd60e51b81526004016103ff91906112d0565b50610c248582610fe5565b6040518481526000906001600160a01b038716906000805160206118358339815191529060200160405180910390a360408051858152602081018590526001600160a01b038716917f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a910160405180910390a2506001949350505050565b60675460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105269190611641565b6000610d526b033b2e3c9fd0803ce8000000610d4c610d2f868661101f565b610d4660026b033b2e3c9fd0803ce8000000611674565b9061102b565b90611037565b9392505050565b6067546040805163033df24d60e31b815290516000926001600160a01b0316916319ef92689160048083019260209291908290030181865afa158015610cec573d6000803e3d6000fd5b610dad8383611043565b6065805460ff191660ff929092169190911790555050565b6001600160a01b038084166000908152606660209081526040808320938616835292815290829020548251808401909352600383526235303360e81b91830191909152821115610e285760405162461bcd60e51b81526004016103ff91906112d0565b506001600160a01b038084166000908152606660209081526040808320938616835292905290812054610e5c908390611696565b6001600160a01b038086166000818152606660209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610ebe6069546001600160a01b031690565b604080516001600160a01b039092168252602082018690520160405180910390a350505050565b600080610ef3600284611674565b90506108db83610d4c610f12876b033b2e3c9fd0803ce800000061101f565b849061102b565b6000610f2460355490565b90506000610f47846001600160a01b031660009081526033602052604090205490565b9050610f538484611078565b6000610f5d610d59565b6001600160a01b031614610fdf57610f73610d59565b6040516318c39f1760e11b81526001600160a01b038681166004830152602482018590526044820184905291909116906331873e2e90606401600060405180830381600087803b158015610fc657600080fd5b505af1158015610fda573d6000803e3d6000fd5b505050505b50505050565b6000610ff060355490565b90506000611013846001600160a01b031660009081526033602052604090205490565b9050610f538484611127565b6000610d5282846116a9565b6000610d5282846116c8565b6000610d528284611674565b600054610100900460ff1661106a5760405162461bcd60e51b81526004016103ff906116db565b611074828261124a565b5050565b6001600160a01b0382166110ce5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103ff565b80603560008282546110e091906116c8565b90915550506001600160a01b038216600081815260336020908152604080832080548601905551848152600080516020611835833981519152910160405180910390a35050565b6001600160a01b0382166111875760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103ff565b6001600160a01b038216600090815260336020526040902054818110156111fb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103ff565b6001600160a01b0383166000818152603360209081526040808320868603905560358054879003905551858152919291600080516020611835833981519152910160405180910390a35b505050565b600054610100900460ff166112715760405162461bcd60e51b81526004016103ff906116db565b603661127d8382611774565b5060376112458282611774565b6000815180845260005b818110156112b057602081850181015186830182015201611294565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610d52602083018461128a565b6001600160a01b03811681146112f857600080fd5b50565b6000806040838503121561130e57600080fd5b8235611319816112e3565b946020939093013593505050565b60006020828403121561133957600080fd5b8135610d52816112e3565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261136b57600080fd5b813567ffffffffffffffff8082111561138657611386611344565b604051601f8301601f19908116603f011681019082821181831017156113ae576113ae611344565b816040528381528660208588010111156113c757600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600080600080610100898b03121561140457600080fd5b883561140f816112e3565b9750602089013561141f816112e3565b9650604089013561142f816112e3565b9550606089013594506080890135935060a089013560ff8116811461145357600080fd5b925060c089013567ffffffffffffffff8082111561147057600080fd5b61147c8c838d0161135a565b935060e08b013591508082111561149257600080fd5b5061149f8b828c0161135a565b9150509295985092959890939650565b6000806000606084860312156114c457600080fd5b83356114cf816112e3565b925060208401356114df816112e3565b929592945050506040919091013590565b6000806040838503121561150357600080fd5b823561150e816112e3565b9150602083013561151e816112e3565b809150509250929050565b6000806000806080858703121561153f57600080fd5b843561154a816112e3565b9350602085013561155a816112e3565b93969395505050506040820135916060013590565b60008060006060848603121561158457600080fd5b833561158f816112e3565b95602085013595506040909401359392505050565b600181811c908216806115b857607f821691505b6020821081036115d857634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156115f057600080fd5b5051919050565b6001600160a01b038516815260ff841660208201526080604082018190526000906116249083018561128a565b8281036060840152611636818561128a565b979650505050505050565b60006020828403121561165357600080fd5b8151610d52816112e3565b634e487b7160e01b600052601160045260246000fd5b60008261169157634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105455761054561165e565b60008160001904831182151516156116c3576116c361165e565b500290565b808201808211156105455761054561165e565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561124557600081815260208120601f850160051c8101602086101561174d5750805b601f850160051c820191505b8181101561176c57828155600101611759565b505050505050565b815167ffffffffffffffff81111561178e5761178e611344565b6117a28161179c84546115a4565b84611726565b602080601f8311600181146117d757600084156117bf5750858301515b600019600386901b1c1916600185901b17855561176c565b600085815260208120601f198616915b82811015611806578886015182559484019460019091019084016117e7565b50858210156118245787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200719044032272a1f6566b96c0260dd65524538ce6334db9105e9aaed2e5a4b8764736f6c63430008100033",
    "sourceMap": "1194:7714:161:-:0;;;1588:55;;;;;;;;;-1:-1:-1;1613:22:161;:20;:22::i;:::-;1194:7714;;5928:279:18;5996:13;;;;;;;5995:14;5987:66;;;;-1:-1:-1;;;5987:66:18;;216:2:187;5987:66:18;;;198:21:187;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:187;;;338:37;392:19;;5987:66:18;;;;;;;;6067:12;;6082:15;6067:12;;;:30;6063:138;;;6113:12;:30;;-1:-1:-1;;6113:30:18;6128:15;6113:30;;;;;;6162:28;;564:36:187;;;6162:28:18;;552:2:187;537:18;6162:28:18;;;;;;;6063:138;5928:279::o;422:184:187:-;1194:7714:161;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063b16a19de1161007c578063b16a19de146102cd578063b1bf962d146102de578063b3f1c93d146102e6578063c04a8a10146102f9578063dd62ed3e1461030c578063f5298aca1461031a57600080fd5b806370a082311461029c5780637535d246146102af57806395d89b41146102b7578063a457c2d714610250578063a9059cbb146102bf57600080fd5b80631da24f3e1161010a5780631da24f3e146102005780631e5fa51f1461021357806323b872dd14610228578063313ce5671461023b57806339509351146102505780636bd76d241461026357600080fd5b806306fdde0314610147578063095ea7b3146101655780630afbcdc91461018857806318160ddd146101ca57806319ef9268146101e0575b600080fd5b61014f61032d565b60405161015c91906112d0565b60405180910390f35b6101786101733660046112fb565b6103bf565b604051901515815260200161015c565b6101b5610196366004611327565b6001600160a01b03166000908152603360205260409020546035549091565b6040805192835260208301919091520161015c565b6101d2610408565b60405190815260200161015c565b6101e861051c565b6040516001600160a01b03909116815260200161015c565b6101d261020e366004611327565b61052b565b6102266102213660046113e7565b61054b565b005b6101786102363660046114af565b610717565b60655460405160ff909116815260200161015c565b61017861025e3660046112fb565b61075b565b6101d26102713660046114f0565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b6101d26102aa366004611327565b6107a6565b6101e86108e3565b61014f6108ed565b6101786102363660046112fb565b6069546001600160a01b03166101e8565b6101d26108fc565b6101786102f4366004611529565b610907565b6102266103073660046112fb565b610b02565b6101d261025e3660046114f0565b61017861032836600461156f565b610b79565b60606036805461033c906115a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610368906115a4565b80156103b55780601f1061038a576101008083540402835291602001916103b5565b820191906000526020600020905b81548152906001019060200180831161039857829003601f168201915b5050505050905090565b60405162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b60448201526000906064015b60405180910390fd5b600080610413610ca2565b606854606954606a54606b546040516352120e2360e01b81526001600160a01b0394851660048201529284166024840152604483019190915260648201529192506105169190831690639034c18c9082906352120e2390608401602060405180830381865afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae91906115de565b6040518263ffffffff1660e01b81526004016104cc91815260200190565b602060405180830381865afa1580156104e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050d91906115de565b60355490610d10565b91505090565b6000610526610d59565b905090565b6001600160a01b0381166000908152603360205260408120545b92915050565b600054610100900460ff161580801561056b5750600054600160ff909116105b806105855750303b158015610585575060005460ff166001145b6105e85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ff565b6000805460ff19166001179055801561060b576000805461ff0019166101001790555b610616838386610da3565b606780546001600160a01b03808c166001600160a01b031992831617909255606880548b841690831617905560698054928a1692909116919091179055606a869055606b859055610665610ca2565b6001600160a01b0316876001600160a01b0316896001600160a01b03167fd59b5facb5e38ab634162423aec2545750f69daf91fe145954e2a2b449597d4c6106ab610d59565b8888886040516106be94939291906115f7565b60405180910390a4801561070c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b60405162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b60448201526000906064016103ff565b60405162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f5254454400000000000000000060448201526000906064016103ff565b6001600160a01b038116600090815260336020526040812054806000036107d05750600092915050565b60006107da610ca2565b606854606954606a54606b546040516352120e2360e01b81526001600160a01b0394851660048201529284166024840152604483019190915260648201529192506108db9190831690639034c18c9082906352120e2390608401602060405180830381865afa158015610851573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087591906115de565b6040518263ffffffff1660e01b815260040161089391815260200190565b602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d491906115de565b8390610d10565b949350505050565b6000610526610ca2565b60606037805461033c906115a4565b600061052660355490565b6000610911610ca2565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b8152509061095f5760405162461bcd60e51b81526004016103ff91906112d0565b50836001600160a01b0316856001600160a01b031614158015610a0a5750606760009054906101000a90046001600160a01b03166001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f49190611641565b6001600160a01b0316856001600160a01b031614155b15610a1a57610a1a848685610dc5565b6001600160a01b03841660009081526033602052604081205490610a3e8585610ee5565b60408051808201909152600381526235303160e81b602082015290915081610a795760405162461bcd60e51b81526004016103ff91906112d0565b50610a848682610f19565b6040518581526001600160a01b038716906000906000805160206118358339815191529060200160405180910390a360408051868152602081018690526001600160a01b038816917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2501595945050505050565b3360008181526066602090815260408083206001600160a01b038781168086529190935292208490556069549192917fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e19116604080516001600160a01b039092168252602082018690520160405180910390a35050565b6000610b83610ca2565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610bd15760405162461bcd60e51b81526004016103ff91906112d0565b506000610bde8484610ee5565b6040805180820190915260038152621a981960e91b602082015290915081610c195760405162461bcd60e51b81526004016103ff91906112d0565b50610c248582610fe5565b6040518481526000906001600160a01b038716906000805160206118358339815191529060200160405180910390a360408051858152602081018590526001600160a01b038716917f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a910160405180910390a2506001949350505050565b60675460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105269190611641565b6000610d526b033b2e3c9fd0803ce8000000610d4c610d2f868661101f565b610d4660026b033b2e3c9fd0803ce8000000611674565b9061102b565b90611037565b9392505050565b6067546040805163033df24d60e31b815290516000926001600160a01b0316916319ef92689160048083019260209291908290030181865afa158015610cec573d6000803e3d6000fd5b610dad8383611043565b6065805460ff191660ff929092169190911790555050565b6001600160a01b038084166000908152606660209081526040808320938616835292815290829020548251808401909352600383526235303360e81b91830191909152821115610e285760405162461bcd60e51b81526004016103ff91906112d0565b506001600160a01b038084166000908152606660209081526040808320938616835292905290812054610e5c908390611696565b6001600160a01b038086166000818152606660209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610ebe6069546001600160a01b031690565b604080516001600160a01b039092168252602082018690520160405180910390a350505050565b600080610ef3600284611674565b90506108db83610d4c610f12876b033b2e3c9fd0803ce800000061101f565b849061102b565b6000610f2460355490565b90506000610f47846001600160a01b031660009081526033602052604090205490565b9050610f538484611078565b6000610f5d610d59565b6001600160a01b031614610fdf57610f73610d59565b6040516318c39f1760e11b81526001600160a01b038681166004830152602482018590526044820184905291909116906331873e2e90606401600060405180830381600087803b158015610fc657600080fd5b505af1158015610fda573d6000803e3d6000fd5b505050505b50505050565b6000610ff060355490565b90506000611013846001600160a01b031660009081526033602052604090205490565b9050610f538484611127565b6000610d5282846116a9565b6000610d5282846116c8565b6000610d528284611674565b600054610100900460ff1661106a5760405162461bcd60e51b81526004016103ff906116db565b611074828261124a565b5050565b6001600160a01b0382166110ce5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103ff565b80603560008282546110e091906116c8565b90915550506001600160a01b038216600081815260336020908152604080832080548601905551848152600080516020611835833981519152910160405180910390a35050565b6001600160a01b0382166111875760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103ff565b6001600160a01b038216600090815260336020526040902054818110156111fb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103ff565b6001600160a01b0383166000818152603360209081526040808320868603905560358054879003905551858152919291600080516020611835833981519152910160405180910390a35b505050565b600054610100900460ff166112715760405162461bcd60e51b81526004016103ff906116db565b603661127d8382611774565b5060376112458282611774565b6000815180845260005b818110156112b057602081850181015186830182015201611294565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610d52602083018461128a565b6001600160a01b03811681146112f857600080fd5b50565b6000806040838503121561130e57600080fd5b8235611319816112e3565b946020939093013593505050565b60006020828403121561133957600080fd5b8135610d52816112e3565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261136b57600080fd5b813567ffffffffffffffff8082111561138657611386611344565b604051601f8301601f19908116603f011681019082821181831017156113ae576113ae611344565b816040528381528660208588010111156113c757600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600080600080610100898b03121561140457600080fd5b883561140f816112e3565b9750602089013561141f816112e3565b9650604089013561142f816112e3565b9550606089013594506080890135935060a089013560ff8116811461145357600080fd5b925060c089013567ffffffffffffffff8082111561147057600080fd5b61147c8c838d0161135a565b935060e08b013591508082111561149257600080fd5b5061149f8b828c0161135a565b9150509295985092959890939650565b6000806000606084860312156114c457600080fd5b83356114cf816112e3565b925060208401356114df816112e3565b929592945050506040919091013590565b6000806040838503121561150357600080fd5b823561150e816112e3565b9150602083013561151e816112e3565b809150509250929050565b6000806000806080858703121561153f57600080fd5b843561154a816112e3565b9350602085013561155a816112e3565b93969395505050506040820135916060013590565b60008060006060848603121561158457600080fd5b833561158f816112e3565b95602085013595506040909401359392505050565b600181811c908216806115b857607f821691505b6020821081036115d857634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156115f057600080fd5b5051919050565b6001600160a01b038516815260ff841660208201526080604082018190526000906116249083018561128a565b8281036060840152611636818561128a565b979650505050505050565b60006020828403121561165357600080fd5b8151610d52816112e3565b634e487b7160e01b600052601160045260246000fd5b60008261169157634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105455761054561165e565b60008160001904831182151516156116c3576116c361165e565b500290565b808201808211156105455761054561165e565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561124557600081815260208120601f850160051c8101602086101561174d5750805b601f850160051c820191505b8181101561176c57828155600101611759565b505050505050565b815167ffffffffffffffff81111561178e5761178e611344565b6117a28161179c84546115a4565b84611726565b602080601f8311600181146117d757600084156117bf5750858301515b600019600386901b1c1916600185901b17855561176c565b600085815260208120601f198616915b82811015611806578886015182559484019460019091019084016117e7565b50858210156118245787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200719044032272a1f6566b96c0260dd65524538ce6334db9105e9aaed2e5a4b8764736f6c63430008100033",
    "sourceMap": "1194:7714:161:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:98:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2948:248:162;;;;;;:::i;:::-;;:::i;:::-;;;1288:14:187;;1281:22;1263:41;;1251:2;1236:18;2948:248:162;1123:187:187;7591:173:161;;;;;;:::i;:::-;-1:-1:-1;;;;;3843:18:23;7676:7:161;3843:18:23;;;:9;:18;;;;;;3666:12;;3843:18;;7591:173:161;;;;;1741:25:187;;;1797:2;1782:18;;1775:34;;;;1714:18;7591:173:161;1567:248:187;6603:461:161;;;:::i;:::-;;;1966:25:187;;;1954:2;1939:18;6603:461:161;1820:177:187;8065:154:161;;;:::i;:::-;;;-1:-1:-1;;;;;2201:32:187;;;2183:51;;2171:2;2156:18;8065:154:161;2002:238:187;6300:133:161;;;;;;:::i;:::-;;:::i;2332:1049::-;;;;;;:::i;:::-;;:::i;:::-;;3202:320:162;;;;;;:::i;:::-;;:::i;1025:145:163:-;1149:15;;1025:145;;1149:15;;;;4975:36:187;;4963:2;4948:18;1025:145:163;4833:184:187;3528:226:162;;;;;;:::i;:::-;;:::i;2064:195::-;;;;;;:::i;:::-;-1:-1:-1;;;;;2217:27:162;;;2187:7;2217:27;;;:17;:27;;;;;;;;:35;;;;;;;;;;;;;2064:195;5538:596:161;;;;;;:::i;:::-;;:::i;8322:94::-;;;:::i;2702:102:23:-;;;:::i;2421:253:162:-;;;;;;:::i;7861:108:161:-;7945:16;;-1:-1:-1;;;;;7945:16:161;7861:108;;7228:121;;;:::i;3731:935::-;;;;;;:::i;:::-;;:::i;1593:250:162:-;;;;;;:::i;:::-;;:::i;2680:262::-;;;;;;:::i;4934:470:161:-;;;;;;:::i;:::-;;:::i;2491:98:23:-;2545:13;2577:5;2570:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:98;:::o;2948:248:162:-;3157:32;;-1:-1:-1;;;3157:32:162;;7358:2:187;3157:32:162;;;7340:21:187;7397:2;7377:18;;;7370:30;-1:-1:-1;;;7416:18:187;;;7409:52;3103:4:162;;7478:18:187;;3157:32:162;;;;;;;;6603:461:161;6702:7;6722:17;6742;:15;:17::i;:::-;6892:21;;6933:16;;6968:21;;7008;;6856:188;;-1:-1:-1;;;6856:188:161;;-1:-1:-1;;;;;6892:21:161;;;6856:188;;;7776:34:187;6933:16:161;;;7826:18:187;;;7819:43;7878:18;;;7871:34;;;;7921:18;;;7914:34;6722:37:161;;-1:-1:-1;6777:279:161;;6804:37;;;;;;;;6856:17;;7710:19:187;;6856:188:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6804:251;;;;;;;;;;;;;1966:25:187;;1954:2;1939:18;;1820:177;6804:251:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3666:12:23;;6777:26:161;;:279::i;:::-;6770:286;;;6603:461;:::o;8065:154::-;8136:25;8181:30;:28;:30::i;:::-;8174:37;;8065:154;:::o;6300:133::-;-1:-1:-1;;;;;3843:18:23;;6377:7:161;3843:18:23;;;:9;:18;;;;;;6404:21:161;6397:28;6300:133;-1:-1:-1;;6300:133:161:o;2332:1049::-;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;;8350:2:187;3314:201:18;;;8332:21:187;8389:2;8369:18;;;8362:30;8428:34;8408:18;;;8401:62;-1:-1:-1;;;8479:18:187;;;8472:44;8533:19;;3314:201:18;8148:410:187;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;2731:75:161::1;2756:13;2771:15;2788:17;2731:24;:75::i;:::-;2819:16;:52:::0;;-1:-1:-1;;;;;2819:52:161;;::::1;-1:-1:-1::0;;;;;;2819:52:161;;::::1;;::::0;;;2884:21:::1;:44:::0;;;;::::1;::::0;;::::1;;::::0;;2939:16:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;2984:21:::1;:44:::0;;;3039:21:::1;:44:::0;;;3200:17:::1;:15;:17::i;:::-;-1:-1:-1::0;;;;;3101:272:161::1;3162:15;-1:-1:-1::0;;;;;3101:272:161::1;3127:20;-1:-1:-1::0;;;;;3101:272:161::1;;3241:30;:28;:30::i;:::-;3287:17;3319:13;3347:15;3101:272;;;;;;;;;:::i;:::-;;;;;;;;3640:14:18::0;3636:99;;;3686:5;3670:21;;-1:-1:-1;;3670:21:18;;;3710:14;;-1:-1:-1;4975:36:187;;3710:14:18;;4963:2:187;4948:18;3710:14:18;;;;;;;3636:99;3258:483;2332:1049:161;;;;;;;;:::o;3202:320:162:-;3483:32;;-1:-1:-1;;;3483:32:162;;9529:2:187;3483:32:162;;;9511:21:187;9568:2;9548:18;;;9541:30;-1:-1:-1;;;9587:18:187;;;9580:52;3411:4:162;;9649:18:187;;3483:32:162;9327:346:187;3528:226:162;3714:33;;-1:-1:-1;;;3714:33:162;;9880:2:187;3714:33:162;;;9862:21:187;9919:2;9899:18;;;9892:30;9958:25;9938:18;;;9931:53;3657:4:162;;10001:18:187;;3714:33:162;9678:347:187;5538:596:161;-1:-1:-1;;;;;3843:18:23;;5647:7:161;3843:18:23;;;:9;:18;;;;;;5729:13:161;5746:1;5729:18;5725:59;;-1:-1:-1;5771:1:161;;5538:596;-1:-1:-1;;5538:596:161:o;5725:59::-;5796:17;5816;:15;:17::i;:::-;5962:21;;6003:16;;6038:21;;6078;;5926:188;;-1:-1:-1;;;5926:188:161;;-1:-1:-1;;;;;5962:21:161;;;5926:188;;;7776:34:187;6003:16:161;;;7826:18:187;;;7819:43;7878:18;;;7871:34;;;;7921:18;;;7914:34;5796:37:161;;-1:-1:-1;5853:273:161;;5874:37;;;;;;;;5926:17;;7710:19:187;;5926:188:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5874:251;;;;;;;;;;;;;1966:25:187;;1954:2;1939:18;;1820:177;5874:251:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5853:13;;:20;:273::i;:::-;5846:280;5538:596;-1:-1:-1;;;;5538:596:161:o;8322:94::-;8359:12;8391:17;:15;:17::i;2702:102:23:-;2758:13;2790:7;2783:14;;;;;:::i;7228:121:161:-;7295:7;7322:19;3666:12:23;;;3579:106;3731:935:161;3941:4;1145:17:162;:15;:17::i;:::-;-1:-1:-1;;;;;1121:42:162;929:10:33;-1:-1:-1;;;;;1121:42:162;;1165:37;;;;;;;;;;;;;-1:-1:-1;;;1165:37:162;;;1113:90;;;;;-1:-1:-1;;;1113:90:162;;;;;;;;:::i;:::-;;3995:10:161::1;-1:-1:-1::0;;;;;3982:23:161::1;:9;-1:-1:-1::0;;;;;3982:23:161::1;;;:86;;;;;4035:16;;;;;;;;;-1:-1:-1::0;;;;;4035:16:161::1;-1:-1:-1::0;;;;;4035:31:161::1;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;4022:46:161::1;:9;-1:-1:-1::0;;;;;4022:46:161::1;;;3982:86;3964:198;;;4095:55;4120:10;4132:9;4143:6;4095:24;:55::i;:::-;-1:-1:-1::0;;;;;3843:18:23;;4172:23:161::1;3843:18:23::0;;;:9;:18;;;;;;;4381:20:161::1;:6:::0;4395:5;4381:13:::1;:20::i;:::-;4439:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;4439:29:161::1;::::0;::::1;::::0;4358:43;;-1:-1:-1;4420:17:161;4412:57:::1;;;;-1:-1:-1::0;;;4412:57:161::1;;;;;;;;:::i;:::-;;4482:31;4488:10;4500:12;4482:5;:31::i;:::-;4531:40;::::0;1966:25:187;;;-1:-1:-1;;;;;4531:40:161;::::1;::::0;4548:1:::1;::::0;-1:-1:-1;;;;;;;;;;;4531:40:161;1954:2:187;1939:18;4531:40:161::1;;;;;;;4587:31;::::0;;1741:25:187;;;1797:2;1782:18;;1775:34;;;-1:-1:-1;;;;;4587:31:161;::::1;::::0;::::1;::::0;1714:18:187;4587:31:161::1;;;;;;;-1:-1:-1::0;4638:20:161;;3731:935;-1:-1:-1;;;;;3731:935:161:o;1593:250:162:-;929:10:33;1683:31:162;;;;:17;:31;;;;;;;;-1:-1:-1;;;;;1683:42:162;;;;;;;;;;;;:51;;;7945:16:161;;1683:42:162;;929:10:33;1749:87:162;;7945:16:161;1749:87:162;;;-1:-1:-1;;;;;10478:32:187;;;10460:51;;10542:2;10527:18;;10520:34;;;10433:18;1749:87:162;;;;;;;1593:250;;:::o;4934:470:161:-;5110:4;1145:17:162;:15;:17::i;:::-;-1:-1:-1;;;;;1121:42:162;929:10:33;-1:-1:-1;;;;;1121:42:162;;1165:37;;;;;;;;;;;;;-1:-1:-1;;;1165:37:162;;;1113:90;;;;;-1:-1:-1;;;1113:90:162;;;;;;;;:::i;:::-;-1:-1:-1;5132:20:161::1;5155;:6:::0;5169:5;5155:13:::1;:20::i;:::-;5213:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;5213:29:161::1;::::0;::::1;::::0;5132:43;;-1:-1:-1;5194:17:161;5186:57:::1;;;;-1:-1:-1::0;;;5186:57:161::1;;;;;;;;:::i;:::-;;5256:25;5262:4;5268:12;5256:5;:25::i;:::-;5299:34;::::0;1966:25:187;;;5322:1:161::1;::::0;-1:-1:-1;;;;;5299:34:161;::::1;::::0;-1:-1:-1;;;;;;;;;;;5299:34:161;1954:2:187;1939:18;5299:34:161::1;;;;;;;5349:25;::::0;;1741::187;;;1797:2;1782:18;;1775:34;;;-1:-1:-1;;;;;5349:25:161;::::1;::::0;::::1;::::0;1714:18:187;5349:25:161::1;;;;;;;-1:-1:-1::0;5392:4:161::1;::::0;4934:470;-1:-1:-1;;;;4934:470:161:o;8759:146::-;8863:16;;:33;;;-1:-1:-1;;;8863:33:161;;;;8818:12;;-1:-1:-1;;;;;8863:16:161;;:31;;:33;;;;;;;;;;;;;;:16;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1291:126:146:-;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;:::-;1372:37;1291:126;-1:-1:-1;;;1291:126:146:o;8424:198:161:-;8567:16;;:46;;;-1:-1:-1;;;8567:46:161;;;;8496:25;;-1:-1:-1;;;;;8567:16:161;;:44;;:46;;;;;;;;;;;;;;:16;:46;;;;;;;;;;;;;;758:201:163;889:28;902:5;909:7;889:12;:28::i;:::-;926:15;:27;;-1:-1:-1;;926:27:163;;;;;;;;;;;;-1:-1:-1;;758:201:163:o;4002:501:162:-;-1:-1:-1;;;;;4147:28:162;;;;;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;;4198:37;;;;;;;;;;;-1:-1:-1;;;4198:37:162;;;;;;;4147:49;-1:-1:-1;4147:49:162;4139:97;;;;-1:-1:-1;;;4139:97:162;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;4278:28:162;;;4255:20;4278:28;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;:48;;4320:6;;4278:48;:::i;:::-;-1:-1:-1;;;;;4336:28:162;;;;;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;:54;;;4255:71;;-1:-1:-1;4336:39:162;4406:90;4453:28;7945:16:161;;-1:-1:-1;;;;;7945:16:161;;7861:108;4453:28:162;4406:90;;;-1:-1:-1;;;;;10478:32:187;;;10460:51;;10542:2;10527:18;;10520:34;;;10433:18;4406:90:162;;;;;;;4129:374;4002:501;;;:::o;1425:158:146:-;1486:7;;1522:5;1526:1;1522;:5;:::i;:::-;1506:21;-1:-1:-1;1547:28:146;1573:1;1547:21;1557:10;:1;524:4;1557:5;:10::i;:::-;1547:5;;:9;:21::i;2233:398:163:-;2314:22;2339:19;3666:12:23;;;3579:106;2339:19:163;2314:44;;2365:25;2393:24;2409:7;-1:-1:-1;;;;;3843:18:23;3817:7;3843:18;;;:9;:18;;;;;;;3743:125;2393:24:163;2365:52;;2426:28;2438:7;2447:6;2426:11;:28::i;:::-;2518:1;2475:30;:28;:30::i;:::-;-1:-1:-1;;;;;2467:53:163;;2463:163;;2531:30;:28;:30::i;:::-;:87;;-1:-1:-1;;;2531:87:163;;-1:-1:-1;;;;;11272:32:187;;;2531:87:163;;;11254:51:187;11321:18;;;11314:34;;;11364:18;;;11357:34;;;2531:43:163;;;;;;;11227:18:187;;2531:87:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:163;2307:324;;2233:398;;:::o;2637:::-;2718:22;2743:19;3666:12:23;;;3579:106;2743:19:163;2718:44;;2769:25;2797:24;2813:7;-1:-1:-1;;;;;3843:18:23;3817:7;3843:18;;;:9;:18;;;;;;;3743:125;2797:24:163;2769:52;;2830:28;2842:7;2851:6;2830:11;:28::i;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;2114:147:23:-;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;2216:38:23::1;2239:5;2246:7;2216:22;:38::i;:::-;2114:147:::0;;:::o;8904:535::-;-1:-1:-1;;;;;8987:21:23;;8979:65;;;;-1:-1:-1;;;8979:65:23;;12319:2:187;8979:65:23;;;12301:21:187;12358:2;12338:18;;;12331:30;12397:33;12377:18;;;12370:61;12448:18;;8979:65:23;12117:355:187;8979:65:23;9131:6;9115:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;9283:18:23;;;;;;:9;:18;;;;;;;;:28;;;;;;9336:37;1966:25:187;;;-1:-1:-1;;;;;;;;;;;9336:37:23;1939:18:187;9336:37:23;;;;;;;2114:147;;:::o;9759:659::-;-1:-1:-1;;;;;9842:21:23;;9834:67;;;;-1:-1:-1;;;9834:67:23;;12679:2:187;9834:67:23;;;12661:21:187;12718:2;12698:18;;;12691:30;12757:34;12737:18;;;12730:62;-1:-1:-1;;;12808:18:187;;;12801:31;12849:19;;9834:67:23;12477:397:187;9834:67:23;-1:-1:-1;;;;;9997:18:23;;9972:22;9997:18;;;:9;:18;;;;;;10033:24;;;;10025:71;;;;-1:-1:-1;;;10025:71:23;;13081:2:187;10025:71:23;;;13063:21:187;13120:2;13100:18;;;13093:30;13159:34;13139:18;;;13132:62;-1:-1:-1;;;13210:18:187;;;13203:32;13252:19;;10025:71:23;12879:398:187;10025:71:23;-1:-1:-1;;;;;10130:18:23;;;;;;:9;:18;;;;;;;;10151:23;;;10130:44;;10267:12;:22;;;;;;;10315:37;1966:25:187;;;10130:18:23;;;-1:-1:-1;;;;;;;;;;;10315:37:23;1939:18:187;10315:37:23;;;;;;;10363:48;9824:594;9759:659;;:::o;2267:159::-;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;2379:5:23::1;:13;2387:5:::0;2379;:13:::1;:::i;:::-;-1:-1:-1::0;2402:7:23::1;:17;2412:7:::0;2402;:17:::1;:::i;14:423:187:-:0;56:3;94:5;88:12;121:6;116:3;109:19;146:1;156:162;170:6;167:1;164:13;156:162;;;232:4;288:13;;;284:22;;278:29;260:11;;;256:20;;249:59;185:12;156:162;;;160:3;363:1;356:4;347:6;342:3;338:16;334:27;327:38;426:4;419:2;415:7;410:2;402:6;398:15;394:29;389:3;385:39;381:50;374:57;;;14:423;;;;:::o;442:220::-;591:2;580:9;573:21;554:4;611:45;652:2;641:9;637:18;629:6;611:45;:::i;667:131::-;-1:-1:-1;;;;;742:31:187;;732:42;;722:70;;788:1;785;778:12;722:70;667:131;:::o;803:315::-;871:6;879;932:2;920:9;911:7;907:23;903:32;900:52;;;948:1;945;938:12;900:52;987:9;974:23;1006:31;1031:5;1006:31;:::i;:::-;1056:5;1108:2;1093:18;;;;1080:32;;-1:-1:-1;;;803:315:187:o;1315:247::-;1374:6;1427:2;1415:9;1406:7;1402:23;1398:32;1395:52;;;1443:1;1440;1433:12;1395:52;1482:9;1469:23;1501:31;1526:5;1501:31;:::i;2245:127::-;2306:10;2301:3;2297:20;2294:1;2287:31;2337:4;2334:1;2327:15;2361:4;2358:1;2351:15;2377:719;2420:5;2473:3;2466:4;2458:6;2454:17;2450:27;2440:55;;2491:1;2488;2481:12;2440:55;2527:6;2514:20;2553:18;2590:2;2586;2583:10;2580:36;;;2596:18;;:::i;:::-;2671:2;2665:9;2639:2;2725:13;;-1:-1:-1;;2721:22:187;;;2745:2;2717:31;2713:40;2701:53;;;2769:18;;;2789:22;;;2766:46;2763:72;;;2815:18;;:::i;:::-;2855:10;2851:2;2844:22;2890:2;2882:6;2875:18;2936:3;2929:4;2924:2;2916:6;2912:15;2908:26;2905:35;2902:55;;;2953:1;2950;2943:12;2902:55;3017:2;3010:4;3002:6;2998:17;2991:4;2983:6;2979:17;2966:54;3064:1;3057:4;3052:2;3044:6;3040:15;3036:26;3029:37;3084:6;3075:15;;;;;;2377:719;;;;:::o;3101:1266::-;3241:6;3249;3257;3265;3273;3281;3289;3297;3350:3;3338:9;3329:7;3325:23;3321:33;3318:53;;;3367:1;3364;3357:12;3318:53;3406:9;3393:23;3425:31;3450:5;3425:31;:::i;:::-;3475:5;-1:-1:-1;3532:2:187;3517:18;;3504:32;3545:33;3504:32;3545:33;:::i;:::-;3597:7;-1:-1:-1;3656:2:187;3641:18;;3628:32;3669:33;3628:32;3669:33;:::i;:::-;3721:7;-1:-1:-1;3775:2:187;3760:18;;3747:32;;-1:-1:-1;3826:3:187;3811:19;;3798:33;;-1:-1:-1;3883:3:187;3868:19;;3855:33;3932:4;3919:18;;3907:31;;3897:59;;3952:1;3949;3942:12;3897:59;3975:7;-1:-1:-1;4033:3:187;4018:19;;4005:33;4057:18;4087:14;;;4084:34;;;4114:1;4111;4104:12;4084:34;4137:50;4179:7;4170:6;4159:9;4155:22;4137:50;:::i;:::-;4127:60;;4240:3;4229:9;4225:19;4212:33;4196:49;;4270:2;4260:8;4257:16;4254:36;;;4286:1;4283;4276:12;4254:36;;4309:52;4353:7;4342:8;4331:9;4327:24;4309:52;:::i;:::-;4299:62;;;3101:1266;;;;;;;;;;;:::o;4372:456::-;4449:6;4457;4465;4518:2;4506:9;4497:7;4493:23;4489:32;4486:52;;;4534:1;4531;4524:12;4486:52;4573:9;4560:23;4592:31;4617:5;4592:31;:::i;:::-;4642:5;-1:-1:-1;4699:2:187;4684:18;;4671:32;4712:33;4671:32;4712:33;:::i;:::-;4372:456;;4764:7;;-1:-1:-1;;;4818:2:187;4803:18;;;;4790:32;;4372:456::o;5022:388::-;5090:6;5098;5151:2;5139:9;5130:7;5126:23;5122:32;5119:52;;;5167:1;5164;5157:12;5119:52;5206:9;5193:23;5225:31;5250:5;5225:31;:::i;:::-;5275:5;-1:-1:-1;5332:2:187;5317:18;;5304:32;5345:33;5304:32;5345:33;:::i;:::-;5397:7;5387:17;;;5022:388;;;;;:::o;5853:525::-;5939:6;5947;5955;5963;6016:3;6004:9;5995:7;5991:23;5987:33;5984:53;;;6033:1;6030;6023:12;5984:53;6072:9;6059:23;6091:31;6116:5;6091:31;:::i;:::-;6141:5;-1:-1:-1;6198:2:187;6183:18;;6170:32;6211:33;6170:32;6211:33;:::i;:::-;5853:525;;6263:7;;-1:-1:-1;;;;6317:2:187;6302:18;;6289:32;;6368:2;6353:18;6340:32;;5853:525::o;6383:383::-;6460:6;6468;6476;6529:2;6517:9;6508:7;6504:23;6500:32;6497:52;;;6545:1;6542;6535:12;6497:52;6584:9;6571:23;6603:31;6628:5;6603:31;:::i;:::-;6653:5;6705:2;6690:18;;6677:32;;-1:-1:-1;6756:2:187;6741:18;;;6728:32;;6383:383;-1:-1:-1;;;6383:383:187:o;6771:380::-;6850:1;6846:12;;;;6893;;;6914:61;;6968:4;6960:6;6956:17;6946:27;;6914:61;7021:2;7013:6;7010:14;6990:18;6987:38;6984:161;;7067:10;7062:3;7058:20;7055:1;7048:31;7102:4;7099:1;7092:15;7130:4;7127:1;7120:15;6984:161;;6771:380;;;:::o;7959:184::-;8029:6;8082:2;8070:9;8061:7;8057:23;8053:32;8050:52;;;8098:1;8095;8088:12;8050:52;-1:-1:-1;8121:16:187;;7959:184;-1:-1:-1;7959:184:187:o;8563:560::-;-1:-1:-1;;;;;8812:32:187;;8794:51;;8893:4;8881:17;;8876:2;8861:18;;8854:45;8935:3;8930:2;8915:18;;8908:31;;;-1:-1:-1;;8962:46:187;;8988:19;;8980:6;8962:46;:::i;:::-;9056:9;9048:6;9044:22;9039:2;9028:9;9024:18;9017:50;9084:33;9110:6;9102;9084:33;:::i;:::-;9076:41;8563:560;-1:-1:-1;;;;;;;8563:560:187:o;10030:251::-;10100:6;10153:2;10141:9;10132:7;10128:23;10124:32;10121:52;;;10169:1;10166;10159:12;10121:52;10201:9;10195:16;10220:31;10245:5;10220:31;:::i;10565:127::-;10626:10;10621:3;10617:20;10614:1;10607:31;10657:4;10654:1;10647:15;10681:4;10678:1;10671:15;10697:217;10737:1;10763;10753:132;;10807:10;10802:3;10798:20;10795:1;10788:31;10842:4;10839:1;10832:15;10870:4;10867:1;10860:15;10753:132;-1:-1:-1;10899:9:187;;10697:217::o;10919:128::-;10986:9;;;11007:11;;;11004:37;;;11021:18;;:::i;11402:168::-;11442:7;11508:1;11504;11500:6;11496:14;11493:1;11490:21;11485:1;11478:9;11471:17;11467:45;11464:71;;;11515:18;;:::i;:::-;-1:-1:-1;11555:9:187;;11402:168::o;11575:125::-;11640:9;;;11661:10;;;11658:36;;;11674:18;;:::i;11705:407::-;11907:2;11889:21;;;11946:2;11926:18;;;11919:30;11985:34;11980:2;11965:18;;11958:62;-1:-1:-1;;;12051:2:187;12036:18;;12029:41;12102:3;12087:19;;11705:407::o;13408:545::-;13510:2;13505:3;13502:11;13499:448;;;13546:1;13571:5;13567:2;13560:17;13616:4;13612:2;13602:19;13686:2;13674:10;13670:19;13667:1;13663:27;13657:4;13653:38;13722:4;13710:10;13707:20;13704:47;;;-1:-1:-1;13745:4:187;13704:47;13800:2;13795:3;13791:12;13788:1;13784:20;13778:4;13774:31;13764:41;;13855:82;13873:2;13866:5;13863:13;13855:82;;;13918:17;;;13899:1;13888:13;13855:82;;;13859:3;;;13408:545;;;:::o;14129:1352::-;14255:3;14249:10;14282:18;14274:6;14271:30;14268:56;;;14304:18;;:::i;:::-;14333:97;14423:6;14383:38;14415:4;14409:11;14383:38;:::i;:::-;14377:4;14333:97;:::i;:::-;14485:4;;14549:2;14538:14;;14566:1;14561:663;;;;15268:1;15285:6;15282:89;;;-1:-1:-1;15337:19:187;;;15331:26;15282:89;-1:-1:-1;;14086:1:187;14082:11;;;14078:24;14074:29;14064:40;14110:1;14106:11;;;14061:57;15384:81;;14531:944;;14561:663;13355:1;13348:14;;;13392:4;13379:18;;-1:-1:-1;;14597:20:187;;;14715:236;14729:7;14726:1;14723:14;14715:236;;;14818:19;;;14812:26;14797:42;;14910:27;;;;14878:1;14866:14;;;;14745:19;;14715:236;;;14719:3;14979:6;14970:7;14967:19;14964:201;;;15040:19;;;15034:26;-1:-1:-1;;15123:1:187;15119:14;;;15135:3;15115:24;15111:37;15107:42;15092:58;15077:74;;14964:201;-1:-1:-1;;;;;15211:1:187;15195:14;;;15191:22;15178:36;;-1:-1:-1;14129:1352:187:o",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "POOL()": "7535d246",
    "UNDERLYING_ASSET_ADDRESS()": "b16a19de",
    "allowance(address,address)": "dd62ed3e",
    "approve(address,uint256)": "095ea7b3",
    "approveDelegation(address,uint256)": "c04a8a10",
    "balanceOf(address)": "70a08231",
    "borrowAllowance(address,address)": "6bd76d24",
    "burn(address,uint256,uint256)": "f5298aca",
    "decimals()": "313ce567",
    "decreaseAllowance(address,uint256)": "a457c2d7",
    "getPoolIncentivesController()": "19ef9268",
    "getScaledUserBalanceAndSupply(address)": "0afbcdc9",
    "increaseAllowance(address,uint256)": "39509351",
    "initialize(address,address,address,uint256,uint256,uint8,string,string)": "1e5fa51f",
    "mint(address,address,uint256,uint256)": "b3f1c93d",
    "name()": "06fdde03",
    "scaledBalanceOf(address)": "1da24f3e",
    "scaledTotalSupply()": "b1bf962d",
    "symbol()": "95d89b41",
    "totalSupply()": "18160ddd",
    "transfer(address,uint256)": "a9059cbb",
    "transferFrom(address,address,uint256)": "23b872dd"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toUser\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BorrowAllowanceDelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlyingCollateral\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"incentivesController\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"debtTokenDecimals\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"debtTokenName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"debtTokenSymbol\",\"type\":\"string\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"POOL\",\"outputs\":[{\"internalType\":\"contract ILendingPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_ASSET_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toUser\",\"type\":\"address\"}],\"name\":\"borrowAllowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolIncentivesController\",\"outputs\":[{\"internalType\":\"contract IPoolIncentivesController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getScaledUserBalanceAndSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressProvider\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingMaxTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"underlyingMinTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"debtTokenDecimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"debtTokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"debtTokenSymbol\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"scaledBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scaledTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"FluidNFT\",\"details\":\"Debt tokens are non-transferable and so diverge from the ERC20 standard.\",\"kind\":\"dev\",\"methods\":{\"POOL()\":{\"details\":\"Returns the address of the lending pool where this token is used*\"},\"UNDERLYING_ASSET_ADDRESS()\":{\"details\":\"Returns the address of the underlying asset of this fToken*\"},\"approveDelegation(address,uint256)\":{\"details\":\"delegates borrowing power to a user on the specific debt token\",\"params\":{\"amount\":\"the maximum amount being delegated. Delegation will still respect the liquidation constraints (even if delegated, a delegatee cannot force a delegator HF to go below 1)*\",\"delegatee\":\"the address receiving the delegated borrowing power\"}},\"balanceOf(address)\":{\"details\":\"Calculates the accumulated debt balance of the user\",\"returns\":{\"_0\":\"The debt balance of the user*\"}},\"borrowAllowance(address,address)\":{\"details\":\"returns the borrow allowance of the user\",\"params\":{\"fromUser\":\"The user to giving allowance\",\"toUser\":\"The user to give allowance to\"},\"returns\":{\"_0\":\"the current allowance of toUser*\"}},\"burn(address,uint256,uint256)\":{\"details\":\"Burns user variable debt - Only callable by the LendingPool\",\"params\":{\"amount\":\"The amount getting burned\",\"index\":\"The variable debt index of the reserve*\",\"user\":\"The user whose debt is getting burned\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"decimals()\":{\"details\":\"Returns the decimals of the token.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getPoolIncentivesController()\":{\"details\":\"Returns the address of the incentives controller contract*\"},\"getScaledUserBalanceAndSupply(address)\":{\"details\":\"Returns the principal balance of the user and principal total supply.\",\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"_0\":\"The principal balance of the user\",\"_1\":\"The principal total supply*\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"initialize(address,address,address,uint256,uint256,uint8,string,string)\":{\"details\":\"Initializes the debt token.\",\"params\":{\"addressProvider\":\"The address provider \",\"debtTokenDecimals\":\"The decimals of the debtToken, same as the underlying asset's\",\"debtTokenName\":\"The name of the token\",\"debtTokenSymbol\":\"The symbol of the token\",\"underlyingAsset\":\"The address of the underlying asset of this debtToken\",\"underlyingCollateral\":\"The address of the underlying collateral of this debtToken\",\"underlyingMaxTokenId\":\"The max tokenId of the underlying collateral of this debtToken\",\"underlyingMinTokenId\":\"The min tokenId of the underlying collateral of this debtToken\"}},\"mint(address,address,uint256,uint256)\":{\"details\":\"Mints debt token to the `user` address -  Only callable by the LendingPool\",\"params\":{\"amount\":\"The amount of debt being minted\",\"index\":\"The variable debt index of the reserve\",\"initiator\":\"The address calling borrow\"},\"returns\":{\"_0\":\"`true` if the the previous balance of the user is 0*\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"scaledBalanceOf(address)\":{\"details\":\"Returns the principal debt balance of the user from\",\"returns\":{\"_0\":\"The debt balance of the user since the last burn/mint action*\"}},\"scaledTotalSupply()\":{\"details\":\"Returns the scaled total supply of the variable debt token. Represents sum(debt/index)\",\"returns\":{\"_0\":\"the scaled total supply*\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the total supply of the variable debt token. Represents the total debt accrued by the users\",\"returns\":{\"_0\":\"The total supply*\"}},\"transfer(address,uint256)\":{\"details\":\"Being non transferrable, the debt token does not implement any of the standard ERC20 functions for transfer and allowance.*\"}},\"title\":\"VariableDebtToken\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows for the tracking of debt for the purposes of APY calculations at a variable rate mode.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/protocol/tokenization/VariableDebtToken.sol\":\"VariableDebtToken\"},\"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/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935\",\"dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xb1d9e69cf8073efa574b31b1f840e20709139c19bfb27e60b16393d6073f3d42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c39b800e55781c0f7a644ec9cc615664dbe2f009198e537e6acaad3086ba093\",\"dweb:/ipfs/Qmaugq2wsB1ASX8Kv29NwXqYhZY8HRNqcdvmBe9UUNEq2V\"]},\"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/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/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/ICreditDelegationToken.sol\":{\"keccak256\":\"0xd503435c6285ec39fbe57260dfa5245e8087fb336faf9a3759d345f3150247dc\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://339566f8416bbc263e4bc2de02a23fe35e232f701298d59b1c5937ab4eea3880\",\"dweb:/ipfs/QmdJyM2xuyLBZnWfQR8fUiUhvazAWsVTvD9agj2HapdmmK\"]},\"src/interfaces/ILendingPool.sol\":{\"keccak256\":\"0x345ab4285354bb5184bdd501d7c37920a711215b6f6c2db05b05d585f2454115\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://3b6264b135760dcdd59b9a3566c1305b00084922da177159a85c206ef6a91266\",\"dweb:/ipfs/QmSotEH7zF3vrEgo2gZuunWwroHgc6bw7TVRntzv7jsJn1\"]},\"src/interfaces/IPoolIncentivesController.sol\":{\"keccak256\":\"0x7cb2c32050814e6d6d962a603104facc3bb1dad15171304e3ee756648e8f9ae1\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://cf534f592706b2a61c539c03e5d1e199c15472bcfb4ee69838e5c93ba7914466\",\"dweb:/ipfs/QmPrvXhJigK1Ke51YwAWHon1Kv88WT26iD3MwzCaPDs1Kv\"]},\"src/interfaces/IScaledBalanceToken.sol\":{\"keccak256\":\"0xb6a8f00773c5f58af761573f39f6aa3649c9deec5c4e078f5e3ca78940e4eac7\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://0938c6fd92b015670a2bcf5ff971aafbc6295e07c78d1300c5e36a67002dc70c\",\"dweb:/ipfs/QmYDcxNaAAfnupwDcDN1xtQcCEXTwW1FWiaTiU3MksCQ1Z\"]},\"src/interfaces/IVariableDebtToken.sol\":{\"keccak256\":\"0x61d5cce91604a2d97218fdf1f53022e08061aae2adc6dc5fb0ba311d46a212cc\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://e8e62cce1a93aafcff2438c111ca7af77c8c2a6ed3d5c7ffce2598aa73fb87c9\",\"dweb:/ipfs/QmXXpq9J65pU5Wt9WUR1sZMjss2gUDfEvpDAc9npQfxGcC\"]},\"src/protocol/libraries/helpers/Errors.sol\":{\"keccak256\":\"0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3\",\"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM\"]},\"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\":\"0x070f7865fe84ce4c9ebd86bbe24771607fbdb4e8777510b46cb5064e4d9b90a3\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://504fd0c937cc69cc0737c4ef5dcec477017ccbff609b45b210274fd7bf0792cf\",\"dweb:/ipfs/QmeW1TkAHib7XRBVmgMRTdmsa4Rg9HVToTMnifEE1C7mTi\"]},\"src/protocol/tokenization/VariableDebtToken.sol\":{\"keccak256\":\"0x3fe743180764430cb8b42b83eed55391caba8f432480651a9a8e115db27f0e00\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://2aea0f332f16f5cb56d1c3b3898d567eba53818f06ee1723fdf78cec4150f681\",\"dweb:/ipfs/QmfV2F5dAuYidrEFHGhhkT1aBixtEcWSeB8dLEL2ppc86q\"]},\"src/protocol/tokenization/base/DebtTokenBase.sol\":{\"keccak256\":\"0x7a3cc782fbb4308dc2981007d00d94a507da3185db59628f209116af4e31f342\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://a709ab96e62f86169fa36f760df6cfe9db532f5ce0b95e9437cdc93ec86273dc\",\"dweb:/ipfs/QmXJ8az9pqhhp4XSufsPTA1bhz5KHGDdFsm53itWrhi3gJ\"]},\"src/protocol/tokenization/base/IncentivizedERC20.sol\":{\"keccak256\":\"0xeef558a6fb8826dd7eff89e1eb24072b5533825cbbfd3ee950623bb433ecabc6\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://4453844f67a9d9339dda3d5081073188d45b8fd274aea524b239e3462ef67236\",\"dweb:/ipfs/QmVxGsuhu1NGFd5WqnGZns8pY1VEUALhMUTx76x6hxhkn8\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.16+commit.07a7930e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Approval",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "fromUser",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "toUser",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "asset",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "BorrowAllowanceDelegated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Burn",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "underlyingCollateral",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "pool",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "incentivesController",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint8",
              "name": "debtTokenDecimals",
              "type": "uint8",
              "indexed": false
            },
            {
              "internalType": "string",
              "name": "debtTokenName",
              "type": "string",
              "indexed": false
            },
            {
              "internalType": "string",
              "name": "debtTokenSymbol",
              "type": "string",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Initialized",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "version",
              "type": "uint8",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Initialized",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Mint",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Transfer",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "POOL",
          "outputs": [
            {
              "internalType": "contract ILendingPool",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "UNDERLYING_ASSET_ADDRESS",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegatee",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "approveDelegation"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "fromUser",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "toUser",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "borrowAllowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "burn",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "subtractedValue",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "decreaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getPoolIncentivesController",
          "outputs": [
            {
              "internalType": "contract IPoolIncentivesController",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getScaledUserBalanceAndSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "addedValue",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "increaseAllowance",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addressProvider",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "underlyingCollateral",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "underlyingMaxTokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "underlyingMinTokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "debtTokenDecimals",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "debtTokenName",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "debtTokenSymbol",
              "type": "string"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "initialize"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "initiator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "mint",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "scaledBalanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "scaledTotalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "POOL()": {
            "details": "Returns the address of the lending pool where this token is used*"
          },
          "UNDERLYING_ASSET_ADDRESS()": {
            "details": "Returns the address of the underlying asset of this fToken*"
          },
          "approveDelegation(address,uint256)": {
            "details": "delegates borrowing power to a user on the specific debt token",
            "params": {
              "amount": "the maximum amount being delegated. Delegation will still respect the liquidation constraints (even if delegated, a delegatee cannot force a delegator HF to go below 1)*",
              "delegatee": "the address receiving the delegated borrowing power"
            }
          },
          "balanceOf(address)": {
            "details": "Calculates the accumulated debt balance of the user",
            "returns": {
              "_0": "The debt balance of the user*"
            }
          },
          "borrowAllowance(address,address)": {
            "details": "returns the borrow allowance of the user",
            "params": {
              "fromUser": "The user to giving allowance",
              "toUser": "The user to give allowance to"
            },
            "returns": {
              "_0": "the current allowance of toUser*"
            }
          },
          "burn(address,uint256,uint256)": {
            "details": "Burns user variable debt - Only callable by the LendingPool",
            "params": {
              "amount": "The amount getting burned",
              "index": "The variable debt index of the reserve*",
              "user": "The user whose debt is getting burned"
            }
          },
          "constructor": {
            "custom:oz-upgrades-unsafe-allow": "constructor"
          },
          "decimals()": {
            "details": "Returns the decimals of the token."
          },
          "decreaseAllowance(address,uint256)": {
            "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
          },
          "getPoolIncentivesController()": {
            "details": "Returns the address of the incentives controller contract*"
          },
          "getScaledUserBalanceAndSupply(address)": {
            "details": "Returns the principal balance of the user and principal total supply.",
            "params": {
              "user": "The address of the user"
            },
            "returns": {
              "_0": "The principal balance of the user",
              "_1": "The principal total supply*"
            }
          },
          "increaseAllowance(address,uint256)": {
            "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
          },
          "initialize(address,address,address,uint256,uint256,uint8,string,string)": {
            "details": "Initializes the debt token.",
            "params": {
              "addressProvider": "The address provider ",
              "debtTokenDecimals": "The decimals of the debtToken, same as the underlying asset's",
              "debtTokenName": "The name of the token",
              "debtTokenSymbol": "The symbol of the token",
              "underlyingAsset": "The address of the underlying asset of this debtToken",
              "underlyingCollateral": "The address of the underlying collateral of this debtToken",
              "underlyingMaxTokenId": "The max tokenId of the underlying collateral of this debtToken",
              "underlyingMinTokenId": "The min tokenId of the underlying collateral of this debtToken"
            }
          },
          "mint(address,address,uint256,uint256)": {
            "details": "Mints debt token to the `user` address -  Only callable by the LendingPool",
            "params": {
              "amount": "The amount of debt being minted",
              "index": "The variable debt index of the reserve",
              "initiator": "The address calling borrow"
            },
            "returns": {
              "_0": "`true` if the the previous balance of the user is 0*"
            }
          },
          "name()": {
            "details": "Returns the name of the token."
          },
          "scaledBalanceOf(address)": {
            "details": "Returns the principal debt balance of the user from",
            "returns": {
              "_0": "The debt balance of the user since the last burn/mint action*"
            }
          },
          "scaledTotalSupply()": {
            "details": "Returns the scaled total supply of the variable debt token. Represents sum(debt/index)",
            "returns": {
              "_0": "the scaled total supply*"
            }
          },
          "symbol()": {
            "details": "Returns the symbol of the token, usually a shorter version of the name."
          },
          "totalSupply()": {
            "details": "Returns the total supply of the variable debt token. Represents the total debt accrued by the users",
            "returns": {
              "_0": "The total supply*"
            }
          },
          "transfer(address,uint256)": {
            "details": "Being non transferrable, the debt token does not implement any of the standard ERC20 functions for transfer and allowance.*"
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "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/tokenization/VariableDebtToken.sol": "VariableDebtToken"
      },
      "libraries": {}
    },
    "sources": {
      "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/token/ERC20/ERC20Upgradeable.sol": {
        "keccak256": "0xb1d9e69cf8073efa574b31b1f840e20709139c19bfb27e60b16393d6073f3d42",
        "urls": [
          "bzz-raw://7c39b800e55781c0f7a644ec9cc615664dbe2f009198e537e6acaad3086ba093",
          "dweb:/ipfs/Qmaugq2wsB1ASX8Kv29NwXqYhZY8HRNqcdvmBe9UUNEq2V"
        ],
        "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/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/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/ICreditDelegationToken.sol": {
        "keccak256": "0xd503435c6285ec39fbe57260dfa5245e8087fb336faf9a3759d345f3150247dc",
        "urls": [
          "bzz-raw://339566f8416bbc263e4bc2de02a23fe35e232f701298d59b1c5937ab4eea3880",
          "dweb:/ipfs/QmdJyM2xuyLBZnWfQR8fUiUhvazAWsVTvD9agj2HapdmmK"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/ILendingPool.sol": {
        "keccak256": "0x345ab4285354bb5184bdd501d7c37920a711215b6f6c2db05b05d585f2454115",
        "urls": [
          "bzz-raw://3b6264b135760dcdd59b9a3566c1305b00084922da177159a85c206ef6a91266",
          "dweb:/ipfs/QmSotEH7zF3vrEgo2gZuunWwroHgc6bw7TVRntzv7jsJn1"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IPoolIncentivesController.sol": {
        "keccak256": "0x7cb2c32050814e6d6d962a603104facc3bb1dad15171304e3ee756648e8f9ae1",
        "urls": [
          "bzz-raw://cf534f592706b2a61c539c03e5d1e199c15472bcfb4ee69838e5c93ba7914466",
          "dweb:/ipfs/QmPrvXhJigK1Ke51YwAWHon1Kv88WT26iD3MwzCaPDs1Kv"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IScaledBalanceToken.sol": {
        "keccak256": "0xb6a8f00773c5f58af761573f39f6aa3649c9deec5c4e078f5e3ca78940e4eac7",
        "urls": [
          "bzz-raw://0938c6fd92b015670a2bcf5ff971aafbc6295e07c78d1300c5e36a67002dc70c",
          "dweb:/ipfs/QmYDcxNaAAfnupwDcDN1xtQcCEXTwW1FWiaTiU3MksCQ1Z"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IVariableDebtToken.sol": {
        "keccak256": "0x61d5cce91604a2d97218fdf1f53022e08061aae2adc6dc5fb0ba311d46a212cc",
        "urls": [
          "bzz-raw://e8e62cce1a93aafcff2438c111ca7af77c8c2a6ed3d5c7ffce2598aa73fb87c9",
          "dweb:/ipfs/QmXXpq9J65pU5Wt9WUR1sZMjss2gUDfEvpDAc9npQfxGcC"
        ],
        "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/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": "0x070f7865fe84ce4c9ebd86bbe24771607fbdb4e8777510b46cb5064e4d9b90a3",
        "urls": [
          "bzz-raw://504fd0c937cc69cc0737c4ef5dcec477017ccbff609b45b210274fd7bf0792cf",
          "dweb:/ipfs/QmeW1TkAHib7XRBVmgMRTdmsa4Rg9HVToTMnifEE1C7mTi"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/tokenization/VariableDebtToken.sol": {
        "keccak256": "0x3fe743180764430cb8b42b83eed55391caba8f432480651a9a8e115db27f0e00",
        "urls": [
          "bzz-raw://2aea0f332f16f5cb56d1c3b3898d567eba53818f06ee1723fdf78cec4150f681",
          "dweb:/ipfs/QmfV2F5dAuYidrEFHGhhkT1aBixtEcWSeB8dLEL2ppc86q"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/tokenization/base/DebtTokenBase.sol": {
        "keccak256": "0x7a3cc782fbb4308dc2981007d00d94a507da3185db59628f209116af4e31f342",
        "urls": [
          "bzz-raw://a709ab96e62f86169fa36f760df6cfe9db532f5ce0b95e9437cdc93ec86273dc",
          "dweb:/ipfs/QmXJ8az9pqhhp4XSufsPTA1bhz5KHGDdFsm53itWrhi3gJ"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/tokenization/base/IncentivizedERC20.sol": {
        "keccak256": "0xeef558a6fb8826dd7eff89e1eb24072b5533825cbbfd3ee950623bb433ecabc6",
        "urls": [
          "bzz-raw://4453844f67a9d9339dda3d5081073188d45b8fd274aea524b239e3462ef67236",
          "dweb:/ipfs/QmVxGsuhu1NGFd5WqnGZns8pY1VEUALhMUTx76x6hxhkn8"
        ],
        "license": "AGPL-3.0"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "src/protocol/tokenization/VariableDebtToken.sol",
    "id": 71765,
    "exportedSymbols": {
      "DebtTokenBase": [
        72045
      ],
      "ERC20Upgradeable": [
        27111
      ],
      "Errors": [
        57944
      ],
      "IAddressProvider": [
        46447
      ],
      "IERC20Upgradeable": [
        27189
      ],
      "ILendingPool": [
        48084
      ],
      "IPoolIncentivesController": [
        48421
      ],
      "IVariableDebtToken": [
        48815
      ],
      "IncentivizedERC20": [
        72276
      ],
      "Initializable": [
        26136
      ],
      "VariableDebtToken": [
        71764
      ],
      "WadRayMath": [
        64503
      ]
    },
    "nodeType": "SourceUnit",
    "src": "38:8872:161",
    "nodes": [
      {
        "id": 71315,
        "nodeType": "PragmaDirective",
        "src": "38:23:161",
        "nodes": [],
        "literals": [
          "solidity",
          "0.8",
          ".16"
        ]
      },
      {
        "id": 71317,
        "nodeType": "ImportDirective",
        "src": "65:77:161",
        "nodes": [],
        "absolutePath": "src/interfaces/IVariableDebtToken.sol",
        "file": "../../interfaces/IVariableDebtToken.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71765,
        "sourceUnit": 48816,
        "symbolAliases": [
          {
            "foreign": {
              "id": 71316,
              "name": "IVariableDebtToken",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 48815,
              "src": "74:18:161",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 71319,
        "nodeType": "ImportDirective",
        "src": "144:65:161",
        "nodes": [],
        "absolutePath": "src/interfaces/ILendingPool.sol",
        "file": "../../interfaces/ILendingPool.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71765,
        "sourceUnit": 48085,
        "symbolAliases": [
          {
            "foreign": {
              "id": 71318,
              "name": "ILendingPool",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 48084,
              "src": "153:12:161",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 71321,
        "nodeType": "ImportDirective",
        "src": "211:73:161",
        "nodes": [],
        "absolutePath": "src/interfaces/IAddressProvider.sol",
        "file": "../../interfaces/IAddressProvider.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71765,
        "sourceUnit": 46448,
        "symbolAliases": [
          {
            "foreign": {
              "id": 71320,
              "name": "IAddressProvider",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 46447,
              "src": "220:16:161",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 71323,
        "nodeType": "ImportDirective",
        "src": "286:91:161",
        "nodes": [],
        "absolutePath": "src/interfaces/IPoolIncentivesController.sol",
        "file": "../../interfaces/IPoolIncentivesController.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71765,
        "sourceUnit": 48422,
        "symbolAliases": [
          {
            "foreign": {
              "id": 71322,
              "name": "IPoolIncentivesController",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 48421,
              "src": "295:25:161",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 71325,
        "nodeType": "ImportDirective",
        "src": "381:57:161",
        "nodes": [],
        "absolutePath": "src/protocol/tokenization/base/DebtTokenBase.sol",
        "file": "./base/DebtTokenBase.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71765,
        "sourceUnit": 72046,
        "symbolAliases": [
          {
            "foreign": {
              "id": 71324,
              "name": "DebtTokenBase",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 72045,
              "src": "390:13:161",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 71327,
        "nodeType": "ImportDirective",
        "src": "440:65:161",
        "nodes": [],
        "absolutePath": "src/protocol/tokenization/base/IncentivizedERC20.sol",
        "file": "./base/IncentivizedERC20.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71765,
        "sourceUnit": 72277,
        "symbolAliases": [
          {
            "foreign": {
              "id": 71326,
              "name": "IncentivizedERC20",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 72276,
              "src": "449:17:161",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 71329,
        "nodeType": "ImportDirective",
        "src": "507:62:161",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/math/WadRayMath.sol",
        "file": "../libraries/math/WadRayMath.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71765,
        "sourceUnit": 64504,
        "symbolAliases": [
          {
            "foreign": {
              "id": 71328,
              "name": "WadRayMath",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 64503,
              "src": "516:10:161",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 71331,
        "nodeType": "ImportDirective",
        "src": "571:56:161",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/helpers/Errors.sol",
        "file": "../libraries/helpers/Errors.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71765,
        "sourceUnit": 57945,
        "symbolAliases": [
          {
            "foreign": {
              "id": 71330,
              "name": "Errors",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 57944,
              "src": "580:6:161",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 71333,
        "nodeType": "ImportDirective",
        "src": "631:106:161",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71765,
        "sourceUnit": 27190,
        "symbolAliases": [
          {
            "foreign": {
              "id": 71332,
              "name": "IERC20Upgradeable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 27189,
              "src": "640:17:161",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 71335,
        "nodeType": "ImportDirective",
        "src": "739:104:161",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71765,
        "sourceUnit": 27112,
        "symbolAliases": [
          {
            "foreign": {
              "id": 71334,
              "name": "ERC20Upgradeable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 27111,
              "src": "748:16:161",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 71337,
        "nodeType": "ImportDirective",
        "src": "845:98:161",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol",
        "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 71765,
        "sourceUnit": 26137,
        "symbolAliases": [
          {
            "foreign": {
              "id": 71336,
              "name": "Initializable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 26136,
              "src": "854:13:161",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 71764,
        "nodeType": "ContractDefinition",
        "src": "1194:7714:161",
        "nodes": [
          {
            "id": 71345,
            "nodeType": "UsingForDirective",
            "src": "1265:29:161",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 71343,
              "name": "WadRayMath",
              "nameLocations": [
                "1271:10:161"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 64503,
              "src": "1271:10:161"
            },
            "typeName": {
              "id": 71344,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1286:7:161",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 71348,
            "nodeType": "VariableDeclaration",
            "src": "1302:42:161",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_addressProvider",
            "nameLocation": "1328:16:161",
            "scope": 71764,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IAddressProvider_$46447",
              "typeString": "contract IAddressProvider"
            },
            "typeName": {
              "id": 71347,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 71346,
                "name": "IAddressProvider",
                "nameLocations": [
                  "1302:16:161"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 46447,
                "src": "1302:16:161"
              },
              "referencedDeclaration": 46447,
              "src": "1302:16:161",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                "typeString": "contract IAddressProvider"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 71350,
            "nodeType": "VariableDeclaration",
            "src": "1357:38:161",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_underlyingCollateral",
            "nameLocation": "1374:21:161",
            "scope": 71764,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 71349,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1357:7:161",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 71352,
            "nodeType": "VariableDeclaration",
            "src": "1402:33:161",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_underlyingAsset",
            "nameLocation": "1419:16:161",
            "scope": 71764,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 71351,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1402:7:161",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 71354,
            "nodeType": "VariableDeclaration",
            "src": "1442:38:161",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_underlyingMaxTokenId",
            "nameLocation": "1459:21:161",
            "scope": 71764,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 71353,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1442:7:161",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 71356,
            "nodeType": "VariableDeclaration",
            "src": "1487:38:161",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_underlyingMinTokenId",
            "nameLocation": "1504:21:161",
            "scope": 71764,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 71355,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1487:7:161",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 71364,
            "nodeType": "FunctionDefinition",
            "src": "1588:55:161",
            "nodes": [],
            "body": {
              "id": 71363,
              "nodeType": "Block",
              "src": "1602:41:161",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 71360,
                      "name": "_disableInitializers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26117,
                      "src": "1613:20:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 71361,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1613:22:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71362,
                  "nodeType": "ExpressionStatement",
                  "src": "1613:22:161"
                }
              ]
            },
            "documentation": {
              "id": 71357,
              "nodeType": "StructuredDocumentation",
              "src": "1534:48:161",
              "text": "@custom:oz-upgrades-unsafe-allow constructor"
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 71358,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1599:2:161"
            },
            "returnParameters": {
              "id": 71359,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1602:0:161"
            },
            "scope": 71764,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 71434,
            "nodeType": "FunctionDefinition",
            "src": "2332:1049:161",
            "nodes": [],
            "body": {
              "id": 71433,
              "nodeType": "Block",
              "src": "2720:661:161",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 71388,
                        "name": "debtTokenName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71379,
                        "src": "2756:13:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 71389,
                        "name": "debtTokenSymbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71381,
                        "src": "2771:15:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 71390,
                        "name": "debtTokenDecimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71377,
                        "src": "2788:17:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 71387,
                      "name": "__IncentivizedERC20_init",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 72081,
                      "src": "2731:24:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$__$",
                        "typeString": "function (string memory,string memory,uint8)"
                      }
                    },
                    "id": 71391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2731:75:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71392,
                  "nodeType": "ExpressionStatement",
                  "src": "2731:75:161"
                },
                {
                  "expression": {
                    "id": 71397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 71393,
                      "name": "_addressProvider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71348,
                      "src": "2819:16:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                        "typeString": "contract IAddressProvider"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 71395,
                          "name": "addressProvider",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 71367,
                          "src": "2855:15:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 71394,
                        "name": "IAddressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46447,
                        "src": "2838:16:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IAddressProvider_$46447_$",
                          "typeString": "type(contract IAddressProvider)"
                        }
                      },
                      "id": 71396,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2838:33:161",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                        "typeString": "contract IAddressProvider"
                      }
                    },
                    "src": "2819:52:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                      "typeString": "contract IAddressProvider"
                    }
                  },
                  "id": 71398,
                  "nodeType": "ExpressionStatement",
                  "src": "2819:52:161"
                },
                {
                  "expression": {
                    "id": 71401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 71399,
                      "name": "_underlyingCollateral",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71350,
                      "src": "2884:21:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 71400,
                      "name": "underlyingCollateral",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71369,
                      "src": "2908:20:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2884:44:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 71402,
                  "nodeType": "ExpressionStatement",
                  "src": "2884:44:161"
                },
                {
                  "expression": {
                    "id": 71405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 71403,
                      "name": "_underlyingAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71352,
                      "src": "2939:16:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 71404,
                      "name": "underlyingAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71371,
                      "src": "2958:15:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2939:34:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 71406,
                  "nodeType": "ExpressionStatement",
                  "src": "2939:34:161"
                },
                {
                  "expression": {
                    "id": 71409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 71407,
                      "name": "_underlyingMaxTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71354,
                      "src": "2984:21:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 71408,
                      "name": "underlyingMaxTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71373,
                      "src": "3008:20:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2984:44:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 71410,
                  "nodeType": "ExpressionStatement",
                  "src": "2984:44:161"
                },
                {
                  "expression": {
                    "id": 71413,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 71411,
                      "name": "_underlyingMinTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71356,
                      "src": "3039:21:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 71412,
                      "name": "underlyingMinTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71375,
                      "src": "3063:20:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3039:44:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 71414,
                  "nodeType": "ExpressionStatement",
                  "src": "3039:44:161"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 71416,
                        "name": "underlyingCollateral",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71369,
                        "src": "3127:20:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 71417,
                        "name": "underlyingAsset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71371,
                        "src": "3162:15:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 71420,
                              "name": "_getLendingPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                71763
                              ],
                              "referencedDeclaration": 71763,
                              "src": "3200:15:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
                                "typeString": "function () view returns (contract ILendingPool)"
                              }
                            },
                            "id": 71421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3200:17:161",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$48084",
                              "typeString": "contract ILendingPool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ILendingPool_$48084",
                              "typeString": "contract ILendingPool"
                            }
                          ],
                          "id": 71419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3192:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 71418,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3192:7:161",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 71422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3192:26:161",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 71425,
                              "name": "_getPoolIncentivesController",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                71740
                              ],
                              "referencedDeclaration": 71740,
                              "src": "3241:28:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IPoolIncentivesController_$48421_$",
                                "typeString": "function () view returns (contract IPoolIncentivesController)"
                              }
                            },
                            "id": 71426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3241:30:161",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                              "typeString": "contract IPoolIncentivesController"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                              "typeString": "contract IPoolIncentivesController"
                            }
                          ],
                          "id": 71424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3233:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 71423,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3233:7:161",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 71427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3233:39:161",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 71428,
                        "name": "debtTokenDecimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71377,
                        "src": "3287:17:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 71429,
                        "name": "debtTokenName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71379,
                        "src": "3319:13:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 71430,
                        "name": "debtTokenSymbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71381,
                        "src": "3347:15:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 71415,
                      "name": "Initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        48742,
                        25982
                      ],
                      "referencedDeclaration": 48742,
                      "src": "3101:11:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint8_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,address,address,uint8,string memory,string memory)"
                      }
                    },
                    "id": 71431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3101:272:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71432,
                  "nodeType": "EmitStatement",
                  "src": "3096:277:161"
                }
              ]
            },
            "baseFunctions": [
              48779
            ],
            "documentation": {
              "id": 71365,
              "nodeType": "StructuredDocumentation",
              "src": "1651:675:161",
              "text": " @dev Initializes the debt token.\n @param addressProvider The address provider \n @param underlyingCollateral The address of the underlying collateral of this debtToken\n @param underlyingAsset The address of the underlying asset of this debtToken\n @param underlyingMaxTokenId The max tokenId of the underlying collateral of this debtToken\n @param underlyingMinTokenId The min tokenId of the underlying collateral of this debtToken\n @param debtTokenDecimals The decimals of the debtToken, same as the underlying asset's\n @param debtTokenName The name of the token\n @param debtTokenSymbol The symbol of the token"
            },
            "functionSelector": "1e5fa51f",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 71385,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 71384,
                  "name": "initializer",
                  "nameLocations": [
                    "2702:11:161"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26038,
                  "src": "2702:11:161"
                },
                "nodeType": "ModifierInvocation",
                "src": "2702:11:161"
              }
            ],
            "name": "initialize",
            "nameLocation": "2341:10:161",
            "overrides": {
              "id": 71383,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2683:8:161"
            },
            "parameters": {
              "id": 71382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71367,
                  "mutability": "mutable",
                  "name": "addressProvider",
                  "nameLocation": "2370:15:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71434,
                  "src": "2362:23:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71366,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2362:7:161",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71369,
                  "mutability": "mutable",
                  "name": "underlyingCollateral",
                  "nameLocation": "2404:20:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71434,
                  "src": "2396:28:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71368,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2396:7:161",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71371,
                  "mutability": "mutable",
                  "name": "underlyingAsset",
                  "nameLocation": "2443:15:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71434,
                  "src": "2435:23:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71370,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2435:7:161",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71373,
                  "mutability": "mutable",
                  "name": "underlyingMaxTokenId",
                  "nameLocation": "2477:20:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71434,
                  "src": "2469:28:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71372,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2469:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71375,
                  "mutability": "mutable",
                  "name": "underlyingMinTokenId",
                  "nameLocation": "2516:20:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71434,
                  "src": "2508:28:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71374,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2508:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71377,
                  "mutability": "mutable",
                  "name": "debtTokenDecimals",
                  "nameLocation": "2553:17:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71434,
                  "src": "2547:23:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 71376,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2547:5:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71379,
                  "mutability": "mutable",
                  "name": "debtTokenName",
                  "nameLocation": "2595:13:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71434,
                  "src": "2581:27:161",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 71378,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2581:6:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71381,
                  "mutability": "mutable",
                  "name": "debtTokenSymbol",
                  "nameLocation": "2633:15:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71434,
                  "src": "2619:29:161",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 71380,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2619:6:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2351:304:161"
            },
            "returnParameters": {
              "id": 71386,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2720:0:161"
            },
            "scope": 71764,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 71515,
            "nodeType": "FunctionDefinition",
            "src": "3731:935:161",
            "nodes": [],
            "body": {
              "id": 71514,
              "nodeType": "Block",
              "src": "3953:713:161",
              "nodes": [],
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 71459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 71453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 71451,
                        "name": "initiator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71437,
                        "src": "3982:9:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "id": 71452,
                        "name": "onBehalfOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71439,
                        "src": "3995:10:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "3982:23:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 71458,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 71454,
                        "name": "initiator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71437,
                        "src": "4022:9:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 71455,
                            "name": "_addressProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 71348,
                            "src": "4035:16:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                              "typeString": "contract IAddressProvider"
                            }
                          },
                          "id": 71456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4052:14:161",
                          "memberName": "getWETHGateway",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46441,
                          "src": "4035:31:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 71457,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4035:33:161",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "4022:46:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3982:86:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 71467,
                  "nodeType": "IfStatement",
                  "src": "3964:198:161",
                  "trueBody": {
                    "id": 71466,
                    "nodeType": "Block",
                    "src": "4080:82:161",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 71461,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 71439,
                              "src": "4120:10:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 71462,
                              "name": "initiator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 71437,
                              "src": "4132:9:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 71463,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 71441,
                              "src": "4143:6:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 71460,
                            "name": "_decreaseBorrowAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 72032,
                            "src": "4095:24:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 71464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4095:55:161",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 71465,
                        "nodeType": "ExpressionStatement",
                        "src": "4095:55:161"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    71469
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71469,
                      "mutability": "mutable",
                      "name": "previousBalance",
                      "nameLocation": "4180:15:161",
                      "nodeType": "VariableDeclaration",
                      "scope": 71514,
                      "src": "4172:23:161",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 71468,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4172:7:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71474,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 71472,
                        "name": "onBehalfOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71439,
                        "src": "4214:10:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 71470,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "4198:5:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
                          "typeString": "type(contract super VariableDebtToken)"
                        }
                      },
                      "id": 71471,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4204:9:161",
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 26618,
                      "src": "4198:15:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view returns (uint256)"
                      }
                    },
                    "id": 71473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4198:27:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4172:53:161"
                },
                {
                  "assignments": [
                    71476
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71476,
                      "mutability": "mutable",
                      "name": "amountScaled",
                      "nameLocation": "4366:12:161",
                      "nodeType": "VariableDeclaration",
                      "scope": 71514,
                      "src": "4358:20:161",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 71475,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4358:7:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71481,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 71479,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71443,
                        "src": "4395:5:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 71477,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71441,
                        "src": "4381:6:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 71478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4388:6:161",
                      "memberName": "rayDiv",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 64411,
                      "src": "4381:13:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 71480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4381:20:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4358:43:161"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 71485,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 71483,
                          "name": "amountScaled",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 71476,
                          "src": "4420:12:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 71484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4436:1:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4420:17:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "expression": {
                          "id": 71486,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 57944,
                          "src": "4439:6:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$57944_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 71487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "4446:22:161",
                        "memberName": "CT_INVALID_MINT_AMOUNT",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 57769,
                        "src": "4439:29:161",
                        "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": 71482,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4412:7:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 71488,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4412:57:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71489,
                  "nodeType": "ExpressionStatement",
                  "src": "4412:57:161"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 71491,
                        "name": "onBehalfOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71439,
                        "src": "4488:10:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 71492,
                        "name": "amountScaled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71476,
                        "src": "4500:12:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 71490,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        72226
                      ],
                      "referencedDeclaration": 72226,
                      "src": "4482:5:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 71493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4482:31:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71494,
                  "nodeType": "ExpressionStatement",
                  "src": "4482:31:161"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 71498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4548:1:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 71497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4540:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 71496,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4540:7:161",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 71499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4540:10:161",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 71500,
                        "name": "onBehalfOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71439,
                        "src": "4552:10:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 71501,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71441,
                        "src": "4564:6:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 71495,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27123,
                      "src": "4531:8:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 71502,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4531:40:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71503,
                  "nodeType": "EmitStatement",
                  "src": "4526:45:161"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 71505,
                        "name": "onBehalfOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71439,
                        "src": "4592:10:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 71506,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71441,
                        "src": "4604:6:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 71507,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71443,
                        "src": "4612:5:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 71504,
                      "name": "Mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 48751,
                      "src": "4587:4:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 71508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4587:31:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71509,
                  "nodeType": "EmitStatement",
                  "src": "4582:36:161"
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 71512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 71510,
                      "name": "previousBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71469,
                      "src": "4638:15:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 71511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4657:1:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4638:20:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 71450,
                  "id": 71513,
                  "nodeType": "Return",
                  "src": "4631:27:161"
                }
              ]
            },
            "baseFunctions": [
              48792
            ],
            "documentation": {
              "id": 71435,
              "nodeType": "StructuredDocumentation",
              "src": "3389:336:161",
              "text": " @dev Mints debt token to the `user` address\n -  Only callable by the LendingPool\n @param initiator The address calling borrow\n @param amount The amount of debt being minted\n @param index The variable debt index of the reserve\n @return `true` if the the previous balance of the user is 0*"
            },
            "functionSelector": "b3f1c93d",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 71447,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 71446,
                  "name": "onlyLendingPool",
                  "nameLocations": [
                    "3906:15:161"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 71811,
                  "src": "3906:15:161"
                },
                "nodeType": "ModifierInvocation",
                "src": "3906:15:161"
              }
            ],
            "name": "mint",
            "nameLocation": "3740:4:161",
            "overrides": {
              "id": 71445,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3887:8:161"
            },
            "parameters": {
              "id": 71444,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71437,
                  "mutability": "mutable",
                  "name": "initiator",
                  "nameLocation": "3763:9:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71515,
                  "src": "3755:17:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71436,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3755:7:161",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71439,
                  "mutability": "mutable",
                  "name": "onBehalfOf",
                  "nameLocation": "3791:10:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71515,
                  "src": "3783:18:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71438,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3783:7:161",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71441,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "3820:6:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71515,
                  "src": "3812:14:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71440,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3812:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71443,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "3845:5:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71515,
                  "src": "3837:13:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71442,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3837:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3744:113:161"
            },
            "returnParameters": {
              "id": 71450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71449,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71515,
                  "src": "3941:4:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 71448,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3941:4:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3940:6:161"
            },
            "scope": 71764,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 71568,
            "nodeType": "FunctionDefinition",
            "src": "4934:470:161",
            "nodes": [],
            "body": {
              "id": 71567,
              "nodeType": "Block",
              "src": "5121:283:161",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    71531
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71531,
                      "mutability": "mutable",
                      "name": "amountScaled",
                      "nameLocation": "5140:12:161",
                      "nodeType": "VariableDeclaration",
                      "scope": 71567,
                      "src": "5132:20:161",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 71530,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5132:7:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71536,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 71534,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71522,
                        "src": "5169:5:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 71532,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71520,
                        "src": "5155:6:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 71533,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5162:6:161",
                      "memberName": "rayDiv",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 64411,
                      "src": "5155:13:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 71535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5155:20:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5132:43:161"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 71540,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 71538,
                          "name": "amountScaled",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 71531,
                          "src": "5194:12:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 71539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5210:1:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5194:17:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "expression": {
                          "id": 71541,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 57944,
                          "src": "5213:6:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$57944_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 71542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "5220:22:161",
                        "memberName": "CT_INVALID_BURN_AMOUNT",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 57772,
                        "src": "5213:29:161",
                        "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": 71537,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5186:7:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 71543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5186:57:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71544,
                  "nodeType": "ExpressionStatement",
                  "src": "5186:57:161"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 71546,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71518,
                        "src": "5262:4:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 71547,
                        "name": "amountScaled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71531,
                        "src": "5268:12:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 71545,
                      "name": "_burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        72275
                      ],
                      "referencedDeclaration": 72275,
                      "src": "5256:5:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 71548,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5256:25:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71549,
                  "nodeType": "ExpressionStatement",
                  "src": "5256:25:161"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 71551,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71518,
                        "src": "5308:4:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 71554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5322:1:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 71553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5314:7:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 71552,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5314:7:161",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 71555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5314:10:161",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 71556,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71520,
                        "src": "5326:6:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 71550,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27123,
                      "src": "5299:8:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 71557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5299:34:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71558,
                  "nodeType": "EmitStatement",
                  "src": "5294:39:161"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 71560,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71518,
                        "src": "5354:4:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 71561,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71520,
                        "src": "5360:6:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 71562,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71522,
                        "src": "5368:5:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 71559,
                      "name": "Burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 48760,
                      "src": "5349:4:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 71563,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5349:25:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 71564,
                  "nodeType": "EmitStatement",
                  "src": "5344:30:161"
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 71565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5392:4:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 71529,
                  "id": 71566,
                  "nodeType": "Return",
                  "src": "5385:11:161"
                }
              ]
            },
            "baseFunctions": [
              48803
            ],
            "documentation": {
              "id": 71516,
              "nodeType": "StructuredDocumentation",
              "src": "4674:254:161",
              "text": " @dev Burns user variable debt\n - Only callable by the LendingPool\n @param user The user whose debt is getting burned\n @param amount The amount getting burned\n @param index The variable debt index of the reserve*"
            },
            "functionSelector": "f5298aca",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 71526,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 71525,
                  "name": "onlyLendingPool",
                  "nameLocations": [
                    "5075:15:161"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 71811,
                  "src": "5075:15:161"
                },
                "nodeType": "ModifierInvocation",
                "src": "5075:15:161"
              }
            ],
            "name": "burn",
            "nameLocation": "4943:4:161",
            "overrides": {
              "id": 71524,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5056:8:161"
            },
            "parameters": {
              "id": 71523,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71518,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "4966:4:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71568,
                  "src": "4958:12:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71517,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4958:7:161",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71520,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "4989:6:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71568,
                  "src": "4981:14:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71519,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4981:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71522,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "5014:5:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71568,
                  "src": "5006:13:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71521,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5006:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4947:79:161"
            },
            "returnParameters": {
              "id": 71529,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71528,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71568,
                  "src": "5110:4:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 71527,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5110:4:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5109:6:161"
            },
            "scope": 71764,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 71614,
            "nodeType": "FunctionDefinition",
            "src": "5538:596:161",
            "nodes": [],
            "body": {
              "id": 71613,
              "nodeType": "Block",
              "src": "5656:478:161",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    71580
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71580,
                      "mutability": "mutable",
                      "name": "scaledBalance",
                      "nameLocation": "5675:13:161",
                      "nodeType": "VariableDeclaration",
                      "scope": 71613,
                      "src": "5667:21:161",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 71579,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5667:7:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71585,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 71583,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71571,
                        "src": "5707:4:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 71581,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "5691:5:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
                          "typeString": "type(contract super VariableDebtToken)"
                        }
                      },
                      "id": 71582,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5697:9:161",
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 26618,
                      "src": "5691:15:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view returns (uint256)"
                      }
                    },
                    "id": 71584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5691:21:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5667:45:161"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 71588,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 71586,
                      "name": "scaledBalance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 71580,
                      "src": "5729:13:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 71587,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5746:1:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5729:18:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 71592,
                  "nodeType": "IfStatement",
                  "src": "5725:59:161",
                  "trueBody": {
                    "id": 71591,
                    "nodeType": "Block",
                    "src": "5749:35:161",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "30",
                          "id": 71589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5771:1:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 71578,
                        "id": 71590,
                        "nodeType": "Return",
                        "src": "5764:8:161"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    71595
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71595,
                      "mutability": "mutable",
                      "name": "pool",
                      "nameLocation": "5809:4:161",
                      "nodeType": "VariableDeclaration",
                      "scope": 71613,
                      "src": "5796:17:161",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ILendingPool_$48084",
                        "typeString": "contract ILendingPool"
                      },
                      "typeName": {
                        "id": 71594,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 71593,
                          "name": "ILendingPool",
                          "nameLocations": [
                            "5796:12:161"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 48084,
                          "src": "5796:12:161"
                        },
                        "referencedDeclaration": 48084,
                        "src": "5796:12:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$48084",
                          "typeString": "contract ILendingPool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71598,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 71596,
                      "name": "_getLendingPool",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        71763
                      ],
                      "referencedDeclaration": 71763,
                      "src": "5816:15:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
                        "typeString": "function () view returns (contract ILendingPool)"
                      }
                    },
                    "id": 71597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5816:17:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$48084",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5796:37:161"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 71605,
                                "name": "_underlyingCollateral",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 71350,
                                "src": "5962:21:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 71606,
                                "name": "_underlyingAsset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 71352,
                                "src": "6003:16:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 71607,
                                "name": "_underlyingMaxTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 71354,
                                "src": "6038:21:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 71608,
                                "name": "_underlyingMinTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 71356,
                                "src": "6078:21:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 71603,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 71595,
                                "src": "5926:4:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ILendingPool_$48084",
                                  "typeString": "contract ILendingPool"
                                }
                              },
                              "id": 71604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5931:12:161",
                              "memberName": "getReserveId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 48009,
                              "src": "5926:17:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,address,uint256,uint256) view external returns (uint256)"
                              }
                            },
                            "id": 71609,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5926:188:161",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 71601,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 71595,
                            "src": "5874:4:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$48084",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "id": 71602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5879:32:161",
                          "memberName": "getReserveNormalizedVariableDebt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 47988,
                          "src": "5874:37:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) view external returns (uint256)"
                          }
                        },
                        "id": 71610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5874:251:161",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 71599,
                        "name": "scaledBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71580,
                        "src": "5853:13:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 71600,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5867:6:161",
                      "memberName": "rayMul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 64384,
                      "src": "5853:20:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 71611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5853:273:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 71578,
                  "id": 71612,
                  "nodeType": "Return",
                  "src": "5846:280:161"
                }
              ]
            },
            "baseFunctions": [
              26618,
              27146
            ],
            "documentation": {
              "id": 71569,
              "nodeType": "StructuredDocumentation",
              "src": "5412:120:161",
              "text": " @dev Calculates the accumulated debt balance of the user\n @return The debt balance of the user*"
            },
            "functionSelector": "70a08231",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nameLocation": "5547:9:161",
            "overrides": {
              "id": 71575,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 71573,
                  "name": "ERC20Upgradeable",
                  "nameLocations": [
                    "5601:16:161"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 27111,
                  "src": "5601:16:161"
                },
                {
                  "id": 71574,
                  "name": "IERC20Upgradeable",
                  "nameLocations": [
                    "5619:17:161"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 27189,
                  "src": "5619:17:161"
                }
              ],
              "src": "5591:46:161"
            },
            "parameters": {
              "id": 71572,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71571,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "5565:4:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71614,
                  "src": "5557:12:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71570,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5557:7:161",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5556:14:161"
            },
            "returnParameters": {
              "id": 71578,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71577,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71614,
                  "src": "5647:7:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71576,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5647:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5646:9:161"
            },
            "scope": 71764,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 71629,
            "nodeType": "FunctionDefinition",
            "src": "6300:133:161",
            "nodes": [],
            "body": {
              "id": 71628,
              "nodeType": "Block",
              "src": "6386:47:161",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 71625,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 71617,
                        "src": "6420:4:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 71623,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "6404:5:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
                          "typeString": "type(contract super VariableDebtToken)"
                        }
                      },
                      "id": 71624,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6410:9:161",
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 26618,
                      "src": "6404:15:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view returns (uint256)"
                      }
                    },
                    "id": 71626,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6404:21:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 71622,
                  "id": 71627,
                  "nodeType": "Return",
                  "src": "6397:28:161"
                }
              ]
            },
            "baseFunctions": [
              48542
            ],
            "documentation": {
              "id": 71615,
              "nodeType": "StructuredDocumentation",
              "src": "6142:152:161",
              "text": " @dev Returns the principal debt balance of the user from\n @return The debt balance of the user since the last burn/mint action*"
            },
            "functionSelector": "1da24f3e",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "scaledBalanceOf",
            "nameLocation": "6309:15:161",
            "overrides": {
              "id": 71619,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6359:8:161"
            },
            "parameters": {
              "id": 71618,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71617,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "6333:4:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71629,
                  "src": "6325:12:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71616,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6325:7:161",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6324:14:161"
            },
            "returnParameters": {
              "id": 71622,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71621,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71629,
                  "src": "6377:7:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71620,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6377:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6376:9:161"
            },
            "scope": 71764,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 71661,
            "nodeType": "FunctionDefinition",
            "src": "6603:461:161",
            "nodes": [],
            "body": {
              "id": 71660,
              "nodeType": "Block",
              "src": "6711:353:161",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    71640
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 71640,
                      "mutability": "mutable",
                      "name": "pool",
                      "nameLocation": "6735:4:161",
                      "nodeType": "VariableDeclaration",
                      "scope": 71660,
                      "src": "6722:17:161",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ILendingPool_$48084",
                        "typeString": "contract ILendingPool"
                      },
                      "typeName": {
                        "id": 71639,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 71638,
                          "name": "ILendingPool",
                          "nameLocations": [
                            "6722:12:161"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 48084,
                          "src": "6722:12:161"
                        },
                        "referencedDeclaration": 48084,
                        "src": "6722:12:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$48084",
                          "typeString": "contract ILendingPool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 71643,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 71641,
                      "name": "_getLendingPool",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        71763
                      ],
                      "referencedDeclaration": 71763,
                      "src": "6742:15:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
                        "typeString": "function () view returns (contract ILendingPool)"
                      }
                    },
                    "id": 71642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6742:17:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$48084",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6722:37:161"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 71652,
                                "name": "_underlyingCollateral",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 71350,
                                "src": "6892:21:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 71653,
                                "name": "_underlyingAsset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 71352,
                                "src": "6933:16:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 71654,
                                "name": "_underlyingMaxTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 71354,
                                "src": "6968:21:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 71655,
                                "name": "_underlyingMinTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 71356,
                                "src": "7008:21:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 71650,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 71640,
                                "src": "6856:4:161",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ILendingPool_$48084",
                                  "typeString": "contract ILendingPool"
                                }
                              },
                              "id": 71651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6861:12:161",
                              "memberName": "getReserveId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 48009,
                              "src": "6856:17:161",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,address,uint256,uint256) view external returns (uint256)"
                              }
                            },
                            "id": 71656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6856:188:161",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 71648,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 71640,
                            "src": "6804:4:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$48084",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "id": 71649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6809:32:161",
                          "memberName": "getReserveNormalizedVariableDebt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 47988,
                          "src": "6804:37:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) view external returns (uint256)"
                          }
                        },
                        "id": 71657,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6804:251:161",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 71644,
                            "name": "super",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -25,
                            "src": "6777:5:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
                              "typeString": "type(contract super VariableDebtToken)"
                            }
                          },
                          "id": 71645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6783:11:161",
                          "memberName": "totalSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 26604,
                          "src": "6777:17:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 71646,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6777:19:161",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 71647,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6797:6:161",
                      "memberName": "rayMul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 64384,
                      "src": "6777:26:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 71658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6777:279:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 71637,
                  "id": 71659,
                  "nodeType": "Return",
                  "src": "6770:286:161"
                }
              ]
            },
            "baseFunctions": [
              26604,
              27138
            ],
            "documentation": {
              "id": 71630,
              "nodeType": "StructuredDocumentation",
              "src": "6441:156:161",
              "text": " @dev Returns the total supply of the variable debt token. Represents the total debt accrued by the users\n @return The total supply*"
            },
            "functionSelector": "18160ddd",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalSupply",
            "nameLocation": "6612:11:161",
            "overrides": {
              "id": 71634,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 71632,
                  "name": "ERC20Upgradeable",
                  "nameLocations": [
                    "6656:16:161"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 27111,
                  "src": "6656:16:161"
                },
                {
                  "id": 71633,
                  "name": "IERC20Upgradeable",
                  "nameLocations": [
                    "6674:17:161"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 27189,
                  "src": "6674:17:161"
                }
              ],
              "src": "6646:46:161"
            },
            "parameters": {
              "id": 71631,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6623:2:161"
            },
            "returnParameters": {
              "id": 71637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71636,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71661,
                  "src": "6702:7:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71635,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6702:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6701:9:161"
            },
            "scope": 71764,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 71673,
            "nodeType": "FunctionDefinition",
            "src": "7228:121:161",
            "nodes": [],
            "body": {
              "id": 71672,
              "nodeType": "Block",
              "src": "7304:45:161",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 71668,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "7322:5:161",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
                          "typeString": "type(contract super VariableDebtToken)"
                        }
                      },
                      "id": 71669,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7328:11:161",
                      "memberName": "totalSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 26604,
                      "src": "7322:17:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 71670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7322:19:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 71667,
                  "id": 71671,
                  "nodeType": "Return",
                  "src": "7315:26:161"
                }
              ]
            },
            "baseFunctions": [
              48814
            ],
            "documentation": {
              "id": 71662,
              "nodeType": "StructuredDocumentation",
              "src": "7072:150:161",
              "text": " @dev Returns the scaled total supply of the variable debt token. Represents sum(debt/index)\n @return the scaled total supply*"
            },
            "functionSelector": "b1bf962d",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "scaledTotalSupply",
            "nameLocation": "7237:17:161",
            "overrides": {
              "id": 71664,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7277:8:161"
            },
            "parameters": {
              "id": 71663,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7254:2:161"
            },
            "returnParameters": {
              "id": 71667,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71666,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71673,
                  "src": "7295:7:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71665,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7295:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7294:9:161"
            },
            "scope": 71764,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 71694,
            "nodeType": "FunctionDefinition",
            "src": "7591:173:161",
            "nodes": [],
            "body": {
              "id": 71693,
              "nodeType": "Block",
              "src": "7694:70:161",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "components": [
                      {
                        "arguments": [
                          {
                            "id": 71686,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 71676,
                            "src": "7729:4:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 71684,
                            "name": "super",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -25,
                            "src": "7713:5:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
                              "typeString": "type(contract super VariableDebtToken)"
                            }
                          },
                          "id": 71685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "7719:9:161",
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 26618,
                          "src": "7713:15:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view returns (uint256)"
                          }
                        },
                        "id": 71687,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7713:21:161",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 71688,
                            "name": "super",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -25,
                            "src": "7736:5:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
                              "typeString": "type(contract super VariableDebtToken)"
                            }
                          },
                          "id": 71689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "7742:11:161",
                          "memberName": "totalSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 26604,
                          "src": "7736:17:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 71690,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7736:19:161",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 71691,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7712:44:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 71683,
                  "id": 71692,
                  "nodeType": "Return",
                  "src": "7705:51:161"
                }
              ]
            },
            "baseFunctions": [
              48552
            ],
            "documentation": {
              "id": 71674,
              "nodeType": "StructuredDocumentation",
              "src": "7357:228:161",
              "text": " @dev Returns the principal balance of the user and principal total supply.\n @param user The address of the user\n @return The principal balance of the user\n @return The principal total supply*"
            },
            "functionSelector": "0afbcdc9",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getScaledUserBalanceAndSupply",
            "nameLocation": "7600:29:161",
            "overrides": {
              "id": 71678,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7658:8:161"
            },
            "parameters": {
              "id": 71677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71676,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "7638:4:161",
                  "nodeType": "VariableDeclaration",
                  "scope": 71694,
                  "src": "7630:12:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71675,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7630:7:161",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7629:14:161"
            },
            "returnParameters": {
              "id": 71683,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71680,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71694,
                  "src": "7676:7:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71679,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7676:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 71682,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71694,
                  "src": "7685:7:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 71681,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7685:7:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7675:18:161"
            },
            "scope": 71764,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 71703,
            "nodeType": "FunctionDefinition",
            "src": "7861:108:161",
            "nodes": [],
            "body": {
              "id": 71702,
              "nodeType": "Block",
              "src": "7927:42:161",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 71700,
                    "name": "_underlyingAsset",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 71352,
                    "src": "7945:16:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 71699,
                  "id": 71701,
                  "nodeType": "Return",
                  "src": "7938:23:161"
                }
              ]
            },
            "documentation": {
              "id": 71695,
              "nodeType": "StructuredDocumentation",
              "src": "7772:83:161",
              "text": " @dev Returns the address of the underlying asset of this fToken*"
            },
            "functionSelector": "b16a19de",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "UNDERLYING_ASSET_ADDRESS",
            "nameLocation": "7870:24:161",
            "parameters": {
              "id": 71696,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7894:2:161"
            },
            "returnParameters": {
              "id": 71699,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71698,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71703,
                  "src": "7918:7:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71697,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7918:7:161",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7917:9:161"
            },
            "scope": 71764,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 71715,
            "nodeType": "FunctionDefinition",
            "src": "8065:154:161",
            "nodes": [],
            "body": {
              "id": 71714,
              "nodeType": "Block",
              "src": "8163:56:161",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 71711,
                      "name": "_getPoolIncentivesController",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        71740
                      ],
                      "referencedDeclaration": 71740,
                      "src": "8181:28:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IPoolIncentivesController_$48421_$",
                        "typeString": "function () view returns (contract IPoolIncentivesController)"
                      }
                    },
                    "id": 71712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8181:30:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                      "typeString": "contract IPoolIncentivesController"
                    }
                  },
                  "functionReturnParameters": 71710,
                  "id": 71713,
                  "nodeType": "Return",
                  "src": "8174:37:161"
                }
              ]
            },
            "baseFunctions": [
              48809
            ],
            "documentation": {
              "id": 71704,
              "nodeType": "StructuredDocumentation",
              "src": "7977:82:161",
              "text": " @dev Returns the address of the incentives controller contract*"
            },
            "functionSelector": "19ef9268",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPoolIncentivesController",
            "nameLocation": "8074:27:161",
            "overrides": {
              "id": 71706,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8118:8:161"
            },
            "parameters": {
              "id": 71705,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8101:2:161"
            },
            "returnParameters": {
              "id": 71710,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71709,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71715,
                  "src": "8136:25:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                    "typeString": "contract IPoolIncentivesController"
                  },
                  "typeName": {
                    "id": 71708,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 71707,
                      "name": "IPoolIncentivesController",
                      "nameLocations": [
                        "8136:25:161"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 48421,
                      "src": "8136:25:161"
                    },
                    "referencedDeclaration": 48421,
                    "src": "8136:25:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                      "typeString": "contract IPoolIncentivesController"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8135:27:161"
            },
            "scope": 71764,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 71726,
            "nodeType": "FunctionDefinition",
            "src": "8322:94:161",
            "nodes": [],
            "body": {
              "id": 71725,
              "nodeType": "Block",
              "src": "8373:43:161",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 71722,
                      "name": "_getLendingPool",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        71763
                      ],
                      "referencedDeclaration": 71763,
                      "src": "8391:15:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
                        "typeString": "function () view returns (contract ILendingPool)"
                      }
                    },
                    "id": 71723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8391:17:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$48084",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "functionReturnParameters": 71721,
                  "id": 71724,
                  "nodeType": "Return",
                  "src": "8384:24:161"
                }
              ]
            },
            "documentation": {
              "id": 71716,
              "nodeType": "StructuredDocumentation",
              "src": "8227:89:161",
              "text": " @dev Returns the address of the lending pool where this token is used*"
            },
            "functionSelector": "7535d246",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "POOL",
            "nameLocation": "8331:4:161",
            "parameters": {
              "id": 71717,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8335:2:161"
            },
            "returnParameters": {
              "id": 71721,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71720,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71726,
                  "src": "8359:12:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPool_$48084",
                    "typeString": "contract ILendingPool"
                  },
                  "typeName": {
                    "id": 71719,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 71718,
                      "name": "ILendingPool",
                      "nameLocations": [
                        "8359:12:161"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 48084,
                      "src": "8359:12:161"
                    },
                    "referencedDeclaration": 48084,
                    "src": "8359:12:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$48084",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8358:14:161"
            },
            "scope": 71764,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 71740,
            "nodeType": "FunctionDefinition",
            "src": "8424:198:161",
            "nodes": [],
            "body": {
              "id": 71739,
              "nodeType": "Block",
              "src": "8523:99:161",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 71734,
                            "name": "_addressProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 71348,
                            "src": "8567:16:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                              "typeString": "contract IAddressProvider"
                            }
                          },
                          "id": 71735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8584:27:161",
                          "memberName": "getPoolIncentivesController",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46361,
                          "src": "8567:44:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 71736,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8567:46:161",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 71733,
                      "name": "IPoolIncentivesController",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 48421,
                      "src": "8541:25:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IPoolIncentivesController_$48421_$",
                        "typeString": "type(contract IPoolIncentivesController)"
                      }
                    },
                    "id": 71737,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8541:73:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                      "typeString": "contract IPoolIncentivesController"
                    }
                  },
                  "functionReturnParameters": 71732,
                  "id": 71738,
                  "nodeType": "Return",
                  "src": "8534:80:161"
                }
              ]
            },
            "baseFunctions": [
              72100
            ],
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getPoolIncentivesController",
            "nameLocation": "8433:28:161",
            "overrides": {
              "id": 71728,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8478:8:161"
            },
            "parameters": {
              "id": 71727,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8461:2:161"
            },
            "returnParameters": {
              "id": 71732,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71731,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71740,
                  "src": "8496:25:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                    "typeString": "contract IPoolIncentivesController"
                  },
                  "typeName": {
                    "id": 71730,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 71729,
                      "name": "IPoolIncentivesController",
                      "nameLocations": [
                        "8496:25:161"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 48421,
                      "src": "8496:25:161"
                    },
                    "referencedDeclaration": 48421,
                    "src": "8496:25:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
                      "typeString": "contract IPoolIncentivesController"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8495:27:161"
            },
            "scope": 71764,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 71749,
            "nodeType": "FunctionDefinition",
            "src": "8630:121:161",
            "nodes": [],
            "body": {
              "id": 71748,
              "nodeType": "Block",
              "src": "8709:42:161",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 71746,
                    "name": "_underlyingAsset",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 71352,
                    "src": "8727:16:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 71745,
                  "id": 71747,
                  "nodeType": "Return",
                  "src": "8720:23:161"
                }
              ]
            },
            "baseFunctions": [
              72038
            ],
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getUnderlyingAssetAddress",
            "nameLocation": "8639:26:161",
            "overrides": {
              "id": 71742,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8682:8:161"
            },
            "parameters": {
              "id": 71741,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8665:2:161"
            },
            "returnParameters": {
              "id": 71745,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71744,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71749,
                  "src": "8700:7:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 71743,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8700:7:161",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8699:9:161"
            },
            "scope": 71764,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 71763,
            "nodeType": "FunctionDefinition",
            "src": "8759:146:161",
            "nodes": [],
            "body": {
              "id": 71762,
              "nodeType": "Block",
              "src": "8832:73:161",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 71757,
                            "name": "_addressProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 71348,
                            "src": "8863:16:161",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                              "typeString": "contract IAddressProvider"
                            }
                          },
                          "id": 71758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8880:14:161",
                          "memberName": "getLendingPool",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 46256,
                          "src": "8863:31:161",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 71759,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8863:33:161",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 71756,
                      "name": "ILendingPool",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 48084,
                      "src": "8850:12:161",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ILendingPool_$48084_$",
                        "typeString": "type(contract ILendingPool)"
                      }
                    },
                    "id": 71760,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8850:47:161",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$48084",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "functionReturnParameters": 71755,
                  "id": 71761,
                  "nodeType": "Return",
                  "src": "8843:54:161"
                }
              ]
            },
            "baseFunctions": [
              72044
            ],
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getLendingPool",
            "nameLocation": "8768:15:161",
            "overrides": {
              "id": 71751,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8800:8:161"
            },
            "parameters": {
              "id": 71750,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8783:2:161"
            },
            "returnParameters": {
              "id": 71755,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71754,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 71763,
                  "src": "8818:12:161",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPool_$48084",
                    "typeString": "contract ILendingPool"
                  },
                  "typeName": {
                    "id": 71753,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 71752,
                      "name": "ILendingPool",
                      "nameLocations": [
                        "8818:12:161"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 48084,
                      "src": "8818:12:161"
                    },
                    "referencedDeclaration": 48084,
                    "src": "8818:12:161",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$48084",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8817:14:161"
            },
            "scope": 71764,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 71339,
              "name": "IVariableDebtToken",
              "nameLocations": [
                "1224:18:161"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 48815,
              "src": "1224:18:161"
            },
            "id": 71340,
            "nodeType": "InheritanceSpecifier",
            "src": "1224:18:161"
          },
          {
            "baseName": {
              "id": 71341,
              "name": "DebtTokenBase",
              "nameLocations": [
                "1244:13:161"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 72045,
              "src": "1244:13:161"
            },
            "id": 71342,
            "nodeType": "InheritanceSpecifier",
            "src": "1244:13:161"
          }
        ],
        "canonicalName": "VariableDebtToken",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 71338,
          "nodeType": "StructuredDocumentation",
          "src": "947:247:161",
          "text": "@title VariableDebtToken\n @author FluidNFT\n @notice Allows for the tracking of debt for the purposes of APY calculations\n at a variable rate mode.\n @dev Debt tokens are non-transferable and so diverge from the ERC20 standard."
        },
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          71764,
          72045,
          47120,
          72276,
          27111,
          48815,
          27214,
          27189,
          28988,
          26136,
          48559
        ],
        "name": "VariableDebtToken",
        "nameLocation": "1203:17:161",
        "scope": 71765,
        "usedErrors": []
      }
    ],
    "license": "AGPL-3.0"
  },
  "id": 161
}

Last updated