{
  "contractName": "MockAddressList",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_addr",
          "type": "address"
        }
      ],
      "name": "insert",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_addr",
          "type": "address"
        }
      ],
      "name": "remove",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_idx",
          "type": "uint256"
        }
      ],
      "name": "get",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "from",
          "type": "uint256"
        },
        {
          "name": "_count",
          "type": "uint256"
        }
      ],
      "name": "getList",
      "outputs": [
        {
          "name": "",
          "type": "address[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "count",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"count\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"remove\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_idx\",\"type\":\"uint256\"}],\"name\":\"get\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"from\",\"type\":\"uint256\"},{\"name\":\"_count\",\"type\":\"uint256\"}],\"name\":\"getList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"insert\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/mock/MockAddressList.sol\":\"MockAddressList\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/list/AddressList.sol\":{\"keccak256\":\"0xbc8bf46cc8846bafbd17f6926882a3bc061c4c493f07eea3b83fca83bfb643eb\",\"urls\":[\"bzzr://9de428f8afb50d490792706bbeff0ff3792cd0b116671bd828063629a32fa94f\"]},\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x239546071316c89d3bbc9e61b2ccae270a4493bbd2f7c240052f533807d50ab7\",\"urls\":[\"bzzr://267bf48e0a30f7b671aa3c98a6b27ffe7bc64efd6533f49e54188b520baa94c5\"]},\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/mock/MockAddressList.sol\":{\"keccak256\":\"0xdf3f360c2aefd90dabad9d6daf404bb815f75ff40bbef59d80e28af43742967d\",\"urls\":[\"bzzr://1482b0244d8be410a2556439192054e92cc9a20a74b5a9221a0f96c646435648\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5061065c806100206000396000f30060806040526004361061006c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306661abd811461007157806329092d0e146100985780639507d39a146100cd578063a9816b0814610101578063bc902ad21461016c575b600080fd5b34801561007d57600080fd5b5061008661018d565b60408051918252519081900360200190f35b3480156100a457600080fd5b506100b9600160a060020a036004351661019f565b604080519115158252519081900360200190f35b3480156100d957600080fd5b506100e56004356101b7565b60408051600160a060020a039092168252519081900360200190f35b34801561010d57600080fd5b5061011c6004356024356101c9565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610158578181015183820152602001610140565b505050509050019250505060405180910390f35b34801561017857600080fd5b506100b9600160a060020a03600435166101e4565b600061019960006101f6565b90505b90565b60006101b1818363ffffffff6101fd16565b92915050565b60006101b1818363ffffffff6102f216565b60606101dd6000848463ffffffff6103b916565b9392505050565b60006101b1818363ffffffff6104e916565b6001015490565b600080600061020c858561056b565b151561021b57600092506102ea565b600160a060020a038416600090815260208690526040902054600180870180549294509161024e9163ffffffff6105c816565b8154811061025857fe5b600091825260209091200154600186018054600160a060020a03909216925082918490811061028357fe5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03948516179055918316815290869052604090208290556001858101546102d7916105c8565b6102e460018701826105e9565b50600192505b505092915050565b6001820154600090821061038d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f696e646578206d75737420736d616c6c207468616e2063757272656e7420636f60448201527f756e740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6001830180548390811061039d57fe5b600091825260209091200154600160a060020a03169392505050565b60606000818180851161042d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f72657475726e206e756d626572206d75737420626967676572207468616e2030604482015290519081900360640190fd5b84604051908082528060200260200182016040528015610457578160200160208202803883390190505b5091508590505b60018701548110156104df5784831415610477576104df565b6001870180548290811061048757fe5b6000918252602090912001548251600160a060020a03909116908390859081106104ad57fe5b600160a060020a039092166020928302909101909101526104d583600163ffffffff6105da16565b925060010161045e565b5095945050505050565b60006104f5838361056b565b15610502575060006101b1565b600183810180548083018083556000928352602090922001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038616179055610549916105c8565b600160a060020a03831660009081526020859052604090205550600192915050565b60018201546000901515610581575060006101b1565b600160a060020a03821660008181526020859052604090205460018501805490919081106105ab57fe5b600091825260209091200154600160a060020a0316149392505050565b6000828211156105d457fe5b50900390565b6000828201838110156101dd57fe5b81548183558181111561060d5760008381526020902061060d918101908301610612565b505050565b61019c91905b8082111561062c5760008155600101610618565b50905600a165627a7a723058207e36a51de704dd857acc7cd7f697fa9d705ec36c66df1c7a026218bb74017ab90029",
  "deployedBytecode": "0x60806040526004361061006c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306661abd811461007157806329092d0e146100985780639507d39a146100cd578063a9816b0814610101578063bc902ad21461016c575b600080fd5b34801561007d57600080fd5b5061008661018d565b60408051918252519081900360200190f35b3480156100a457600080fd5b506100b9600160a060020a036004351661019f565b604080519115158252519081900360200190f35b3480156100d957600080fd5b506100e56004356101b7565b60408051600160a060020a039092168252519081900360200190f35b34801561010d57600080fd5b5061011c6004356024356101c9565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610158578181015183820152602001610140565b505050509050019250505060405180910390f35b34801561017857600080fd5b506100b9600160a060020a03600435166101e4565b600061019960006101f6565b90505b90565b60006101b1818363ffffffff6101fd16565b92915050565b60006101b1818363ffffffff6102f216565b60606101dd6000848463ffffffff6103b916565b9392505050565b60006101b1818363ffffffff6104e916565b6001015490565b600080600061020c858561056b565b151561021b57600092506102ea565b600160a060020a038416600090815260208690526040902054600180870180549294509161024e9163ffffffff6105c816565b8154811061025857fe5b600091825260209091200154600186018054600160a060020a03909216925082918490811061028357fe5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03948516179055918316815290869052604090208290556001858101546102d7916105c8565b6102e460018701826105e9565b50600192505b505092915050565b6001820154600090821061038d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f696e646578206d75737420736d616c6c207468616e2063757272656e7420636f60448201527f756e740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6001830180548390811061039d57fe5b600091825260209091200154600160a060020a03169392505050565b60606000818180851161042d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f72657475726e206e756d626572206d75737420626967676572207468616e2030604482015290519081900360640190fd5b84604051908082528060200260200182016040528015610457578160200160208202803883390190505b5091508590505b60018701548110156104df5784831415610477576104df565b6001870180548290811061048757fe5b6000918252602090912001548251600160a060020a03909116908390859081106104ad57fe5b600160a060020a039092166020928302909101909101526104d583600163ffffffff6105da16565b925060010161045e565b5095945050505050565b60006104f5838361056b565b15610502575060006101b1565b600183810180548083018083556000928352602090922001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038616179055610549916105c8565b600160a060020a03831660009081526020859052604090205550600192915050565b60018201546000901515610581575060006101b1565b600160a060020a03821660008181526020859052604090205460018501805490919081106105ab57fe5b600091825260209091200154600160a060020a0316149392505050565b6000828211156105d457fe5b50900390565b6000828201838110156101dd57fe5b81548183558181111561060d5760008381526020902061060d918101908301610612565b505050565b61019c91905b8082111561062c5760008155600101610618565b50905600a165627a7a723058207e36a51de704dd857acc7cd7f697fa9d705ec36c66df1c7a026218bb74017ab90029",
  "sourceMap": "104:646:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;104:646:21;;;;;;;",
  "deployedSourceMap": "104:646:21:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;666:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;666:82:21;;;;;;;;;;;;;;;;;;;;317:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;317:94:21;-1:-1:-1;;;;;317:94:21;;;;;;;;;;;;;;;;;;;;;;;415;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;415:94:21;;;;;;;;;-1:-1:-1;;;;;415:94:21;;;;;;;;;;;;;;513:149;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;513:149:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;513:149:21;;;;;;;;;;;;;;;;;219:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;219:94:21;-1:-1:-1;;;;;219:94:21;;;;;666:82;704:7;726:17;:9;:15;:17::i;:::-;719:24;;666:82;;:::o;317:94::-;364:4;383:23;364:4;400:5;383:23;:16;:23;:::i;:::-;376:30;317:94;-1:-1:-1;;317:94:21:o;415:::-;463:7;485:19;463:7;499:4;485:19;:13;:19;:::i;513:149::-;593:9;626:31;:9;644:4;650:6;626:31;:17;:31;:::i;:::-;619:38;513:149;-1:-1:-1;;;513:149:21:o;219:94::-;266:4;285:23;266:4;302:5;285:23;:16;:23;:::i;1279:106:11:-;1364:9;;:16;;1279:106::o;878:397::-;960:4;1032:15;1075:17;979:18;985:4;991:5;979;:18::i;:::-;978:19;974:52;;;1014:5;1007:12;;;;974:52;-1:-1:-1;;;;;1050:19:11;;:12;:19;;;;;;;;;;;1095:9;;;;1105:16;;1050:19;;-1:-1:-1;1095:9:11;1105:23;;;:20;:23;:::i;:::-;1095:34;;;;;;;;;;;;;;;;;;;1135:9;;:18;;-1:-1:-1;;;;;1095:34:11;;;;-1:-1:-1;1095:34:11;;1145:7;;1135:18;;;;;;;;;;;;;;;;;;:30;;-1:-1:-1;;1135:30:11;-1:-1:-1;;;;;1135:30:11;;;;;;1171:23;;;;;;;;;;;;:33;;;-1:-1:-1;1229:9:11;;;:16;:23;;:20;:23::i;:::-;1210:42;:9;;;:42;;:::i;:::-;;1266:4;1259:11;;878:397;;;;;;;:::o;1389:211::-;1510:9;;;:16;1477:7;;1502:24;;1494:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1579:9;;;:16;;1589:5;;1579:16;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1579:16:11;;1389:211;-1:-1:-1;;;1389:211:11:o;1705:457::-;1816:9;1840:12;1816:9;1840:12;1870:10;;;1862:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1960:6;1946:21;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;1946:21:11;;1923:44;;1991:4;1979:16;;1974:167;2001:9;;;:16;1997:20;;1974:167;;;2044:6;2036:4;:14;2032:44;;;2062:5;;2032:44;2096:9;;;:12;;2106:1;;2096:12;;;;;;;;;;;;;;;;2084:9;;-1:-1:-1;;;;;2096:12:11;;;;2084:3;;2088:4;;2084:9;;;;;;-1:-1:-1;;;;;2084:24:11;;;:9;;;;;;;;;;:24;2123:11;:4;2132:1;2123:11;:8;:11;:::i;:::-;2116:18;-1:-1:-1;2019:3:11;;1974:167;;;-1:-1:-1;2154:3:11;1705:457;-1:-1:-1;;;;;1705:457:11:o;574:226::-;656:4;674:18;680:4;686:5;674;:18::i;:::-;670:51;;;-1:-1:-1;709:5:11;702:12;;670:51;775:1;749:9;;;27:10:-1;;23:18;;;45:23;;;-1:-1;749:21:11;;;;;;;;;;-1:-1:-1;;749:21:11;-1:-1:-1;;;;;749:21:11;;;;;:28;;:25;:28::i;:::-;-1:-1:-1;;;;;727:19:11;;:12;:19;;;;;;;;;;:50;-1:-1:-1;791:4:11;574:226;;;;:::o;303:202::-;411:9;;;:16;393:4;;411:21;407:39;;;-1:-1:-1;441:5:11;434:12;;407:39;-1:-1:-1;;;;;460:39:11;;470:12;:19;;;;;;;;;;;460:9;;;:30;;:9;;470:19;460:30;;;;;;;;;;;;;;;;-1:-1:-1;;;;;460:30:11;:39;;303:202;-1:-1:-1;;;303:202:11:o;1093:116:20:-;1153:7;1175:8;;;;1168:16;;;;-1:-1:-1;1197:7:20;;;1093:116::o;1319:134::-;1379:7;1406;;;1426;;;;1419:15;;;104:646:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity >=0.4.24;\n\nimport \"../list/AddressList.sol\";\n\n// 定义一个调用AddressList的合约\ncontract MockAddressList {\n  using AddressList for AddressList.addressMap;\n\n  AddressList.addressMap planUsers;\n\n  function insert(address _addr) public returns (bool) {\n    return planUsers.insert(_addr);\n  }\n\n  function remove(address _addr) public returns (bool) {\n    return planUsers.remove(_addr);\n  }\n\n  function get(uint256 _idx) public view returns (address) {\n    return planUsers.get(_idx);\n  }\n\n  function getList(uint256 from, uint256 _count)\n    public\n    view\n    returns (address[] memory)\n  {\n    return planUsers.getList(from, _count);\n  }\n\n  function count() public view returns (uint256) {\n    return planUsers.count();\n  }\n}\n",
  "sourcePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/mock/MockAddressList.sol",
  "ast": {
    "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/mock/MockAddressList.sol",
    "exportedSymbols": {
      "MockAddressList": [
        5732
      ]
    },
    "id": 5733,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5659,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:21"
      },
      {
        "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/list/AddressList.sol",
        "file": "../list/AddressList.sol",
        "id": 5660,
        "nodeType": "ImportDirective",
        "scope": 5733,
        "sourceUnit": 1564,
        "src": "27:33:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 5732,
        "linearizedBaseContracts": [
          5732
        ],
        "name": "MockAddressList",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 5663,
            "libraryName": {
              "contractScope": null,
              "id": 5661,
              "name": "AddressList",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1563,
              "src": "139:11:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AddressList_$1563",
                "typeString": "library AddressList"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "133:45:21",
            "typeName": {
              "contractScope": null,
              "id": 5662,
              "name": "AddressList.addressMap",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1321,
              "src": "155:22:21",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_addressMap_$1321_storage_ptr",
                "typeString": "struct AddressList.addressMap"
              }
            }
          },
          {
            "constant": false,
            "id": 5665,
            "name": "planUsers",
            "nodeType": "VariableDeclaration",
            "scope": 5732,
            "src": "182:32:21",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_addressMap_$1321_storage",
              "typeString": "struct AddressList.addressMap"
            },
            "typeName": {
              "contractScope": null,
              "id": 5664,
              "name": "AddressList.addressMap",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1321,
              "src": "182:22:21",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_addressMap_$1321_storage_ptr",
                "typeString": "struct AddressList.addressMap"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5677,
              "nodeType": "Block",
              "src": "272:41:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5674,
                        "name": "_addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5667,
                        "src": "302:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5672,
                        "name": "planUsers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5665,
                        "src": "285:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_addressMap_$1321_storage",
                          "typeString": "struct AddressList.addressMap storage ref"
                        }
                      },
                      "id": 5673,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "insert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1385,
                      "src": "285:16:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_addressMap_$1321_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_addressMap_$1321_storage_ptr_$",
                        "typeString": "function (struct AddressList.addressMap storage pointer,address) returns (bool)"
                      }
                    },
                    "id": 5675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "285:23:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5671,
                  "id": 5676,
                  "nodeType": "Return",
                  "src": "278:30:21"
                }
              ]
            },
            "documentation": null,
            "id": 5678,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5667,
                  "name": "_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5678,
                  "src": "235:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5666,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "235:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "234:15:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 5671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5670,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5678,
                  "src": "266:4:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5669,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "266:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "265:6:21"
            },
            "scope": 5732,
            "src": "219:94:21",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5690,
              "nodeType": "Block",
              "src": "370:41:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5687,
                        "name": "_addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5680,
                        "src": "400:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5685,
                        "name": "planUsers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5665,
                        "src": "383:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_addressMap_$1321_storage",
                          "typeString": "struct AddressList.addressMap storage ref"
                        }
                      },
                      "id": 5686,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "remove",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1454,
                      "src": "383:16:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_addressMap_$1321_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_addressMap_$1321_storage_ptr_$",
                        "typeString": "function (struct AddressList.addressMap storage pointer,address) returns (bool)"
                      }
                    },
                    "id": 5688,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "383:23:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5684,
                  "id": 5689,
                  "nodeType": "Return",
                  "src": "376:30:21"
                }
              ]
            },
            "documentation": null,
            "id": 5691,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5680,
                  "name": "_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5691,
                  "src": "333:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5679,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "333:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "332:15:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 5684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5683,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5691,
                  "src": "364:4:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5682,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "364:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "363:6:21"
            },
            "scope": 5732,
            "src": "317:94:21",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5703,
              "nodeType": "Block",
              "src": "472:37:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5700,
                        "name": "_idx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5693,
                        "src": "499:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5698,
                        "name": "planUsers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5665,
                        "src": "485:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_addressMap_$1321_storage",
                          "typeString": "struct AddressList.addressMap storage ref"
                        }
                      },
                      "id": 5699,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "get",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1490,
                      "src": "485:13:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_addressMap_$1321_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_addressMap_$1321_storage_ptr_$",
                        "typeString": "function (struct AddressList.addressMap storage pointer,uint256) view returns (address)"
                      }
                    },
                    "id": 5701,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "485:19:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 5697,
                  "id": 5702,
                  "nodeType": "Return",
                  "src": "478:26:21"
                }
              ]
            },
            "documentation": null,
            "id": 5704,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5693,
                  "name": "_idx",
                  "nodeType": "VariableDeclaration",
                  "scope": 5704,
                  "src": "428:12:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5692,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "428:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "427:14:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 5697,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5696,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5704,
                  "src": "463:7:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5695,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "463:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "462:9:21"
            },
            "scope": 5732,
            "src": "415:94:21",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5720,
              "nodeType": "Block",
              "src": "613:49:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5716,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5706,
                        "src": "644:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5717,
                        "name": "_count",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5708,
                        "src": "650:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5714,
                        "name": "planUsers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5665,
                        "src": "626:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_addressMap_$1321_storage",
                          "typeString": "struct AddressList.addressMap storage ref"
                        }
                      },
                      "id": 5715,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getList",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1562,
                      "src": "626:17:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_addressMap_$1321_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$bound_to$_t_struct$_addressMap_$1321_storage_ptr_$",
                        "typeString": "function (struct AddressList.addressMap storage pointer,uint256,uint256) view returns (address[] memory)"
                      }
                    },
                    "id": 5718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "626:31:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 5713,
                  "id": 5719,
                  "nodeType": "Return",
                  "src": "619:38:21"
                }
              ]
            },
            "documentation": null,
            "id": 5721,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5706,
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 5721,
                  "src": "530:12:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5705,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "530:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5708,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 5721,
                  "src": "544:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5707,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "544:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "529:30:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 5713,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5712,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5721,
                  "src": "593:9:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5710,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "593:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 5711,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "593:9:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "592:18:21"
            },
            "scope": 5732,
            "src": "513:149:21",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5730,
              "nodeType": "Block",
              "src": "713:35:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5726,
                        "name": "planUsers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5665,
                        "src": "726:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_addressMap_$1321_storage",
                          "typeString": "struct AddressList.addressMap storage ref"
                        }
                      },
                      "id": 5727,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1466,
                      "src": "726:15:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_addressMap_$1321_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_addressMap_$1321_storage_ptr_$",
                        "typeString": "function (struct AddressList.addressMap storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 5728,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "726:17:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5725,
                  "id": 5729,
                  "nodeType": "Return",
                  "src": "719:24:21"
                }
              ]
            },
            "documentation": null,
            "id": 5731,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5722,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "680:2:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 5725,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5724,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5731,
                  "src": "704:7:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5723,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "704:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "703:9:21"
            },
            "scope": 5732,
            "src": "666:82:21",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 5733,
        "src": "104:646:21"
      }
    ],
    "src": "0:751:21"
  },
  "legacyAST": {
    "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/mock/MockAddressList.sol",
    "exportedSymbols": {
      "MockAddressList": [
        5732
      ]
    },
    "id": 5733,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5659,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:21"
      },
      {
        "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/list/AddressList.sol",
        "file": "../list/AddressList.sol",
        "id": 5660,
        "nodeType": "ImportDirective",
        "scope": 5733,
        "sourceUnit": 1564,
        "src": "27:33:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 5732,
        "linearizedBaseContracts": [
          5732
        ],
        "name": "MockAddressList",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 5663,
            "libraryName": {
              "contractScope": null,
              "id": 5661,
              "name": "AddressList",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1563,
              "src": "139:11:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AddressList_$1563",
                "typeString": "library AddressList"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "133:45:21",
            "typeName": {
              "contractScope": null,
              "id": 5662,
              "name": "AddressList.addressMap",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1321,
              "src": "155:22:21",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_addressMap_$1321_storage_ptr",
                "typeString": "struct AddressList.addressMap"
              }
            }
          },
          {
            "constant": false,
            "id": 5665,
            "name": "planUsers",
            "nodeType": "VariableDeclaration",
            "scope": 5732,
            "src": "182:32:21",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_addressMap_$1321_storage",
              "typeString": "struct AddressList.addressMap"
            },
            "typeName": {
              "contractScope": null,
              "id": 5664,
              "name": "AddressList.addressMap",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1321,
              "src": "182:22:21",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_addressMap_$1321_storage_ptr",
                "typeString": "struct AddressList.addressMap"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5677,
              "nodeType": "Block",
              "src": "272:41:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5674,
                        "name": "_addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5667,
                        "src": "302:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5672,
                        "name": "planUsers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5665,
                        "src": "285:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_addressMap_$1321_storage",
                          "typeString": "struct AddressList.addressMap storage ref"
                        }
                      },
                      "id": 5673,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "insert",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1385,
                      "src": "285:16:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_addressMap_$1321_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_addressMap_$1321_storage_ptr_$",
                        "typeString": "function (struct AddressList.addressMap storage pointer,address) returns (bool)"
                      }
                    },
                    "id": 5675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "285:23:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5671,
                  "id": 5676,
                  "nodeType": "Return",
                  "src": "278:30:21"
                }
              ]
            },
            "documentation": null,
            "id": 5678,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5667,
                  "name": "_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5678,
                  "src": "235:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5666,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "235:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "234:15:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 5671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5670,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5678,
                  "src": "266:4:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5669,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "266:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "265:6:21"
            },
            "scope": 5732,
            "src": "219:94:21",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5690,
              "nodeType": "Block",
              "src": "370:41:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5687,
                        "name": "_addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5680,
                        "src": "400:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5685,
                        "name": "planUsers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5665,
                        "src": "383:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_addressMap_$1321_storage",
                          "typeString": "struct AddressList.addressMap storage ref"
                        }
                      },
                      "id": 5686,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "remove",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1454,
                      "src": "383:16:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_addressMap_$1321_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_addressMap_$1321_storage_ptr_$",
                        "typeString": "function (struct AddressList.addressMap storage pointer,address) returns (bool)"
                      }
                    },
                    "id": 5688,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "383:23:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5684,
                  "id": 5689,
                  "nodeType": "Return",
                  "src": "376:30:21"
                }
              ]
            },
            "documentation": null,
            "id": 5691,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5680,
                  "name": "_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5691,
                  "src": "333:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5679,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "333:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "332:15:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 5684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5683,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5691,
                  "src": "364:4:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5682,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "364:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "363:6:21"
            },
            "scope": 5732,
            "src": "317:94:21",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5703,
              "nodeType": "Block",
              "src": "472:37:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5700,
                        "name": "_idx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5693,
                        "src": "499:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5698,
                        "name": "planUsers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5665,
                        "src": "485:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_addressMap_$1321_storage",
                          "typeString": "struct AddressList.addressMap storage ref"
                        }
                      },
                      "id": 5699,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "get",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1490,
                      "src": "485:13:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_addressMap_$1321_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_addressMap_$1321_storage_ptr_$",
                        "typeString": "function (struct AddressList.addressMap storage pointer,uint256) view returns (address)"
                      }
                    },
                    "id": 5701,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "485:19:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 5697,
                  "id": 5702,
                  "nodeType": "Return",
                  "src": "478:26:21"
                }
              ]
            },
            "documentation": null,
            "id": 5704,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5693,
                  "name": "_idx",
                  "nodeType": "VariableDeclaration",
                  "scope": 5704,
                  "src": "428:12:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5692,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "428:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "427:14:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 5697,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5696,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5704,
                  "src": "463:7:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5695,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "463:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "462:9:21"
            },
            "scope": 5732,
            "src": "415:94:21",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5720,
              "nodeType": "Block",
              "src": "613:49:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5716,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5706,
                        "src": "644:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5717,
                        "name": "_count",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5708,
                        "src": "650:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5714,
                        "name": "planUsers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5665,
                        "src": "626:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_addressMap_$1321_storage",
                          "typeString": "struct AddressList.addressMap storage ref"
                        }
                      },
                      "id": 5715,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getList",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1562,
                      "src": "626:17:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_addressMap_$1321_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$bound_to$_t_struct$_addressMap_$1321_storage_ptr_$",
                        "typeString": "function (struct AddressList.addressMap storage pointer,uint256,uint256) view returns (address[] memory)"
                      }
                    },
                    "id": 5718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "626:31:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 5713,
                  "id": 5719,
                  "nodeType": "Return",
                  "src": "619:38:21"
                }
              ]
            },
            "documentation": null,
            "id": 5721,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5706,
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 5721,
                  "src": "530:12:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5705,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "530:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5708,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 5721,
                  "src": "544:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5707,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "544:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "529:30:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 5713,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5712,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5721,
                  "src": "593:9:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 5710,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "593:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 5711,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "593:9:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "592:18:21"
            },
            "scope": 5732,
            "src": "513:149:21",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5730,
              "nodeType": "Block",
              "src": "713:35:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5726,
                        "name": "planUsers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5665,
                        "src": "726:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_addressMap_$1321_storage",
                          "typeString": "struct AddressList.addressMap storage ref"
                        }
                      },
                      "id": 5727,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1466,
                      "src": "726:15:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_addressMap_$1321_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_addressMap_$1321_storage_ptr_$",
                        "typeString": "function (struct AddressList.addressMap storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 5728,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "726:17:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5725,
                  "id": 5729,
                  "nodeType": "Return",
                  "src": "719:24:21"
                }
              ]
            },
            "documentation": null,
            "id": 5731,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5722,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "680:2:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 5725,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5724,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5731,
                  "src": "704:7:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5723,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "704:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "703:9:21"
            },
            "scope": 5732,
            "src": "666:82:21",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 5733,
        "src": "104:646:21"
      }
    ],
    "src": "0:751:21"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.16",
  "updatedAt": "2021-03-06T09:30:01.035Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}