{
  "contractName": "AddressIteratorInteractive",
  "abi": [],
  "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a723058202f1d27d765697f8af93523b6bede8410a86c5be653c3f21bc5e5b97038f53ace0029",
  "deployedBytecode": "0x6080604052600080fd00a165627a7a723058202f1d27d765697f8af93523b6bede8410a86c5be653c3f21bc5e5b97038f53ace0029",
  "sourceMap": "100:8673:74:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;100:8673:74;;;;;;;",
  "deployedSourceMap": "100:8673:74:-;;;;;",
  "source": "pragma solidity ^0.4.19;\n/**\n  @title Address Iterator Interactive\n  @author DigixGlobal Pte Ltd\n*/\ncontract AddressIteratorInteractive {\n\n  /**\n    @notice Lists a Address collection from start or end\n    @param _count Total number of Address items to return\n    @param _function_first Function that returns the First Address item in the list\n    @param _function_last Function that returns the last Address item in the list\n    @param _function_next Function that returns the Next Address item in the list\n    @param _function_previous Function that returns previous Address item in the list\n    @param _from_start whether to read from start (or end) of the list\n    @return {\"_address_items\" : \"Collection of reversed Address list\"}\n  */\n  function list_addresses(uint256 _count,\n                                 function () external constant returns (address) _function_first,\n                                 function () external constant returns (address) _function_last,\n                                 function (address) external constant returns (address) _function_next,\n                                 function (address) external constant returns (address) _function_previous,\n                                 bool _from_start)\n           internal\n           constant\n           returns (address[] _address_items)\n  {\n    if (_from_start) {\n      _address_items = private_list_addresses_from_address(_function_first(), _count, true, _function_last, _function_next);\n    } else {\n      _address_items = private_list_addresses_from_address(_function_last(), _count, true, _function_first, _function_previous);\n    }\n  }\n\n\n\n  /**\n    @notice Lists a Address collection from some `_current_item`, going forwards or backwards depending on `_from_start`\n    @param _current_item The current Item\n    @param _count Total number of Address items to return\n    @param _function_first Function that returns the First Address item in the list\n    @param _function_last Function that returns the last Address item in the list\n    @param _function_next Function that returns the Next Address item in the list\n    @param _function_previous Function that returns previous Address item in the list\n    @param _from_start whether to read in the forwards ( or backwards) direction\n    @return {\"_address_items\" :\"Collection/list of Address\"}\n  */\n  function list_addresses_from(address _current_item, uint256 _count,\n                                function () external constant returns (address) _function_first,\n                                function () external constant returns (address) _function_last,\n                                function (address) external constant returns (address) _function_next,\n                                function (address) external constant returns (address) _function_previous,\n                                bool _from_start)\n           internal\n           constant\n           returns (address[] _address_items)\n  {\n    if (_from_start) {\n      _address_items = private_list_addresses_from_address(_current_item, _count, false, _function_last, _function_next);\n    } else {\n      _address_items = private_list_addresses_from_address(_current_item, _count, false, _function_first, _function_previous);\n    }\n  }\n\n\n  /**\n    @notice a private function to lists a Address collection starting from some `_current_item` (which could be included or excluded), in the forwards or backwards direction\n    @param _current_item The current Item\n    @param _count Total number of Address items to return\n    @param _including_current Whether the `_current_item` should be included in the result\n    @param _function_last Function that returns the address where we stop reading more address\n    @param _function_next Function that returns the next address to read after some address (could be backwards or forwards in the physical collection)\n    @return {\"_address_items\" :\"Collection/list of Address\"}\n  */\n  function private_list_addresses_from_address(address _current_item, uint256 _count, bool _including_current,\n                                 function () external constant returns (address) _function_last,\n                                 function (address) external constant returns (address) _function_next)\n           private\n           constant\n           returns (address[] _address_items)\n  {\n    uint256 _i;\n    uint256 _real_count = 0;\n    address _last_item;\n\n    _last_item = _function_last();\n    if (_count == 0 || _last_item == address(0x0)) {\n      _address_items = new address[](0);\n    } else {\n      address[] memory _items_temp = new address[](_count);\n      address _this_item;\n      if (_including_current == true) {\n        _items_temp[0] = _current_item;\n        _real_count = 1;\n      }\n      _this_item = _current_item;\n      for (_i = _real_count; (_i < _count) && (_this_item != _last_item);_i++) {\n        _this_item = _function_next(_this_item);\n        if (_this_item != address(0x0)) {\n          _real_count++;\n          _items_temp[_i] = _this_item;\n        }\n      }\n\n      _address_items = new address[](_real_count);\n      for(_i = 0;_i < _real_count;_i++) {\n        _address_items[_i] = _items_temp[_i];\n      }\n    }\n  }\n\n\n  /** DEPRECATED\n    @notice private function to list a Address collection starting from the start or end of the list\n    @param _count Total number of Address item to return\n    @param _function_total Function that returns the Total number of Address item in the list\n    @param _function_first Function that returns the First Address item in the list\n    @param _function_next Function that returns the Next Address item in the list\n    @return {\"_address_items\" :\"Collection/list of Address\"}\n  */\n  /*function list_addresses_from_start_or_end(uint256 _count,\n                                 function () external constant returns (uint256) _function_total,\n                                 function () external constant returns (address) _function_first,\n                                 function (address) external constant returns (address) _function_next)\n\n           private\n           constant\n           returns (address[] _address_items)\n  {\n    uint256 _i;\n    address _current_item;\n    uint256 _real_count = _function_total();\n\n    if (_count > _real_count) {\n      _count = _real_count;\n    }\n\n    address[] memory _items_tmp = new address[](_count);\n\n    if (_count > 0) {\n      _current_item = _function_first();\n      _items_tmp[0] = _current_item;\n\n      for(_i = 1;_i <= (_count - 1);_i++) {\n        _current_item = _function_next(_current_item);\n        if (_current_item != address(0x0)) {\n          _items_tmp[_i] = _current_item;\n        }\n      }\n      _address_items = _items_tmp;\n    } else {\n      _address_items = new address[](0);\n    }\n  }*/\n\n  /** DEPRECATED\n    @notice a private function to lists a Address collection starting from some `_current_item`, could be forwards or backwards\n    @param _current_item The current Item\n    @param _count Total number of Address items to return\n    @param _function_last Function that returns the bytes where we stop reading more bytes\n    @param _function_next Function that returns the next bytes to read after some bytes (could be backwards or forwards in the physical collection)\n    @return {\"_address_items\" :\"Collection/list of Address\"}\n  */\n  /*function list_addresses_from_byte(address _current_item, uint256 _count,\n                                 function () external constant returns (address) _function_last,\n                                 function (address) external constant returns (address) _function_next)\n           private\n           constant\n           returns (address[] _address_items)\n  {\n    uint256 _i;\n    uint256 _real_count = 0;\n\n    if (_count == 0) {\n      _address_items = new address[](0);\n    } else {\n      address[] memory _items_temp = new address[](_count);\n\n      address _start_item;\n      address _last_item;\n\n      _last_item = _function_last();\n\n      if (_last_item != _current_item) {\n        _start_item = _function_next(_current_item);\n        if (_start_item != address(0x0)) {\n          _items_temp[0] = _start_item;\n          _real_count = 1;\n          for(_i = 1;(_i <= (_count - 1)) && (_start_item != _last_item);_i++) {\n            _start_item = _function_next(_start_item);\n            if (_start_item != address(0x0)) {\n              _real_count++;\n              _items_temp[_i] = _start_item;\n            }\n          }\n          _address_items = new address[](_real_count);\n          for(_i = 0;_i <= (_real_count - 1);_i++) {\n            _address_items[_i] = _items_temp[_i];\n          }\n        } else {\n          _address_items = new address[](0);\n        }\n      } else {\n        _address_items = new address[](0);\n      }\n    }\n  }*/\n\n}\n",
  "sourcePath": "@digix/solidity-collections/contracts/abstract/AddressIteratorInteractive.sol",
  "ast": {
    "absolutePath": "@digix/solidity-collections/contracts/abstract/AddressIteratorInteractive.sol",
    "exportedSymbols": {
      "AddressIteratorInteractive": [
        21588
      ]
    },
    "id": 21589,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 21295,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".19"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:74"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title Address Iterator Interactive\n@author DigixGlobal Pte Ltd",
        "fullyImplemented": true,
        "id": 21588,
        "linearizedBaseContracts": [
          21588
        ],
        "name": "AddressIteratorInteractive",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 21359,
              "nodeType": "Block",
              "src": "1329:301:74",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 21333,
                    "name": "_from_start",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 21327,
                    "src": "1339:11:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 21357,
                    "nodeType": "Block",
                    "src": "1490:136:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21346,
                            "name": "_address_items",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21331,
                            "src": "1498:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 21348,
                                  "name": "_function_last",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21309,
                                  "src": "1551:14:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 21349,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1551:16:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21350,
                                "name": "_count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21297,
                                "src": "1569:6:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 21351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1577:4:74",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              {
                                "argumentTypes": null,
                                "id": 21352,
                                "name": "_function_first",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21303,
                                "src": "1583:15:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21353,
                                "name": "_function_previous",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21325,
                                "src": "1600:18:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              ],
                              "id": 21347,
                              "name": "private_list_addresses_from_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21587,
                              "src": "1515:35:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$_t_function_external_view$__$returns$_t_address_$_$_t_function_external_view$_t_address_$returns$_t_address_$_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,bool,function () view external returns (address),function (address) view external returns (address)) view returns (address[] memory)"
                              }
                            },
                            "id": 21354,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1515:104:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "1498:121:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 21356,
                        "nodeType": "ExpressionStatement",
                        "src": "1498:121:74"
                      }
                    ]
                  },
                  "id": 21358,
                  "nodeType": "IfStatement",
                  "src": "1335:291:74",
                  "trueBody": {
                    "id": 21345,
                    "nodeType": "Block",
                    "src": "1352:132:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21334,
                            "name": "_address_items",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21331,
                            "src": "1360:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 21336,
                                  "name": "_function_first",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21303,
                                  "src": "1413:15:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 21337,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1413:17:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21338,
                                "name": "_count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21297,
                                "src": "1432:6:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 21339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1440:4:74",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              {
                                "argumentTypes": null,
                                "id": 21340,
                                "name": "_function_last",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21309,
                                "src": "1446:14:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21341,
                                "name": "_function_next",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21317,
                                "src": "1462:14:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              ],
                              "id": 21335,
                              "name": "private_list_addresses_from_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21587,
                              "src": "1377:35:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$_t_function_external_view$__$returns$_t_address_$_$_t_function_external_view$_t_address_$returns$_t_address_$_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,bool,function () view external returns (address),function (address) view external returns (address)) view returns (address[] memory)"
                              }
                            },
                            "id": 21342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1377:100:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "1360:117:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 21344,
                        "nodeType": "ExpressionStatement",
                        "src": "1360:117:74"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Lists a Address collection from start or end\n@param _count Total number of Address items to return\n@param _function_first Function that returns the First Address item in the list\n@param _function_last Function that returns the last Address item in the list\n@param _function_next Function that returns the Next Address item in the list\n@param _function_previous Function that returns previous Address item in the list\n@param _from_start whether to read from start (or end) of the list\n@return {\"_address_items\" : \"Collection of reversed Address list\"}",
            "id": 21360,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "list_addresses",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21297,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "767:14:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21296,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "767:7:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21303,
                  "name": "_function_first",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "816:63:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                    "typeString": "function () view external returns (address)"
                  },
                  "typeName": {
                    "id": 21302,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21298,
                      "nodeType": "ParameterList",
                      "parameters": [],
                      "src": "825:2:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21301,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21300,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21360,
                          "src": "855:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21299,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "855:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "854:9:74"
                    },
                    "src": "816:63:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                      "typeString": "function () view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21309,
                  "name": "_function_last",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "914:62:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                    "typeString": "function () view external returns (address)"
                  },
                  "typeName": {
                    "id": 21308,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21304,
                      "nodeType": "ParameterList",
                      "parameters": [],
                      "src": "923:2:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21307,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21306,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21360,
                          "src": "953:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21305,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "953:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "952:9:74"
                    },
                    "src": "914:62:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                      "typeString": "function () view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21317,
                  "name": "_function_next",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "1011:69:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                    "typeString": "function (address) view external returns (address)"
                  },
                  "typeName": {
                    "id": 21316,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21312,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21311,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21360,
                          "src": "1021:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21310,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1021:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "1020:9:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21315,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21314,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21360,
                          "src": "1057:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21313,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1057:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "1056:9:74"
                    },
                    "src": "1011:69:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                      "typeString": "function (address) view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21325,
                  "name": "_function_previous",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "1115:73:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                    "typeString": "function (address) view external returns (address)"
                  },
                  "typeName": {
                    "id": 21324,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21320,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21319,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21360,
                          "src": "1125:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21318,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1125:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "1124:9:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21323,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21322,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21360,
                          "src": "1161:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21321,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1161:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "1160:9:74"
                    },
                    "src": "1115:73:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                      "typeString": "function (address) view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21327,
                  "name": "_from_start",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "1223:16:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21326,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1223:4:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "766:474:74"
            },
            "payable": false,
            "returnParameters": {
              "id": 21332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21331,
                  "name": "_address_items",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "1301:24:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 21329,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1301:7:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 21330,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1301:9:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1300:26:74"
            },
            "scope": 21588,
            "src": "743:887:74",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21424,
              "nodeType": "Block",
              "src": "2953:296:74",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 21400,
                    "name": "_from_start",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 21394,
                    "src": "2963:11:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 21422,
                    "nodeType": "Block",
                    "src": "3111:134:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21412,
                            "name": "_address_items",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21398,
                            "src": "3119:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21414,
                                "name": "_current_item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21362,
                                "src": "3172:13:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21415,
                                "name": "_count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21364,
                                "src": "3187:6:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 21416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3195:5:74",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "argumentTypes": null,
                                "id": 21417,
                                "name": "_function_first",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21370,
                                "src": "3202:15:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21418,
                                "name": "_function_previous",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21392,
                                "src": "3219:18:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              ],
                              "id": 21413,
                              "name": "private_list_addresses_from_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21587,
                              "src": "3136:35:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$_t_function_external_view$__$returns$_t_address_$_$_t_function_external_view$_t_address_$returns$_t_address_$_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,bool,function () view external returns (address),function (address) view external returns (address)) view returns (address[] memory)"
                              }
                            },
                            "id": 21419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3136:102:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "3119:119:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 21421,
                        "nodeType": "ExpressionStatement",
                        "src": "3119:119:74"
                      }
                    ]
                  },
                  "id": 21423,
                  "nodeType": "IfStatement",
                  "src": "2959:286:74",
                  "trueBody": {
                    "id": 21411,
                    "nodeType": "Block",
                    "src": "2976:129:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21401,
                            "name": "_address_items",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21398,
                            "src": "2984:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21403,
                                "name": "_current_item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21362,
                                "src": "3037:13:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21404,
                                "name": "_count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21364,
                                "src": "3052:6:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 21405,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3060:5:74",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "argumentTypes": null,
                                "id": 21406,
                                "name": "_function_last",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21376,
                                "src": "3067:14:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21407,
                                "name": "_function_next",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21384,
                                "src": "3083:14:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              ],
                              "id": 21402,
                              "name": "private_list_addresses_from_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21587,
                              "src": "3001:35:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$_t_function_external_view$__$returns$_t_address_$_$_t_function_external_view$_t_address_$returns$_t_address_$_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,bool,function () view external returns (address),function (address) view external returns (address)) view returns (address[] memory)"
                              }
                            },
                            "id": 21408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3001:97:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "2984:114:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 21410,
                        "nodeType": "ExpressionStatement",
                        "src": "2984:114:74"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Lists a Address collection from some `_current_item`, going forwards or backwards depending on `_from_start`\n@param _current_item The current Item\n@param _count Total number of Address items to return\n@param _function_first Function that returns the First Address item in the list\n@param _function_last Function that returns the last Address item in the list\n@param _function_next Function that returns the Next Address item in the list\n@param _function_previous Function that returns previous Address item in the list\n@param _from_start whether to read in the forwards ( or backwards) direction\n@return {\"_address_items\" :\"Collection/list of Address\"}",
            "id": 21425,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "list_addresses_from",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21395,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21362,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2373:21:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21361,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2373:7:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21364,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2396:14:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21363,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2396:7:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21370,
                  "name": "_function_first",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2444:63:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                    "typeString": "function () view external returns (address)"
                  },
                  "typeName": {
                    "id": 21369,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21365,
                      "nodeType": "ParameterList",
                      "parameters": [],
                      "src": "2453:2:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21368,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21367,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21425,
                          "src": "2483:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21366,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2483:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "2482:9:74"
                    },
                    "src": "2444:63:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                      "typeString": "function () view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21376,
                  "name": "_function_last",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2541:62:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                    "typeString": "function () view external returns (address)"
                  },
                  "typeName": {
                    "id": 21375,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21371,
                      "nodeType": "ParameterList",
                      "parameters": [],
                      "src": "2550:2:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21374,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21373,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21425,
                          "src": "2580:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21372,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2580:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "2579:9:74"
                    },
                    "src": "2541:62:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                      "typeString": "function () view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21384,
                  "name": "_function_next",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2637:69:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                    "typeString": "function (address) view external returns (address)"
                  },
                  "typeName": {
                    "id": 21383,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21379,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21378,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21425,
                          "src": "2647:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21377,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2647:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "2646:9:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21382,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21381,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21425,
                          "src": "2683:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21380,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2683:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "2682:9:74"
                    },
                    "src": "2637:69:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                      "typeString": "function (address) view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21392,
                  "name": "_function_previous",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2740:73:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                    "typeString": "function (address) view external returns (address)"
                  },
                  "typeName": {
                    "id": 21391,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21387,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21386,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21425,
                          "src": "2750:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21385,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2750:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "2749:9:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21390,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21389,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21425,
                          "src": "2786:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21388,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2786:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "2785:9:74"
                    },
                    "src": "2740:73:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                      "typeString": "function (address) view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21394,
                  "name": "_from_start",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2847:16:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21393,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2847:4:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2372:492:74"
            },
            "payable": false,
            "returnParameters": {
              "id": 21399,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21398,
                  "name": "_address_items",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2925:24:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 21396,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2925:7:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 21397,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2925:9:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2924:26:74"
            },
            "scope": 21588,
            "src": "2344:905:74",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21586,
              "nodeType": "Block",
              "src": "4335:859:74",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21452,
                      "name": "_i",
                      "nodeType": "VariableDeclaration",
                      "scope": 21587,
                      "src": "4341:10:74",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21451,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4341:7:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21453,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4341:10:74"
                },
                {
                  "assignments": [
                    21455
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21455,
                      "name": "_real_count",
                      "nodeType": "VariableDeclaration",
                      "scope": 21587,
                      "src": "4357:19:74",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21454,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4357:7:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21457,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 21456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4379:1:74",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4357:23:74"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21459,
                      "name": "_last_item",
                      "nodeType": "VariableDeclaration",
                      "scope": 21587,
                      "src": "4386:18:74",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 21458,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4386:7:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21460,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4386:18:74"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21461,
                      "name": "_last_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21459,
                      "src": "4411:10:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 21462,
                        "name": "_function_last",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21437,
                        "src": "4424:14:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                          "typeString": "function () view external returns (address)"
                        }
                      },
                      "id": 21463,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4424:16:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4411:29:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 21465,
                  "nodeType": "ExpressionStatement",
                  "src": "4411:29:74"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 21474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 21468,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 21466,
                        "name": "_count",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21429,
                        "src": "4450:6:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 21467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4460:1:74",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "4450:11:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 21473,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 21469,
                        "name": "_last_item",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21459,
                        "src": "4465:10:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "307830",
                            "id": 21471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4487:3:74",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0x0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 21470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4479:7:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 21472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4479:12:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "4465:26:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4450:41:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 21584,
                    "nodeType": "Block",
                    "src": "4547:643:74",
                    "statements": [
                      {
                        "assignments": [
                          21487
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21487,
                            "name": "_items_temp",
                            "nodeType": "VariableDeclaration",
                            "scope": 21587,
                            "src": "4555:28:74",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 21485,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4555:7:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21486,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4555:9:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21493,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21491,
                              "name": "_count",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21429,
                              "src": "4600:6:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21490,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4586:13:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 21488,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4590:7:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21489,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4590:9:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 21492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4586:21:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4555:52:74"
                      },
                      {
                        "assignments": [],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21495,
                            "name": "_this_item",
                            "nodeType": "VariableDeclaration",
                            "scope": 21587,
                            "src": "4615:18:74",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21494,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4615:7:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21496,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4615:18:74"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 21499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 21497,
                            "name": "_including_current",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21431,
                            "src": "4645:18:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 21498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4667:4:74",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "4645:26:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 21511,
                        "nodeType": "IfStatement",
                        "src": "4641:106:74",
                        "trueBody": {
                          "id": 21510,
                          "nodeType": "Block",
                          "src": "4673:74:74",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 21504,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 21500,
                                    "name": "_items_temp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21487,
                                    "src": "4683:11:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 21502,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21501,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4695:1:74",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4683:14:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 21503,
                                  "name": "_current_item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21427,
                                  "src": "4700:13:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4683:30:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21505,
                              "nodeType": "ExpressionStatement",
                              "src": "4683:30:74"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 21508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 21506,
                                  "name": "_real_count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21455,
                                  "src": "4723:11:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 21507,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4737:1:74",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "4723:15:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21509,
                              "nodeType": "ExpressionStatement",
                              "src": "4723:15:74"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21512,
                            "name": "_this_item",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21495,
                            "src": "4754:10:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21513,
                            "name": "_current_item",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21427,
                            "src": "4767:13:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4754:26:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21515,
                        "nodeType": "ExpressionStatement",
                        "src": "4754:26:74"
                      },
                      {
                        "body": {
                          "id": 21554,
                          "nodeType": "Block",
                          "src": "4861:175:74",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 21536,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 21532,
                                  "name": "_this_item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21495,
                                  "src": "4871:10:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 21534,
                                      "name": "_this_item",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21495,
                                      "src": "4899:10:74",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 21533,
                                    "name": "_function_next",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21445,
                                    "src": "4884:14:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                      "typeString": "function (address) view external returns (address)"
                                    }
                                  },
                                  "id": 21535,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4884:26:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4871:39:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21537,
                              "nodeType": "ExpressionStatement",
                              "src": "4871:39:74"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 21542,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 21538,
                                  "name": "_this_item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21495,
                                  "src": "4924:10:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "307830",
                                      "id": 21540,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4946:3:74",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0x0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 21539,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4938:7:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 21541,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4938:12:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4924:26:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 21553,
                              "nodeType": "IfStatement",
                              "src": "4920:108:74",
                              "trueBody": {
                                "id": 21552,
                                "nodeType": "Block",
                                "src": "4952:76:74",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21544,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "4964:13:74",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 21543,
                                        "name": "_real_count",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21455,
                                        "src": "4964:11:74",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 21545,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4964:13:74"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21550,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 21546,
                                          "name": "_items_temp",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21487,
                                          "src": "4989:11:74",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 21548,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 21547,
                                          "name": "_i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21452,
                                          "src": "5001:2:74",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4989:15:74",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 21549,
                                        "name": "_this_item",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21495,
                                        "src": "5007:10:74",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "4989:28:74",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 21551,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4989:28:74"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 21528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 21522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 21520,
                                  "name": "_i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21452,
                                  "src": "4812:2:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 21521,
                                  "name": "_count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21429,
                                  "src": "4817:6:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4812:11:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 21523,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4811:13:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 21526,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 21524,
                                  "name": "_this_item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21495,
                                  "src": "4829:10:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 21525,
                                  "name": "_last_item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21459,
                                  "src": "4843:10:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4829:24:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 21527,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4828:26:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4811:43:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21555,
                        "initializationExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 21518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 21516,
                              "name": "_i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21452,
                              "src": "4793:2:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 21517,
                              "name": "_real_count",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21455,
                              "src": "4798:11:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4793:16:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21519,
                          "nodeType": "ExpressionStatement",
                          "src": "4793:16:74"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 21530,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4855:4:74",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 21529,
                              "name": "_i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21452,
                              "src": "4855:2:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21531,
                          "nodeType": "ExpressionStatement",
                          "src": "4855:4:74"
                        },
                        "nodeType": "ForStatement",
                        "src": "4788:248:74"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21556,
                            "name": "_address_items",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21449,
                            "src": "5044:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21560,
                                "name": "_real_count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21455,
                                "src": "5075:11:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 21559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "5061:13:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (address[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 21557,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5065:7:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 21558,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "5065:9:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                  "typeString": "address[]"
                                }
                              }
                            },
                            "id": 21561,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5061:26:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "5044:43:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 21563,
                        "nodeType": "ExpressionStatement",
                        "src": "5044:43:74"
                      },
                      {
                        "body": {
                          "id": 21582,
                          "nodeType": "Block",
                          "src": "5129:55:74",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 21580,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 21574,
                                    "name": "_address_items",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21449,
                                    "src": "5139:14:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 21576,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 21575,
                                    "name": "_i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21452,
                                    "src": "5154:2:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5139:18:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 21577,
                                    "name": "_items_temp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21487,
                                    "src": "5160:11:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 21579,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 21578,
                                    "name": "_i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21452,
                                    "src": "5172:2:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5160:15:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5139:36:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21581,
                              "nodeType": "ExpressionStatement",
                              "src": "5139:36:74"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 21568,
                            "name": "_i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21452,
                            "src": "5106:2:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 21569,
                            "name": "_real_count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21455,
                            "src": "5111:11:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5106:16:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21583,
                        "initializationExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 21566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 21564,
                              "name": "_i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21452,
                              "src": "5099:2:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 21565,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5104:1:74",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5099:6:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21567,
                          "nodeType": "ExpressionStatement",
                          "src": "5099:6:74"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 21572,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "5123:4:74",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 21571,
                              "name": "_i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21452,
                              "src": "5123:2:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21573,
                          "nodeType": "ExpressionStatement",
                          "src": "5123:4:74"
                        },
                        "nodeType": "ForStatement",
                        "src": "5095:89:74"
                      }
                    ]
                  },
                  "id": 21585,
                  "nodeType": "IfStatement",
                  "src": "4446:744:74",
                  "trueBody": {
                    "id": 21483,
                    "nodeType": "Block",
                    "src": "4493:48:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21475,
                            "name": "_address_items",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21449,
                            "src": "4501:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 21479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4532:1:74",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 21478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "4518:13:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (address[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 21476,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4522:7:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 21477,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "4522:9:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                  "typeString": "address[]"
                                }
                              }
                            },
                            "id": 21480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4518:16:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "4501:33:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 21482,
                        "nodeType": "ExpressionStatement",
                        "src": "4501:33:74"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice a private function to lists a Address collection starting from some `_current_item` (which could be included or excluded), in the forwards or backwards direction\n@param _current_item The current Item\n@param _count Total number of Address items to return\n@param _including_current Whether the `_current_item` should be included in the result\n@param _function_last Function that returns the address where we stop reading more address\n@param _function_next Function that returns the next address to read after some address (could be backwards or forwards in the physical collection)\n@return {\"_address_items\" :\"Collection/list of Address\"}",
            "id": 21587,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "private_list_addresses_from_address",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21446,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21427,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 21587,
                  "src": "3983:21:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21426,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3983:7:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21429,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 21587,
                  "src": "4006:14:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21428,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4006:7:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21431,
                  "name": "_including_current",
                  "nodeType": "VariableDeclaration",
                  "scope": 21587,
                  "src": "4022:23:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21430,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4022:4:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21437,
                  "name": "_function_last",
                  "nodeType": "VariableDeclaration",
                  "scope": 21587,
                  "src": "4080:62:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                    "typeString": "function () view external returns (address)"
                  },
                  "typeName": {
                    "id": 21436,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21432,
                      "nodeType": "ParameterList",
                      "parameters": [],
                      "src": "4089:2:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21435,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21434,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21587,
                          "src": "4119:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21433,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4119:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "4118:9:74"
                    },
                    "src": "4080:62:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                      "typeString": "function () view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21445,
                  "name": "_function_next",
                  "nodeType": "VariableDeclaration",
                  "scope": 21587,
                  "src": "4177:69:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                    "typeString": "function (address) view external returns (address)"
                  },
                  "typeName": {
                    "id": 21444,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21440,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21439,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21587,
                          "src": "4187:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21438,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4187:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "4186:9:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21443,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21442,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21587,
                          "src": "4223:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21441,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4223:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "4222:9:74"
                    },
                    "src": "4177:69:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                      "typeString": "function (address) view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3982:265:74"
            },
            "payable": false,
            "returnParameters": {
              "id": 21450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21449,
                  "name": "_address_items",
                  "nodeType": "VariableDeclaration",
                  "scope": 21587,
                  "src": "4307:24:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 21447,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4307:7:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 21448,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4307:9:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4306:26:74"
            },
            "scope": 21588,
            "src": "3938:1256:74",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 21589,
        "src": "100:8673:74"
      }
    ],
    "src": "0:8774:74"
  },
  "legacyAST": {
    "absolutePath": "@digix/solidity-collections/contracts/abstract/AddressIteratorInteractive.sol",
    "exportedSymbols": {
      "AddressIteratorInteractive": [
        21588
      ]
    },
    "id": 21589,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 21295,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".19"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:74"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title Address Iterator Interactive\n@author DigixGlobal Pte Ltd",
        "fullyImplemented": true,
        "id": 21588,
        "linearizedBaseContracts": [
          21588
        ],
        "name": "AddressIteratorInteractive",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 21359,
              "nodeType": "Block",
              "src": "1329:301:74",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 21333,
                    "name": "_from_start",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 21327,
                    "src": "1339:11:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 21357,
                    "nodeType": "Block",
                    "src": "1490:136:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21346,
                            "name": "_address_items",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21331,
                            "src": "1498:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 21348,
                                  "name": "_function_last",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21309,
                                  "src": "1551:14:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 21349,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1551:16:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21350,
                                "name": "_count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21297,
                                "src": "1569:6:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 21351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1577:4:74",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              {
                                "argumentTypes": null,
                                "id": 21352,
                                "name": "_function_first",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21303,
                                "src": "1583:15:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21353,
                                "name": "_function_previous",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21325,
                                "src": "1600:18:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              ],
                              "id": 21347,
                              "name": "private_list_addresses_from_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21587,
                              "src": "1515:35:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$_t_function_external_view$__$returns$_t_address_$_$_t_function_external_view$_t_address_$returns$_t_address_$_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,bool,function () view external returns (address),function (address) view external returns (address)) view returns (address[] memory)"
                              }
                            },
                            "id": 21354,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1515:104:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "1498:121:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 21356,
                        "nodeType": "ExpressionStatement",
                        "src": "1498:121:74"
                      }
                    ]
                  },
                  "id": 21358,
                  "nodeType": "IfStatement",
                  "src": "1335:291:74",
                  "trueBody": {
                    "id": 21345,
                    "nodeType": "Block",
                    "src": "1352:132:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21334,
                            "name": "_address_items",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21331,
                            "src": "1360:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 21336,
                                  "name": "_function_first",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21303,
                                  "src": "1413:15:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 21337,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1413:17:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21338,
                                "name": "_count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21297,
                                "src": "1432:6:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 21339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1440:4:74",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              {
                                "argumentTypes": null,
                                "id": 21340,
                                "name": "_function_last",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21309,
                                "src": "1446:14:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21341,
                                "name": "_function_next",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21317,
                                "src": "1462:14:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              ],
                              "id": 21335,
                              "name": "private_list_addresses_from_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21587,
                              "src": "1377:35:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$_t_function_external_view$__$returns$_t_address_$_$_t_function_external_view$_t_address_$returns$_t_address_$_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,bool,function () view external returns (address),function (address) view external returns (address)) view returns (address[] memory)"
                              }
                            },
                            "id": 21342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1377:100:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "1360:117:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 21344,
                        "nodeType": "ExpressionStatement",
                        "src": "1360:117:74"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Lists a Address collection from start or end\n@param _count Total number of Address items to return\n@param _function_first Function that returns the First Address item in the list\n@param _function_last Function that returns the last Address item in the list\n@param _function_next Function that returns the Next Address item in the list\n@param _function_previous Function that returns previous Address item in the list\n@param _from_start whether to read from start (or end) of the list\n@return {\"_address_items\" : \"Collection of reversed Address list\"}",
            "id": 21360,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "list_addresses",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21297,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "767:14:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21296,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "767:7:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21303,
                  "name": "_function_first",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "816:63:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                    "typeString": "function () view external returns (address)"
                  },
                  "typeName": {
                    "id": 21302,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21298,
                      "nodeType": "ParameterList",
                      "parameters": [],
                      "src": "825:2:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21301,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21300,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21360,
                          "src": "855:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21299,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "855:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "854:9:74"
                    },
                    "src": "816:63:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                      "typeString": "function () view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21309,
                  "name": "_function_last",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "914:62:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                    "typeString": "function () view external returns (address)"
                  },
                  "typeName": {
                    "id": 21308,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21304,
                      "nodeType": "ParameterList",
                      "parameters": [],
                      "src": "923:2:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21307,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21306,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21360,
                          "src": "953:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21305,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "953:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "952:9:74"
                    },
                    "src": "914:62:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                      "typeString": "function () view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21317,
                  "name": "_function_next",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "1011:69:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                    "typeString": "function (address) view external returns (address)"
                  },
                  "typeName": {
                    "id": 21316,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21312,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21311,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21360,
                          "src": "1021:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21310,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1021:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "1020:9:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21315,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21314,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21360,
                          "src": "1057:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21313,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1057:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "1056:9:74"
                    },
                    "src": "1011:69:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                      "typeString": "function (address) view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21325,
                  "name": "_function_previous",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "1115:73:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                    "typeString": "function (address) view external returns (address)"
                  },
                  "typeName": {
                    "id": 21324,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21320,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21319,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21360,
                          "src": "1125:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21318,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1125:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "1124:9:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21323,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21322,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21360,
                          "src": "1161:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21321,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1161:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "1160:9:74"
                    },
                    "src": "1115:73:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                      "typeString": "function (address) view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21327,
                  "name": "_from_start",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "1223:16:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21326,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1223:4:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "766:474:74"
            },
            "payable": false,
            "returnParameters": {
              "id": 21332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21331,
                  "name": "_address_items",
                  "nodeType": "VariableDeclaration",
                  "scope": 21360,
                  "src": "1301:24:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 21329,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1301:7:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 21330,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1301:9:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1300:26:74"
            },
            "scope": 21588,
            "src": "743:887:74",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21424,
              "nodeType": "Block",
              "src": "2953:296:74",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 21400,
                    "name": "_from_start",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 21394,
                    "src": "2963:11:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 21422,
                    "nodeType": "Block",
                    "src": "3111:134:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21412,
                            "name": "_address_items",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21398,
                            "src": "3119:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21414,
                                "name": "_current_item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21362,
                                "src": "3172:13:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21415,
                                "name": "_count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21364,
                                "src": "3187:6:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 21416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3195:5:74",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "argumentTypes": null,
                                "id": 21417,
                                "name": "_function_first",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21370,
                                "src": "3202:15:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21418,
                                "name": "_function_previous",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21392,
                                "src": "3219:18:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              ],
                              "id": 21413,
                              "name": "private_list_addresses_from_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21587,
                              "src": "3136:35:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$_t_function_external_view$__$returns$_t_address_$_$_t_function_external_view$_t_address_$returns$_t_address_$_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,bool,function () view external returns (address),function (address) view external returns (address)) view returns (address[] memory)"
                              }
                            },
                            "id": 21419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3136:102:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "3119:119:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 21421,
                        "nodeType": "ExpressionStatement",
                        "src": "3119:119:74"
                      }
                    ]
                  },
                  "id": 21423,
                  "nodeType": "IfStatement",
                  "src": "2959:286:74",
                  "trueBody": {
                    "id": 21411,
                    "nodeType": "Block",
                    "src": "2976:129:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21401,
                            "name": "_address_items",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21398,
                            "src": "2984:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21403,
                                "name": "_current_item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21362,
                                "src": "3037:13:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21404,
                                "name": "_count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21364,
                                "src": "3052:6:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 21405,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3060:5:74",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "argumentTypes": null,
                                "id": 21406,
                                "name": "_function_last",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21376,
                                "src": "3067:14:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21407,
                                "name": "_function_next",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21384,
                                "src": "3083:14:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                },
                                {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address) view external returns (address)"
                                }
                              ],
                              "id": 21402,
                              "name": "private_list_addresses_from_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21587,
                              "src": "3001:35:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$_t_function_external_view$__$returns$_t_address_$_$_t_function_external_view$_t_address_$returns$_t_address_$_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,bool,function () view external returns (address),function (address) view external returns (address)) view returns (address[] memory)"
                              }
                            },
                            "id": 21408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3001:97:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "2984:114:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 21410,
                        "nodeType": "ExpressionStatement",
                        "src": "2984:114:74"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Lists a Address collection from some `_current_item`, going forwards or backwards depending on `_from_start`\n@param _current_item The current Item\n@param _count Total number of Address items to return\n@param _function_first Function that returns the First Address item in the list\n@param _function_last Function that returns the last Address item in the list\n@param _function_next Function that returns the Next Address item in the list\n@param _function_previous Function that returns previous Address item in the list\n@param _from_start whether to read in the forwards ( or backwards) direction\n@return {\"_address_items\" :\"Collection/list of Address\"}",
            "id": 21425,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "list_addresses_from",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21395,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21362,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2373:21:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21361,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2373:7:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21364,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2396:14:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21363,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2396:7:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21370,
                  "name": "_function_first",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2444:63:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                    "typeString": "function () view external returns (address)"
                  },
                  "typeName": {
                    "id": 21369,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21365,
                      "nodeType": "ParameterList",
                      "parameters": [],
                      "src": "2453:2:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21368,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21367,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21425,
                          "src": "2483:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21366,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2483:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "2482:9:74"
                    },
                    "src": "2444:63:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                      "typeString": "function () view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21376,
                  "name": "_function_last",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2541:62:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                    "typeString": "function () view external returns (address)"
                  },
                  "typeName": {
                    "id": 21375,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21371,
                      "nodeType": "ParameterList",
                      "parameters": [],
                      "src": "2550:2:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21374,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21373,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21425,
                          "src": "2580:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21372,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2580:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "2579:9:74"
                    },
                    "src": "2541:62:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                      "typeString": "function () view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21384,
                  "name": "_function_next",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2637:69:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                    "typeString": "function (address) view external returns (address)"
                  },
                  "typeName": {
                    "id": 21383,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21379,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21378,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21425,
                          "src": "2647:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21377,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2647:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "2646:9:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21382,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21381,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21425,
                          "src": "2683:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21380,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2683:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "2682:9:74"
                    },
                    "src": "2637:69:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                      "typeString": "function (address) view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21392,
                  "name": "_function_previous",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2740:73:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                    "typeString": "function (address) view external returns (address)"
                  },
                  "typeName": {
                    "id": 21391,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21387,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21386,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21425,
                          "src": "2750:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21385,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2750:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "2749:9:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21390,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21389,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21425,
                          "src": "2786:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21388,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2786:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "2785:9:74"
                    },
                    "src": "2740:73:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                      "typeString": "function (address) view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21394,
                  "name": "_from_start",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2847:16:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21393,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2847:4:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2372:492:74"
            },
            "payable": false,
            "returnParameters": {
              "id": 21399,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21398,
                  "name": "_address_items",
                  "nodeType": "VariableDeclaration",
                  "scope": 21425,
                  "src": "2925:24:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 21396,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2925:7:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 21397,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2925:9:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2924:26:74"
            },
            "scope": 21588,
            "src": "2344:905:74",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21586,
              "nodeType": "Block",
              "src": "4335:859:74",
              "statements": [
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21452,
                      "name": "_i",
                      "nodeType": "VariableDeclaration",
                      "scope": 21587,
                      "src": "4341:10:74",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21451,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4341:7:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21453,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4341:10:74"
                },
                {
                  "assignments": [
                    21455
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21455,
                      "name": "_real_count",
                      "nodeType": "VariableDeclaration",
                      "scope": 21587,
                      "src": "4357:19:74",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21454,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4357:7:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21457,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 21456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4379:1:74",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4357:23:74"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21459,
                      "name": "_last_item",
                      "nodeType": "VariableDeclaration",
                      "scope": 21587,
                      "src": "4386:18:74",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 21458,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4386:7:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21460,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4386:18:74"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21461,
                      "name": "_last_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21459,
                      "src": "4411:10:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 21462,
                        "name": "_function_last",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21437,
                        "src": "4424:14:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                          "typeString": "function () view external returns (address)"
                        }
                      },
                      "id": 21463,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4424:16:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4411:29:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 21465,
                  "nodeType": "ExpressionStatement",
                  "src": "4411:29:74"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 21474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 21468,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 21466,
                        "name": "_count",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21429,
                        "src": "4450:6:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 21467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4460:1:74",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "4450:11:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 21473,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 21469,
                        "name": "_last_item",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21459,
                        "src": "4465:10:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "307830",
                            "id": 21471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4487:3:74",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0x0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 21470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4479:7:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 21472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4479:12:74",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "4465:26:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4450:41:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 21584,
                    "nodeType": "Block",
                    "src": "4547:643:74",
                    "statements": [
                      {
                        "assignments": [
                          21487
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21487,
                            "name": "_items_temp",
                            "nodeType": "VariableDeclaration",
                            "scope": 21587,
                            "src": "4555:28:74",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 21485,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4555:7:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21486,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4555:9:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21493,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21491,
                              "name": "_count",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21429,
                              "src": "4600:6:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21490,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4586:13:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 21488,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4590:7:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21489,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4590:9:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 21492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4586:21:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4555:52:74"
                      },
                      {
                        "assignments": [],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21495,
                            "name": "_this_item",
                            "nodeType": "VariableDeclaration",
                            "scope": 21587,
                            "src": "4615:18:74",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21494,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4615:7:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21496,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4615:18:74"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 21499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 21497,
                            "name": "_including_current",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21431,
                            "src": "4645:18:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 21498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4667:4:74",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "4645:26:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 21511,
                        "nodeType": "IfStatement",
                        "src": "4641:106:74",
                        "trueBody": {
                          "id": 21510,
                          "nodeType": "Block",
                          "src": "4673:74:74",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 21504,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 21500,
                                    "name": "_items_temp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21487,
                                    "src": "4683:11:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 21502,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21501,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4695:1:74",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4683:14:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 21503,
                                  "name": "_current_item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21427,
                                  "src": "4700:13:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4683:30:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21505,
                              "nodeType": "ExpressionStatement",
                              "src": "4683:30:74"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 21508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 21506,
                                  "name": "_real_count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21455,
                                  "src": "4723:11:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 21507,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4737:1:74",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "4723:15:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21509,
                              "nodeType": "ExpressionStatement",
                              "src": "4723:15:74"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21512,
                            "name": "_this_item",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21495,
                            "src": "4754:10:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21513,
                            "name": "_current_item",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21427,
                            "src": "4767:13:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4754:26:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21515,
                        "nodeType": "ExpressionStatement",
                        "src": "4754:26:74"
                      },
                      {
                        "body": {
                          "id": 21554,
                          "nodeType": "Block",
                          "src": "4861:175:74",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 21536,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 21532,
                                  "name": "_this_item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21495,
                                  "src": "4871:10:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 21534,
                                      "name": "_this_item",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21495,
                                      "src": "4899:10:74",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 21533,
                                    "name": "_function_next",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21445,
                                    "src": "4884:14:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                      "typeString": "function (address) view external returns (address)"
                                    }
                                  },
                                  "id": 21535,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4884:26:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4871:39:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21537,
                              "nodeType": "ExpressionStatement",
                              "src": "4871:39:74"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 21542,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 21538,
                                  "name": "_this_item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21495,
                                  "src": "4924:10:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "307830",
                                      "id": 21540,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4946:3:74",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0x0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 21539,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4938:7:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 21541,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4938:12:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4924:26:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 21553,
                              "nodeType": "IfStatement",
                              "src": "4920:108:74",
                              "trueBody": {
                                "id": 21552,
                                "nodeType": "Block",
                                "src": "4952:76:74",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21544,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "4964:13:74",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 21543,
                                        "name": "_real_count",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21455,
                                        "src": "4964:11:74",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 21545,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4964:13:74"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21550,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 21546,
                                          "name": "_items_temp",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21487,
                                          "src": "4989:11:74",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 21548,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 21547,
                                          "name": "_i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21452,
                                          "src": "5001:2:74",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4989:15:74",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 21549,
                                        "name": "_this_item",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21495,
                                        "src": "5007:10:74",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "4989:28:74",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 21551,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4989:28:74"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 21528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 21522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 21520,
                                  "name": "_i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21452,
                                  "src": "4812:2:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 21521,
                                  "name": "_count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21429,
                                  "src": "4817:6:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4812:11:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 21523,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4811:13:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 21526,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 21524,
                                  "name": "_this_item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21495,
                                  "src": "4829:10:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 21525,
                                  "name": "_last_item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21459,
                                  "src": "4843:10:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4829:24:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 21527,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4828:26:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4811:43:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21555,
                        "initializationExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 21518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 21516,
                              "name": "_i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21452,
                              "src": "4793:2:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 21517,
                              "name": "_real_count",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21455,
                              "src": "4798:11:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4793:16:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21519,
                          "nodeType": "ExpressionStatement",
                          "src": "4793:16:74"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 21530,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4855:4:74",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 21529,
                              "name": "_i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21452,
                              "src": "4855:2:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21531,
                          "nodeType": "ExpressionStatement",
                          "src": "4855:4:74"
                        },
                        "nodeType": "ForStatement",
                        "src": "4788:248:74"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21556,
                            "name": "_address_items",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21449,
                            "src": "5044:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21560,
                                "name": "_real_count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21455,
                                "src": "5075:11:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 21559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "5061:13:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (address[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 21557,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5065:7:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 21558,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "5065:9:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                  "typeString": "address[]"
                                }
                              }
                            },
                            "id": 21561,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5061:26:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "5044:43:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 21563,
                        "nodeType": "ExpressionStatement",
                        "src": "5044:43:74"
                      },
                      {
                        "body": {
                          "id": 21582,
                          "nodeType": "Block",
                          "src": "5129:55:74",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 21580,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 21574,
                                    "name": "_address_items",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21449,
                                    "src": "5139:14:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 21576,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 21575,
                                    "name": "_i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21452,
                                    "src": "5154:2:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5139:18:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 21577,
                                    "name": "_items_temp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21487,
                                    "src": "5160:11:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 21579,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 21578,
                                    "name": "_i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21452,
                                    "src": "5172:2:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5160:15:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5139:36:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21581,
                              "nodeType": "ExpressionStatement",
                              "src": "5139:36:74"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 21568,
                            "name": "_i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21452,
                            "src": "5106:2:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 21569,
                            "name": "_real_count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21455,
                            "src": "5111:11:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5106:16:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21583,
                        "initializationExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 21566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 21564,
                              "name": "_i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21452,
                              "src": "5099:2:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 21565,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5104:1:74",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5099:6:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21567,
                          "nodeType": "ExpressionStatement",
                          "src": "5099:6:74"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 21572,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "5123:4:74",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 21571,
                              "name": "_i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21452,
                              "src": "5123:2:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21573,
                          "nodeType": "ExpressionStatement",
                          "src": "5123:4:74"
                        },
                        "nodeType": "ForStatement",
                        "src": "5095:89:74"
                      }
                    ]
                  },
                  "id": 21585,
                  "nodeType": "IfStatement",
                  "src": "4446:744:74",
                  "trueBody": {
                    "id": 21483,
                    "nodeType": "Block",
                    "src": "4493:48:74",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21475,
                            "name": "_address_items",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21449,
                            "src": "4501:14:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 21479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4532:1:74",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 21478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "4518:13:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (address[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 21476,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4522:7:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 21477,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "4522:9:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                  "typeString": "address[]"
                                }
                              }
                            },
                            "id": 21480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4518:16:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "4501:33:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 21482,
                        "nodeType": "ExpressionStatement",
                        "src": "4501:33:74"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice a private function to lists a Address collection starting from some `_current_item` (which could be included or excluded), in the forwards or backwards direction\n@param _current_item The current Item\n@param _count Total number of Address items to return\n@param _including_current Whether the `_current_item` should be included in the result\n@param _function_last Function that returns the address where we stop reading more address\n@param _function_next Function that returns the next address to read after some address (could be backwards or forwards in the physical collection)\n@return {\"_address_items\" :\"Collection/list of Address\"}",
            "id": 21587,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "private_list_addresses_from_address",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21446,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21427,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 21587,
                  "src": "3983:21:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21426,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3983:7:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21429,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 21587,
                  "src": "4006:14:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21428,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4006:7:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21431,
                  "name": "_including_current",
                  "nodeType": "VariableDeclaration",
                  "scope": 21587,
                  "src": "4022:23:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21430,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4022:4:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21437,
                  "name": "_function_last",
                  "nodeType": "VariableDeclaration",
                  "scope": 21587,
                  "src": "4080:62:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                    "typeString": "function () view external returns (address)"
                  },
                  "typeName": {
                    "id": 21436,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21432,
                      "nodeType": "ParameterList",
                      "parameters": [],
                      "src": "4089:2:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21435,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21434,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21587,
                          "src": "4119:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21433,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4119:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "4118:9:74"
                    },
                    "src": "4080:62:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                      "typeString": "function () view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21445,
                  "name": "_function_next",
                  "nodeType": "VariableDeclaration",
                  "scope": 21587,
                  "src": "4177:69:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                    "typeString": "function (address) view external returns (address)"
                  },
                  "typeName": {
                    "id": 21444,
                    "isDeclaredConst": true,
                    "nodeType": "FunctionTypeName",
                    "parameterTypes": {
                      "id": 21440,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21439,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21587,
                          "src": "4187:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21438,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4187:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "4186:9:74"
                    },
                    "payable": false,
                    "returnParameterTypes": {
                      "id": 21443,
                      "nodeType": "ParameterList",
                      "parameters": [
                        {
                          "constant": false,
                          "id": 21442,
                          "name": "",
                          "nodeType": "VariableDeclaration",
                          "scope": 21587,
                          "src": "4223:7:74",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 21441,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4223:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "src": "4222:9:74"
                    },
                    "src": "4177:69:74",
                    "stateMutability": "view",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                      "typeString": "function (address) view external returns (address)"
                    },
                    "visibility": "external"
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3982:265:74"
            },
            "payable": false,
            "returnParameters": {
              "id": 21450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21449,
                  "name": "_address_items",
                  "nodeType": "VariableDeclaration",
                  "scope": 21587,
                  "src": "4307:24:74",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 21447,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4307:7:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 21448,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4307:9:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4306:26:74"
            },
            "scope": 21588,
            "src": "3938:1256:74",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 21589,
        "src": "100:8673:74"
      }
    ],
    "src": "0:8774:74"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2020-03-13T02:38:46.137Z"
}