{
  "contractName": "EnumerableMap",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing an enumerable variant of Solidity's https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`] type. Maps have the following properties: - Entries are added, removed, and checked for existence in constant time (O(1)). - Entries are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableMap for EnumerableMap.UintToAddressMap;     // Declare a set state variable     EnumerableMap.UintToAddressMap private myMap; } ``` As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/EnumerableMap.sol\":\"EnumerableMap\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x4b087f06b6670a131a5a14e53b1d2a5ef19c034cc5ec42eeebcf9554325744ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6a6af5d848334e40db419773f6360601e311ffc21c2e274f730b8c542da99fd\",\"dweb:/ipfs/QmfA24cxQ2g41ZWUuDF295dxDJ4xF1bSDYtC3EaLd7CzW8\"]}},\"version\":1}",
  "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220542485f37e725817b9f9ef07330c301e0c0bb6d026d1e8b935cf1f191cb8317364736f6c634300060c0033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220542485f37e725817b9f9ef07330c301e0c0bb6d026d1e8b935cf1f191cb8317364736f6c634300060c0033",
  "immutableReferences": {},
  "sourceMap": "772:8963:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "772:8963:30:-:0;;;;;;;;",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Library for managing an enumerable variant of Solidity's\n * https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n * type.\n *\n * Maps have the following properties:\n *\n * - Entries are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Entries are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n *     // Add the library methods\n *     using EnumerableMap for EnumerableMap.UintToAddressMap;\n *\n *     // Declare a set state variable\n *     EnumerableMap.UintToAddressMap private myMap;\n * }\n * ```\n *\n * As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n * supported.\n */\nlibrary EnumerableMap {\n    // To implement this library for multiple types with as little code\n    // repetition as possible, we write it in terms of a generic Map type with\n    // bytes32 keys and values.\n    // The Map implementation uses private functions, and user-facing\n    // implementations (such as Uint256ToAddressMap) are just wrappers around\n    // the underlying Map.\n    // This means that we can only create new EnumerableMaps for types that fit\n    // in bytes32.\n\n    struct MapEntry {\n        bytes32 _key;\n        bytes32 _value;\n    }\n\n    struct Map {\n        // Storage of map keys and values\n        MapEntry[] _entries;\n\n        // Position of the entry defined by a key in the `entries` array, plus 1\n        // because index 0 means a key is not in the map.\n        mapping (bytes32 => uint256) _indexes;\n    }\n\n    /**\n     * @dev Adds a key-value pair to a map, or updates the value for an existing\n     * key. O(1).\n     *\n     * Returns true if the key was added to the map, that is if it was not\n     * already present.\n     */\n    function _set(Map storage map, bytes32 key, bytes32 value) private returns (bool) {\n        // We read and store the key's index to prevent multiple reads from the same storage slot\n        uint256 keyIndex = map._indexes[key];\n\n        if (keyIndex == 0) { // Equivalent to !contains(map, key)\n            map._entries.push(MapEntry({ _key: key, _value: value }));\n            // The entry is stored at length-1, but we add 1 to all indexes\n            // and use 0 as a sentinel value\n            map._indexes[key] = map._entries.length;\n            return true;\n        } else {\n            map._entries[keyIndex - 1]._value = value;\n            return false;\n        }\n    }\n\n    /**\n     * @dev Removes a key-value pair from a map. O(1).\n     *\n     * Returns true if the key was removed from the map, that is if it was present.\n     */\n    function _remove(Map storage map, bytes32 key) private returns (bool) {\n        // We read and store the key's index to prevent multiple reads from the same storage slot\n        uint256 keyIndex = map._indexes[key];\n\n        if (keyIndex != 0) { // Equivalent to contains(map, key)\n            // To delete a key-value pair from the _entries array in O(1), we swap the entry to delete with the last one\n            // in the array, and then remove the last entry (sometimes called as 'swap and pop').\n            // This modifies the order of the array, as noted in {at}.\n\n            uint256 toDeleteIndex = keyIndex - 1;\n            uint256 lastIndex = map._entries.length - 1;\n\n            // When the entry to delete is the last one, the swap operation is unnecessary. However, since this occurs\n            // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.\n\n            MapEntry storage lastEntry = map._entries[lastIndex];\n\n            // Move the last entry to the index where the entry to delete is\n            map._entries[toDeleteIndex] = lastEntry;\n            // Update the index for the moved entry\n            map._indexes[lastEntry._key] = toDeleteIndex + 1; // All indexes are 1-based\n\n            // Delete the slot where the moved entry was stored\n            map._entries.pop();\n\n            // Delete the index for the deleted slot\n            delete map._indexes[key];\n\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Returns true if the key is in the map. O(1).\n     */\n    function _contains(Map storage map, bytes32 key) private view returns (bool) {\n        return map._indexes[key] != 0;\n    }\n\n    /**\n     * @dev Returns the number of key-value pairs in the map. O(1).\n     */\n    function _length(Map storage map) private view returns (uint256) {\n        return map._entries.length;\n    }\n\n   /**\n    * @dev Returns the key-value pair stored at position `index` in the map. O(1).\n    *\n    * Note that there are no guarantees on the ordering of entries inside the\n    * array, and it may change when more entries are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function _at(Map storage map, uint256 index) private view returns (bytes32, bytes32) {\n        require(map._entries.length > index, \"EnumerableMap: index out of bounds\");\n\n        MapEntry storage entry = map._entries[index];\n        return (entry._key, entry._value);\n    }\n\n    /**\n     * @dev Tries to returns the value associated with `key`.  O(1).\n     * Does not revert if `key` is not in the map.\n     */\n    function _tryGet(Map storage map, bytes32 key) private view returns (bool, bytes32) {\n        uint256 keyIndex = map._indexes[key];\n        if (keyIndex == 0) return (false, 0); // Equivalent to contains(map, key)\n        return (true, map._entries[keyIndex - 1]._value); // All indexes are 1-based\n    }\n\n    /**\n     * @dev Returns the value associated with `key`.  O(1).\n     *\n     * Requirements:\n     *\n     * - `key` must be in the map.\n     */\n    function _get(Map storage map, bytes32 key) private view returns (bytes32) {\n        uint256 keyIndex = map._indexes[key];\n        require(keyIndex != 0, \"EnumerableMap: nonexistent key\"); // Equivalent to contains(map, key)\n        return map._entries[keyIndex - 1]._value; // All indexes are 1-based\n    }\n\n    /**\n     * @dev Same as {_get}, with a custom error message when `key` is not in the map.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {_tryGet}.\n     */\n    function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) {\n        uint256 keyIndex = map._indexes[key];\n        require(keyIndex != 0, errorMessage); // Equivalent to contains(map, key)\n        return map._entries[keyIndex - 1]._value; // All indexes are 1-based\n    }\n\n    // UintToAddressMap\n\n    struct UintToAddressMap {\n        Map _inner;\n    }\n\n    /**\n     * @dev Adds a key-value pair to a map, or updates the value for an existing\n     * key. O(1).\n     *\n     * Returns true if the key was added to the map, that is if it was not\n     * already present.\n     */\n    function set(UintToAddressMap storage map, uint256 key, address value) internal returns (bool) {\n        return _set(map._inner, bytes32(key), bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the key was removed from the map, that is if it was present.\n     */\n    function remove(UintToAddressMap storage map, uint256 key) internal returns (bool) {\n        return _remove(map._inner, bytes32(key));\n    }\n\n    /**\n     * @dev Returns true if the key is in the map. O(1).\n     */\n    function contains(UintToAddressMap storage map, uint256 key) internal view returns (bool) {\n        return _contains(map._inner, bytes32(key));\n    }\n\n    /**\n     * @dev Returns the number of elements in the map. O(1).\n     */\n    function length(UintToAddressMap storage map) internal view returns (uint256) {\n        return _length(map._inner);\n    }\n\n   /**\n    * @dev Returns the element stored at position `index` in the set. O(1).\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(UintToAddressMap storage map, uint256 index) internal view returns (uint256, address) {\n        (bytes32 key, bytes32 value) = _at(map._inner, index);\n        return (uint256(key), address(uint160(uint256(value))));\n    }\n\n    /**\n     * @dev Tries to returns the value associated with `key`.  O(1).\n     * Does not revert if `key` is not in the map.\n     *\n     * _Available since v3.4._\n     */\n    function tryGet(UintToAddressMap storage map, uint256 key) internal view returns (bool, address) {\n        (bool success, bytes32 value) = _tryGet(map._inner, bytes32(key));\n        return (success, address(uint160(uint256(value))));\n    }\n\n    /**\n     * @dev Returns the value associated with `key`.  O(1).\n     *\n     * Requirements:\n     *\n     * - `key` must be in the map.\n     */\n    function get(UintToAddressMap storage map, uint256 key) internal view returns (address) {\n        return address(uint160(uint256(_get(map._inner, bytes32(key)))));\n    }\n\n    /**\n     * @dev Same as {get}, with a custom error message when `key` is not in the map.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {tryGet}.\n     */\n    function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) {\n        return address(uint160(uint256(_get(map._inner, bytes32(key), errorMessage))));\n    }\n}\n",
  "sourcePath": "@openzeppelin/contracts/utils/EnumerableMap.sol",
  "ast": {
    "absolutePath": "@openzeppelin/contracts/utils/EnumerableMap.sol",
    "exportedSymbols": {
      "EnumerableMap": [
        5451
      ]
    },
    "id": 5452,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4893,
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".0",
          "<",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:31:30"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 4894,
          "nodeType": "StructuredDocumentation",
          "src": "66:705:30",
          "text": " @dev Library for managing an enumerable variant of Solidity's\n https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n type.\n Maps have the following properties:\n - Entries are added, removed, and checked for existence in constant time\n (O(1)).\n - Entries are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableMap for EnumerableMap.UintToAddressMap;\n     // Declare a set state variable\n     EnumerableMap.UintToAddressMap private myMap;\n }\n ```\n As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n supported."
        },
        "fullyImplemented": true,
        "id": 5451,
        "linearizedBaseContracts": [
          5451
        ],
        "name": "EnumerableMap",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "EnumerableMap.MapEntry",
            "id": 4899,
            "members": [
              {
                "constant": false,
                "id": 4896,
                "mutability": "mutable",
                "name": "_key",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4899,
                "src": "1284:12:30",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 4895,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1284:7:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4898,
                "mutability": "mutable",
                "name": "_value",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4899,
                "src": "1306:14:30",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 4897,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1306:7:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "MapEntry",
            "nodeType": "StructDefinition",
            "scope": 5451,
            "src": "1258:69:30",
            "visibility": "public"
          },
          {
            "canonicalName": "EnumerableMap.Map",
            "id": 4907,
            "members": [
              {
                "constant": false,
                "id": 4902,
                "mutability": "mutable",
                "name": "_entries",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4907,
                "src": "1396:19:30",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage_ptr",
                  "typeString": "struct EnumerableMap.MapEntry[]"
                },
                "typeName": {
                  "baseType": {
                    "contractScope": null,
                    "id": 4900,
                    "name": "MapEntry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4899,
                    "src": "1396:8:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MapEntry_$4899_storage_ptr",
                      "typeString": "struct EnumerableMap.MapEntry"
                    }
                  },
                  "id": 4901,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "1396:10:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage_ptr",
                    "typeString": "struct EnumerableMap.MapEntry[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4906,
                "mutability": "mutable",
                "name": "_indexes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 4907,
                "src": "1565:37:30",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 4905,
                  "keyType": {
                    "id": 4903,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1574:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1565:28:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 4904,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1585:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Map",
            "nodeType": "StructDefinition",
            "scope": 5451,
            "src": "1333:276:30",
            "visibility": "public"
          },
          {
            "body": {
              "id": 4968,
              "nodeType": "Block",
              "src": "1918:596:30",
              "statements": [
                {
                  "assignments": [
                    4920
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4920,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4968,
                      "src": "2026:16:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4919,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2026:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4925,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4921,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4910,
                        "src": "2045:3:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 4922,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4906,
                      "src": "2045:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 4924,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4923,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4912,
                      "src": "2058:3:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2045:17:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2026:36:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4928,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4926,
                      "name": "keyIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4920,
                      "src": "2077:8:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4927,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2089:1:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2077:13:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 4966,
                    "nodeType": "Block",
                    "src": "2416:92:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4962,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4953,
                                  "name": "map",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4910,
                                  "src": "2430:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                                    "typeString": "struct EnumerableMap.Map storage pointer"
                                  }
                                },
                                "id": 4958,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_entries",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4902,
                                "src": "2430:12:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage",
                                  "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                }
                              },
                              "id": 4959,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4955,
                                  "name": "keyIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4920,
                                  "src": "2443:8:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4956,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2454:1:30",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "2443:12:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2430:26:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$4899_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref"
                              }
                            },
                            "id": 4960,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "_value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4898,
                            "src": "2430:33:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4961,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4914,
                            "src": "2466:5:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2430:41:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 4963,
                        "nodeType": "ExpressionStatement",
                        "src": "2430:41:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 4964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2492:5:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 4918,
                        "id": 4965,
                        "nodeType": "Return",
                        "src": "2485:12:30"
                      }
                    ]
                  },
                  "id": 4967,
                  "nodeType": "IfStatement",
                  "src": "2073:435:30",
                  "trueBody": {
                    "id": 4952,
                    "nodeType": "Block",
                    "src": "2092:318:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4935,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4912,
                                  "src": "2178:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4936,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4914,
                                  "src": "2191:5:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 4934,
                                "name": "MapEntry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4899,
                                "src": "2161:8:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_MapEntry_$4899_storage_ptr_$",
                                  "typeString": "type(struct EnumerableMap.MapEntry storage pointer)"
                                }
                              },
                              "id": 4937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "_key",
                                "_value"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "2161:38:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$4899_memory_ptr",
                                "typeString": "struct EnumerableMap.MapEntry memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_MapEntry_$4899_memory_ptr",
                                "typeString": "struct EnumerableMap.MapEntry memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4929,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4910,
                                "src": "2143:3:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 4932,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4902,
                              "src": "2143:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 4933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2143:17:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_MapEntry_$4899_storage_$returns$__$",
                              "typeString": "function (struct EnumerableMap.MapEntry storage ref)"
                            }
                          },
                          "id": 4938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2143:57:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4939,
                        "nodeType": "ExpressionStatement",
                        "src": "2143:57:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4940,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4910,
                                "src": "2335:3:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 4943,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4906,
                              "src": "2335:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 4944,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4942,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4912,
                              "src": "2348:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2335:17:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4945,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4910,
                                "src": "2355:3:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 4946,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4902,
                              "src": "2355:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 4947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2355:19:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2335:39:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4949,
                        "nodeType": "ExpressionStatement",
                        "src": "2335:39:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 4950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2395:4:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 4918,
                        "id": 4951,
                        "nodeType": "Return",
                        "src": "2388:11:30"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 4908,
              "nodeType": "StructuredDocumentation",
              "src": "1615:216:30",
              "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present."
            },
            "id": 4969,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_set",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4915,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4910,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4969,
                  "src": "1850:15:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4909,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4907,
                    "src": "1850:3:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4912,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4969,
                  "src": "1867:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4911,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1867:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4914,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4969,
                  "src": "1880:13:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4913,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1880:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1849:45:30"
            },
            "returnParameters": {
              "id": 4918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4917,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4969,
                  "src": "1912:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4916,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1912:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1911:6:30"
            },
            "scope": 5451,
            "src": "1836:678:30",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5049,
              "nodeType": "Block",
              "src": "2752:1447:30",
              "statements": [
                {
                  "assignments": [
                    4980
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4980,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5049,
                      "src": "2860:16:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4979,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2860:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4985,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4981,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4972,
                        "src": "2879:3:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 4982,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4906,
                      "src": "2879:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 4984,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4983,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4974,
                      "src": "2892:3:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2879:17:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2860:36:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4988,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4986,
                      "name": "keyIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4980,
                      "src": "2911:8:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4987,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2923:1:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2911:13:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5047,
                    "nodeType": "Block",
                    "src": "4156:37:30",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4177:5:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 4978,
                        "id": 5046,
                        "nodeType": "Return",
                        "src": "4170:12:30"
                      }
                    ]
                  },
                  "id": 5048,
                  "nodeType": "IfStatement",
                  "src": "2907:1286:30",
                  "trueBody": {
                    "id": 5044,
                    "nodeType": "Block",
                    "src": "2926:1224:30",
                    "statements": [
                      {
                        "assignments": [
                          4990
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4990,
                            "mutability": "mutable",
                            "name": "toDeleteIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5044,
                            "src": "3267:21:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4989,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3267:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4994,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4991,
                            "name": "keyIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4980,
                            "src": "3291:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3302:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3291:12:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3267:36:30"
                      },
                      {
                        "assignments": [
                          4996
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4996,
                            "mutability": "mutable",
                            "name": "lastIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5044,
                            "src": "3317:17:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4995,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3317:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5002,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4997,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4972,
                                "src": "3337:3:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 4998,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4902,
                              "src": "3337:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 4999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3337:19:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 5000,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3359:1:30",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3337:23:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3317:43:30"
                      },
                      {
                        "assignments": [
                          5004
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5004,
                            "mutability": "mutable",
                            "name": "lastEntry",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5044,
                            "src": "3600:26:30",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$4899_storage_ptr",
                              "typeString": "struct EnumerableMap.MapEntry"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 5003,
                              "name": "MapEntry",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4899,
                              "src": "3600:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$4899_storage_ptr",
                                "typeString": "struct EnumerableMap.MapEntry"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5009,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5005,
                              "name": "map",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4972,
                              "src": "3629:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                                "typeString": "struct EnumerableMap.Map storage pointer"
                              }
                            },
                            "id": 5006,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_entries",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4902,
                            "src": "3629:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                            }
                          },
                          "id": 5008,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5007,
                            "name": "lastIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4996,
                            "src": "3642:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3629:23:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$4899_storage",
                            "typeString": "struct EnumerableMap.MapEntry storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3600:52:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5010,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4972,
                                "src": "3744:3:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 5013,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4902,
                              "src": "3744:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 5014,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5012,
                              "name": "toDeleteIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4990,
                              "src": "3757:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3744:27:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$4899_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5015,
                            "name": "lastEntry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5004,
                            "src": "3774:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$4899_storage_ptr",
                              "typeString": "struct EnumerableMap.MapEntry storage pointer"
                            }
                          },
                          "src": "3744:39:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$4899_storage",
                            "typeString": "struct EnumerableMap.MapEntry storage ref"
                          }
                        },
                        "id": 5017,
                        "nodeType": "ExpressionStatement",
                        "src": "3744:39:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5018,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4972,
                                "src": "3849:3:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 5022,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4906,
                              "src": "3849:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 5023,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5020,
                                "name": "lastEntry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5004,
                                "src": "3862:9:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MapEntry_$4899_storage_ptr",
                                  "typeString": "struct EnumerableMap.MapEntry storage pointer"
                                }
                              },
                              "id": 5021,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_key",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4896,
                              "src": "3862:14:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3849:28:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5026,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5024,
                              "name": "toDeleteIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4990,
                              "src": "3880:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 5025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3896:1:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "3880:17:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3849:48:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5028,
                        "nodeType": "ExpressionStatement",
                        "src": "3849:48:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5029,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4972,
                                "src": "4003:3:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 5032,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4902,
                              "src": "4003:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 5033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pop",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4003:16:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 5034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4003:18:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5035,
                        "nodeType": "ExpressionStatement",
                        "src": "4003:18:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "4089:24:30",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5036,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4972,
                                "src": "4096:3:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 5037,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4906,
                              "src": "4096:12:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 5039,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5038,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4974,
                              "src": "4109:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4096:17:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5041,
                        "nodeType": "ExpressionStatement",
                        "src": "4089:24:30"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4135:4:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 4978,
                        "id": 5043,
                        "nodeType": "Return",
                        "src": "4128:11:30"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 4970,
              "nodeType": "StructuredDocumentation",
              "src": "2520:157:30",
              "text": " @dev Removes a key-value pair from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present."
            },
            "id": 5050,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4975,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4972,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5050,
                  "src": "2699:15:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4971,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4907,
                    "src": "2699:3:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4974,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5050,
                  "src": "2716:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4973,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2716:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2698:30:30"
            },
            "returnParameters": {
              "id": 4978,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4977,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5050,
                  "src": "2746:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4976,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2746:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2745:6:30"
            },
            "scope": 5451,
            "src": "2682:1517:30",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5067,
              "nodeType": "Block",
              "src": "4355:46:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5065,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5060,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5053,
                          "src": "4372:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                            "typeString": "struct EnumerableMap.Map storage pointer"
                          }
                        },
                        "id": 5061,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_indexes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4906,
                        "src": "4372:12:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 5063,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5062,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5055,
                        "src": "4385:3:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4372:17:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5064,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4393:1:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4372:22:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5059,
                  "id": 5066,
                  "nodeType": "Return",
                  "src": "4365:29:30"
                }
              ]
            },
            "documentation": {
              "id": 5051,
              "nodeType": "StructuredDocumentation",
              "src": "4205:68:30",
              "text": " @dev Returns true if the key is in the map. O(1)."
            },
            "id": 5068,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5056,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5053,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5068,
                  "src": "4297:15:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5052,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4907,
                    "src": "4297:3:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5055,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5068,
                  "src": "4314:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5054,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4314:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4296:30:30"
            },
            "returnParameters": {
              "id": 5059,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5058,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5068,
                  "src": "4349:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5057,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4349:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4348:6:30"
            },
            "scope": 5451,
            "src": "4278:123:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5080,
              "nodeType": "Block",
              "src": "4556:43:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5076,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5071,
                        "src": "4573:3:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 5077,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_entries",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4902,
                      "src": "4573:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                      }
                    },
                    "id": 5078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4573:19:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5075,
                  "id": 5079,
                  "nodeType": "Return",
                  "src": "4566:26:30"
                }
              ]
            },
            "documentation": {
              "id": 5069,
              "nodeType": "StructuredDocumentation",
              "src": "4407:79:30",
              "text": " @dev Returns the number of key-value pairs in the map. O(1)."
            },
            "id": 5081,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5072,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5071,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5081,
                  "src": "4508:15:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5070,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4907,
                    "src": "4508:3:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4507:17:30"
            },
            "returnParameters": {
              "id": 5075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5074,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5081,
                  "src": "4547:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5073,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4547:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4546:9:30"
            },
            "scope": 5451,
            "src": "4491:108:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5115,
              "nodeType": "Block",
              "src": "5027:189:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5098,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5094,
                              "name": "map",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5084,
                              "src": "5045:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                                "typeString": "struct EnumerableMap.Map storage pointer"
                              }
                            },
                            "id": 5095,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_entries",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4902,
                            "src": "5045:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                            }
                          },
                          "id": 5096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5045:19:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5097,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5086,
                          "src": "5067:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5045:27:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473",
                        "id": 5099,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5074:36:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155",
                          "typeString": "literal_string \"EnumerableMap: index out of bounds\""
                        },
                        "value": "EnumerableMap: index out of bounds"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155",
                          "typeString": "literal_string \"EnumerableMap: index out of bounds\""
                        }
                      ],
                      "id": 5093,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5037:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5037:74:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5101,
                  "nodeType": "ExpressionStatement",
                  "src": "5037:74:30"
                },
                {
                  "assignments": [
                    5103
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5103,
                      "mutability": "mutable",
                      "name": "entry",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5115,
                      "src": "5122:22:30",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MapEntry_$4899_storage_ptr",
                        "typeString": "struct EnumerableMap.MapEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5102,
                        "name": "MapEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4899,
                        "src": "5122:8:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MapEntry_$4899_storage_ptr",
                          "typeString": "struct EnumerableMap.MapEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5108,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5104,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5084,
                        "src": "5147:3:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 5105,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_entries",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4902,
                      "src": "5147:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                      }
                    },
                    "id": 5107,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5106,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5086,
                      "src": "5160:5:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5147:19:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MapEntry_$4899_storage",
                      "typeString": "struct EnumerableMap.MapEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5122:44:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5109,
                          "name": "entry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5103,
                          "src": "5184:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$4899_storage_ptr",
                            "typeString": "struct EnumerableMap.MapEntry storage pointer"
                          }
                        },
                        "id": 5110,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_key",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4896,
                        "src": "5184:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5111,
                          "name": "entry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5103,
                          "src": "5196:5:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$4899_storage_ptr",
                            "typeString": "struct EnumerableMap.MapEntry storage pointer"
                          }
                        },
                        "id": 5112,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4898,
                        "src": "5196:12:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 5113,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5183:26:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 5092,
                  "id": 5114,
                  "nodeType": "Return",
                  "src": "5176:33:30"
                }
              ]
            },
            "documentation": {
              "id": 5082,
              "nodeType": "StructuredDocumentation",
              "src": "4604:333:30",
              "text": " @dev Returns the key-value pair stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of entries inside the\n array, and it may change when more entries are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 5116,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5087,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5084,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5116,
                  "src": "4955:15:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5083,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4907,
                    "src": "4955:3:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5086,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5116,
                  "src": "4972:13:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5085,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4972:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4954:32:30"
            },
            "returnParameters": {
              "id": 5092,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5089,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5116,
                  "src": "5009:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5088,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5009:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5091,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5116,
                  "src": "5018:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5090,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5018:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5008:18:30"
            },
            "scope": 5451,
            "src": "4942:274:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5153,
              "nodeType": "Block",
              "src": "5442:220:30",
              "statements": [
                {
                  "assignments": [
                    5129
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5129,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5153,
                      "src": "5452:16:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5128,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5452:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5134,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5130,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5119,
                        "src": "5471:3:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 5131,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4906,
                      "src": "5471:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 5133,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5132,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5121,
                      "src": "5484:3:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5471:17:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5452:36:30"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5137,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5135,
                      "name": "keyIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5129,
                      "src": "5502:8:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5514:1:30",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5502:13:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5142,
                  "nodeType": "IfStatement",
                  "src": "5498:36:30",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5525:5:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5532:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "id": 5140,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "5524:10:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                        "typeString": "tuple(bool,int_const 0)"
                      }
                    },
                    "functionReturnParameters": 5127,
                    "id": 5141,
                    "nodeType": "Return",
                    "src": "5517:17:30"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 5143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5588:4:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5144,
                              "name": "map",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5119,
                              "src": "5594:3:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                                "typeString": "struct EnumerableMap.Map storage pointer"
                              }
                            },
                            "id": 5145,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_entries",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4902,
                            "src": "5594:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                            }
                          },
                          "id": 5149,
                          "indexExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5148,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5146,
                              "name": "keyIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5129,
                              "src": "5607:8:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 5147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5618:1:30",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "5607:12:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5594:26:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$4899_storage",
                            "typeString": "struct EnumerableMap.MapEntry storage ref"
                          }
                        },
                        "id": 5150,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4898,
                        "src": "5594:33:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 5151,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5587:41:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$",
                      "typeString": "tuple(bool,bytes32)"
                    }
                  },
                  "functionReturnParameters": 5127,
                  "id": 5152,
                  "nodeType": "Return",
                  "src": "5580:48:30"
                }
              ]
            },
            "documentation": {
              "id": 5117,
              "nodeType": "StructuredDocumentation",
              "src": "5222:131:30",
              "text": " @dev Tries to returns the value associated with `key`.  O(1).\n Does not revert if `key` is not in the map."
            },
            "id": 5154,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_tryGet",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5119,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5154,
                  "src": "5375:15:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5118,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4907,
                    "src": "5375:3:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5121,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5154,
                  "src": "5392:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5120,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5392:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5374:30:30"
            },
            "returnParameters": {
              "id": 5127,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5124,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5154,
                  "src": "5427:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5123,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5427:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5126,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5154,
                  "src": "5433:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5125,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5433:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5426:15:30"
            },
            "scope": 5451,
            "src": "5358:304:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5186,
              "nodeType": "Block",
              "src": "5889:232:30",
              "statements": [
                {
                  "assignments": [
                    5165
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5165,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5186,
                      "src": "5899:16:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5164,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5899:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5170,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5166,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5157,
                        "src": "5918:3:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 5167,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4906,
                      "src": "5918:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 5169,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5168,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5159,
                      "src": "5931:3:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5918:17:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5899:36:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5172,
                          "name": "keyIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5165,
                          "src": "5953:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5965:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5953:13:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579",
                        "id": 5175,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5968:32:30",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072",
                          "typeString": "literal_string \"EnumerableMap: nonexistent key\""
                        },
                        "value": "EnumerableMap: nonexistent key"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072",
                          "typeString": "literal_string \"EnumerableMap: nonexistent key\""
                        }
                      ],
                      "id": 5171,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5945:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5945:56:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5177,
                  "nodeType": "ExpressionStatement",
                  "src": "5945:56:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5178,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5157,
                          "src": "6054:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                            "typeString": "struct EnumerableMap.Map storage pointer"
                          }
                        },
                        "id": 5179,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_entries",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4902,
                        "src": "6054:12:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage",
                          "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                        }
                      },
                      "id": 5183,
                      "indexExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5182,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5180,
                          "name": "keyIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5165,
                          "src": "6067:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 5181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6078:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "6067:12:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6054:26:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MapEntry_$4899_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref"
                      }
                    },
                    "id": 5184,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "_value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 4898,
                    "src": "6054:33:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5163,
                  "id": 5185,
                  "nodeType": "Return",
                  "src": "6047:40:30"
                }
              ]
            },
            "documentation": {
              "id": 5155,
              "nodeType": "StructuredDocumentation",
              "src": "5668:141:30",
              "text": " @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."
            },
            "id": 5187,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5160,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5157,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5187,
                  "src": "5828:15:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5156,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4907,
                    "src": "5828:3:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5159,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5187,
                  "src": "5845:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5158,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5845:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5827:30:30"
            },
            "returnParameters": {
              "id": 5163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5162,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5187,
                  "src": "5880:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5161,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5880:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5879:9:30"
            },
            "scope": 5451,
            "src": "5814:307:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5221,
              "nodeType": "Block",
              "src": "6506:212:30",
              "statements": [
                {
                  "assignments": [
                    5200
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5200,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5221,
                      "src": "6516:16:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5199,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6516:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5205,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5201,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5190,
                        "src": "6535:3:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 5202,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4906,
                      "src": "6535:12:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 5204,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5203,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5192,
                      "src": "6548:3:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6535:17:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6516:36:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5207,
                          "name": "keyIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5200,
                          "src": "6570:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6582:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6570:13:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5210,
                        "name": "errorMessage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5194,
                        "src": "6585:12:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5206,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6562:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6562:36:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5212,
                  "nodeType": "ExpressionStatement",
                  "src": "6562:36:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5213,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5190,
                          "src": "6651:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                            "typeString": "struct EnumerableMap.Map storage pointer"
                          }
                        },
                        "id": 5214,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_entries",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4902,
                        "src": "6651:12:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MapEntry_$4899_storage_$dyn_storage",
                          "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                        }
                      },
                      "id": 5218,
                      "indexExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5215,
                          "name": "keyIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5200,
                          "src": "6664:8:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 5216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6675:1:30",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "6664:12:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6651:26:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MapEntry_$4899_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref"
                      }
                    },
                    "id": 5219,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "_value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 4898,
                    "src": "6651:33:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5198,
                  "id": 5220,
                  "nodeType": "Return",
                  "src": "6644:40:30"
                }
              ]
            },
            "documentation": {
              "id": 5188,
              "nodeType": "StructuredDocumentation",
              "src": "6127:271:30",
              "text": " @dev Same as {_get}, with a custom error message when `key` is not in the map.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {_tryGet}."
            },
            "id": 5222,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5195,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5190,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5222,
                  "src": "6417:15:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5189,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4907,
                    "src": "6417:3:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5192,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5222,
                  "src": "6434:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5191,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6434:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5194,
                  "mutability": "mutable",
                  "name": "errorMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5222,
                  "src": "6447:26:30",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5193,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6447:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6416:58:30"
            },
            "returnParameters": {
              "id": 5198,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5197,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5222,
                  "src": "6497:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5196,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6497:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6496:9:30"
            },
            "scope": 5451,
            "src": "6403:315:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "canonicalName": "EnumerableMap.UintToAddressMap",
            "id": 5225,
            "members": [
              {
                "constant": false,
                "id": 5224,
                "mutability": "mutable",
                "name": "_inner",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5225,
                "src": "6783:10:30",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                  "typeString": "struct EnumerableMap.Map"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 5223,
                  "name": "Map",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4907,
                  "src": "6783:3:30",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$4907_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "UintToAddressMap",
            "nodeType": "StructDefinition",
            "scope": 5451,
            "src": "6749:51:30",
            "visibility": "public"
          },
          {
            "body": {
              "id": 5256,
              "nodeType": "Block",
              "src": "7122:88:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5238,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5228,
                          "src": "7144:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 5239,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5224,
                        "src": "7144:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$4907_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5242,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5230,
                            "src": "7164:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7156:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5240,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "7156:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5243,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7156:12:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5250,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5232,
                                    "src": "7194:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5249,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7186:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 5248,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7186:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 5251,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7186:14:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 5247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7178:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 5246,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7178:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7178:23:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7170:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5244,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "7170:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5253,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7170:32:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$4907_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5237,
                      "name": "_set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4969,
                      "src": "7139:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$4907_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,bytes32) returns (bool)"
                      }
                    },
                    "id": 5254,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7139:64:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5236,
                  "id": 5255,
                  "nodeType": "Return",
                  "src": "7132:71:30"
                }
              ]
            },
            "documentation": {
              "id": 5226,
              "nodeType": "StructuredDocumentation",
              "src": "6806:216:30",
              "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present."
            },
            "id": 5257,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "set",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5233,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5228,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5257,
                  "src": "7040:28:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5227,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5225,
                    "src": "7040:16:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5230,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5257,
                  "src": "7070:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5229,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7070:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5232,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5257,
                  "src": "7083:13:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5231,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7083:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7039:58:30"
            },
            "returnParameters": {
              "id": 5236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5235,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5257,
                  "src": "7116:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5234,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7116:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7115:6:30"
            },
            "scope": 5451,
            "src": "7027:183:30",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5276,
              "nodeType": "Block",
              "src": "7452:57:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5268,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5260,
                          "src": "7477:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 5269,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5224,
                        "src": "7477:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$4907_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5272,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5262,
                            "src": "7497:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7489:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5270,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "7489:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5273,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7489:12:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$4907_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5267,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5050,
                      "src": "7469:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$4907_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 5274,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7469:33:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5266,
                  "id": 5275,
                  "nodeType": "Return",
                  "src": "7462:40:30"
                }
              ]
            },
            "documentation": {
              "id": 5258,
              "nodeType": "StructuredDocumentation",
              "src": "7216:148:30",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the key was removed from the map, that is if it was present."
            },
            "id": 5277,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5263,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5260,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5277,
                  "src": "7385:28:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5259,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5225,
                    "src": "7385:16:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5262,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5277,
                  "src": "7415:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5261,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7415:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7384:43:30"
            },
            "returnParameters": {
              "id": 5266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5265,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5277,
                  "src": "7446:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5264,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7446:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7445:6:30"
            },
            "scope": 5451,
            "src": "7369:140:30",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5296,
              "nodeType": "Block",
              "src": "7678:59:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5288,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5280,
                          "src": "7705:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 5289,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5224,
                        "src": "7705:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$4907_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5292,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5282,
                            "src": "7725:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7717:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5290,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "7717:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7717:12:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$4907_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5287,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5068,
                      "src": "7695:9:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$4907_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 5294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7695:35:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5286,
                  "id": 5295,
                  "nodeType": "Return",
                  "src": "7688:42:30"
                }
              ]
            },
            "documentation": {
              "id": 5278,
              "nodeType": "StructuredDocumentation",
              "src": "7515:68:30",
              "text": " @dev Returns true if the key is in the map. O(1)."
            },
            "id": 5297,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5283,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5280,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5297,
                  "src": "7606:28:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5279,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5225,
                    "src": "7606:16:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5282,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5297,
                  "src": "7636:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5281,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7636:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7605:43:30"
            },
            "returnParameters": {
              "id": 5286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5285,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5297,
                  "src": "7672:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5284,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7672:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7671:6:30"
            },
            "scope": 5451,
            "src": "7588:149:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5310,
              "nodeType": "Block",
              "src": "7898:43:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5306,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5300,
                          "src": "7923:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 5307,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5224,
                        "src": "7923:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$4907_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$4907_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      ],
                      "id": 5305,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5081,
                      "src": "7915:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$4907_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 5308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7915:19:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5304,
                  "id": 5309,
                  "nodeType": "Return",
                  "src": "7908:26:30"
                }
              ]
            },
            "documentation": {
              "id": 5298,
              "nodeType": "StructuredDocumentation",
              "src": "7743:72:30",
              "text": " @dev Returns the number of elements in the map. O(1)."
            },
            "id": 5311,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5301,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5300,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5311,
                  "src": "7836:28:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5299,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5225,
                    "src": "7836:16:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7835:30:30"
            },
            "returnParameters": {
              "id": 5304,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5303,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5311,
                  "src": "7889:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5302,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7889:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7888:9:30"
            },
            "scope": 5451,
            "src": "7820:121:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5349,
              "nodeType": "Block",
              "src": "8367:135:30",
              "statements": [
                {
                  "assignments": [
                    5324,
                    5326
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5324,
                      "mutability": "mutable",
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5349,
                      "src": "8378:11:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5323,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8378:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5326,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5349,
                      "src": "8391:13:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5325,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8391:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5332,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5328,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5314,
                          "src": "8412:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 5329,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5224,
                        "src": "8412:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$4907_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5330,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5316,
                        "src": "8424:5:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$4907_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5327,
                      "name": "_at",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5116,
                      "src": "8408:3:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$4907_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,uint256) view returns (bytes32,bytes32)"
                      }
                    },
                    "id": 5331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8408:22:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8377:53:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5335,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5324,
                            "src": "8456:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 5334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8448:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 5333,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8448:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8448:12:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5343,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5326,
                                    "src": "8486:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 5342,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8478:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 5341,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8478:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 5344,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8478:14:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 5340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8470:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": {
                                "id": 5339,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "8470:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8470:23:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "id": 5338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8462:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 5337,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8462:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5346,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8462:32:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "id": 5347,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "8447:48:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_address_payable_$",
                      "typeString": "tuple(uint256,address payable)"
                    }
                  },
                  "functionReturnParameters": 5322,
                  "id": 5348,
                  "nodeType": "Return",
                  "src": "8440:55:30"
                }
              ]
            },
            "documentation": {
              "id": 5312,
              "nodeType": "StructuredDocumentation",
              "src": "7946:318:30",
              "text": " @dev Returns the element stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 5350,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5317,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5314,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5350,
                  "src": "8281:28:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5313,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5225,
                    "src": "8281:16:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5316,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5350,
                  "src": "8311:13:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5315,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8311:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8280:45:30"
            },
            "returnParameters": {
              "id": 5322,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5319,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5350,
                  "src": "8349:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5318,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8349:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5321,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5350,
                  "src": "8358:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5320,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8358:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8348:18:30"
            },
            "scope": 5451,
            "src": "8269:233:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5388,
              "nodeType": "Block",
              "src": "8779:142:30",
              "statements": [
                {
                  "assignments": [
                    5363,
                    5365
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5363,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5388,
                      "src": "8790:12:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5362,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "8790:4:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5365,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5388,
                      "src": "8804:13:30",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5364,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8804:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5374,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5367,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5353,
                          "src": "8829:3:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 5368,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5224,
                        "src": "8829:10:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$4907_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5371,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5355,
                            "src": "8849:3:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8841:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5369,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8841:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8841:12:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$4907_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5366,
                      "name": "_tryGet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5154,
                      "src": "8821:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$4907_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool,bytes32)"
                      }
                    },
                    "id": 5373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8821:33:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$",
                      "typeString": "tuple(bool,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8789:65:30"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 5375,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5363,
                        "src": "8872:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5382,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5365,
                                    "src": "8905:5:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 5381,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8897:7:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 5380,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8897:7:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 5383,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8897:14:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 5379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8889:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": {
                                "id": 5378,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "8889:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5384,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8889:23:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "id": 5377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8881:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 5376,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8881:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5385,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8881:32:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "id": 5386,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "8871:43:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_address_payable_$",
                      "typeString": "tuple(bool,address payable)"
                    }
                  },
                  "functionReturnParameters": 5361,
                  "id": 5387,
                  "nodeType": "Return",
                  "src": "8864:50:30"
                }
              ]
            },
            "documentation": {
              "id": 5351,
              "nodeType": "StructuredDocumentation",
              "src": "8508:169:30",
              "text": " @dev Tries to returns the value associated with `key`.  O(1).\n Does not revert if `key` is not in the map.\n _Available since v3.4._"
            },
            "id": 5389,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tryGet",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5353,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5389,
                  "src": "8698:28:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5352,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5225,
                    "src": "8698:16:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5355,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5389,
                  "src": "8728:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5354,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8728:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8697:43:30"
            },
            "returnParameters": {
              "id": 5361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5358,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5389,
                  "src": "8764:4:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5357,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8764:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5360,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5389,
                  "src": "8770:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5359,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8770:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8763:15:30"
            },
            "scope": 5451,
            "src": "8682:239:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5417,
              "nodeType": "Block",
              "src": "9161:81:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5406,
                                      "name": "map",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5392,
                                      "src": "9207:3:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                                        "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                                      }
                                    },
                                    "id": 5407,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_inner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5224,
                                    "src": "9207:10:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Map_$4907_storage",
                                      "typeString": "struct EnumerableMap.Map storage ref"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 5410,
                                        "name": "key",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5394,
                                        "src": "9227:3:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 5409,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9219:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": {
                                        "id": 5408,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9219:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 5411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9219:12:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Map_$4907_storage",
                                      "typeString": "struct EnumerableMap.Map storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 5405,
                                  "name": "_get",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    5187,
                                    5222
                                  ],
                                  "referencedDeclaration": 5187,
                                  "src": "9202:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$4907_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$",
                                    "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bytes32)"
                                  }
                                },
                                "id": 5412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9202:30:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 5404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9194:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 5403,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9194:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9194:39:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9186:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint160_$",
                            "typeString": "type(uint160)"
                          },
                          "typeName": {
                            "id": 5401,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "9186:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5414,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9186:48:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 5400,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "9178:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 5399,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9178:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 5415,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9178:57:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 5398,
                  "id": 5416,
                  "nodeType": "Return",
                  "src": "9171:64:30"
                }
              ]
            },
            "documentation": {
              "id": 5390,
              "nodeType": "StructuredDocumentation",
              "src": "8927:141:30",
              "text": " @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."
            },
            "id": 5418,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5395,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5392,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5418,
                  "src": "9086:28:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5391,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5225,
                    "src": "9086:16:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5394,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5418,
                  "src": "9116:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5393,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9116:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9085:43:30"
            },
            "returnParameters": {
              "id": 5398,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5397,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5418,
                  "src": "9152:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5396,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9152:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9151:9:30"
            },
            "scope": 5451,
            "src": "9073:169:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5449,
              "nodeType": "Block",
              "src": "9638:95:30",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5437,
                                      "name": "map",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5421,
                                      "src": "9684:3:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                                        "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                                      }
                                    },
                                    "id": 5438,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_inner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5224,
                                    "src": "9684:10:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Map_$4907_storage",
                                      "typeString": "struct EnumerableMap.Map storage ref"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 5441,
                                        "name": "key",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5423,
                                        "src": "9704:3:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 5440,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9696:7:30",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": {
                                        "id": 5439,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9696:7:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 5442,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9696:12:30",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5443,
                                    "name": "errorMessage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5425,
                                    "src": "9710:12:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Map_$4907_storage",
                                      "typeString": "struct EnumerableMap.Map storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 5436,
                                  "name": "_get",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    5187,
                                    5222
                                  ],
                                  "referencedDeclaration": 5222,
                                  "src": "9679:4:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$4907_storage_ptr_$_t_bytes32_$_t_string_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,string memory) view returns (bytes32)"
                                  }
                                },
                                "id": 5444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9679:44:30",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 5435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9671:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 5434,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9671:7:30",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9671:53:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9663:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint160_$",
                            "typeString": "type(uint160)"
                          },
                          "typeName": {
                            "id": 5432,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "9663:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9663:62:30",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 5431,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "9655:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 5430,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9655:7:30",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 5447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9655:71:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 5429,
                  "id": 5448,
                  "nodeType": "Return",
                  "src": "9648:78:30"
                }
              ]
            },
            "documentation": {
              "id": 5419,
              "nodeType": "StructuredDocumentation",
              "src": "9248:269:30",
              "text": " @dev Same as {get}, with a custom error message when `key` is not in the map.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryGet}."
            },
            "id": 5450,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5421,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5450,
                  "src": "9535:28:30",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5420,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5225,
                    "src": "9535:16:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$5225_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5423,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5450,
                  "src": "9565:11:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5422,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9565:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5425,
                  "mutability": "mutable",
                  "name": "errorMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5450,
                  "src": "9578:26:30",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5424,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9578:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9534:71:30"
            },
            "returnParameters": {
              "id": 5429,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5428,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5450,
                  "src": "9629:7:30",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5427,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9629:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9628:9:30"
            },
            "scope": 5451,
            "src": "9522:211:30",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 5452,
        "src": "772:8963:30"
      }
    ],
    "src": "33:9703:30"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "@openzeppelin/contracts/utils/EnumerableMap.sol",
      "exportedSymbols": {
        "EnumerableMap": [
          5451
        ]
      },
      "license": "MIT"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            ">=",
            "0.6",
            ".0",
            "<",
            "0.8",
            ".0"
          ]
        },
        "id": 4893,
        "name": "PragmaDirective",
        "src": "33:31:30"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "library",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            5451
          ],
          "name": "EnumerableMap",
          "scope": 5452
        },
        "children": [
          {
            "attributes": {
              "text": " @dev Library for managing an enumerable variant of Solidity's\n https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n type.\n Maps have the following properties:\n - Entries are added, removed, and checked for existence in constant time\n (O(1)).\n - Entries are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableMap for EnumerableMap.UintToAddressMap;\n     // Declare a set state variable\n     EnumerableMap.UintToAddressMap private myMap;\n }\n ```\n As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n supported."
            },
            "id": 4894,
            "name": "StructuredDocumentation",
            "src": "66:705:30"
          },
          {
            "attributes": {
              "canonicalName": "EnumerableMap.MapEntry",
              "name": "MapEntry",
              "scope": 5451,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_key",
                  "overrides": null,
                  "scope": 4899,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes32",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 4895,
                    "name": "ElementaryTypeName",
                    "src": "1284:7:30"
                  }
                ],
                "id": 4896,
                "name": "VariableDeclaration",
                "src": "1284:12:30"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_value",
                  "overrides": null,
                  "scope": 4899,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes32",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 4897,
                    "name": "ElementaryTypeName",
                    "src": "1306:7:30"
                  }
                ],
                "id": 4898,
                "name": "VariableDeclaration",
                "src": "1306:14:30"
              }
            ],
            "id": 4899,
            "name": "StructDefinition",
            "src": "1258:69:30"
          },
          {
            "attributes": {
              "canonicalName": "EnumerableMap.Map",
              "name": "Map",
              "scope": 5451,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_entries",
                  "overrides": null,
                  "scope": 4907,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "struct EnumerableMap.MapEntry[]",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "length": null,
                      "type": "struct EnumerableMap.MapEntry[]"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "MapEntry",
                          "referencedDeclaration": 4899,
                          "type": "struct EnumerableMap.MapEntry"
                        },
                        "id": 4900,
                        "name": "UserDefinedTypeName",
                        "src": "1396:8:30"
                      }
                    ],
                    "id": 4901,
                    "name": "ArrayTypeName",
                    "src": "1396:10:30"
                  }
                ],
                "id": 4902,
                "name": "VariableDeclaration",
                "src": "1396:19:30"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_indexes",
                  "overrides": null,
                  "scope": 4907,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "mapping(bytes32 => uint256)",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "type": "mapping(bytes32 => uint256)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 4903,
                        "name": "ElementaryTypeName",
                        "src": "1574:7:30"
                      },
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 4904,
                        "name": "ElementaryTypeName",
                        "src": "1585:7:30"
                      }
                    ],
                    "id": 4905,
                    "name": "Mapping",
                    "src": "1565:28:30"
                  }
                ],
                "id": 4906,
                "name": "VariableDeclaration",
                "src": "1565:37:30"
              }
            ],
            "id": 4907,
            "name": "StructDefinition",
            "src": "1333:276:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_set",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present."
                },
                "id": 4908,
                "name": "StructuredDocumentation",
                "src": "1615:216:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 4969,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.Map",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Map",
                          "referencedDeclaration": 4907,
                          "type": "struct EnumerableMap.Map"
                        },
                        "id": 4909,
                        "name": "UserDefinedTypeName",
                        "src": "1850:3:30"
                      }
                    ],
                    "id": 4910,
                    "name": "VariableDeclaration",
                    "src": "1850:15:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "key",
                      "overrides": null,
                      "scope": 4969,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 4911,
                        "name": "ElementaryTypeName",
                        "src": "1867:7:30"
                      }
                    ],
                    "id": 4912,
                    "name": "VariableDeclaration",
                    "src": "1867:11:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 4969,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 4913,
                        "name": "ElementaryTypeName",
                        "src": "1880:7:30"
                      }
                    ],
                    "id": 4914,
                    "name": "VariableDeclaration",
                    "src": "1880:13:30"
                  }
                ],
                "id": 4915,
                "name": "ParameterList",
                "src": "1849:45:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 4969,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4916,
                        "name": "ElementaryTypeName",
                        "src": "1912:4:30"
                      }
                    ],
                    "id": 4917,
                    "name": "VariableDeclaration",
                    "src": "1912:4:30"
                  }
                ],
                "id": 4918,
                "name": "ParameterList",
                "src": "1911:6:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        4920
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "keyIndex",
                          "overrides": null,
                          "scope": 4968,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 4919,
                            "name": "ElementaryTypeName",
                            "src": "2026:7:30"
                          }
                        ],
                        "id": 4920,
                        "name": "VariableDeclaration",
                        "src": "2026:16:30"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_indexes",
                              "referencedDeclaration": 4906,
                              "type": "mapping(bytes32 => uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4910,
                                  "type": "struct EnumerableMap.Map storage pointer",
                                  "value": "map"
                                },
                                "id": 4921,
                                "name": "Identifier",
                                "src": "2045:3:30"
                              }
                            ],
                            "id": 4922,
                            "name": "MemberAccess",
                            "src": "2045:12:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4912,
                              "type": "bytes32",
                              "value": "key"
                            },
                            "id": 4923,
                            "name": "Identifier",
                            "src": "2058:3:30"
                          }
                        ],
                        "id": 4924,
                        "name": "IndexAccess",
                        "src": "2045:17:30"
                      }
                    ],
                    "id": 4925,
                    "name": "VariableDeclarationStatement",
                    "src": "2026:36:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4920,
                              "type": "uint256",
                              "value": "keyIndex"
                            },
                            "id": 4926,
                            "name": "Identifier",
                            "src": "2077:8:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4927,
                            "name": "Literal",
                            "src": "2089:1:30"
                          }
                        ],
                        "id": 4928,
                        "name": "BinaryOperation",
                        "src": "2077:13:30"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_struct$_MapEntry_$4899_memory_ptr",
                                          "typeString": "struct EnumerableMap.MapEntry memory"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "push",
                                      "referencedDeclaration": null,
                                      "type": "function (struct EnumerableMap.MapEntry storage ref)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_entries",
                                          "referencedDeclaration": 4902,
                                          "type": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4910,
                                              "type": "struct EnumerableMap.Map storage pointer",
                                              "value": "map"
                                            },
                                            "id": 4929,
                                            "name": "Identifier",
                                            "src": "2143:3:30"
                                          }
                                        ],
                                        "id": 4932,
                                        "name": "MemberAccess",
                                        "src": "2143:12:30"
                                      }
                                    ],
                                    "id": 4933,
                                    "name": "MemberAccess",
                                    "src": "2143:17:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": true,
                                      "lValueRequested": false,
                                      "names": [
                                        "_key",
                                        "_value"
                                      ],
                                      "tryCall": false,
                                      "type": "struct EnumerableMap.MapEntry memory",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4899,
                                          "type": "type(struct EnumerableMap.MapEntry storage pointer)",
                                          "value": "MapEntry"
                                        },
                                        "id": 4934,
                                        "name": "Identifier",
                                        "src": "2161:8:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4912,
                                          "type": "bytes32",
                                          "value": "key"
                                        },
                                        "id": 4935,
                                        "name": "Identifier",
                                        "src": "2178:3:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4914,
                                          "type": "bytes32",
                                          "value": "value"
                                        },
                                        "id": 4936,
                                        "name": "Identifier",
                                        "src": "2191:5:30"
                                      }
                                    ],
                                    "id": 4937,
                                    "name": "FunctionCall",
                                    "src": "2161:38:30"
                                  }
                                ],
                                "id": 4938,
                                "name": "FunctionCall",
                                "src": "2143:57:30"
                              }
                            ],
                            "id": 4939,
                            "name": "ExpressionStatement",
                            "src": "2143:57:30"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_indexes",
                                          "referencedDeclaration": 4906,
                                          "type": "mapping(bytes32 => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4910,
                                              "type": "struct EnumerableMap.Map storage pointer",
                                              "value": "map"
                                            },
                                            "id": 4940,
                                            "name": "Identifier",
                                            "src": "2335:3:30"
                                          }
                                        ],
                                        "id": 4943,
                                        "name": "MemberAccess",
                                        "src": "2335:12:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4912,
                                          "type": "bytes32",
                                          "value": "key"
                                        },
                                        "id": 4942,
                                        "name": "Identifier",
                                        "src": "2348:3:30"
                                      }
                                    ],
                                    "id": 4944,
                                    "name": "IndexAccess",
                                    "src": "2335:17:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_entries",
                                          "referencedDeclaration": 4902,
                                          "type": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4910,
                                              "type": "struct EnumerableMap.Map storage pointer",
                                              "value": "map"
                                            },
                                            "id": 4945,
                                            "name": "Identifier",
                                            "src": "2355:3:30"
                                          }
                                        ],
                                        "id": 4946,
                                        "name": "MemberAccess",
                                        "src": "2355:12:30"
                                      }
                                    ],
                                    "id": 4947,
                                    "name": "MemberAccess",
                                    "src": "2355:19:30"
                                  }
                                ],
                                "id": 4948,
                                "name": "Assignment",
                                "src": "2335:39:30"
                              }
                            ],
                            "id": 4949,
                            "name": "ExpressionStatement",
                            "src": "2335:39:30"
                          },
                          {
                            "attributes": {
                              "functionReturnParameters": 4918
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "74727565",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "true"
                                },
                                "id": 4950,
                                "name": "Literal",
                                "src": "2395:4:30"
                              }
                            ],
                            "id": 4951,
                            "name": "Return",
                            "src": "2388:11:30"
                          }
                        ],
                        "id": 4952,
                        "name": "Block",
                        "src": "2092:318:30"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "bytes32"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "_value",
                                      "referencedDeclaration": 4898,
                                      "type": "bytes32"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct EnumerableMap.MapEntry storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "_entries",
                                              "referencedDeclaration": 4902,
                                              "type": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 4910,
                                                  "type": "struct EnumerableMap.Map storage pointer",
                                                  "value": "map"
                                                },
                                                "id": 4953,
                                                "name": "Identifier",
                                                "src": "2430:3:30"
                                              }
                                            ],
                                            "id": 4958,
                                            "name": "MemberAccess",
                                            "src": "2430:12:30"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "-",
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 4920,
                                                  "type": "uint256",
                                                  "value": "keyIndex"
                                                },
                                                "id": 4955,
                                                "name": "Identifier",
                                                "src": "2443:8:30"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "31",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 1",
                                                  "value": "1"
                                                },
                                                "id": 4956,
                                                "name": "Literal",
                                                "src": "2454:1:30"
                                              }
                                            ],
                                            "id": 4957,
                                            "name": "BinaryOperation",
                                            "src": "2443:12:30"
                                          }
                                        ],
                                        "id": 4959,
                                        "name": "IndexAccess",
                                        "src": "2430:26:30"
                                      }
                                    ],
                                    "id": 4960,
                                    "name": "MemberAccess",
                                    "src": "2430:33:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4914,
                                      "type": "bytes32",
                                      "value": "value"
                                    },
                                    "id": 4961,
                                    "name": "Identifier",
                                    "src": "2466:5:30"
                                  }
                                ],
                                "id": 4962,
                                "name": "Assignment",
                                "src": "2430:41:30"
                              }
                            ],
                            "id": 4963,
                            "name": "ExpressionStatement",
                            "src": "2430:41:30"
                          },
                          {
                            "attributes": {
                              "functionReturnParameters": 4918
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 4964,
                                "name": "Literal",
                                "src": "2492:5:30"
                              }
                            ],
                            "id": 4965,
                            "name": "Return",
                            "src": "2485:12:30"
                          }
                        ],
                        "id": 4966,
                        "name": "Block",
                        "src": "2416:92:30"
                      }
                    ],
                    "id": 4967,
                    "name": "IfStatement",
                    "src": "2073:435:30"
                  }
                ],
                "id": 4968,
                "name": "Block",
                "src": "1918:596:30"
              }
            ],
            "id": 4969,
            "name": "FunctionDefinition",
            "src": "1836:678:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_remove",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Removes a key-value pair from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present."
                },
                "id": 4970,
                "name": "StructuredDocumentation",
                "src": "2520:157:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5050,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.Map",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Map",
                          "referencedDeclaration": 4907,
                          "type": "struct EnumerableMap.Map"
                        },
                        "id": 4971,
                        "name": "UserDefinedTypeName",
                        "src": "2699:3:30"
                      }
                    ],
                    "id": 4972,
                    "name": "VariableDeclaration",
                    "src": "2699:15:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "key",
                      "overrides": null,
                      "scope": 5050,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 4973,
                        "name": "ElementaryTypeName",
                        "src": "2716:7:30"
                      }
                    ],
                    "id": 4974,
                    "name": "VariableDeclaration",
                    "src": "2716:11:30"
                  }
                ],
                "id": 4975,
                "name": "ParameterList",
                "src": "2698:30:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5050,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4976,
                        "name": "ElementaryTypeName",
                        "src": "2746:4:30"
                      }
                    ],
                    "id": 4977,
                    "name": "VariableDeclaration",
                    "src": "2746:4:30"
                  }
                ],
                "id": 4978,
                "name": "ParameterList",
                "src": "2745:6:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        4980
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "keyIndex",
                          "overrides": null,
                          "scope": 5049,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 4979,
                            "name": "ElementaryTypeName",
                            "src": "2860:7:30"
                          }
                        ],
                        "id": 4980,
                        "name": "VariableDeclaration",
                        "src": "2860:16:30"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_indexes",
                              "referencedDeclaration": 4906,
                              "type": "mapping(bytes32 => uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4972,
                                  "type": "struct EnumerableMap.Map storage pointer",
                                  "value": "map"
                                },
                                "id": 4981,
                                "name": "Identifier",
                                "src": "2879:3:30"
                              }
                            ],
                            "id": 4982,
                            "name": "MemberAccess",
                            "src": "2879:12:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4974,
                              "type": "bytes32",
                              "value": "key"
                            },
                            "id": 4983,
                            "name": "Identifier",
                            "src": "2892:3:30"
                          }
                        ],
                        "id": 4984,
                        "name": "IndexAccess",
                        "src": "2879:17:30"
                      }
                    ],
                    "id": 4985,
                    "name": "VariableDeclarationStatement",
                    "src": "2860:36:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4980,
                              "type": "uint256",
                              "value": "keyIndex"
                            },
                            "id": 4986,
                            "name": "Identifier",
                            "src": "2911:8:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4987,
                            "name": "Literal",
                            "src": "2923:1:30"
                          }
                        ],
                        "id": 4988,
                        "name": "BinaryOperation",
                        "src": "2911:13:30"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                4990
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "toDeleteIndex",
                                  "overrides": null,
                                  "scope": 5044,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 4989,
                                    "name": "ElementaryTypeName",
                                    "src": "3267:7:30"
                                  }
                                ],
                                "id": 4990,
                                "name": "VariableDeclaration",
                                "src": "3267:21:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4980,
                                      "type": "uint256",
                                      "value": "keyIndex"
                                    },
                                    "id": 4991,
                                    "name": "Identifier",
                                    "src": "3291:8:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 4992,
                                    "name": "Literal",
                                    "src": "3302:1:30"
                                  }
                                ],
                                "id": 4993,
                                "name": "BinaryOperation",
                                "src": "3291:12:30"
                              }
                            ],
                            "id": 4994,
                            "name": "VariableDeclarationStatement",
                            "src": "3267:36:30"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                4996
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "lastIndex",
                                  "overrides": null,
                                  "scope": 5044,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 4995,
                                    "name": "ElementaryTypeName",
                                    "src": "3317:7:30"
                                  }
                                ],
                                "id": 4996,
                                "name": "VariableDeclaration",
                                "src": "3317:17:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_entries",
                                          "referencedDeclaration": 4902,
                                          "type": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4972,
                                              "type": "struct EnumerableMap.Map storage pointer",
                                              "value": "map"
                                            },
                                            "id": 4997,
                                            "name": "Identifier",
                                            "src": "3337:3:30"
                                          }
                                        ],
                                        "id": 4998,
                                        "name": "MemberAccess",
                                        "src": "3337:12:30"
                                      }
                                    ],
                                    "id": 4999,
                                    "name": "MemberAccess",
                                    "src": "3337:19:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 5000,
                                    "name": "Literal",
                                    "src": "3359:1:30"
                                  }
                                ],
                                "id": 5001,
                                "name": "BinaryOperation",
                                "src": "3337:23:30"
                              }
                            ],
                            "id": 5002,
                            "name": "VariableDeclarationStatement",
                            "src": "3317:43:30"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                5004
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "lastEntry",
                                  "overrides": null,
                                  "scope": 5044,
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "type": "struct EnumerableMap.MapEntry",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "contractScope": null,
                                      "name": "MapEntry",
                                      "referencedDeclaration": 4899,
                                      "type": "struct EnumerableMap.MapEntry"
                                    },
                                    "id": 5003,
                                    "name": "UserDefinedTypeName",
                                    "src": "3600:8:30"
                                  }
                                ],
                                "id": 5004,
                                "name": "VariableDeclaration",
                                "src": "3600:26:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct EnumerableMap.MapEntry storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "_entries",
                                      "referencedDeclaration": 4902,
                                      "type": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4972,
                                          "type": "struct EnumerableMap.Map storage pointer",
                                          "value": "map"
                                        },
                                        "id": 5005,
                                        "name": "Identifier",
                                        "src": "3629:3:30"
                                      }
                                    ],
                                    "id": 5006,
                                    "name": "MemberAccess",
                                    "src": "3629:12:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4996,
                                      "type": "uint256",
                                      "value": "lastIndex"
                                    },
                                    "id": 5007,
                                    "name": "Identifier",
                                    "src": "3642:9:30"
                                  }
                                ],
                                "id": 5008,
                                "name": "IndexAccess",
                                "src": "3629:23:30"
                              }
                            ],
                            "id": 5009,
                            "name": "VariableDeclarationStatement",
                            "src": "3600:52:30"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "struct EnumerableMap.MapEntry storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "struct EnumerableMap.MapEntry storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_entries",
                                          "referencedDeclaration": 4902,
                                          "type": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4972,
                                              "type": "struct EnumerableMap.Map storage pointer",
                                              "value": "map"
                                            },
                                            "id": 5010,
                                            "name": "Identifier",
                                            "src": "3744:3:30"
                                          }
                                        ],
                                        "id": 5013,
                                        "name": "MemberAccess",
                                        "src": "3744:12:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4990,
                                          "type": "uint256",
                                          "value": "toDeleteIndex"
                                        },
                                        "id": 5012,
                                        "name": "Identifier",
                                        "src": "3757:13:30"
                                      }
                                    ],
                                    "id": 5014,
                                    "name": "IndexAccess",
                                    "src": "3744:27:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5004,
                                      "type": "struct EnumerableMap.MapEntry storage pointer",
                                      "value": "lastEntry"
                                    },
                                    "id": 5015,
                                    "name": "Identifier",
                                    "src": "3774:9:30"
                                  }
                                ],
                                "id": 5016,
                                "name": "Assignment",
                                "src": "3744:39:30"
                              }
                            ],
                            "id": 5017,
                            "name": "ExpressionStatement",
                            "src": "3744:39:30"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_indexes",
                                          "referencedDeclaration": 4906,
                                          "type": "mapping(bytes32 => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4972,
                                              "type": "struct EnumerableMap.Map storage pointer",
                                              "value": "map"
                                            },
                                            "id": 5018,
                                            "name": "Identifier",
                                            "src": "3849:3:30"
                                          }
                                        ],
                                        "id": 5022,
                                        "name": "MemberAccess",
                                        "src": "3849:12:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_key",
                                          "referencedDeclaration": 4896,
                                          "type": "bytes32"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5004,
                                              "type": "struct EnumerableMap.MapEntry storage pointer",
                                              "value": "lastEntry"
                                            },
                                            "id": 5020,
                                            "name": "Identifier",
                                            "src": "3862:9:30"
                                          }
                                        ],
                                        "id": 5021,
                                        "name": "MemberAccess",
                                        "src": "3862:14:30"
                                      }
                                    ],
                                    "id": 5023,
                                    "name": "IndexAccess",
                                    "src": "3849:28:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "+",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4990,
                                          "type": "uint256",
                                          "value": "toDeleteIndex"
                                        },
                                        "id": 5024,
                                        "name": "Identifier",
                                        "src": "3880:13:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 5025,
                                        "name": "Literal",
                                        "src": "3896:1:30"
                                      }
                                    ],
                                    "id": 5026,
                                    "name": "BinaryOperation",
                                    "src": "3880:17:30"
                                  }
                                ],
                                "id": 5027,
                                "name": "Assignment",
                                "src": "3849:48:30"
                              }
                            ],
                            "id": 5028,
                            "name": "ExpressionStatement",
                            "src": "3849:48:30"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "pop",
                                      "referencedDeclaration": null,
                                      "type": "function ()"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_entries",
                                          "referencedDeclaration": 4902,
                                          "type": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4972,
                                              "type": "struct EnumerableMap.Map storage pointer",
                                              "value": "map"
                                            },
                                            "id": 5029,
                                            "name": "Identifier",
                                            "src": "4003:3:30"
                                          }
                                        ],
                                        "id": 5032,
                                        "name": "MemberAccess",
                                        "src": "4003:12:30"
                                      }
                                    ],
                                    "id": 5033,
                                    "name": "MemberAccess",
                                    "src": "4003:16:30"
                                  }
                                ],
                                "id": 5034,
                                "name": "FunctionCall",
                                "src": "4003:18:30"
                              }
                            ],
                            "id": 5035,
                            "name": "ExpressionStatement",
                            "src": "4003:18:30"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "delete",
                                  "prefix": true,
                                  "type": "tuple()"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_indexes",
                                          "referencedDeclaration": 4906,
                                          "type": "mapping(bytes32 => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4972,
                                              "type": "struct EnumerableMap.Map storage pointer",
                                              "value": "map"
                                            },
                                            "id": 5036,
                                            "name": "Identifier",
                                            "src": "4096:3:30"
                                          }
                                        ],
                                        "id": 5037,
                                        "name": "MemberAccess",
                                        "src": "4096:12:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4974,
                                          "type": "bytes32",
                                          "value": "key"
                                        },
                                        "id": 5038,
                                        "name": "Identifier",
                                        "src": "4109:3:30"
                                      }
                                    ],
                                    "id": 5039,
                                    "name": "IndexAccess",
                                    "src": "4096:17:30"
                                  }
                                ],
                                "id": 5040,
                                "name": "UnaryOperation",
                                "src": "4089:24:30"
                              }
                            ],
                            "id": 5041,
                            "name": "ExpressionStatement",
                            "src": "4089:24:30"
                          },
                          {
                            "attributes": {
                              "functionReturnParameters": 4978
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "74727565",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "true"
                                },
                                "id": 5042,
                                "name": "Literal",
                                "src": "4135:4:30"
                              }
                            ],
                            "id": 5043,
                            "name": "Return",
                            "src": "4128:11:30"
                          }
                        ],
                        "id": 5044,
                        "name": "Block",
                        "src": "2926:1224:30"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 4978
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 5045,
                                "name": "Literal",
                                "src": "4177:5:30"
                              }
                            ],
                            "id": 5046,
                            "name": "Return",
                            "src": "4170:12:30"
                          }
                        ],
                        "id": 5047,
                        "name": "Block",
                        "src": "4156:37:30"
                      }
                    ],
                    "id": 5048,
                    "name": "IfStatement",
                    "src": "2907:1286:30"
                  }
                ],
                "id": 5049,
                "name": "Block",
                "src": "2752:1447:30"
              }
            ],
            "id": 5050,
            "name": "FunctionDefinition",
            "src": "2682:1517:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_contains",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns true if the key is in the map. O(1)."
                },
                "id": 5051,
                "name": "StructuredDocumentation",
                "src": "4205:68:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5068,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.Map",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Map",
                          "referencedDeclaration": 4907,
                          "type": "struct EnumerableMap.Map"
                        },
                        "id": 5052,
                        "name": "UserDefinedTypeName",
                        "src": "4297:3:30"
                      }
                    ],
                    "id": 5053,
                    "name": "VariableDeclaration",
                    "src": "4297:15:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "key",
                      "overrides": null,
                      "scope": 5068,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5054,
                        "name": "ElementaryTypeName",
                        "src": "4314:7:30"
                      }
                    ],
                    "id": 5055,
                    "name": "VariableDeclaration",
                    "src": "4314:11:30"
                  }
                ],
                "id": 5056,
                "name": "ParameterList",
                "src": "4296:30:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5068,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5057,
                        "name": "ElementaryTypeName",
                        "src": "4349:4:30"
                      }
                    ],
                    "id": 5058,
                    "name": "VariableDeclaration",
                    "src": "4349:4:30"
                  }
                ],
                "id": 5059,
                "name": "ParameterList",
                "src": "4348:6:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5059
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "_indexes",
                                  "referencedDeclaration": 4906,
                                  "type": "mapping(bytes32 => uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5053,
                                      "type": "struct EnumerableMap.Map storage pointer",
                                      "value": "map"
                                    },
                                    "id": 5060,
                                    "name": "Identifier",
                                    "src": "4372:3:30"
                                  }
                                ],
                                "id": 5061,
                                "name": "MemberAccess",
                                "src": "4372:12:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5055,
                                  "type": "bytes32",
                                  "value": "key"
                                },
                                "id": 5062,
                                "name": "Identifier",
                                "src": "4385:3:30"
                              }
                            ],
                            "id": 5063,
                            "name": "IndexAccess",
                            "src": "4372:17:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 5064,
                            "name": "Literal",
                            "src": "4393:1:30"
                          }
                        ],
                        "id": 5065,
                        "name": "BinaryOperation",
                        "src": "4372:22:30"
                      }
                    ],
                    "id": 5066,
                    "name": "Return",
                    "src": "4365:29:30"
                  }
                ],
                "id": 5067,
                "name": "Block",
                "src": "4355:46:30"
              }
            ],
            "id": 5068,
            "name": "FunctionDefinition",
            "src": "4278:123:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_length",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the number of key-value pairs in the map. O(1)."
                },
                "id": 5069,
                "name": "StructuredDocumentation",
                "src": "4407:79:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5081,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.Map",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Map",
                          "referencedDeclaration": 4907,
                          "type": "struct EnumerableMap.Map"
                        },
                        "id": 5070,
                        "name": "UserDefinedTypeName",
                        "src": "4508:3:30"
                      }
                    ],
                    "id": 5071,
                    "name": "VariableDeclaration",
                    "src": "4508:15:30"
                  }
                ],
                "id": 5072,
                "name": "ParameterList",
                "src": "4507:17:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5081,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5073,
                        "name": "ElementaryTypeName",
                        "src": "4547:7:30"
                      }
                    ],
                    "id": 5074,
                    "name": "VariableDeclaration",
                    "src": "4547:7:30"
                  }
                ],
                "id": 5075,
                "name": "ParameterList",
                "src": "4546:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5075
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "length",
                          "referencedDeclaration": null,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_entries",
                              "referencedDeclaration": 4902,
                              "type": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5071,
                                  "type": "struct EnumerableMap.Map storage pointer",
                                  "value": "map"
                                },
                                "id": 5076,
                                "name": "Identifier",
                                "src": "4573:3:30"
                              }
                            ],
                            "id": 5077,
                            "name": "MemberAccess",
                            "src": "4573:12:30"
                          }
                        ],
                        "id": 5078,
                        "name": "MemberAccess",
                        "src": "4573:19:30"
                      }
                    ],
                    "id": 5079,
                    "name": "Return",
                    "src": "4566:26:30"
                  }
                ],
                "id": 5080,
                "name": "Block",
                "src": "4556:43:30"
              }
            ],
            "id": 5081,
            "name": "FunctionDefinition",
            "src": "4491:108:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_at",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the key-value pair stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of entries inside the\n array, and it may change when more entries are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
                },
                "id": 5082,
                "name": "StructuredDocumentation",
                "src": "4604:333:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5116,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.Map",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Map",
                          "referencedDeclaration": 4907,
                          "type": "struct EnumerableMap.Map"
                        },
                        "id": 5083,
                        "name": "UserDefinedTypeName",
                        "src": "4955:3:30"
                      }
                    ],
                    "id": 5084,
                    "name": "VariableDeclaration",
                    "src": "4955:15:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "index",
                      "overrides": null,
                      "scope": 5116,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5085,
                        "name": "ElementaryTypeName",
                        "src": "4972:7:30"
                      }
                    ],
                    "id": 5086,
                    "name": "VariableDeclaration",
                    "src": "4972:13:30"
                  }
                ],
                "id": 5087,
                "name": "ParameterList",
                "src": "4954:32:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5116,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5088,
                        "name": "ElementaryTypeName",
                        "src": "5009:7:30"
                      }
                    ],
                    "id": 5089,
                    "name": "VariableDeclaration",
                    "src": "5009:7:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5116,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5090,
                        "name": "ElementaryTypeName",
                        "src": "5018:7:30"
                      }
                    ],
                    "id": 5091,
                    "name": "VariableDeclaration",
                    "src": "5018:7:30"
                  }
                ],
                "id": 5092,
                "name": "ParameterList",
                "src": "5008:18:30"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155",
                                  "typeString": "literal_string \"EnumerableMap: index out of bounds\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 5093,
                            "name": "Identifier",
                            "src": "5037:7:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "_entries",
                                      "referencedDeclaration": 4902,
                                      "type": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5084,
                                          "type": "struct EnumerableMap.Map storage pointer",
                                          "value": "map"
                                        },
                                        "id": 5094,
                                        "name": "Identifier",
                                        "src": "5045:3:30"
                                      }
                                    ],
                                    "id": 5095,
                                    "name": "MemberAccess",
                                    "src": "5045:12:30"
                                  }
                                ],
                                "id": 5096,
                                "name": "MemberAccess",
                                "src": "5045:19:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5086,
                                  "type": "uint256",
                                  "value": "index"
                                },
                                "id": 5097,
                                "name": "Identifier",
                                "src": "5067:5:30"
                              }
                            ],
                            "id": 5098,
                            "name": "BinaryOperation",
                            "src": "5045:27:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"EnumerableMap: index out of bounds\"",
                              "value": "EnumerableMap: index out of bounds"
                            },
                            "id": 5099,
                            "name": "Literal",
                            "src": "5074:36:30"
                          }
                        ],
                        "id": 5100,
                        "name": "FunctionCall",
                        "src": "5037:74:30"
                      }
                    ],
                    "id": 5101,
                    "name": "ExpressionStatement",
                    "src": "5037:74:30"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        5103
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "entry",
                          "overrides": null,
                          "scope": 5115,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct EnumerableMap.MapEntry",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "MapEntry",
                              "referencedDeclaration": 4899,
                              "type": "struct EnumerableMap.MapEntry"
                            },
                            "id": 5102,
                            "name": "UserDefinedTypeName",
                            "src": "5122:8:30"
                          }
                        ],
                        "id": 5103,
                        "name": "VariableDeclaration",
                        "src": "5122:22:30"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct EnumerableMap.MapEntry storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_entries",
                              "referencedDeclaration": 4902,
                              "type": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5084,
                                  "type": "struct EnumerableMap.Map storage pointer",
                                  "value": "map"
                                },
                                "id": 5104,
                                "name": "Identifier",
                                "src": "5147:3:30"
                              }
                            ],
                            "id": 5105,
                            "name": "MemberAccess",
                            "src": "5147:12:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5086,
                              "type": "uint256",
                              "value": "index"
                            },
                            "id": 5106,
                            "name": "Identifier",
                            "src": "5160:5:30"
                          }
                        ],
                        "id": 5107,
                        "name": "IndexAccess",
                        "src": "5147:19:30"
                      }
                    ],
                    "id": 5108,
                    "name": "VariableDeclarationStatement",
                    "src": "5122:44:30"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 5092
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(bytes32,bytes32)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_key",
                              "referencedDeclaration": 4896,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5103,
                                  "type": "struct EnumerableMap.MapEntry storage pointer",
                                  "value": "entry"
                                },
                                "id": 5109,
                                "name": "Identifier",
                                "src": "5184:5:30"
                              }
                            ],
                            "id": 5110,
                            "name": "MemberAccess",
                            "src": "5184:10:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_value",
                              "referencedDeclaration": 4898,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5103,
                                  "type": "struct EnumerableMap.MapEntry storage pointer",
                                  "value": "entry"
                                },
                                "id": 5111,
                                "name": "Identifier",
                                "src": "5196:5:30"
                              }
                            ],
                            "id": 5112,
                            "name": "MemberAccess",
                            "src": "5196:12:30"
                          }
                        ],
                        "id": 5113,
                        "name": "TupleExpression",
                        "src": "5183:26:30"
                      }
                    ],
                    "id": 5114,
                    "name": "Return",
                    "src": "5176:33:30"
                  }
                ],
                "id": 5115,
                "name": "Block",
                "src": "5027:189:30"
              }
            ],
            "id": 5116,
            "name": "FunctionDefinition",
            "src": "4942:274:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_tryGet",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Tries to returns the value associated with `key`.  O(1).\n Does not revert if `key` is not in the map."
                },
                "id": 5117,
                "name": "StructuredDocumentation",
                "src": "5222:131:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5154,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.Map",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Map",
                          "referencedDeclaration": 4907,
                          "type": "struct EnumerableMap.Map"
                        },
                        "id": 5118,
                        "name": "UserDefinedTypeName",
                        "src": "5375:3:30"
                      }
                    ],
                    "id": 5119,
                    "name": "VariableDeclaration",
                    "src": "5375:15:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "key",
                      "overrides": null,
                      "scope": 5154,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5120,
                        "name": "ElementaryTypeName",
                        "src": "5392:7:30"
                      }
                    ],
                    "id": 5121,
                    "name": "VariableDeclaration",
                    "src": "5392:11:30"
                  }
                ],
                "id": 5122,
                "name": "ParameterList",
                "src": "5374:30:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5154,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5123,
                        "name": "ElementaryTypeName",
                        "src": "5427:4:30"
                      }
                    ],
                    "id": 5124,
                    "name": "VariableDeclaration",
                    "src": "5427:4:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5154,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5125,
                        "name": "ElementaryTypeName",
                        "src": "5433:7:30"
                      }
                    ],
                    "id": 5126,
                    "name": "VariableDeclaration",
                    "src": "5433:7:30"
                  }
                ],
                "id": 5127,
                "name": "ParameterList",
                "src": "5426:15:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5129
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "keyIndex",
                          "overrides": null,
                          "scope": 5153,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 5128,
                            "name": "ElementaryTypeName",
                            "src": "5452:7:30"
                          }
                        ],
                        "id": 5129,
                        "name": "VariableDeclaration",
                        "src": "5452:16:30"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_indexes",
                              "referencedDeclaration": 4906,
                              "type": "mapping(bytes32 => uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5119,
                                  "type": "struct EnumerableMap.Map storage pointer",
                                  "value": "map"
                                },
                                "id": 5130,
                                "name": "Identifier",
                                "src": "5471:3:30"
                              }
                            ],
                            "id": 5131,
                            "name": "MemberAccess",
                            "src": "5471:12:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5121,
                              "type": "bytes32",
                              "value": "key"
                            },
                            "id": 5132,
                            "name": "Identifier",
                            "src": "5484:3:30"
                          }
                        ],
                        "id": 5133,
                        "name": "IndexAccess",
                        "src": "5471:17:30"
                      }
                    ],
                    "id": 5134,
                    "name": "VariableDeclarationStatement",
                    "src": "5452:36:30"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5129,
                              "type": "uint256",
                              "value": "keyIndex"
                            },
                            "id": 5135,
                            "name": "Identifier",
                            "src": "5502:8:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 5136,
                            "name": "Literal",
                            "src": "5514:1:30"
                          }
                        ],
                        "id": 5137,
                        "name": "BinaryOperation",
                        "src": "5502:13:30"
                      },
                      {
                        "attributes": {
                          "functionReturnParameters": 5127
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "tuple(bool,int_const 0)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 5138,
                                "name": "Literal",
                                "src": "5525:5:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 5139,
                                "name": "Literal",
                                "src": "5532:1:30"
                              }
                            ],
                            "id": 5140,
                            "name": "TupleExpression",
                            "src": "5524:10:30"
                          }
                        ],
                        "id": 5141,
                        "name": "Return",
                        "src": "5517:17:30"
                      }
                    ],
                    "id": 5142,
                    "name": "IfStatement",
                    "src": "5498:36:30"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 5127
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(bool,bytes32)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 5143,
                            "name": "Literal",
                            "src": "5588:4:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_value",
                              "referencedDeclaration": 4898,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct EnumerableMap.MapEntry storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "_entries",
                                      "referencedDeclaration": 4902,
                                      "type": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5119,
                                          "type": "struct EnumerableMap.Map storage pointer",
                                          "value": "map"
                                        },
                                        "id": 5144,
                                        "name": "Identifier",
                                        "src": "5594:3:30"
                                      }
                                    ],
                                    "id": 5145,
                                    "name": "MemberAccess",
                                    "src": "5594:12:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5129,
                                          "type": "uint256",
                                          "value": "keyIndex"
                                        },
                                        "id": 5146,
                                        "name": "Identifier",
                                        "src": "5607:8:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 5147,
                                        "name": "Literal",
                                        "src": "5618:1:30"
                                      }
                                    ],
                                    "id": 5148,
                                    "name": "BinaryOperation",
                                    "src": "5607:12:30"
                                  }
                                ],
                                "id": 5149,
                                "name": "IndexAccess",
                                "src": "5594:26:30"
                              }
                            ],
                            "id": 5150,
                            "name": "MemberAccess",
                            "src": "5594:33:30"
                          }
                        ],
                        "id": 5151,
                        "name": "TupleExpression",
                        "src": "5587:41:30"
                      }
                    ],
                    "id": 5152,
                    "name": "Return",
                    "src": "5580:48:30"
                  }
                ],
                "id": 5153,
                "name": "Block",
                "src": "5442:220:30"
              }
            ],
            "id": 5154,
            "name": "FunctionDefinition",
            "src": "5358:304:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_get",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."
                },
                "id": 5155,
                "name": "StructuredDocumentation",
                "src": "5668:141:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5187,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.Map",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Map",
                          "referencedDeclaration": 4907,
                          "type": "struct EnumerableMap.Map"
                        },
                        "id": 5156,
                        "name": "UserDefinedTypeName",
                        "src": "5828:3:30"
                      }
                    ],
                    "id": 5157,
                    "name": "VariableDeclaration",
                    "src": "5828:15:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "key",
                      "overrides": null,
                      "scope": 5187,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5158,
                        "name": "ElementaryTypeName",
                        "src": "5845:7:30"
                      }
                    ],
                    "id": 5159,
                    "name": "VariableDeclaration",
                    "src": "5845:11:30"
                  }
                ],
                "id": 5160,
                "name": "ParameterList",
                "src": "5827:30:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5187,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5161,
                        "name": "ElementaryTypeName",
                        "src": "5880:7:30"
                      }
                    ],
                    "id": 5162,
                    "name": "VariableDeclaration",
                    "src": "5880:7:30"
                  }
                ],
                "id": 5163,
                "name": "ParameterList",
                "src": "5879:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5165
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "keyIndex",
                          "overrides": null,
                          "scope": 5186,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 5164,
                            "name": "ElementaryTypeName",
                            "src": "5899:7:30"
                          }
                        ],
                        "id": 5165,
                        "name": "VariableDeclaration",
                        "src": "5899:16:30"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_indexes",
                              "referencedDeclaration": 4906,
                              "type": "mapping(bytes32 => uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5157,
                                  "type": "struct EnumerableMap.Map storage pointer",
                                  "value": "map"
                                },
                                "id": 5166,
                                "name": "Identifier",
                                "src": "5918:3:30"
                              }
                            ],
                            "id": 5167,
                            "name": "MemberAccess",
                            "src": "5918:12:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5159,
                              "type": "bytes32",
                              "value": "key"
                            },
                            "id": 5168,
                            "name": "Identifier",
                            "src": "5931:3:30"
                          }
                        ],
                        "id": 5169,
                        "name": "IndexAccess",
                        "src": "5918:17:30"
                      }
                    ],
                    "id": 5170,
                    "name": "VariableDeclarationStatement",
                    "src": "5899:36:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072",
                                  "typeString": "literal_string \"EnumerableMap: nonexistent key\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 5171,
                            "name": "Identifier",
                            "src": "5945:7:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5165,
                                  "type": "uint256",
                                  "value": "keyIndex"
                                },
                                "id": 5172,
                                "name": "Identifier",
                                "src": "5953:8:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 5173,
                                "name": "Literal",
                                "src": "5965:1:30"
                              }
                            ],
                            "id": 5174,
                            "name": "BinaryOperation",
                            "src": "5953:13:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"EnumerableMap: nonexistent key\"",
                              "value": "EnumerableMap: nonexistent key"
                            },
                            "id": 5175,
                            "name": "Literal",
                            "src": "5968:32:30"
                          }
                        ],
                        "id": 5176,
                        "name": "FunctionCall",
                        "src": "5945:56:30"
                      }
                    ],
                    "id": 5177,
                    "name": "ExpressionStatement",
                    "src": "5945:56:30"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 5163
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "_value",
                          "referencedDeclaration": 4898,
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct EnumerableMap.MapEntry storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "_entries",
                                  "referencedDeclaration": 4902,
                                  "type": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5157,
                                      "type": "struct EnumerableMap.Map storage pointer",
                                      "value": "map"
                                    },
                                    "id": 5178,
                                    "name": "Identifier",
                                    "src": "6054:3:30"
                                  }
                                ],
                                "id": 5179,
                                "name": "MemberAccess",
                                "src": "6054:12:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5165,
                                      "type": "uint256",
                                      "value": "keyIndex"
                                    },
                                    "id": 5180,
                                    "name": "Identifier",
                                    "src": "6067:8:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 5181,
                                    "name": "Literal",
                                    "src": "6078:1:30"
                                  }
                                ],
                                "id": 5182,
                                "name": "BinaryOperation",
                                "src": "6067:12:30"
                              }
                            ],
                            "id": 5183,
                            "name": "IndexAccess",
                            "src": "6054:26:30"
                          }
                        ],
                        "id": 5184,
                        "name": "MemberAccess",
                        "src": "6054:33:30"
                      }
                    ],
                    "id": 5185,
                    "name": "Return",
                    "src": "6047:40:30"
                  }
                ],
                "id": 5186,
                "name": "Block",
                "src": "5889:232:30"
              }
            ],
            "id": 5187,
            "name": "FunctionDefinition",
            "src": "5814:307:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_get",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Same as {_get}, with a custom error message when `key` is not in the map.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {_tryGet}."
                },
                "id": 5188,
                "name": "StructuredDocumentation",
                "src": "6127:271:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5222,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.Map",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Map",
                          "referencedDeclaration": 4907,
                          "type": "struct EnumerableMap.Map"
                        },
                        "id": 5189,
                        "name": "UserDefinedTypeName",
                        "src": "6417:3:30"
                      }
                    ],
                    "id": 5190,
                    "name": "VariableDeclaration",
                    "src": "6417:15:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "key",
                      "overrides": null,
                      "scope": 5222,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5191,
                        "name": "ElementaryTypeName",
                        "src": "6434:7:30"
                      }
                    ],
                    "id": 5192,
                    "name": "VariableDeclaration",
                    "src": "6434:11:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "errorMessage",
                      "overrides": null,
                      "scope": 5222,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 5193,
                        "name": "ElementaryTypeName",
                        "src": "6447:6:30"
                      }
                    ],
                    "id": 5194,
                    "name": "VariableDeclaration",
                    "src": "6447:26:30"
                  }
                ],
                "id": 5195,
                "name": "ParameterList",
                "src": "6416:58:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5222,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5196,
                        "name": "ElementaryTypeName",
                        "src": "6497:7:30"
                      }
                    ],
                    "id": 5197,
                    "name": "VariableDeclaration",
                    "src": "6497:7:30"
                  }
                ],
                "id": 5198,
                "name": "ParameterList",
                "src": "6496:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5200
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "keyIndex",
                          "overrides": null,
                          "scope": 5221,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 5199,
                            "name": "ElementaryTypeName",
                            "src": "6516:7:30"
                          }
                        ],
                        "id": 5200,
                        "name": "VariableDeclaration",
                        "src": "6516:16:30"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_indexes",
                              "referencedDeclaration": 4906,
                              "type": "mapping(bytes32 => uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5190,
                                  "type": "struct EnumerableMap.Map storage pointer",
                                  "value": "map"
                                },
                                "id": 5201,
                                "name": "Identifier",
                                "src": "6535:3:30"
                              }
                            ],
                            "id": 5202,
                            "name": "MemberAccess",
                            "src": "6535:12:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5192,
                              "type": "bytes32",
                              "value": "key"
                            },
                            "id": 5203,
                            "name": "Identifier",
                            "src": "6548:3:30"
                          }
                        ],
                        "id": 5204,
                        "name": "IndexAccess",
                        "src": "6535:17:30"
                      }
                    ],
                    "id": 5205,
                    "name": "VariableDeclarationStatement",
                    "src": "6516:36:30"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 5206,
                            "name": "Identifier",
                            "src": "6562:7:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5200,
                                  "type": "uint256",
                                  "value": "keyIndex"
                                },
                                "id": 5207,
                                "name": "Identifier",
                                "src": "6570:8:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 5208,
                                "name": "Literal",
                                "src": "6582:1:30"
                              }
                            ],
                            "id": 5209,
                            "name": "BinaryOperation",
                            "src": "6570:13:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5194,
                              "type": "string memory",
                              "value": "errorMessage"
                            },
                            "id": 5210,
                            "name": "Identifier",
                            "src": "6585:12:30"
                          }
                        ],
                        "id": 5211,
                        "name": "FunctionCall",
                        "src": "6562:36:30"
                      }
                    ],
                    "id": 5212,
                    "name": "ExpressionStatement",
                    "src": "6562:36:30"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 5198
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "_value",
                          "referencedDeclaration": 4898,
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct EnumerableMap.MapEntry storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "_entries",
                                  "referencedDeclaration": 4902,
                                  "type": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5190,
                                      "type": "struct EnumerableMap.Map storage pointer",
                                      "value": "map"
                                    },
                                    "id": 5213,
                                    "name": "Identifier",
                                    "src": "6651:3:30"
                                  }
                                ],
                                "id": 5214,
                                "name": "MemberAccess",
                                "src": "6651:12:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5200,
                                      "type": "uint256",
                                      "value": "keyIndex"
                                    },
                                    "id": 5215,
                                    "name": "Identifier",
                                    "src": "6664:8:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 5216,
                                    "name": "Literal",
                                    "src": "6675:1:30"
                                  }
                                ],
                                "id": 5217,
                                "name": "BinaryOperation",
                                "src": "6664:12:30"
                              }
                            ],
                            "id": 5218,
                            "name": "IndexAccess",
                            "src": "6651:26:30"
                          }
                        ],
                        "id": 5219,
                        "name": "MemberAccess",
                        "src": "6651:33:30"
                      }
                    ],
                    "id": 5220,
                    "name": "Return",
                    "src": "6644:40:30"
                  }
                ],
                "id": 5221,
                "name": "Block",
                "src": "6506:212:30"
              }
            ],
            "id": 5222,
            "name": "FunctionDefinition",
            "src": "6403:315:30"
          },
          {
            "attributes": {
              "canonicalName": "EnumerableMap.UintToAddressMap",
              "name": "UintToAddressMap",
              "scope": 5451,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_inner",
                  "overrides": null,
                  "scope": 5225,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "struct EnumerableMap.Map",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "Map",
                      "referencedDeclaration": 4907,
                      "type": "struct EnumerableMap.Map"
                    },
                    "id": 5223,
                    "name": "UserDefinedTypeName",
                    "src": "6783:3:30"
                  }
                ],
                "id": 5224,
                "name": "VariableDeclaration",
                "src": "6783:10:30"
              }
            ],
            "id": 5225,
            "name": "StructDefinition",
            "src": "6749:51:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "set",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present."
                },
                "id": 5226,
                "name": "StructuredDocumentation",
                "src": "6806:216:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5257,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.UintToAddressMap",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "UintToAddressMap",
                          "referencedDeclaration": 5225,
                          "type": "struct EnumerableMap.UintToAddressMap"
                        },
                        "id": 5227,
                        "name": "UserDefinedTypeName",
                        "src": "7040:16:30"
                      }
                    ],
                    "id": 5228,
                    "name": "VariableDeclaration",
                    "src": "7040:28:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "key",
                      "overrides": null,
                      "scope": 5257,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5229,
                        "name": "ElementaryTypeName",
                        "src": "7070:7:30"
                      }
                    ],
                    "id": 5230,
                    "name": "VariableDeclaration",
                    "src": "7070:11:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 5257,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5231,
                        "name": "ElementaryTypeName",
                        "src": "7083:7:30"
                      }
                    ],
                    "id": 5232,
                    "name": "VariableDeclaration",
                    "src": "7083:13:30"
                  }
                ],
                "id": 5233,
                "name": "ParameterList",
                "src": "7039:58:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5257,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5234,
                        "name": "ElementaryTypeName",
                        "src": "7116:4:30"
                      }
                    ],
                    "id": 5235,
                    "name": "VariableDeclaration",
                    "src": "7116:4:30"
                  }
                ],
                "id": 5236,
                "name": "ParameterList",
                "src": "7115:6:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5236
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4969,
                              "type": "function (struct EnumerableMap.Map storage pointer,bytes32,bytes32) returns (bool)",
                              "value": "_set"
                            },
                            "id": 5237,
                            "name": "Identifier",
                            "src": "7139:4:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5224,
                              "type": "struct EnumerableMap.Map storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5228,
                                  "type": "struct EnumerableMap.UintToAddressMap storage pointer",
                                  "value": "map"
                                },
                                "id": 5238,
                                "name": "Identifier",
                                "src": "7144:3:30"
                              }
                            ],
                            "id": 5239,
                            "name": "MemberAccess",
                            "src": "7144:10:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes32",
                                      "type": null
                                    },
                                    "id": 5240,
                                    "name": "ElementaryTypeName",
                                    "src": "7156:7:30"
                                  }
                                ],
                                "id": 5241,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7156:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5230,
                                  "type": "uint256",
                                  "value": "key"
                                },
                                "id": 5242,
                                "name": "Identifier",
                                "src": "7164:3:30"
                              }
                            ],
                            "id": 5243,
                            "name": "FunctionCall",
                            "src": "7156:12:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes32",
                                      "type": null
                                    },
                                    "id": 5244,
                                    "name": "ElementaryTypeName",
                                    "src": "7170:7:30"
                                  }
                                ],
                                "id": 5245,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7170:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint256",
                                          "type": null
                                        },
                                        "id": 5246,
                                        "name": "ElementaryTypeName",
                                        "src": "7178:7:30"
                                      }
                                    ],
                                    "id": 5247,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "7178:7:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint160",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint160)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint160",
                                              "type": null
                                            },
                                            "id": 5248,
                                            "name": "ElementaryTypeName",
                                            "src": "7186:7:30"
                                          }
                                        ],
                                        "id": 5249,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "7186:7:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5232,
                                          "type": "address",
                                          "value": "value"
                                        },
                                        "id": 5250,
                                        "name": "Identifier",
                                        "src": "7194:5:30"
                                      }
                                    ],
                                    "id": 5251,
                                    "name": "FunctionCall",
                                    "src": "7186:14:30"
                                  }
                                ],
                                "id": 5252,
                                "name": "FunctionCall",
                                "src": "7178:23:30"
                              }
                            ],
                            "id": 5253,
                            "name": "FunctionCall",
                            "src": "7170:32:30"
                          }
                        ],
                        "id": 5254,
                        "name": "FunctionCall",
                        "src": "7139:64:30"
                      }
                    ],
                    "id": 5255,
                    "name": "Return",
                    "src": "7132:71:30"
                  }
                ],
                "id": 5256,
                "name": "Block",
                "src": "7122:88:30"
              }
            ],
            "id": 5257,
            "name": "FunctionDefinition",
            "src": "7027:183:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "remove",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Removes a value from a set. O(1).\n Returns true if the key was removed from the map, that is if it was present."
                },
                "id": 5258,
                "name": "StructuredDocumentation",
                "src": "7216:148:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5277,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.UintToAddressMap",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "UintToAddressMap",
                          "referencedDeclaration": 5225,
                          "type": "struct EnumerableMap.UintToAddressMap"
                        },
                        "id": 5259,
                        "name": "UserDefinedTypeName",
                        "src": "7385:16:30"
                      }
                    ],
                    "id": 5260,
                    "name": "VariableDeclaration",
                    "src": "7385:28:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "key",
                      "overrides": null,
                      "scope": 5277,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5261,
                        "name": "ElementaryTypeName",
                        "src": "7415:7:30"
                      }
                    ],
                    "id": 5262,
                    "name": "VariableDeclaration",
                    "src": "7415:11:30"
                  }
                ],
                "id": 5263,
                "name": "ParameterList",
                "src": "7384:43:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5277,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5264,
                        "name": "ElementaryTypeName",
                        "src": "7446:4:30"
                      }
                    ],
                    "id": 5265,
                    "name": "VariableDeclaration",
                    "src": "7446:4:30"
                  }
                ],
                "id": 5266,
                "name": "ParameterList",
                "src": "7445:6:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5266
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5050,
                              "type": "function (struct EnumerableMap.Map storage pointer,bytes32) returns (bool)",
                              "value": "_remove"
                            },
                            "id": 5267,
                            "name": "Identifier",
                            "src": "7469:7:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5224,
                              "type": "struct EnumerableMap.Map storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5260,
                                  "type": "struct EnumerableMap.UintToAddressMap storage pointer",
                                  "value": "map"
                                },
                                "id": 5268,
                                "name": "Identifier",
                                "src": "7477:3:30"
                              }
                            ],
                            "id": 5269,
                            "name": "MemberAccess",
                            "src": "7477:10:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes32",
                                      "type": null
                                    },
                                    "id": 5270,
                                    "name": "ElementaryTypeName",
                                    "src": "7489:7:30"
                                  }
                                ],
                                "id": 5271,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7489:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5262,
                                  "type": "uint256",
                                  "value": "key"
                                },
                                "id": 5272,
                                "name": "Identifier",
                                "src": "7497:3:30"
                              }
                            ],
                            "id": 5273,
                            "name": "FunctionCall",
                            "src": "7489:12:30"
                          }
                        ],
                        "id": 5274,
                        "name": "FunctionCall",
                        "src": "7469:33:30"
                      }
                    ],
                    "id": 5275,
                    "name": "Return",
                    "src": "7462:40:30"
                  }
                ],
                "id": 5276,
                "name": "Block",
                "src": "7452:57:30"
              }
            ],
            "id": 5277,
            "name": "FunctionDefinition",
            "src": "7369:140:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "contains",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns true if the key is in the map. O(1)."
                },
                "id": 5278,
                "name": "StructuredDocumentation",
                "src": "7515:68:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5297,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.UintToAddressMap",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "UintToAddressMap",
                          "referencedDeclaration": 5225,
                          "type": "struct EnumerableMap.UintToAddressMap"
                        },
                        "id": 5279,
                        "name": "UserDefinedTypeName",
                        "src": "7606:16:30"
                      }
                    ],
                    "id": 5280,
                    "name": "VariableDeclaration",
                    "src": "7606:28:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "key",
                      "overrides": null,
                      "scope": 5297,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5281,
                        "name": "ElementaryTypeName",
                        "src": "7636:7:30"
                      }
                    ],
                    "id": 5282,
                    "name": "VariableDeclaration",
                    "src": "7636:11:30"
                  }
                ],
                "id": 5283,
                "name": "ParameterList",
                "src": "7605:43:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5297,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5284,
                        "name": "ElementaryTypeName",
                        "src": "7672:4:30"
                      }
                    ],
                    "id": 5285,
                    "name": "VariableDeclaration",
                    "src": "7672:4:30"
                  }
                ],
                "id": 5286,
                "name": "ParameterList",
                "src": "7671:6:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5286
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5068,
                              "type": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool)",
                              "value": "_contains"
                            },
                            "id": 5287,
                            "name": "Identifier",
                            "src": "7695:9:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5224,
                              "type": "struct EnumerableMap.Map storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5280,
                                  "type": "struct EnumerableMap.UintToAddressMap storage pointer",
                                  "value": "map"
                                },
                                "id": 5288,
                                "name": "Identifier",
                                "src": "7705:3:30"
                              }
                            ],
                            "id": 5289,
                            "name": "MemberAccess",
                            "src": "7705:10:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes32",
                                      "type": null
                                    },
                                    "id": 5290,
                                    "name": "ElementaryTypeName",
                                    "src": "7717:7:30"
                                  }
                                ],
                                "id": 5291,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7717:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5282,
                                  "type": "uint256",
                                  "value": "key"
                                },
                                "id": 5292,
                                "name": "Identifier",
                                "src": "7725:3:30"
                              }
                            ],
                            "id": 5293,
                            "name": "FunctionCall",
                            "src": "7717:12:30"
                          }
                        ],
                        "id": 5294,
                        "name": "FunctionCall",
                        "src": "7695:35:30"
                      }
                    ],
                    "id": 5295,
                    "name": "Return",
                    "src": "7688:42:30"
                  }
                ],
                "id": 5296,
                "name": "Block",
                "src": "7678:59:30"
              }
            ],
            "id": 5297,
            "name": "FunctionDefinition",
            "src": "7588:149:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "length",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the number of elements in the map. O(1)."
                },
                "id": 5298,
                "name": "StructuredDocumentation",
                "src": "7743:72:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5311,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.UintToAddressMap",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "UintToAddressMap",
                          "referencedDeclaration": 5225,
                          "type": "struct EnumerableMap.UintToAddressMap"
                        },
                        "id": 5299,
                        "name": "UserDefinedTypeName",
                        "src": "7836:16:30"
                      }
                    ],
                    "id": 5300,
                    "name": "VariableDeclaration",
                    "src": "7836:28:30"
                  }
                ],
                "id": 5301,
                "name": "ParameterList",
                "src": "7835:30:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5311,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5302,
                        "name": "ElementaryTypeName",
                        "src": "7889:7:30"
                      }
                    ],
                    "id": 5303,
                    "name": "VariableDeclaration",
                    "src": "7889:7:30"
                  }
                ],
                "id": 5304,
                "name": "ParameterList",
                "src": "7888:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5304
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5081,
                              "type": "function (struct EnumerableMap.Map storage pointer) view returns (uint256)",
                              "value": "_length"
                            },
                            "id": 5305,
                            "name": "Identifier",
                            "src": "7915:7:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5224,
                              "type": "struct EnumerableMap.Map storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5300,
                                  "type": "struct EnumerableMap.UintToAddressMap storage pointer",
                                  "value": "map"
                                },
                                "id": 5306,
                                "name": "Identifier",
                                "src": "7923:3:30"
                              }
                            ],
                            "id": 5307,
                            "name": "MemberAccess",
                            "src": "7923:10:30"
                          }
                        ],
                        "id": 5308,
                        "name": "FunctionCall",
                        "src": "7915:19:30"
                      }
                    ],
                    "id": 5309,
                    "name": "Return",
                    "src": "7908:26:30"
                  }
                ],
                "id": 5310,
                "name": "Block",
                "src": "7898:43:30"
              }
            ],
            "id": 5311,
            "name": "FunctionDefinition",
            "src": "7820:121:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "at",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the element stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
                },
                "id": 5312,
                "name": "StructuredDocumentation",
                "src": "7946:318:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5350,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.UintToAddressMap",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "UintToAddressMap",
                          "referencedDeclaration": 5225,
                          "type": "struct EnumerableMap.UintToAddressMap"
                        },
                        "id": 5313,
                        "name": "UserDefinedTypeName",
                        "src": "8281:16:30"
                      }
                    ],
                    "id": 5314,
                    "name": "VariableDeclaration",
                    "src": "8281:28:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "index",
                      "overrides": null,
                      "scope": 5350,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5315,
                        "name": "ElementaryTypeName",
                        "src": "8311:7:30"
                      }
                    ],
                    "id": 5316,
                    "name": "VariableDeclaration",
                    "src": "8311:13:30"
                  }
                ],
                "id": 5317,
                "name": "ParameterList",
                "src": "8280:45:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5350,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5318,
                        "name": "ElementaryTypeName",
                        "src": "8349:7:30"
                      }
                    ],
                    "id": 5319,
                    "name": "VariableDeclaration",
                    "src": "8349:7:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5350,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5320,
                        "name": "ElementaryTypeName",
                        "src": "8358:7:30"
                      }
                    ],
                    "id": 5321,
                    "name": "VariableDeclaration",
                    "src": "8358:7:30"
                  }
                ],
                "id": 5322,
                "name": "ParameterList",
                "src": "8348:18:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5324,
                        5326
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "key",
                          "overrides": null,
                          "scope": 5349,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 5323,
                            "name": "ElementaryTypeName",
                            "src": "8378:7:30"
                          }
                        ],
                        "id": 5324,
                        "name": "VariableDeclaration",
                        "src": "8378:11:30"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "value",
                          "overrides": null,
                          "scope": 5349,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 5325,
                            "name": "ElementaryTypeName",
                            "src": "8391:7:30"
                          }
                        ],
                        "id": 5326,
                        "name": "VariableDeclaration",
                        "src": "8391:13:30"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(bytes32,bytes32)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5116,
                              "type": "function (struct EnumerableMap.Map storage pointer,uint256) view returns (bytes32,bytes32)",
                              "value": "_at"
                            },
                            "id": 5327,
                            "name": "Identifier",
                            "src": "8408:3:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5224,
                              "type": "struct EnumerableMap.Map storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5314,
                                  "type": "struct EnumerableMap.UintToAddressMap storage pointer",
                                  "value": "map"
                                },
                                "id": 5328,
                                "name": "Identifier",
                                "src": "8412:3:30"
                              }
                            ],
                            "id": 5329,
                            "name": "MemberAccess",
                            "src": "8412:10:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5316,
                              "type": "uint256",
                              "value": "index"
                            },
                            "id": 5330,
                            "name": "Identifier",
                            "src": "8424:5:30"
                          }
                        ],
                        "id": 5331,
                        "name": "FunctionCall",
                        "src": "8408:22:30"
                      }
                    ],
                    "id": 5332,
                    "name": "VariableDeclarationStatement",
                    "src": "8377:53:30"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 5322
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(uint256,address payable)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": null
                                    },
                                    "id": 5333,
                                    "name": "ElementaryTypeName",
                                    "src": "8448:7:30"
                                  }
                                ],
                                "id": 5334,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8448:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5324,
                                  "type": "bytes32",
                                  "value": "key"
                                },
                                "id": 5335,
                                "name": "Identifier",
                                "src": "8456:3:30"
                              }
                            ],
                            "id": 5336,
                            "name": "FunctionCall",
                            "src": "8448:12:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address",
                                      "type": null
                                    },
                                    "id": 5337,
                                    "name": "ElementaryTypeName",
                                    "src": "8462:7:30"
                                  }
                                ],
                                "id": 5338,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8462:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint160",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint160)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint160",
                                          "type": null
                                        },
                                        "id": 5339,
                                        "name": "ElementaryTypeName",
                                        "src": "8470:7:30"
                                      }
                                    ],
                                    "id": 5340,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "8470:7:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint256",
                                              "type": null
                                            },
                                            "id": 5341,
                                            "name": "ElementaryTypeName",
                                            "src": "8478:7:30"
                                          }
                                        ],
                                        "id": 5342,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "8478:7:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5326,
                                          "type": "bytes32",
                                          "value": "value"
                                        },
                                        "id": 5343,
                                        "name": "Identifier",
                                        "src": "8486:5:30"
                                      }
                                    ],
                                    "id": 5344,
                                    "name": "FunctionCall",
                                    "src": "8478:14:30"
                                  }
                                ],
                                "id": 5345,
                                "name": "FunctionCall",
                                "src": "8470:23:30"
                              }
                            ],
                            "id": 5346,
                            "name": "FunctionCall",
                            "src": "8462:32:30"
                          }
                        ],
                        "id": 5347,
                        "name": "TupleExpression",
                        "src": "8447:48:30"
                      }
                    ],
                    "id": 5348,
                    "name": "Return",
                    "src": "8440:55:30"
                  }
                ],
                "id": 5349,
                "name": "Block",
                "src": "8367:135:30"
              }
            ],
            "id": 5350,
            "name": "FunctionDefinition",
            "src": "8269:233:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "tryGet",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Tries to returns the value associated with `key`.  O(1).\n Does not revert if `key` is not in the map.\n _Available since v3.4._"
                },
                "id": 5351,
                "name": "StructuredDocumentation",
                "src": "8508:169:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5389,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.UintToAddressMap",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "UintToAddressMap",
                          "referencedDeclaration": 5225,
                          "type": "struct EnumerableMap.UintToAddressMap"
                        },
                        "id": 5352,
                        "name": "UserDefinedTypeName",
                        "src": "8698:16:30"
                      }
                    ],
                    "id": 5353,
                    "name": "VariableDeclaration",
                    "src": "8698:28:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "key",
                      "overrides": null,
                      "scope": 5389,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5354,
                        "name": "ElementaryTypeName",
                        "src": "8728:7:30"
                      }
                    ],
                    "id": 5355,
                    "name": "VariableDeclaration",
                    "src": "8728:11:30"
                  }
                ],
                "id": 5356,
                "name": "ParameterList",
                "src": "8697:43:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5389,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5357,
                        "name": "ElementaryTypeName",
                        "src": "8764:4:30"
                      }
                    ],
                    "id": 5358,
                    "name": "VariableDeclaration",
                    "src": "8764:4:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5389,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5359,
                        "name": "ElementaryTypeName",
                        "src": "8770:7:30"
                      }
                    ],
                    "id": 5360,
                    "name": "VariableDeclaration",
                    "src": "8770:7:30"
                  }
                ],
                "id": 5361,
                "name": "ParameterList",
                "src": "8763:15:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5363,
                        5365
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "success",
                          "overrides": null,
                          "scope": 5388,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bool",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bool",
                              "type": "bool"
                            },
                            "id": 5362,
                            "name": "ElementaryTypeName",
                            "src": "8790:4:30"
                          }
                        ],
                        "id": 5363,
                        "name": "VariableDeclaration",
                        "src": "8790:12:30"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "value",
                          "overrides": null,
                          "scope": 5388,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 5364,
                            "name": "ElementaryTypeName",
                            "src": "8804:7:30"
                          }
                        ],
                        "id": 5365,
                        "name": "VariableDeclaration",
                        "src": "8804:13:30"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(bool,bytes32)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$4907_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5154,
                              "type": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool,bytes32)",
                              "value": "_tryGet"
                            },
                            "id": 5366,
                            "name": "Identifier",
                            "src": "8821:7:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5224,
                              "type": "struct EnumerableMap.Map storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5353,
                                  "type": "struct EnumerableMap.UintToAddressMap storage pointer",
                                  "value": "map"
                                },
                                "id": 5367,
                                "name": "Identifier",
                                "src": "8829:3:30"
                              }
                            ],
                            "id": 5368,
                            "name": "MemberAccess",
                            "src": "8829:10:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes32",
                                      "type": null
                                    },
                                    "id": 5369,
                                    "name": "ElementaryTypeName",
                                    "src": "8841:7:30"
                                  }
                                ],
                                "id": 5370,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8841:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5355,
                                  "type": "uint256",
                                  "value": "key"
                                },
                                "id": 5371,
                                "name": "Identifier",
                                "src": "8849:3:30"
                              }
                            ],
                            "id": 5372,
                            "name": "FunctionCall",
                            "src": "8841:12:30"
                          }
                        ],
                        "id": 5373,
                        "name": "FunctionCall",
                        "src": "8821:33:30"
                      }
                    ],
                    "id": 5374,
                    "name": "VariableDeclarationStatement",
                    "src": "8789:65:30"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 5361
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(bool,address payable)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5363,
                              "type": "bool",
                              "value": "success"
                            },
                            "id": 5375,
                            "name": "Identifier",
                            "src": "8872:7:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address",
                                      "type": null
                                    },
                                    "id": 5376,
                                    "name": "ElementaryTypeName",
                                    "src": "8881:7:30"
                                  }
                                ],
                                "id": 5377,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8881:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint160",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint160)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint160",
                                          "type": null
                                        },
                                        "id": 5378,
                                        "name": "ElementaryTypeName",
                                        "src": "8889:7:30"
                                      }
                                    ],
                                    "id": 5379,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "8889:7:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint256",
                                              "type": null
                                            },
                                            "id": 5380,
                                            "name": "ElementaryTypeName",
                                            "src": "8897:7:30"
                                          }
                                        ],
                                        "id": 5381,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "8897:7:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5365,
                                          "type": "bytes32",
                                          "value": "value"
                                        },
                                        "id": 5382,
                                        "name": "Identifier",
                                        "src": "8905:5:30"
                                      }
                                    ],
                                    "id": 5383,
                                    "name": "FunctionCall",
                                    "src": "8897:14:30"
                                  }
                                ],
                                "id": 5384,
                                "name": "FunctionCall",
                                "src": "8889:23:30"
                              }
                            ],
                            "id": 5385,
                            "name": "FunctionCall",
                            "src": "8881:32:30"
                          }
                        ],
                        "id": 5386,
                        "name": "TupleExpression",
                        "src": "8871:43:30"
                      }
                    ],
                    "id": 5387,
                    "name": "Return",
                    "src": "8864:50:30"
                  }
                ],
                "id": 5388,
                "name": "Block",
                "src": "8779:142:30"
              }
            ],
            "id": 5389,
            "name": "FunctionDefinition",
            "src": "8682:239:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "get",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."
                },
                "id": 5390,
                "name": "StructuredDocumentation",
                "src": "8927:141:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5418,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.UintToAddressMap",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "UintToAddressMap",
                          "referencedDeclaration": 5225,
                          "type": "struct EnumerableMap.UintToAddressMap"
                        },
                        "id": 5391,
                        "name": "UserDefinedTypeName",
                        "src": "9086:16:30"
                      }
                    ],
                    "id": 5392,
                    "name": "VariableDeclaration",
                    "src": "9086:28:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "key",
                      "overrides": null,
                      "scope": 5418,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5393,
                        "name": "ElementaryTypeName",
                        "src": "9116:7:30"
                      }
                    ],
                    "id": 5394,
                    "name": "VariableDeclaration",
                    "src": "9116:11:30"
                  }
                ],
                "id": 5395,
                "name": "ParameterList",
                "src": "9085:43:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5418,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5396,
                        "name": "ElementaryTypeName",
                        "src": "9152:7:30"
                      }
                    ],
                    "id": 5397,
                    "name": "VariableDeclaration",
                    "src": "9152:7:30"
                  }
                ],
                "id": 5398,
                "name": "ParameterList",
                "src": "9151:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5398
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "address payable",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(address)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "address",
                                  "type": null
                                },
                                "id": 5399,
                                "name": "ElementaryTypeName",
                                "src": "9178:7:30"
                              }
                            ],
                            "id": 5400,
                            "name": "ElementaryTypeNameExpression",
                            "src": "9178:7:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint160",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint160)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint160",
                                      "type": null
                                    },
                                    "id": 5401,
                                    "name": "ElementaryTypeName",
                                    "src": "9186:7:30"
                                  }
                                ],
                                "id": 5402,
                                "name": "ElementaryTypeNameExpression",
                                "src": "9186:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint256",
                                          "type": null
                                        },
                                        "id": 5403,
                                        "name": "ElementaryTypeName",
                                        "src": "9194:7:30"
                                      }
                                    ],
                                    "id": 5404,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "9194:7:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "bytes32",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_struct$_Map_$4907_storage",
                                              "typeString": "struct EnumerableMap.Map storage ref"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            5187,
                                            5222
                                          ],
                                          "referencedDeclaration": 5187,
                                          "type": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bytes32)",
                                          "value": "_get"
                                        },
                                        "id": 5405,
                                        "name": "Identifier",
                                        "src": "9202:4:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_inner",
                                          "referencedDeclaration": 5224,
                                          "type": "struct EnumerableMap.Map storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5392,
                                              "type": "struct EnumerableMap.UintToAddressMap storage pointer",
                                              "value": "map"
                                            },
                                            "id": 5406,
                                            "name": "Identifier",
                                            "src": "9207:3:30"
                                          }
                                        ],
                                        "id": 5407,
                                        "name": "MemberAccess",
                                        "src": "9207:10:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "bytes32",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(bytes32)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "name": "bytes32",
                                                  "type": null
                                                },
                                                "id": 5408,
                                                "name": "ElementaryTypeName",
                                                "src": "9219:7:30"
                                              }
                                            ],
                                            "id": 5409,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "9219:7:30"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5394,
                                              "type": "uint256",
                                              "value": "key"
                                            },
                                            "id": 5410,
                                            "name": "Identifier",
                                            "src": "9227:3:30"
                                          }
                                        ],
                                        "id": 5411,
                                        "name": "FunctionCall",
                                        "src": "9219:12:30"
                                      }
                                    ],
                                    "id": 5412,
                                    "name": "FunctionCall",
                                    "src": "9202:30:30"
                                  }
                                ],
                                "id": 5413,
                                "name": "FunctionCall",
                                "src": "9194:39:30"
                              }
                            ],
                            "id": 5414,
                            "name": "FunctionCall",
                            "src": "9186:48:30"
                          }
                        ],
                        "id": 5415,
                        "name": "FunctionCall",
                        "src": "9178:57:30"
                      }
                    ],
                    "id": 5416,
                    "name": "Return",
                    "src": "9171:64:30"
                  }
                ],
                "id": 5417,
                "name": "Block",
                "src": "9161:81:30"
              }
            ],
            "id": 5418,
            "name": "FunctionDefinition",
            "src": "9073:169:30"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "get",
              "overrides": null,
              "scope": 5451,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Same as {get}, with a custom error message when `key` is not in the map.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryGet}."
                },
                "id": 5419,
                "name": "StructuredDocumentation",
                "src": "9248:269:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "map",
                      "overrides": null,
                      "scope": 5450,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableMap.UintToAddressMap",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "UintToAddressMap",
                          "referencedDeclaration": 5225,
                          "type": "struct EnumerableMap.UintToAddressMap"
                        },
                        "id": 5420,
                        "name": "UserDefinedTypeName",
                        "src": "9535:16:30"
                      }
                    ],
                    "id": 5421,
                    "name": "VariableDeclaration",
                    "src": "9535:28:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "key",
                      "overrides": null,
                      "scope": 5450,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5422,
                        "name": "ElementaryTypeName",
                        "src": "9565:7:30"
                      }
                    ],
                    "id": 5423,
                    "name": "VariableDeclaration",
                    "src": "9565:11:30"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "errorMessage",
                      "overrides": null,
                      "scope": 5450,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 5424,
                        "name": "ElementaryTypeName",
                        "src": "9578:6:30"
                      }
                    ],
                    "id": 5425,
                    "name": "VariableDeclaration",
                    "src": "9578:26:30"
                  }
                ],
                "id": 5426,
                "name": "ParameterList",
                "src": "9534:71:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5450,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5427,
                        "name": "ElementaryTypeName",
                        "src": "9629:7:30"
                      }
                    ],
                    "id": 5428,
                    "name": "VariableDeclaration",
                    "src": "9629:7:30"
                  }
                ],
                "id": 5429,
                "name": "ParameterList",
                "src": "9628:9:30"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5429
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "address payable",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(address)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "address",
                                  "type": null
                                },
                                "id": 5430,
                                "name": "ElementaryTypeName",
                                "src": "9655:7:30"
                              }
                            ],
                            "id": 5431,
                            "name": "ElementaryTypeNameExpression",
                            "src": "9655:7:30"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint160",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint160)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint160",
                                      "type": null
                                    },
                                    "id": 5432,
                                    "name": "ElementaryTypeName",
                                    "src": "9663:7:30"
                                  }
                                ],
                                "id": 5433,
                                "name": "ElementaryTypeNameExpression",
                                "src": "9663:7:30"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint256",
                                          "type": null
                                        },
                                        "id": 5434,
                                        "name": "ElementaryTypeName",
                                        "src": "9671:7:30"
                                      }
                                    ],
                                    "id": 5435,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "9671:7:30"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "bytes32",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_struct$_Map_$4907_storage",
                                              "typeString": "struct EnumerableMap.Map storage ref"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            5187,
                                            5222
                                          ],
                                          "referencedDeclaration": 5222,
                                          "type": "function (struct EnumerableMap.Map storage pointer,bytes32,string memory) view returns (bytes32)",
                                          "value": "_get"
                                        },
                                        "id": 5436,
                                        "name": "Identifier",
                                        "src": "9679:4:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_inner",
                                          "referencedDeclaration": 5224,
                                          "type": "struct EnumerableMap.Map storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5421,
                                              "type": "struct EnumerableMap.UintToAddressMap storage pointer",
                                              "value": "map"
                                            },
                                            "id": 5437,
                                            "name": "Identifier",
                                            "src": "9684:3:30"
                                          }
                                        ],
                                        "id": 5438,
                                        "name": "MemberAccess",
                                        "src": "9684:10:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "bytes32",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(bytes32)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "name": "bytes32",
                                                  "type": null
                                                },
                                                "id": 5439,
                                                "name": "ElementaryTypeName",
                                                "src": "9696:7:30"
                                              }
                                            ],
                                            "id": 5440,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "9696:7:30"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5423,
                                              "type": "uint256",
                                              "value": "key"
                                            },
                                            "id": 5441,
                                            "name": "Identifier",
                                            "src": "9704:3:30"
                                          }
                                        ],
                                        "id": 5442,
                                        "name": "FunctionCall",
                                        "src": "9696:12:30"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5425,
                                          "type": "string memory",
                                          "value": "errorMessage"
                                        },
                                        "id": 5443,
                                        "name": "Identifier",
                                        "src": "9710:12:30"
                                      }
                                    ],
                                    "id": 5444,
                                    "name": "FunctionCall",
                                    "src": "9679:44:30"
                                  }
                                ],
                                "id": 5445,
                                "name": "FunctionCall",
                                "src": "9671:53:30"
                              }
                            ],
                            "id": 5446,
                            "name": "FunctionCall",
                            "src": "9663:62:30"
                          }
                        ],
                        "id": 5447,
                        "name": "FunctionCall",
                        "src": "9655:71:30"
                      }
                    ],
                    "id": 5448,
                    "name": "Return",
                    "src": "9648:78:30"
                  }
                ],
                "id": 5449,
                "name": "Block",
                "src": "9638:95:30"
              }
            ],
            "id": 5450,
            "name": "FunctionDefinition",
            "src": "9522:211:30"
          }
        ],
        "id": 5451,
        "name": "ContractDefinition",
        "src": "772:8963:30"
      }
    ],
    "id": 5452,
    "name": "SourceUnit",
    "src": "33:9703:30"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.3",
  "updatedAt": "2021-11-29T02:07:34.217Z",
  "devdoc": {
    "details": "Library for managing an enumerable variant of Solidity's https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`] type. Maps have the following properties: - Entries are added, removed, and checked for existence in constant time (O(1)). - Entries are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableMap for EnumerableMap.UintToAddressMap;     // Declare a set state variable     EnumerableMap.UintToAddressMap private myMap; } ``` As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are supported.",
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}