{
  "contractName": "IDEX",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxAmountA",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxAmountB",
          "type": "uint256"
        }
      ],
      "name": "AddedLiquidity",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "remove_share",
          "type": "uint256"
        }
      ],
      "name": "RemovedLiquidity",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "supply_amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "target_amount",
          "type": "uint256"
        }
      ],
      "name": "Swaped",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        }
      ],
      "name": "getLiquidityPool",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        }
      ],
      "name": "getLiquidityTokenAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "supplyAmount",
          "type": "uint256"
        }
      ],
      "name": "getSwapTargetAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "targetAmount",
          "type": "uint256"
        }
      ],
      "name": "getSwapSupplyAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "supplyAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minTargetAmount",
          "type": "uint256"
        }
      ],
      "name": "swapWithExactSupply",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "targetAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxSupplyAmount",
          "type": "uint256"
        }
      ],
      "name": "swapWithExactTarget",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maxAmountA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxAmountB",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minShareIncrement",
          "type": "uint256"
        }
      ],
      "name": "addLiquidity",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "removeShare",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minWithdrawnA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minWithdrawnB",
          "type": "uint256"
        }
      ],
      "name": "removeLiquidity",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAmountA\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAmountB\",\"type\":\"uint256\"}],\"name\":\"AddedLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remove_share\",\"type\":\"uint256\"}],\"name\":\"RemovedLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"supply_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"target_amount\",\"type\":\"uint256\"}],\"name\":\"Swaped\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minShareIncrement\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getLiquidityPool\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getLiquidityTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"targetAmount\",\"type\":\"uint256\"}],\"name\":\"getSwapSupplyAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"supplyAmount\",\"type\":\"uint256\"}],\"name\":\"getSwapTargetAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"removeShare\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minWithdrawnA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minWithdrawnB\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"supplyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTargetAmount\",\"type\":\"uint256\"}],\"name\":\"swapWithExactSupply\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"targetAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSupplyAmount\",\"type\":\"uint256\"}],\"name\":\"swapWithExactTarget\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/dex/IDEX.sol\":\"IDEX\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/dex/IDEX.sol\":{\"keccak256\":\"0x139b56d71b84a9781e5da2fed311191cfd2c569653c325980e7159d12861e6c8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9a2d59a633b20a52f4e955c571f6832dbacabfdf9428b0a4dc8320352cf0ebc7\",\"dweb:/ipfs/QmXqfM3LYM6H1sDybKmDCFEVvJKj6RuPQqPrXWkju2hC3t\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.0;\n\ninterface IDEX {\n    event Swaped(address indexed sender, address[] path, uint256 supply_amount, uint256 target_amount);\n    event AddedLiquidity(address indexed sender, address indexed tokenA, address indexed tokenB, uint256 maxAmountA, uint256 maxAmountB);\n    event RemovedLiquidity(address indexed sender, address indexed tokenA, address indexed tokenB, uint256 remove_share);\n\n    // Get liquidity pool of the currency_id_a and currency_id_b.\n    // Returns (liquidity_a, liquidity_b)\n    function getLiquidityPool(address tokenA, address tokenB) external view returns (uint256, uint256);\n\n    // Get Liquidity token address.\n    // Returns (liquidity_token_address)\n    function getLiquidityTokenAddress(address tokenA, address tokenB) external view returns (address);\n\n    // Get swap target amount.\n    // Returns (target_amount)\n    function getSwapTargetAmount(address[] calldata path, uint256 supplyAmount) external view returns (uint256);\n\n    // Get swap supply amount.\n    // Returns (supply_amount)\n    function getSwapSupplyAmount(address[] calldata path, uint256 targetAmount) external view returns (uint256);\n\n    // Swap with exact supply.\n    // Returns a boolean value indicating whether the operation succeeded.\n    function swapWithExactSupply(address[] calldata path, uint256 supplyAmount, uint256 minTargetAmount) external returns (bool);\n\n    // Swap with exact target.\n    // Returns a boolean value indicating whether the operation succeeded.\n    function swapWithExactTarget(address[] calldata path, uint256 targetAmount, uint256 maxSupplyAmount) external returns (bool);\n\n    // Add liquidity to the trading pair.\n    // Returns a boolean value indicating whether the operation succeeded.\n    function addLiquidity(address tokenA, address tokenB, uint256 maxAmountA, uint256 maxAmountB, uint256 minShareIncrement) external returns (bool);\n\n    // Remove liquidity from the trading pair.\n    // Returns a boolean value indicating whether the operation succeeded.\n    function removeLiquidity(address tokenA, address tokenB, uint256 removeShare, uint256 minWithdrawnA, uint256 minWithdrawnB) external returns (bool);\n}\n",
  "sourcePath": "/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/dex/IDEX.sol",
  "ast": {
    "absolutePath": "/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/dex/IDEX.sol",
    "exportedSymbols": {
      "IDEX": [
        711
      ]
    },
    "id": 712,
    "license": "GPL-3.0-or-later",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 583,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "46:23:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 711,
        "linearizedBaseContracts": [
          711
        ],
        "name": "IDEX",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "id": 594,
            "name": "Swaped",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 593,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 585,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 594,
                  "src": "105:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 584,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "105:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 588,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "scope": 594,
                  "src": "129:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 586,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "129:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 587,
                    "nodeType": "ArrayTypeName",
                    "src": "129:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 590,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "supply_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 594,
                  "src": "145:21:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 589,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "145:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 592,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "target_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 594,
                  "src": "168:21:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 591,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "168:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "104:86:1"
            },
            "src": "92:99:1"
          },
          {
            "anonymous": false,
            "id": 606,
            "name": "AddedLiquidity",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 605,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 596,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 606,
                  "src": "217:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 595,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "217:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 598,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "scope": 606,
                  "src": "241:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 597,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "241:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 600,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "scope": 606,
                  "src": "265:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 599,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "265:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 602,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "maxAmountA",
                  "nodeType": "VariableDeclaration",
                  "scope": 606,
                  "src": "289:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 601,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "289:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 604,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "maxAmountB",
                  "nodeType": "VariableDeclaration",
                  "scope": 606,
                  "src": "309:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 603,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "309:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "216:112:1"
            },
            "src": "196:133:1"
          },
          {
            "anonymous": false,
            "id": 616,
            "name": "RemovedLiquidity",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 615,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 608,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 616,
                  "src": "357:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 607,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "357:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 610,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "scope": 616,
                  "src": "381:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 609,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "381:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 612,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "scope": 616,
                  "src": "405:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 611,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "405:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 614,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "remove_share",
                  "nodeType": "VariableDeclaration",
                  "scope": 616,
                  "src": "429:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 613,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "429:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "356:94:1"
            },
            "src": "334:117:1"
          },
          {
            "functionSelector": "f4f31ede",
            "id": 627,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityPool",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 621,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 618,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "scope": 627,
                  "src": "591:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 617,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "591:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 620,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "scope": 627,
                  "src": "607:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 619,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "607:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "590:32:1"
            },
            "returnParameters": {
              "id": 626,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 623,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 627,
                  "src": "646:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 622,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "646:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 625,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 627,
                  "src": "655:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 624,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "655:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "645:18:1"
            },
            "scope": 711,
            "src": "565:99:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "ffd73c4a",
            "id": 636,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityTokenAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 632,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 629,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "scope": 636,
                  "src": "781:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 628,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "781:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 631,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "scope": 636,
                  "src": "797:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 630,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "797:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "780:32:1"
            },
            "returnParameters": {
              "id": 635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 634,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 636,
                  "src": "836:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 633,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "836:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "835:9:1"
            },
            "scope": 711,
            "src": "747:98:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "4d60beb1",
            "id": 646,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getSwapTargetAmount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 642,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 639,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "scope": 646,
                  "src": "942:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 637,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "942:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 638,
                    "nodeType": "ArrayTypeName",
                    "src": "942:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 641,
                  "mutability": "mutable",
                  "name": "supplyAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 646,
                  "src": "967:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 640,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "967:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "941:47:1"
            },
            "returnParameters": {
              "id": 645,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 644,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 646,
                  "src": "1012:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 643,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1012:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1011:9:1"
            },
            "scope": 711,
            "src": "913:108:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "dbcd19a2",
            "id": 656,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getSwapSupplyAmount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 652,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 649,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "scope": 656,
                  "src": "1118:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 647,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1118:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 648,
                    "nodeType": "ArrayTypeName",
                    "src": "1118:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 651,
                  "mutability": "mutable",
                  "name": "targetAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 656,
                  "src": "1143:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 650,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1143:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1117:47:1"
            },
            "returnParameters": {
              "id": 655,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 654,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 656,
                  "src": "1188:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 653,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1188:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1187:9:1"
            },
            "scope": 711,
            "src": "1089:108:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "6fc4b4e5",
            "id": 668,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "swapWithExactSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 664,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 659,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "scope": 668,
                  "src": "1338:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 657,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1338:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 658,
                    "nodeType": "ArrayTypeName",
                    "src": "1338:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 661,
                  "mutability": "mutable",
                  "name": "supplyAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 668,
                  "src": "1363:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 660,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1363:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 663,
                  "mutability": "mutable",
                  "name": "minTargetAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 668,
                  "src": "1385:23:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 662,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1385:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1337:72:1"
            },
            "returnParameters": {
              "id": 667,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 666,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 668,
                  "src": "1428:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 665,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1428:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1427:6:1"
            },
            "scope": 711,
            "src": "1309:125:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "3d8d9620",
            "id": 680,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "swapWithExactTarget",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 676,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 671,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "1575:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 669,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1575:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 670,
                    "nodeType": "ArrayTypeName",
                    "src": "1575:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 673,
                  "mutability": "mutable",
                  "name": "targetAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "1600:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 672,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1600:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 675,
                  "mutability": "mutable",
                  "name": "maxSupplyAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "1622:23:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 674,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1622:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1574:72:1"
            },
            "returnParameters": {
              "id": 679,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 678,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "1665:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 677,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1665:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1664:6:1"
            },
            "scope": 711,
            "src": "1546:125:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "91c98a2a",
            "id": 695,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "addLiquidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 682,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "1816:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 681,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1816:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 684,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "1832:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 683,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1832:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 686,
                  "mutability": "mutable",
                  "name": "maxAmountA",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "1848:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 685,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1848:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 688,
                  "mutability": "mutable",
                  "name": "maxAmountB",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "1868:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 687,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1868:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 690,
                  "mutability": "mutable",
                  "name": "minShareIncrement",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "1888:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 689,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1888:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1815:99:1"
            },
            "returnParameters": {
              "id": 694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 693,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "1933:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 692,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1933:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1932:6:1"
            },
            "scope": 711,
            "src": "1794:145:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "e2dc85dc",
            "id": 710,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "removeLiquidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 706,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 697,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "2092:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 696,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2092:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 699,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "2108:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 698,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2108:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 701,
                  "mutability": "mutable",
                  "name": "removeShare",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "2124:19:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 700,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2124:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 703,
                  "mutability": "mutable",
                  "name": "minWithdrawnA",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "2145:21:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 702,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2145:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 705,
                  "mutability": "mutable",
                  "name": "minWithdrawnB",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "2168:21:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 704,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2168:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2091:99:1"
            },
            "returnParameters": {
              "id": 709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 708,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "2209:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 707,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2209:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2208:6:1"
            },
            "scope": 711,
            "src": "2067:148:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 712,
        "src": "71:2146:1"
      }
    ],
    "src": "46:2172:1"
  },
  "legacyAST": {
    "absolutePath": "/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/dex/IDEX.sol",
    "exportedSymbols": {
      "IDEX": [
        711
      ]
    },
    "id": 712,
    "license": "GPL-3.0-or-later",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 583,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "46:23:1"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 711,
        "linearizedBaseContracts": [
          711
        ],
        "name": "IDEX",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "id": 594,
            "name": "Swaped",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 593,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 585,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 594,
                  "src": "105:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 584,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "105:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 588,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "scope": 594,
                  "src": "129:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 586,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "129:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 587,
                    "nodeType": "ArrayTypeName",
                    "src": "129:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 590,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "supply_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 594,
                  "src": "145:21:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 589,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "145:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 592,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "target_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 594,
                  "src": "168:21:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 591,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "168:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "104:86:1"
            },
            "src": "92:99:1"
          },
          {
            "anonymous": false,
            "id": 606,
            "name": "AddedLiquidity",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 605,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 596,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 606,
                  "src": "217:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 595,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "217:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 598,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "scope": 606,
                  "src": "241:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 597,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "241:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 600,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "scope": 606,
                  "src": "265:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 599,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "265:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 602,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "maxAmountA",
                  "nodeType": "VariableDeclaration",
                  "scope": 606,
                  "src": "289:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 601,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "289:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 604,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "maxAmountB",
                  "nodeType": "VariableDeclaration",
                  "scope": 606,
                  "src": "309:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 603,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "309:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "216:112:1"
            },
            "src": "196:133:1"
          },
          {
            "anonymous": false,
            "id": 616,
            "name": "RemovedLiquidity",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 615,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 608,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 616,
                  "src": "357:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 607,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "357:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 610,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "scope": 616,
                  "src": "381:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 609,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "381:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 612,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "scope": 616,
                  "src": "405:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 611,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "405:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 614,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "remove_share",
                  "nodeType": "VariableDeclaration",
                  "scope": 616,
                  "src": "429:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 613,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "429:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "356:94:1"
            },
            "src": "334:117:1"
          },
          {
            "functionSelector": "f4f31ede",
            "id": 627,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityPool",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 621,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 618,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "scope": 627,
                  "src": "591:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 617,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "591:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 620,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "scope": 627,
                  "src": "607:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 619,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "607:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "590:32:1"
            },
            "returnParameters": {
              "id": 626,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 623,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 627,
                  "src": "646:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 622,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "646:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 625,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 627,
                  "src": "655:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 624,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "655:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "645:18:1"
            },
            "scope": 711,
            "src": "565:99:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "ffd73c4a",
            "id": 636,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityTokenAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 632,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 629,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "scope": 636,
                  "src": "781:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 628,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "781:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 631,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "scope": 636,
                  "src": "797:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 630,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "797:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "780:32:1"
            },
            "returnParameters": {
              "id": 635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 634,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 636,
                  "src": "836:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 633,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "836:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "835:9:1"
            },
            "scope": 711,
            "src": "747:98:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "4d60beb1",
            "id": 646,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getSwapTargetAmount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 642,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 639,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "scope": 646,
                  "src": "942:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 637,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "942:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 638,
                    "nodeType": "ArrayTypeName",
                    "src": "942:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 641,
                  "mutability": "mutable",
                  "name": "supplyAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 646,
                  "src": "967:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 640,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "967:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "941:47:1"
            },
            "returnParameters": {
              "id": 645,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 644,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 646,
                  "src": "1012:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 643,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1012:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1011:9:1"
            },
            "scope": 711,
            "src": "913:108:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "dbcd19a2",
            "id": 656,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getSwapSupplyAmount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 652,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 649,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "scope": 656,
                  "src": "1118:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 647,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1118:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 648,
                    "nodeType": "ArrayTypeName",
                    "src": "1118:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 651,
                  "mutability": "mutable",
                  "name": "targetAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 656,
                  "src": "1143:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 650,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1143:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1117:47:1"
            },
            "returnParameters": {
              "id": 655,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 654,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 656,
                  "src": "1188:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 653,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1188:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1187:9:1"
            },
            "scope": 711,
            "src": "1089:108:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "6fc4b4e5",
            "id": 668,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "swapWithExactSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 664,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 659,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "scope": 668,
                  "src": "1338:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 657,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1338:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 658,
                    "nodeType": "ArrayTypeName",
                    "src": "1338:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 661,
                  "mutability": "mutable",
                  "name": "supplyAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 668,
                  "src": "1363:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 660,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1363:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 663,
                  "mutability": "mutable",
                  "name": "minTargetAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 668,
                  "src": "1385:23:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 662,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1385:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1337:72:1"
            },
            "returnParameters": {
              "id": 667,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 666,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 668,
                  "src": "1428:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 665,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1428:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1427:6:1"
            },
            "scope": 711,
            "src": "1309:125:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "3d8d9620",
            "id": 680,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "swapWithExactTarget",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 676,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 671,
                  "mutability": "mutable",
                  "name": "path",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "1575:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 669,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1575:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 670,
                    "nodeType": "ArrayTypeName",
                    "src": "1575:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 673,
                  "mutability": "mutable",
                  "name": "targetAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "1600:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 672,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1600:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 675,
                  "mutability": "mutable",
                  "name": "maxSupplyAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "1622:23:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 674,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1622:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1574:72:1"
            },
            "returnParameters": {
              "id": 679,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 678,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "1665:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 677,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1665:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1664:6:1"
            },
            "scope": 711,
            "src": "1546:125:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "91c98a2a",
            "id": 695,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "addLiquidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 682,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "1816:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 681,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1816:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 684,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "1832:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 683,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1832:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 686,
                  "mutability": "mutable",
                  "name": "maxAmountA",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "1848:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 685,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1848:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 688,
                  "mutability": "mutable",
                  "name": "maxAmountB",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "1868:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 687,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1868:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 690,
                  "mutability": "mutable",
                  "name": "minShareIncrement",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "1888:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 689,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1888:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1815:99:1"
            },
            "returnParameters": {
              "id": 694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 693,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "1933:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 692,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1933:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1932:6:1"
            },
            "scope": 711,
            "src": "1794:145:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "e2dc85dc",
            "id": 710,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "removeLiquidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 706,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 697,
                  "mutability": "mutable",
                  "name": "tokenA",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "2092:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 696,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2092:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 699,
                  "mutability": "mutable",
                  "name": "tokenB",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "2108:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 698,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2108:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 701,
                  "mutability": "mutable",
                  "name": "removeShare",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "2124:19:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 700,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2124:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 703,
                  "mutability": "mutable",
                  "name": "minWithdrawnA",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "2145:21:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 702,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2145:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 705,
                  "mutability": "mutable",
                  "name": "minWithdrawnB",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "2168:21:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 704,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2168:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2091:99:1"
            },
            "returnParameters": {
              "id": 709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 708,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "2209:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 707,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2209:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2208:6:1"
            },
            "scope": 711,
            "src": "2067:148:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 712,
        "src": "71:2146:1"
      }
    ],
    "src": "46:2172:1"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.0+commit.c7dfd78e.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.1",
  "updatedAt": "2021-11-23T02:17:24.007Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}