{
  "contractName": "ComptrollerInterface",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "isComptroller",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "cTokens",
          "type": "address[]"
        }
      ],
      "name": "enterMarkets",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cToken",
          "type": "address"
        }
      ],
      "name": "exitMarket",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "mintAmount",
          "type": "uint256"
        }
      ],
      "name": "mintAllowed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "mintAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "mintTokens",
          "type": "uint256"
        }
      ],
      "name": "mintVerify",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "redeemer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "redeemTokens",
          "type": "uint256"
        }
      ],
      "name": "redeemAllowed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "redeemer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "redeemAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "redeemTokens",
          "type": "uint256"
        }
      ],
      "name": "redeemVerify",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "borrowAmount",
          "type": "uint256"
        }
      ],
      "name": "borrowAllowed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "borrowAmount",
          "type": "uint256"
        }
      ],
      "name": "borrowVerify",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "payer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        }
      ],
      "name": "repayBorrowAllowed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "payer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "borrowerIndex",
          "type": "uint256"
        }
      ],
      "name": "repayBorrowVerify",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cTokenBorrowed",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "cTokenCollateral",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "liquidator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        }
      ],
      "name": "liquidateBorrowAllowed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cTokenBorrowed",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "cTokenCollateral",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "liquidator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "seizeTokens",
          "type": "uint256"
        }
      ],
      "name": "liquidateBorrowVerify",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cTokenCollateral",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "cTokenBorrowed",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "liquidator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "seizeTokens",
          "type": "uint256"
        }
      ],
      "name": "seizeAllowed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cTokenCollateral",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "cTokenBorrowed",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "liquidator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "seizeTokens",
          "type": "uint256"
        }
      ],
      "name": "seizeVerify",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "src",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "transferTokens",
          "type": "uint256"
        }
      ],
      "name": "transferAllowed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "cToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "src",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "transferTokens",
          "type": "uint256"
        }
      ],
      "name": "transferVerify",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "cTokenBorrowed",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "cTokenCollateral",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        }
      ],
      "name": "liquidateCalculateSeizeTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.12+commit.7709ece9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"exitMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isComptroller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"liquidateBorrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"liquidateBorrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"liquidateCalculateSeizeTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mintAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"mintVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowerIndex\",\"type\":\"uint256\"}],\"name\":\"repayBorrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seizeAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seizeVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"transferTokens\",\"type\":\"uint256\"}],\"name\":\"transferAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"transferTokens\",\"type\":\"uint256\"}],\"name\":\"transferVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"isComptroller()\":{\"details\":\"Implementations should simply return true.\",\"return\":\"true\"}}},\"userdoc\":{\"methods\":{\"enterMarkets(address[])\":{\"notice\":\"* Assets You Are In **\"},\"isComptroller()\":{\"notice\":\"Marker function used for light validation when updating the comptroller of a market\"},\"liquidateCalculateSeizeTokens(address,address,uint256)\":{\"notice\":\"* Liquidity/Liquidation Calculations **\"},\"mintAllowed(address,address,uint256)\":{\"notice\":\"* Policy Hooks **\"}}}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/rtoken-contracts/rtoken-contracts/packages/contracts/compound/contracts/ComptrollerInterface.sol\":\"ComptrollerInterface\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/rtoken-contracts/rtoken-contracts/packages/contracts/compound/contracts/ComptrollerInterface.sol\":{\"keccak256\":\"0xde6c4cb111e4d36ec44f350299a5b585d9a45636189e25a814d7b9f2dbb822af\",\"urls\":[\"bzz-raw://a67fcb86ceabbd676cff39ce557a74b726879af516f33557e1fb618bff68d295\",\"dweb:/ipfs/QmbD6qN2xXE2zmqjkNo3TED5deEziS3V5yrDNL4nAvi2GB\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.5.8;\n\ninterface ComptrollerInterface {\n    /**\n     * @notice Marker function used for light validation when updating the comptroller of a market\n     * @dev Implementations should simply return true.\n     * @return true\n     */\n    function isComptroller() external view returns (bool);\n\n    /*** Assets You Are In ***/\n\n    function enterMarkets(address[] calldata cTokens) external returns (uint256[] memory);\n    function exitMarket(address cToken) external returns (uint256);\n\n    /*** Policy Hooks ***/\n\n    function mintAllowed(address cToken, address minter, uint256 mintAmount) external returns (uint256);\n    function mintVerify(address cToken, address minter, uint256 mintAmount, uint256 mintTokens) external;\n\n    function redeemAllowed(address cToken, address redeemer, uint256 redeemTokens) external returns (uint256);\n    function redeemVerify(address cToken, address redeemer, uint256 redeemAmount, uint256 redeemTokens) external;\n\n    function borrowAllowed(address cToken, address borrower, uint256 borrowAmount) external returns (uint256);\n    function borrowVerify(address cToken, address borrower, uint256 borrowAmount) external;\n\n    function repayBorrowAllowed(address cToken, address payer, address borrower, uint256 repayAmount)\n        external\n        returns (uint256);\n    function repayBorrowVerify(\n        address cToken,\n        address payer,\n        address borrower,\n        uint256 repayAmount,\n        uint256 borrowerIndex\n    ) external;\n\n    function liquidateBorrowAllowed(\n        address cTokenBorrowed,\n        address cTokenCollateral,\n        address liquidator,\n        address borrower,\n        uint256 repayAmount\n    ) external returns (uint256);\n    function liquidateBorrowVerify(\n        address cTokenBorrowed,\n        address cTokenCollateral,\n        address liquidator,\n        address borrower,\n        uint256 repayAmount,\n        uint256 seizeTokens\n    ) external;\n\n    function seizeAllowed(\n        address cTokenCollateral,\n        address cTokenBorrowed,\n        address liquidator,\n        address borrower,\n        uint256 seizeTokens\n    ) external returns (uint256);\n    function seizeVerify(\n        address cTokenCollateral,\n        address cTokenBorrowed,\n        address liquidator,\n        address borrower,\n        uint256 seizeTokens\n    ) external;\n\n    function transferAllowed(address cToken, address src, address dst, uint256 transferTokens)\n        external\n        returns (uint256);\n    function transferVerify(address cToken, address src, address dst, uint256 transferTokens) external;\n\n    /*** Liquidity/Liquidation Calculations ***/\n\n    function liquidateCalculateSeizeTokens(address cTokenBorrowed, address cTokenCollateral, uint256 repayAmount)\n        external\n        view\n        returns (uint256, uint256);\n}\n",
  "sourcePath": "/home/runner/work/rtoken-contracts/rtoken-contracts/packages/contracts/compound/contracts/ComptrollerInterface.sol",
  "ast": {
    "absolutePath": "/home/runner/work/rtoken-contracts/rtoken-contracts/packages/contracts/compound/contracts/ComptrollerInterface.sol",
    "exportedSymbols": {
      "ComptrollerInterface": [
        4816
      ]
    },
    "id": 4817,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4609,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".8"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:4"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 4816,
        "linearizedBaseContracts": [
          4816
        ],
        "name": "ComptrollerInterface",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": "@notice Marker function used for light validation when updating the comptroller of a market\n@dev Implementations should simply return true.\n@return true",
            "id": 4614,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isComptroller",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4610,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "274:2:4"
            },
            "returnParameters": {
              "id": 4613,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4612,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4614,
                  "src": "300:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4611,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "300:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "299:6:4"
            },
            "scope": 4816,
            "src": "252:54:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "* Assets You Are In **",
            "id": 4623,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "enterMarkets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4618,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4617,
                  "name": "cTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4623,
                  "src": "367:26:4",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4615,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "367:7:4",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 4616,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "367:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "366:28:4"
            },
            "returnParameters": {
              "id": 4622,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4621,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4623,
                  "src": "413:16:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4619,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "413:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4620,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "413:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "412:18:4"
            },
            "scope": 4816,
            "src": "345:86:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4630,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "exitMarket",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4626,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4625,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4630,
                  "src": "456:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4624,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "456:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "455:16:4"
            },
            "returnParameters": {
              "id": 4629,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4628,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4630,
                  "src": "490:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4627,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "490:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "489:9:4"
            },
            "scope": 4816,
            "src": "436:63:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "* Policy Hooks **",
            "id": 4641,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mintAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4632,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4641,
                  "src": "554:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4631,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "554:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4634,
                  "name": "minter",
                  "nodeType": "VariableDeclaration",
                  "scope": 4641,
                  "src": "570:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4633,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "570:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4636,
                  "name": "mintAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4641,
                  "src": "586:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4635,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "586:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "553:52:4"
            },
            "returnParameters": {
              "id": 4640,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4639,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4641,
                  "src": "624:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4638,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "624:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "623:9:4"
            },
            "scope": 4816,
            "src": "533:100:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4652,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mintVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4650,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4643,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4652,
                  "src": "658:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4642,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "658:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4645,
                  "name": "minter",
                  "nodeType": "VariableDeclaration",
                  "scope": 4652,
                  "src": "674:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4644,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "674:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4647,
                  "name": "mintAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4652,
                  "src": "690:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4646,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "690:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4649,
                  "name": "mintTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4652,
                  "src": "710:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4648,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "710:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "657:72:4"
            },
            "returnParameters": {
              "id": 4651,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "738:0:4"
            },
            "scope": 4816,
            "src": "638:101:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4663,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "redeemAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4654,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "768:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4653,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "768:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4656,
                  "name": "redeemer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "784:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4655,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "784:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4658,
                  "name": "redeemTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "802:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4657,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "802:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "767:56:4"
            },
            "returnParameters": {
              "id": 4662,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4661,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "842:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4660,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "842:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "841:9:4"
            },
            "scope": 4816,
            "src": "745:106:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4674,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "redeemVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4672,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4665,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4674,
                  "src": "878:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4664,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "878:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4667,
                  "name": "redeemer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4674,
                  "src": "894:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4666,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "894:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4669,
                  "name": "redeemAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4674,
                  "src": "912:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4668,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "912:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4671,
                  "name": "redeemTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4674,
                  "src": "934:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4670,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "934:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "877:78:4"
            },
            "returnParameters": {
              "id": 4673,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "964:0:4"
            },
            "scope": 4816,
            "src": "856:109:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4685,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "borrowAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4676,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4685,
                  "src": "994:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4675,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "994:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4678,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4685,
                  "src": "1010:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4677,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1010:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4680,
                  "name": "borrowAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4685,
                  "src": "1028:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4679,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1028:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "993:56:4"
            },
            "returnParameters": {
              "id": 4684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4683,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4685,
                  "src": "1068:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4682,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1068:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1067:9:4"
            },
            "scope": 4816,
            "src": "971:106:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4694,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "borrowVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4692,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4687,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4694,
                  "src": "1104:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4686,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1104:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4689,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4694,
                  "src": "1120:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4688,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4691,
                  "name": "borrowAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4694,
                  "src": "1138:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4690,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1138:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1103:56:4"
            },
            "returnParameters": {
              "id": 4693,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1168:0:4"
            },
            "scope": 4816,
            "src": "1082:87:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4707,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "repayBorrowAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4703,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4696,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4707,
                  "src": "1203:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4695,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1203:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4698,
                  "name": "payer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4707,
                  "src": "1219:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4697,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1219:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4700,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4707,
                  "src": "1234:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4699,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1234:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4702,
                  "name": "repayAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4707,
                  "src": "1252:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4701,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1252:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1202:70:4"
            },
            "returnParameters": {
              "id": 4706,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4705,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4707,
                  "src": "1307:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4704,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1307:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1306:9:4"
            },
            "scope": 4816,
            "src": "1175:141:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4720,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "repayBorrowVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4718,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4709,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4720,
                  "src": "1357:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4708,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1357:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4711,
                  "name": "payer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4720,
                  "src": "1381:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4710,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1381:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4713,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4720,
                  "src": "1404:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4712,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1404:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4715,
                  "name": "repayAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4720,
                  "src": "1430:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4714,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1430:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4717,
                  "name": "borrowerIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 4720,
                  "src": "1459:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4716,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1459:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1347:139:4"
            },
            "returnParameters": {
              "id": 4719,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1495:0:4"
            },
            "scope": 4816,
            "src": "1321:175:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4735,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "liquidateBorrowAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4722,
                  "name": "cTokenBorrowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 4735,
                  "src": "1543:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4721,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1543:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4724,
                  "name": "cTokenCollateral",
                  "nodeType": "VariableDeclaration",
                  "scope": 4735,
                  "src": "1575:24:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4723,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1575:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4726,
                  "name": "liquidator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4735,
                  "src": "1609:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4725,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1609:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4728,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4735,
                  "src": "1637:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4727,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1637:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4730,
                  "name": "repayAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4735,
                  "src": "1663:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4729,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1663:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1533:155:4"
            },
            "returnParameters": {
              "id": 4734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4733,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4735,
                  "src": "1707:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1707:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1706:9:4"
            },
            "scope": 4816,
            "src": "1502:214:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4750,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "liquidateBorrowVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4748,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4737,
                  "name": "cTokenBorrowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "1761:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4736,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1761:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4739,
                  "name": "cTokenCollateral",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "1793:24:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4738,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1793:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4741,
                  "name": "liquidator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "1827:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4740,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1827:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4743,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "1855:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4742,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1855:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4745,
                  "name": "repayAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "1881:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4744,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1881:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4747,
                  "name": "seizeTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "1910:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4746,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1910:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1751:184:4"
            },
            "returnParameters": {
              "id": 4749,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1944:0:4"
            },
            "scope": 4816,
            "src": "1721:224:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4765,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "seizeAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4761,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4752,
                  "name": "cTokenCollateral",
                  "nodeType": "VariableDeclaration",
                  "scope": 4765,
                  "src": "1982:24:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4751,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1982:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4754,
                  "name": "cTokenBorrowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 4765,
                  "src": "2016:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4753,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2016:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4756,
                  "name": "liquidator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4765,
                  "src": "2048:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4755,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2048:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4758,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4765,
                  "src": "2076:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4757,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2076:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4760,
                  "name": "seizeTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4765,
                  "src": "2102:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4759,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2102:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1972:155:4"
            },
            "returnParameters": {
              "id": 4764,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4763,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4765,
                  "src": "2146:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4762,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2146:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2145:9:4"
            },
            "scope": 4816,
            "src": "1951:204:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4778,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "seizeVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4776,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4767,
                  "name": "cTokenCollateral",
                  "nodeType": "VariableDeclaration",
                  "scope": 4778,
                  "src": "2190:24:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4766,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2190:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4769,
                  "name": "cTokenBorrowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 4778,
                  "src": "2224:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4768,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2224:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4771,
                  "name": "liquidator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4778,
                  "src": "2256:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4770,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2256:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4773,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4778,
                  "src": "2284:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4772,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2284:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4775,
                  "name": "seizeTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4778,
                  "src": "2310:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4774,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2310:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2180:155:4"
            },
            "returnParameters": {
              "id": 4777,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2344:0:4"
            },
            "scope": 4816,
            "src": "2160:185:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4791,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transferAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4787,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4780,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4791,
                  "src": "2376:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4779,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2376:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4782,
                  "name": "src",
                  "nodeType": "VariableDeclaration",
                  "scope": 4791,
                  "src": "2392:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4781,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2392:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4784,
                  "name": "dst",
                  "nodeType": "VariableDeclaration",
                  "scope": 4791,
                  "src": "2405:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4783,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2405:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4786,
                  "name": "transferTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4791,
                  "src": "2418:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4785,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2418:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2375:66:4"
            },
            "returnParameters": {
              "id": 4790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4789,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4791,
                  "src": "2476:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4788,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2476:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2475:9:4"
            },
            "scope": 4816,
            "src": "2351:134:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4802,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transferVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4800,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4793,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4802,
                  "src": "2514:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4792,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2514:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4795,
                  "name": "src",
                  "nodeType": "VariableDeclaration",
                  "scope": 4802,
                  "src": "2530:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4794,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2530:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4797,
                  "name": "dst",
                  "nodeType": "VariableDeclaration",
                  "scope": 4802,
                  "src": "2543:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4796,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2543:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4799,
                  "name": "transferTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4802,
                  "src": "2556:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4798,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2556:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2513:66:4"
            },
            "returnParameters": {
              "id": 4801,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2588:0:4"
            },
            "scope": 4816,
            "src": "2490:99:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "* Liquidity/Liquidation Calculations **",
            "id": 4815,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "liquidateCalculateSeizeTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4809,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4804,
                  "name": "cTokenBorrowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 4815,
                  "src": "2684:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2684:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4806,
                  "name": "cTokenCollateral",
                  "nodeType": "VariableDeclaration",
                  "scope": 4815,
                  "src": "2708:24:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4805,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2708:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4808,
                  "name": "repayAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4815,
                  "src": "2734:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4807,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2734:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2683:71:4"
            },
            "returnParameters": {
              "id": 4814,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4811,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4815,
                  "src": "2802:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4810,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2802:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4813,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4815,
                  "src": "2811:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4812,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2811:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2801:18:4"
            },
            "scope": 4816,
            "src": "2645:175:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 4817,
        "src": "25:2797:4"
      }
    ],
    "src": "0:2823:4"
  },
  "legacyAST": {
    "absolutePath": "/home/runner/work/rtoken-contracts/rtoken-contracts/packages/contracts/compound/contracts/ComptrollerInterface.sol",
    "exportedSymbols": {
      "ComptrollerInterface": [
        4816
      ]
    },
    "id": 4817,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4609,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".8"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:4"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 4816,
        "linearizedBaseContracts": [
          4816
        ],
        "name": "ComptrollerInterface",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": "@notice Marker function used for light validation when updating the comptroller of a market\n@dev Implementations should simply return true.\n@return true",
            "id": 4614,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isComptroller",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4610,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "274:2:4"
            },
            "returnParameters": {
              "id": 4613,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4612,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4614,
                  "src": "300:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4611,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "300:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "299:6:4"
            },
            "scope": 4816,
            "src": "252:54:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "* Assets You Are In **",
            "id": 4623,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "enterMarkets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4618,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4617,
                  "name": "cTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4623,
                  "src": "367:26:4",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4615,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "367:7:4",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 4616,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "367:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "366:28:4"
            },
            "returnParameters": {
              "id": 4622,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4621,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4623,
                  "src": "413:16:4",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4619,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "413:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4620,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "413:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "412:18:4"
            },
            "scope": 4816,
            "src": "345:86:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4630,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "exitMarket",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4626,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4625,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4630,
                  "src": "456:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4624,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "456:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "455:16:4"
            },
            "returnParameters": {
              "id": 4629,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4628,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4630,
                  "src": "490:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4627,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "490:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "489:9:4"
            },
            "scope": 4816,
            "src": "436:63:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "* Policy Hooks **",
            "id": 4641,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mintAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4632,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4641,
                  "src": "554:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4631,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "554:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4634,
                  "name": "minter",
                  "nodeType": "VariableDeclaration",
                  "scope": 4641,
                  "src": "570:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4633,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "570:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4636,
                  "name": "mintAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4641,
                  "src": "586:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4635,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "586:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "553:52:4"
            },
            "returnParameters": {
              "id": 4640,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4639,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4641,
                  "src": "624:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4638,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "624:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "623:9:4"
            },
            "scope": 4816,
            "src": "533:100:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4652,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mintVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4650,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4643,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4652,
                  "src": "658:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4642,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "658:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4645,
                  "name": "minter",
                  "nodeType": "VariableDeclaration",
                  "scope": 4652,
                  "src": "674:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4644,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "674:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4647,
                  "name": "mintAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4652,
                  "src": "690:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4646,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "690:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4649,
                  "name": "mintTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4652,
                  "src": "710:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4648,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "710:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "657:72:4"
            },
            "returnParameters": {
              "id": 4651,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "738:0:4"
            },
            "scope": 4816,
            "src": "638:101:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4663,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "redeemAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4654,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "768:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4653,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "768:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4656,
                  "name": "redeemer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "784:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4655,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "784:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4658,
                  "name": "redeemTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "802:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4657,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "802:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "767:56:4"
            },
            "returnParameters": {
              "id": 4662,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4661,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4663,
                  "src": "842:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4660,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "842:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "841:9:4"
            },
            "scope": 4816,
            "src": "745:106:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4674,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "redeemVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4672,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4665,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4674,
                  "src": "878:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4664,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "878:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4667,
                  "name": "redeemer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4674,
                  "src": "894:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4666,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "894:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4669,
                  "name": "redeemAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4674,
                  "src": "912:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4668,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "912:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4671,
                  "name": "redeemTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4674,
                  "src": "934:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4670,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "934:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "877:78:4"
            },
            "returnParameters": {
              "id": 4673,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "964:0:4"
            },
            "scope": 4816,
            "src": "856:109:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4685,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "borrowAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4676,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4685,
                  "src": "994:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4675,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "994:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4678,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4685,
                  "src": "1010:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4677,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1010:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4680,
                  "name": "borrowAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4685,
                  "src": "1028:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4679,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1028:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "993:56:4"
            },
            "returnParameters": {
              "id": 4684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4683,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4685,
                  "src": "1068:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4682,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1068:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1067:9:4"
            },
            "scope": 4816,
            "src": "971:106:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4694,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "borrowVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4692,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4687,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4694,
                  "src": "1104:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4686,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1104:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4689,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4694,
                  "src": "1120:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4688,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4691,
                  "name": "borrowAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4694,
                  "src": "1138:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4690,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1138:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1103:56:4"
            },
            "returnParameters": {
              "id": 4693,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1168:0:4"
            },
            "scope": 4816,
            "src": "1082:87:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4707,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "repayBorrowAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4703,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4696,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4707,
                  "src": "1203:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4695,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1203:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4698,
                  "name": "payer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4707,
                  "src": "1219:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4697,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1219:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4700,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4707,
                  "src": "1234:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4699,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1234:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4702,
                  "name": "repayAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4707,
                  "src": "1252:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4701,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1252:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1202:70:4"
            },
            "returnParameters": {
              "id": 4706,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4705,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4707,
                  "src": "1307:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4704,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1307:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1306:9:4"
            },
            "scope": 4816,
            "src": "1175:141:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4720,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "repayBorrowVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4718,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4709,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4720,
                  "src": "1357:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4708,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1357:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4711,
                  "name": "payer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4720,
                  "src": "1381:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4710,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1381:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4713,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4720,
                  "src": "1404:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4712,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1404:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4715,
                  "name": "repayAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4720,
                  "src": "1430:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4714,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1430:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4717,
                  "name": "borrowerIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 4720,
                  "src": "1459:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4716,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1459:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1347:139:4"
            },
            "returnParameters": {
              "id": 4719,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1495:0:4"
            },
            "scope": 4816,
            "src": "1321:175:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4735,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "liquidateBorrowAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4722,
                  "name": "cTokenBorrowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 4735,
                  "src": "1543:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4721,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1543:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4724,
                  "name": "cTokenCollateral",
                  "nodeType": "VariableDeclaration",
                  "scope": 4735,
                  "src": "1575:24:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4723,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1575:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4726,
                  "name": "liquidator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4735,
                  "src": "1609:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4725,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1609:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4728,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4735,
                  "src": "1637:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4727,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1637:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4730,
                  "name": "repayAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4735,
                  "src": "1663:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4729,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1663:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1533:155:4"
            },
            "returnParameters": {
              "id": 4734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4733,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4735,
                  "src": "1707:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1707:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1706:9:4"
            },
            "scope": 4816,
            "src": "1502:214:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4750,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "liquidateBorrowVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4748,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4737,
                  "name": "cTokenBorrowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "1761:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4736,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1761:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4739,
                  "name": "cTokenCollateral",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "1793:24:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4738,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1793:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4741,
                  "name": "liquidator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "1827:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4740,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1827:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4743,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "1855:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4742,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1855:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4745,
                  "name": "repayAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "1881:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4744,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1881:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4747,
                  "name": "seizeTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4750,
                  "src": "1910:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4746,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1910:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1751:184:4"
            },
            "returnParameters": {
              "id": 4749,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1944:0:4"
            },
            "scope": 4816,
            "src": "1721:224:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4765,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "seizeAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4761,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4752,
                  "name": "cTokenCollateral",
                  "nodeType": "VariableDeclaration",
                  "scope": 4765,
                  "src": "1982:24:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4751,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1982:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4754,
                  "name": "cTokenBorrowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 4765,
                  "src": "2016:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4753,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2016:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4756,
                  "name": "liquidator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4765,
                  "src": "2048:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4755,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2048:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4758,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4765,
                  "src": "2076:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4757,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2076:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4760,
                  "name": "seizeTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4765,
                  "src": "2102:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4759,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2102:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1972:155:4"
            },
            "returnParameters": {
              "id": 4764,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4763,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4765,
                  "src": "2146:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4762,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2146:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2145:9:4"
            },
            "scope": 4816,
            "src": "1951:204:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4778,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "seizeVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4776,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4767,
                  "name": "cTokenCollateral",
                  "nodeType": "VariableDeclaration",
                  "scope": 4778,
                  "src": "2190:24:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4766,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2190:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4769,
                  "name": "cTokenBorrowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 4778,
                  "src": "2224:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4768,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2224:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4771,
                  "name": "liquidator",
                  "nodeType": "VariableDeclaration",
                  "scope": 4778,
                  "src": "2256:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4770,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2256:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4773,
                  "name": "borrower",
                  "nodeType": "VariableDeclaration",
                  "scope": 4778,
                  "src": "2284:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4772,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2284:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4775,
                  "name": "seizeTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4778,
                  "src": "2310:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4774,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2310:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2180:155:4"
            },
            "returnParameters": {
              "id": 4777,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2344:0:4"
            },
            "scope": 4816,
            "src": "2160:185:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4791,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transferAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4787,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4780,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4791,
                  "src": "2376:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4779,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2376:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4782,
                  "name": "src",
                  "nodeType": "VariableDeclaration",
                  "scope": 4791,
                  "src": "2392:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4781,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2392:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4784,
                  "name": "dst",
                  "nodeType": "VariableDeclaration",
                  "scope": 4791,
                  "src": "2405:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4783,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2405:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4786,
                  "name": "transferTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4791,
                  "src": "2418:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4785,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2418:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2375:66:4"
            },
            "returnParameters": {
              "id": 4790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4789,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4791,
                  "src": "2476:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4788,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2476:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2475:9:4"
            },
            "scope": 4816,
            "src": "2351:134:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 4802,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transferVerify",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4800,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4793,
                  "name": "cToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4802,
                  "src": "2514:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4792,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2514:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4795,
                  "name": "src",
                  "nodeType": "VariableDeclaration",
                  "scope": 4802,
                  "src": "2530:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4794,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2530:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4797,
                  "name": "dst",
                  "nodeType": "VariableDeclaration",
                  "scope": 4802,
                  "src": "2543:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4796,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2543:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4799,
                  "name": "transferTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 4802,
                  "src": "2556:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4798,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2556:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2513:66:4"
            },
            "returnParameters": {
              "id": 4801,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2588:0:4"
            },
            "scope": 4816,
            "src": "2490:99:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "* Liquidity/Liquidation Calculations **",
            "id": 4815,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "liquidateCalculateSeizeTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4809,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4804,
                  "name": "cTokenBorrowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 4815,
                  "src": "2684:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2684:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4806,
                  "name": "cTokenCollateral",
                  "nodeType": "VariableDeclaration",
                  "scope": 4815,
                  "src": "2708:24:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4805,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2708:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4808,
                  "name": "repayAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 4815,
                  "src": "2734:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4807,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2734:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2683:71:4"
            },
            "returnParameters": {
              "id": 4814,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4811,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4815,
                  "src": "2802:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4810,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2802:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4813,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4815,
                  "src": "2811:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4812,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2811:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2801:18:4"
            },
            "scope": 4816,
            "src": "2645:175:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 4817,
        "src": "25:2797:4"
      }
    ],
    "src": "0:2823:4"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.12+commit.7709ece9.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.21",
  "updatedAt": "2020-04-22T17:31:54.517Z",
  "devdoc": {
    "methods": {
      "isComptroller()": {
        "details": "Implementations should simply return true.",
        "return": "true"
      }
    }
  },
  "userdoc": {
    "methods": {
      "enterMarkets(address[])": {
        "notice": "* Assets You Are In **"
      },
      "isComptroller()": {
        "notice": "Marker function used for light validation when updating the comptroller of a market"
      },
      "liquidateCalculateSeizeTokens(address,address,uint256)": {
        "notice": "* Liquidity/Liquidation Calculations **"
      },
      "mintAllowed(address,address,uint256)": {
        "notice": "* Policy Hooks **"
      }
    }
  }
}