{
  "contractName": "EnumerableMap",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"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.\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"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\":\"0xfd5cf8319cb84ca04ea407d6fba686d53ad7f5d2bf476f41678f5a751d12a7ea\",\"urls\":[\"bzz-raw://45b75b553c4a9053429609b1c3db481f1728ca00448f01acc4065249bbf87adc\",\"dweb:/ipfs/QmRZH6QM32mJn1GZCAPXUQtBz65H4kk6DsGQbGNo4ZNPy9\"]}},\"version\":1}",
  "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122076dcc94425661dcb0df4ca397bfe2fef59875e725c5ed4e25b40e39ff29bb1bd64736f6c63430006060033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122076dcc94425661dcb0df4ca397bfe2fef59875e725c5ed4e25b40e39ff29bb1bd64736f6c63430006060033",
  "immutableReferences": {},
  "sourceMap": "731:7555:78:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
  "deployedSourceMap": "731:7555:78:-:0;;;;;;12:1:-1;9;2:12",
  "source": "pragma solidity ^0.6.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 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        return _get(map, key, \"EnumerableMap: nonexistent key\");\n    }\n\n    /**\n     * @dev Same as {_get}, with a custom error message when `key` is not in the map.\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(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(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(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    function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) {\n        return address(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": [
        12958
      ]
    },
    "id": 12959,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12505,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:78"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 12506,
          "nodeType": "StructuredDocumentation",
          "src": "25:705:78",
          "text": "@dev Library for managing an enumerable variant of Solidity's\nhttps://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\ntype.\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 * ```\ncontract 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\nsupported."
        },
        "fullyImplemented": true,
        "id": 12958,
        "linearizedBaseContracts": [
          12958
        ],
        "name": "EnumerableMap",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "EnumerableMap.MapEntry",
            "id": 12511,
            "members": [
              {
                "constant": false,
                "id": 12508,
                "mutability": "mutable",
                "name": "_key",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 12511,
                "src": "1243:12:78",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 12507,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1243:7:78",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12510,
                "mutability": "mutable",
                "name": "_value",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 12511,
                "src": "1265:14:78",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 12509,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1265:7:78",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "MapEntry",
            "nodeType": "StructDefinition",
            "scope": 12958,
            "src": "1217:69:78",
            "visibility": "public"
          },
          {
            "canonicalName": "EnumerableMap.Map",
            "id": 12519,
            "members": [
              {
                "constant": false,
                "id": 12514,
                "mutability": "mutable",
                "name": "_entries",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 12519,
                "src": "1355:19:78",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage_ptr",
                  "typeString": "struct EnumerableMap.MapEntry[]"
                },
                "typeName": {
                  "baseType": {
                    "contractScope": null,
                    "id": 12512,
                    "name": "MapEntry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12511,
                    "src": "1355:8:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                      "typeString": "struct EnumerableMap.MapEntry"
                    }
                  },
                  "id": 12513,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "1355:10:78",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage_ptr",
                    "typeString": "struct EnumerableMap.MapEntry[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12518,
                "mutability": "mutable",
                "name": "_indexes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 12519,
                "src": "1524:37:78",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 12517,
                  "keyType": {
                    "id": 12515,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1533:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1524:28:78",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 12516,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1544:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Map",
            "nodeType": "StructDefinition",
            "scope": 12958,
            "src": "1292:276:78",
            "visibility": "public"
          },
          {
            "body": {
              "id": 12580,
              "nodeType": "Block",
              "src": "1877:596:78",
              "statements": [
                {
                  "assignments": [
                    12532
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12532,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12580,
                      "src": "1985:16:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12531,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1985:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12537,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12533,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12522,
                        "src": "2004:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 12534,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12518,
                      "src": "2004:12:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 12536,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12535,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12524,
                      "src": "2017:3:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2004:17:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1985:36:78"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12538,
                      "name": "keyIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12532,
                      "src": "2036:8:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2048:1:78",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2036:13:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 12578,
                    "nodeType": "Block",
                    "src": "2375:92:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12565,
                                  "name": "map",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12522,
                                  "src": "2389:3:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                    "typeString": "struct EnumerableMap.Map storage pointer"
                                  }
                                },
                                "id": 12570,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_entries",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12514,
                                "src": "2389:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                                  "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                }
                              },
                              "id": 12571,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 12567,
                                  "name": "keyIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12532,
                                  "src": "2402:8:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 12568,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2413:1:78",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "2402:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2389:26:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$12511_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref"
                              }
                            },
                            "id": 12572,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "_value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12510,
                            "src": "2389:33:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12573,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12526,
                            "src": "2425:5:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2389:41:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 12575,
                        "nodeType": "ExpressionStatement",
                        "src": "2389:41:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 12576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2451:5:78",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 12530,
                        "id": 12577,
                        "nodeType": "Return",
                        "src": "2444:12:78"
                      }
                    ]
                  },
                  "id": 12579,
                  "nodeType": "IfStatement",
                  "src": "2032:435:78",
                  "trueBody": {
                    "id": 12564,
                    "nodeType": "Block",
                    "src": "2051:318:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12547,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12524,
                                  "src": "2137:3:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12548,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12526,
                                  "src": "2150:5:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 12546,
                                "name": "MapEntry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12511,
                                "src": "2120:8:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_MapEntry_$12511_storage_ptr_$",
                                  "typeString": "type(struct EnumerableMap.MapEntry storage pointer)"
                                }
                              },
                              "id": 12549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "_key",
                                "_value"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "2120:38:78",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$12511_memory_ptr",
                                "typeString": "struct EnumerableMap.MapEntry memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_MapEntry_$12511_memory_ptr",
                                "typeString": "struct EnumerableMap.MapEntry memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12541,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12522,
                                "src": "2102:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12544,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12514,
                              "src": "2102:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 12545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2102:17:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_MapEntry_$12511_storage_$returns$__$",
                              "typeString": "function (struct EnumerableMap.MapEntry storage ref)"
                            }
                          },
                          "id": 12550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2102:57:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12551,
                        "nodeType": "ExpressionStatement",
                        "src": "2102:57:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12552,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12522,
                                "src": "2294:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12555,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12518,
                              "src": "2294:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 12556,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12554,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12524,
                              "src": "2307:3:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2294:17:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12557,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12522,
                                "src": "2314:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12558,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12514,
                              "src": "2314:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 12559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2314:19:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2294:39:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12561,
                        "nodeType": "ExpressionStatement",
                        "src": "2294:39:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 12562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2354:4:78",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 12530,
                        "id": 12563,
                        "nodeType": "Return",
                        "src": "2347:11:78"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 12520,
              "nodeType": "StructuredDocumentation",
              "src": "1574:216:78",
              "text": "@dev Adds a key-value pair to a map, or updates the value for an existing\nkey. O(1).\n     * Returns true if the key was added to the map, that is if it was not\nalready present."
            },
            "id": 12581,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_set",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12527,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12522,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12581,
                  "src": "1809:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12521,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "1809:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12524,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12581,
                  "src": "1826:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12523,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1826:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12526,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12581,
                  "src": "1839:13:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12525,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1839:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1808:45:78"
            },
            "returnParameters": {
              "id": 12530,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12529,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12581,
                  "src": "1871:4:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12528,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1871:4:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1870:6:78"
            },
            "scope": 12958,
            "src": "1795:678:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12661,
              "nodeType": "Block",
              "src": "2711:1447:78",
              "statements": [
                {
                  "assignments": [
                    12592
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12592,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12661,
                      "src": "2819:16:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12591,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2819:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12597,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12593,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12584,
                        "src": "2838:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 12594,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12518,
                      "src": "2838:12:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 12596,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12595,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12586,
                      "src": "2851:3:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2838:17:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2819:36:78"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12600,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12598,
                      "name": "keyIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12592,
                      "src": "2870:8:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12599,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2882:1:78",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2870:13:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 12659,
                    "nodeType": "Block",
                    "src": "4115:37:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 12657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4136:5:78",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 12590,
                        "id": 12658,
                        "nodeType": "Return",
                        "src": "4129:12:78"
                      }
                    ]
                  },
                  "id": 12660,
                  "nodeType": "IfStatement",
                  "src": "2866:1286:78",
                  "trueBody": {
                    "id": 12656,
                    "nodeType": "Block",
                    "src": "2885:1224:78",
                    "statements": [
                      {
                        "assignments": [
                          12602
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12602,
                            "mutability": "mutable",
                            "name": "toDeleteIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12656,
                            "src": "3226:21:78",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12601,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3226:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12606,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12603,
                            "name": "keyIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12592,
                            "src": "3250:8:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 12604,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3261:1:78",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3250:12:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3226:36:78"
                      },
                      {
                        "assignments": [
                          12608
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12608,
                            "mutability": "mutable",
                            "name": "lastIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12656,
                            "src": "3276:17:78",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12607,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3276:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12614,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12609,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12584,
                                "src": "3296:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12610,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12514,
                              "src": "3296:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 12611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3296:19:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 12612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3318:1:78",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3296:23:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3276:43:78"
                      },
                      {
                        "assignments": [
                          12616
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12616,
                            "mutability": "mutable",
                            "name": "lastEntry",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12656,
                            "src": "3559:26:78",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                              "typeString": "struct EnumerableMap.MapEntry"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12615,
                              "name": "MapEntry",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 12511,
                              "src": "3559:8:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                                "typeString": "struct EnumerableMap.MapEntry"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12621,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12617,
                              "name": "map",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12584,
                              "src": "3588:3:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                "typeString": "struct EnumerableMap.Map storage pointer"
                              }
                            },
                            "id": 12618,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_entries",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12514,
                            "src": "3588:12:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                            }
                          },
                          "id": 12620,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12619,
                            "name": "lastIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12608,
                            "src": "3601:9:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3588:23:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$12511_storage",
                            "typeString": "struct EnumerableMap.MapEntry storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3559:52:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12622,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12584,
                                "src": "3703:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12625,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12514,
                              "src": "3703:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 12626,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12624,
                              "name": "toDeleteIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12602,
                              "src": "3716:13:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3703:27:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$12511_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12627,
                            "name": "lastEntry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12616,
                            "src": "3733:9:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                              "typeString": "struct EnumerableMap.MapEntry storage pointer"
                            }
                          },
                          "src": "3703:39:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$12511_storage",
                            "typeString": "struct EnumerableMap.MapEntry storage ref"
                          }
                        },
                        "id": 12629,
                        "nodeType": "ExpressionStatement",
                        "src": "3703:39:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12630,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12584,
                                "src": "3808:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12634,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12518,
                              "src": "3808:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 12635,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12632,
                                "name": "lastEntry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12616,
                                "src": "3821:9:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                                  "typeString": "struct EnumerableMap.MapEntry storage pointer"
                                }
                              },
                              "id": 12633,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_key",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12508,
                              "src": "3821:14:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3808:28:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 12638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 12636,
                              "name": "toDeleteIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12602,
                              "src": "3839:13:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 12637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3855:1:78",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "3839:17:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3808:48:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12640,
                        "nodeType": "ExpressionStatement",
                        "src": "3808:48:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12641,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12584,
                                "src": "3962:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12644,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12514,
                              "src": "3962:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 12645,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pop",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3962:16:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 12646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3962:18:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12647,
                        "nodeType": "ExpressionStatement",
                        "src": "3962:18:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "4048:24:78",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12648,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12584,
                                "src": "4055:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12649,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12518,
                              "src": "4055:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 12651,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12650,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12586,
                              "src": "4068:3:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4055:17:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12653,
                        "nodeType": "ExpressionStatement",
                        "src": "4048:24:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 12654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4094:4:78",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 12590,
                        "id": 12655,
                        "nodeType": "Return",
                        "src": "4087:11:78"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 12582,
              "nodeType": "StructuredDocumentation",
              "src": "2479:157:78",
              "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": 12662,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12587,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12584,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12662,
                  "src": "2658:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12583,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "2658:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12586,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12662,
                  "src": "2675:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12585,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2675:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2657:30:78"
            },
            "returnParameters": {
              "id": 12590,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12589,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12662,
                  "src": "2705:4:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12588,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2705:4:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2704:6:78"
            },
            "scope": 12958,
            "src": "2641:1517:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12679,
              "nodeType": "Block",
              "src": "4314:46:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12672,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12665,
                          "src": "4331:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                            "typeString": "struct EnumerableMap.Map storage pointer"
                          }
                        },
                        "id": 12673,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_indexes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12518,
                        "src": "4331:12:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 12675,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 12674,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12667,
                        "src": "4344:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4331:17:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12676,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4352:1:78",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4331:22:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 12671,
                  "id": 12678,
                  "nodeType": "Return",
                  "src": "4324:29:78"
                }
              ]
            },
            "documentation": {
              "id": 12663,
              "nodeType": "StructuredDocumentation",
              "src": "4164:68:78",
              "text": "@dev Returns true if the key is in the map. O(1)."
            },
            "id": 12680,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12665,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12680,
                  "src": "4256:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12664,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "4256:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12667,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12680,
                  "src": "4273:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12666,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4273:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4255:30:78"
            },
            "returnParameters": {
              "id": 12671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12670,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12680,
                  "src": "4308:4:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12669,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4308:4:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4307:6:78"
            },
            "scope": 12958,
            "src": "4237:123:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12692,
              "nodeType": "Block",
              "src": "4515:43:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12688,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12683,
                        "src": "4532:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 12689,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_entries",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12514,
                      "src": "4532:12:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                      }
                    },
                    "id": 12690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4532:19:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 12687,
                  "id": 12691,
                  "nodeType": "Return",
                  "src": "4525:26:78"
                }
              ]
            },
            "documentation": {
              "id": 12681,
              "nodeType": "StructuredDocumentation",
              "src": "4366:79:78",
              "text": "@dev Returns the number of key-value pairs in the map. O(1)."
            },
            "id": 12693,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12683,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12693,
                  "src": "4467:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12682,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "4467:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4466:17:78"
            },
            "returnParameters": {
              "id": 12687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12686,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12693,
                  "src": "4506:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12685,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4506:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4505:9:78"
            },
            "scope": 12958,
            "src": "4450:108:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12727,
              "nodeType": "Block",
              "src": "4986:189:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12710,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12706,
                              "name": "map",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12696,
                              "src": "5004:3:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                "typeString": "struct EnumerableMap.Map storage pointer"
                              }
                            },
                            "id": 12707,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_entries",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12514,
                            "src": "5004:12:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                            }
                          },
                          "id": 12708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5004:19:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12709,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12698,
                          "src": "5026:5:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5004:27:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473",
                        "id": 12711,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5033:36:78",
                        "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": 12705,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4996:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4996:74:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12713,
                  "nodeType": "ExpressionStatement",
                  "src": "4996:74:78"
                },
                {
                  "assignments": [
                    12715
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12715,
                      "mutability": "mutable",
                      "name": "entry",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12727,
                      "src": "5081:22:78",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                        "typeString": "struct EnumerableMap.MapEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12714,
                        "name": "MapEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12511,
                        "src": "5081:8:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                          "typeString": "struct EnumerableMap.MapEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12720,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12716,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12696,
                        "src": "5106:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 12717,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_entries",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12514,
                      "src": "5106:12:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                      }
                    },
                    "id": 12719,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12718,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12698,
                      "src": "5119:5:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5106:19:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MapEntry_$12511_storage",
                      "typeString": "struct EnumerableMap.MapEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5081:44:78"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12721,
                          "name": "entry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12715,
                          "src": "5143:5:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                            "typeString": "struct EnumerableMap.MapEntry storage pointer"
                          }
                        },
                        "id": 12722,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_key",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12508,
                        "src": "5143:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12723,
                          "name": "entry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12715,
                          "src": "5155:5:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                            "typeString": "struct EnumerableMap.MapEntry storage pointer"
                          }
                        },
                        "id": 12724,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12510,
                        "src": "5155:12:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 12725,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5142:26:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 12704,
                  "id": 12726,
                  "nodeType": "Return",
                  "src": "5135:33:78"
                }
              ]
            },
            "documentation": {
              "id": 12694,
              "nodeType": "StructuredDocumentation",
              "src": "4563:333:78",
              "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\narray, and it may change when more entries are added or removed.\n    * Requirements:\n    * - `index` must be strictly less than {length}."
            },
            "id": 12728,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12699,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12696,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12728,
                  "src": "4914:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12695,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "4914:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12698,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12728,
                  "src": "4931:13:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12697,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4931:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4913:32:78"
            },
            "returnParameters": {
              "id": 12704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12701,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12728,
                  "src": "4968:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12700,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4968:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12703,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12728,
                  "src": "4977:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12702,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4977:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4967:18:78"
            },
            "scope": 12958,
            "src": "4901:274:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12744,
              "nodeType": "Block",
              "src": "5402:72:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12739,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12731,
                        "src": "5424:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12740,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12733,
                        "src": "5429:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579",
                        "id": 12741,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5434:32:78",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072",
                          "typeString": "literal_string \"EnumerableMap: nonexistent key\""
                        },
                        "value": "EnumerableMap: nonexistent key"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072",
                          "typeString": "literal_string \"EnumerableMap: nonexistent key\""
                        }
                      ],
                      "id": 12738,
                      "name": "_get",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12745,
                        12780
                      ],
                      "referencedDeclaration": 12780,
                      "src": "5419:4:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$12519_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": 12742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5419:48:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12737,
                  "id": 12743,
                  "nodeType": "Return",
                  "src": "5412:55:78"
                }
              ]
            },
            "documentation": {
              "id": 12729,
              "nodeType": "StructuredDocumentation",
              "src": "5181:141:78",
              "text": "@dev Returns the value associated with `key`.  O(1).\n     * Requirements:\n     * - `key` must be in the map."
            },
            "id": 12745,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12731,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12745,
                  "src": "5341:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12730,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "5341:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12733,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12745,
                  "src": "5358:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12732,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5358:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5340:30:78"
            },
            "returnParameters": {
              "id": 12737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12736,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12745,
                  "src": "5393:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12735,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5393:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5392:9:78"
            },
            "scope": 12958,
            "src": "5327:147:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12779,
              "nodeType": "Block",
              "src": "5685:212:78",
              "statements": [
                {
                  "assignments": [
                    12758
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12758,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12779,
                      "src": "5695:16:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12757,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5695:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12763,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12759,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12748,
                        "src": "5714:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 12760,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12518,
                      "src": "5714:12:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 12762,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12761,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12750,
                      "src": "5727:3:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5714:17:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5695:36:78"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12767,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12765,
                          "name": "keyIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12758,
                          "src": "5749:8:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5761:1:78",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5749:13:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12768,
                        "name": "errorMessage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12752,
                        "src": "5764:12:78",
                        "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": 12764,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5741:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12769,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5741:36:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12770,
                  "nodeType": "ExpressionStatement",
                  "src": "5741:36:78"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12771,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12748,
                          "src": "5830:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                            "typeString": "struct EnumerableMap.Map storage pointer"
                          }
                        },
                        "id": 12772,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_entries",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12514,
                        "src": "5830:12:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                          "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                        }
                      },
                      "id": 12776,
                      "indexExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12773,
                          "name": "keyIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12758,
                          "src": "5843:8:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 12774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5854:1:78",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "5843:12:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5830:26:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MapEntry_$12511_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref"
                      }
                    },
                    "id": 12777,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "_value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 12510,
                    "src": "5830:33:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12756,
                  "id": 12778,
                  "nodeType": "Return",
                  "src": "5823:40:78"
                }
              ]
            },
            "documentation": {
              "id": 12746,
              "nodeType": "StructuredDocumentation",
              "src": "5480:97:78",
              "text": "@dev Same as {_get}, with a custom error message when `key` is not in the map."
            },
            "id": 12780,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12753,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12748,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12780,
                  "src": "5596:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12747,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "5596:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12750,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12780,
                  "src": "5613:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12749,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5613:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12752,
                  "mutability": "mutable",
                  "name": "errorMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12780,
                  "src": "5626:26:78",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 12751,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5626:6:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5595:58:78"
            },
            "returnParameters": {
              "id": 12756,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12755,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12780,
                  "src": "5676:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12754,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5676:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5675:9:78"
            },
            "scope": 12958,
            "src": "5582:315:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "canonicalName": "EnumerableMap.UintToAddressMap",
            "id": 12783,
            "members": [
              {
                "constant": false,
                "id": 12782,
                "mutability": "mutable",
                "name": "_inner",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 12783,
                "src": "5962:10:78",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                  "typeString": "struct EnumerableMap.Map"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 12781,
                  "name": "Map",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 12519,
                  "src": "5962:3:78",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "UintToAddressMap",
            "nodeType": "StructDefinition",
            "scope": 12958,
            "src": "5928:51:78",
            "visibility": "public"
          },
          {
            "body": {
              "id": 12811,
              "nodeType": "Block",
              "src": "6301:79:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12796,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12786,
                          "src": "6323:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 12797,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12782,
                        "src": "6323:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12800,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12788,
                            "src": "6343:3:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6335:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 12798,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6335:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6335:12:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12806,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12790,
                                "src": "6365:5:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 12805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6357:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 12804,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6357:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 12807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6357:14:78",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6349:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 12802,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6349:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12808,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6349:23:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12795,
                      "name": "_set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12581,
                      "src": "6318:4:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$12519_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,bytes32) returns (bool)"
                      }
                    },
                    "id": 12809,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6318:55:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 12794,
                  "id": 12810,
                  "nodeType": "Return",
                  "src": "6311:62:78"
                }
              ]
            },
            "documentation": {
              "id": 12784,
              "nodeType": "StructuredDocumentation",
              "src": "5985:216:78",
              "text": "@dev Adds a key-value pair to a map, or updates the value for an existing\nkey. O(1).\n     * Returns true if the key was added to the map, that is if it was not\nalready present."
            },
            "id": 12812,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "set",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12786,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12812,
                  "src": "6219:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12785,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "6219:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12788,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12812,
                  "src": "6249:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12787,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6249:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12790,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12812,
                  "src": "6262:13:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12789,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6262:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6218:58:78"
            },
            "returnParameters": {
              "id": 12794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12793,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12812,
                  "src": "6295:4:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12792,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6295:4:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6294:6:78"
            },
            "scope": 12958,
            "src": "6206:174:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12831,
              "nodeType": "Block",
              "src": "6622:57:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12823,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12815,
                          "src": "6647:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 12824,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12782,
                        "src": "6647:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12827,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12817,
                            "src": "6667:3:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6659:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 12825,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6659:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12828,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6659:12:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12822,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12662,
                      "src": "6639:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$12519_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 12829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6639:33:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 12821,
                  "id": 12830,
                  "nodeType": "Return",
                  "src": "6632:40:78"
                }
              ]
            },
            "documentation": {
              "id": 12813,
              "nodeType": "StructuredDocumentation",
              "src": "6386:148:78",
              "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": 12832,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12818,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12815,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12832,
                  "src": "6555:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12814,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "6555:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12817,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12832,
                  "src": "6585:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12816,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6585:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6554:43:78"
            },
            "returnParameters": {
              "id": 12821,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12820,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12832,
                  "src": "6616:4:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12819,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6616:4:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6615:6:78"
            },
            "scope": 12958,
            "src": "6539:140:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12851,
              "nodeType": "Block",
              "src": "6848:59:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12843,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12835,
                          "src": "6875:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 12844,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12782,
                        "src": "6875:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12847,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12837,
                            "src": "6895:3:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6887:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 12845,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6887:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12848,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6887:12:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12842,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12680,
                      "src": "6865:9:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$12519_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 12849,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6865:35:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 12841,
                  "id": 12850,
                  "nodeType": "Return",
                  "src": "6858:42:78"
                }
              ]
            },
            "documentation": {
              "id": 12833,
              "nodeType": "StructuredDocumentation",
              "src": "6685:68:78",
              "text": "@dev Returns true if the key is in the map. O(1)."
            },
            "id": 12852,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12838,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12835,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12852,
                  "src": "6776:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12834,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "6776:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12837,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12852,
                  "src": "6806:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12836,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6806:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6775:43:78"
            },
            "returnParameters": {
              "id": 12841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12840,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12852,
                  "src": "6842:4:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12839,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6842:4:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6841:6:78"
            },
            "scope": 12958,
            "src": "6758:149:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12865,
              "nodeType": "Block",
              "src": "7068:43:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12861,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12855,
                          "src": "7093:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 12862,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12782,
                        "src": "7093:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      ],
                      "id": 12860,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12693,
                      "src": "7085:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$12519_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 12863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7085:19:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 12859,
                  "id": 12864,
                  "nodeType": "Return",
                  "src": "7078:26:78"
                }
              ]
            },
            "documentation": {
              "id": 12853,
              "nodeType": "StructuredDocumentation",
              "src": "6913:72:78",
              "text": "@dev Returns the number of elements in the map. O(1)."
            },
            "id": 12866,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12856,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12855,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12866,
                  "src": "7006:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12854,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "7006:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7005:30:78"
            },
            "returnParameters": {
              "id": 12859,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12858,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12866,
                  "src": "7059:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12857,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7059:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7058:9:78"
            },
            "scope": 12958,
            "src": "6990:121:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12901,
              "nodeType": "Block",
              "src": "7537:126:78",
              "statements": [
                {
                  "assignments": [
                    12879,
                    12881
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12879,
                      "mutability": "mutable",
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12901,
                      "src": "7548:11:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 12878,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7548:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12881,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12901,
                      "src": "7561:13:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 12880,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7561:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12887,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12883,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12869,
                          "src": "7582:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 12884,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12782,
                        "src": "7582:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12885,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12871,
                        "src": "7594:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12882,
                      "name": "_at",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12728,
                      "src": "7578:3:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$12519_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,uint256) view returns (bytes32,bytes32)"
                      }
                    },
                    "id": 12886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7578:22:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7547:53:78"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12890,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12879,
                            "src": "7626:3:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7618:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12888,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7618:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12891,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7618:12:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12896,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12881,
                                "src": "7648:5:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 12895,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7640:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 12894,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7640:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 12897,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7640:14:78",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7632:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 12892,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7632:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7632:23:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "id": 12899,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7617:39:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_address_payable_$",
                      "typeString": "tuple(uint256,address payable)"
                    }
                  },
                  "functionReturnParameters": 12877,
                  "id": 12900,
                  "nodeType": "Return",
                  "src": "7610:46:78"
                }
              ]
            },
            "documentation": {
              "id": 12867,
              "nodeType": "StructuredDocumentation",
              "src": "7116:318:78",
              "text": "@dev Returns the element stored at position `index` in the set. O(1).\nNote that there are no guarantees on the ordering of values inside the\narray, and it may change when more values are added or removed.\n    * Requirements:\n    * - `index` must be strictly less than {length}."
            },
            "id": 12902,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12872,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12869,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12902,
                  "src": "7451:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12868,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "7451:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12871,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12902,
                  "src": "7481:13:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12870,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7481:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7450:45:78"
            },
            "returnParameters": {
              "id": 12877,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12874,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12902,
                  "src": "7519:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12873,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7519:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12876,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12902,
                  "src": "7528:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12875,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7528:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7518:18:78"
            },
            "scope": 12958,
            "src": "7439:224:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12927,
              "nodeType": "Block",
              "src": "7903:72:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12917,
                                  "name": "map",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12905,
                                  "src": "7941:3:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                                    "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                                  }
                                },
                                "id": 12918,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_inner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12782,
                                "src": "7941:10:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12921,
                                    "name": "key",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12907,
                                    "src": "7961:3:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12920,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7953:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 12919,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7953:7:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 12922,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7953:12:78",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 12916,
                              "name": "_get",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                12745,
                                12780
                              ],
                              "referencedDeclaration": 12745,
                              "src": "7936:4:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$12519_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$",
                                "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bytes32)"
                              }
                            },
                            "id": 12923,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7936:30:78",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7928:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12914,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7928:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12924,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7928:39:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12913,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7920:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 12912,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7920:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 12925,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7920:48:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 12911,
                  "id": 12926,
                  "nodeType": "Return",
                  "src": "7913:55:78"
                }
              ]
            },
            "documentation": {
              "id": 12903,
              "nodeType": "StructuredDocumentation",
              "src": "7669:141:78",
              "text": "@dev Returns the value associated with `key`.  O(1).\n     * Requirements:\n     * - `key` must be in the map."
            },
            "id": 12928,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12905,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12928,
                  "src": "7828:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12904,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "7828:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12907,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12928,
                  "src": "7858:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12906,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7858:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7827:43:78"
            },
            "returnParameters": {
              "id": 12911,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12910,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12928,
                  "src": "7894:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12909,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7894:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7893:9:78"
            },
            "scope": 12958,
            "src": "7815:160:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12956,
              "nodeType": "Block",
              "src": "8198:86:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12945,
                                  "name": "map",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12931,
                                  "src": "8236:3:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                                    "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                                  }
                                },
                                "id": 12946,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_inner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12782,
                                "src": "8236:10:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12949,
                                    "name": "key",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12933,
                                    "src": "8256:3:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8248:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 12947,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8248:7:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 12950,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8248:12:78",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 12951,
                                "name": "errorMessage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12935,
                                "src": "8262:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 12944,
                              "name": "_get",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                12745,
                                12780
                              ],
                              "referencedDeclaration": 12780,
                              "src": "8231:4:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$12519_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": 12952,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8231:44:78",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8223:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12942,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8223:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12953,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8223:53:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12941,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8215:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 12940,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8215:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 12954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8215:62:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 12939,
                  "id": 12955,
                  "nodeType": "Return",
                  "src": "8208:69:78"
                }
              ]
            },
            "documentation": {
              "id": 12929,
              "nodeType": "StructuredDocumentation",
              "src": "7981:96:78",
              "text": "@dev Same as {get}, with a custom error message when `key` is not in the map."
            },
            "id": 12957,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12931,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12957,
                  "src": "8095:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12930,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "8095:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12933,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12957,
                  "src": "8125:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12932,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8125:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12935,
                  "mutability": "mutable",
                  "name": "errorMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12957,
                  "src": "8138:26:78",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 12934,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8138:6:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8094:71:78"
            },
            "returnParameters": {
              "id": 12939,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12938,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12957,
                  "src": "8189:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12937,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8189:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8188:9:78"
            },
            "scope": 12958,
            "src": "8082:202:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 12959,
        "src": "731:7555:78"
      }
    ],
    "src": "0:8287:78"
  },
  "legacyAST": {
    "absolutePath": "@openzeppelin/contracts/utils/EnumerableMap.sol",
    "exportedSymbols": {
      "EnumerableMap": [
        12958
      ]
    },
    "id": 12959,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12505,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:78"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 12506,
          "nodeType": "StructuredDocumentation",
          "src": "25:705:78",
          "text": "@dev Library for managing an enumerable variant of Solidity's\nhttps://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\ntype.\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 * ```\ncontract 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\nsupported."
        },
        "fullyImplemented": true,
        "id": 12958,
        "linearizedBaseContracts": [
          12958
        ],
        "name": "EnumerableMap",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "EnumerableMap.MapEntry",
            "id": 12511,
            "members": [
              {
                "constant": false,
                "id": 12508,
                "mutability": "mutable",
                "name": "_key",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 12511,
                "src": "1243:12:78",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 12507,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1243:7:78",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12510,
                "mutability": "mutable",
                "name": "_value",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 12511,
                "src": "1265:14:78",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 12509,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1265:7:78",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "MapEntry",
            "nodeType": "StructDefinition",
            "scope": 12958,
            "src": "1217:69:78",
            "visibility": "public"
          },
          {
            "canonicalName": "EnumerableMap.Map",
            "id": 12519,
            "members": [
              {
                "constant": false,
                "id": 12514,
                "mutability": "mutable",
                "name": "_entries",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 12519,
                "src": "1355:19:78",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage_ptr",
                  "typeString": "struct EnumerableMap.MapEntry[]"
                },
                "typeName": {
                  "baseType": {
                    "contractScope": null,
                    "id": 12512,
                    "name": "MapEntry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12511,
                    "src": "1355:8:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                      "typeString": "struct EnumerableMap.MapEntry"
                    }
                  },
                  "id": 12513,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "1355:10:78",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage_ptr",
                    "typeString": "struct EnumerableMap.MapEntry[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12518,
                "mutability": "mutable",
                "name": "_indexes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 12519,
                "src": "1524:37:78",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 12517,
                  "keyType": {
                    "id": 12515,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1533:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1524:28:78",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 12516,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1544:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Map",
            "nodeType": "StructDefinition",
            "scope": 12958,
            "src": "1292:276:78",
            "visibility": "public"
          },
          {
            "body": {
              "id": 12580,
              "nodeType": "Block",
              "src": "1877:596:78",
              "statements": [
                {
                  "assignments": [
                    12532
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12532,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12580,
                      "src": "1985:16:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12531,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1985:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12537,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12533,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12522,
                        "src": "2004:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 12534,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12518,
                      "src": "2004:12:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 12536,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12535,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12524,
                      "src": "2017:3:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2004:17:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1985:36:78"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12538,
                      "name": "keyIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12532,
                      "src": "2036:8:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2048:1:78",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2036:13:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 12578,
                    "nodeType": "Block",
                    "src": "2375:92:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12565,
                                  "name": "map",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12522,
                                  "src": "2389:3:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                    "typeString": "struct EnumerableMap.Map storage pointer"
                                  }
                                },
                                "id": 12570,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_entries",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12514,
                                "src": "2389:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                                  "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                }
                              },
                              "id": 12571,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 12567,
                                  "name": "keyIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12532,
                                  "src": "2402:8:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 12568,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2413:1:78",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "2402:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2389:26:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$12511_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref"
                              }
                            },
                            "id": 12572,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "_value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12510,
                            "src": "2389:33:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12573,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12526,
                            "src": "2425:5:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2389:41:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 12575,
                        "nodeType": "ExpressionStatement",
                        "src": "2389:41:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 12576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2451:5:78",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 12530,
                        "id": 12577,
                        "nodeType": "Return",
                        "src": "2444:12:78"
                      }
                    ]
                  },
                  "id": 12579,
                  "nodeType": "IfStatement",
                  "src": "2032:435:78",
                  "trueBody": {
                    "id": 12564,
                    "nodeType": "Block",
                    "src": "2051:318:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12547,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12524,
                                  "src": "2137:3:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12548,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12526,
                                  "src": "2150:5:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 12546,
                                "name": "MapEntry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12511,
                                "src": "2120:8:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_MapEntry_$12511_storage_ptr_$",
                                  "typeString": "type(struct EnumerableMap.MapEntry storage pointer)"
                                }
                              },
                              "id": 12549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "_key",
                                "_value"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "2120:38:78",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$12511_memory_ptr",
                                "typeString": "struct EnumerableMap.MapEntry memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_MapEntry_$12511_memory_ptr",
                                "typeString": "struct EnumerableMap.MapEntry memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12541,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12522,
                                "src": "2102:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12544,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12514,
                              "src": "2102:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 12545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2102:17:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_MapEntry_$12511_storage_$returns$__$",
                              "typeString": "function (struct EnumerableMap.MapEntry storage ref)"
                            }
                          },
                          "id": 12550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2102:57:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12551,
                        "nodeType": "ExpressionStatement",
                        "src": "2102:57:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12552,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12522,
                                "src": "2294:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12555,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12518,
                              "src": "2294:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 12556,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12554,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12524,
                              "src": "2307:3:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2294:17:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12557,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12522,
                                "src": "2314:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12558,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12514,
                              "src": "2314:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 12559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2314:19:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2294:39:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12561,
                        "nodeType": "ExpressionStatement",
                        "src": "2294:39:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 12562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2354:4:78",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 12530,
                        "id": 12563,
                        "nodeType": "Return",
                        "src": "2347:11:78"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 12520,
              "nodeType": "StructuredDocumentation",
              "src": "1574:216:78",
              "text": "@dev Adds a key-value pair to a map, or updates the value for an existing\nkey. O(1).\n     * Returns true if the key was added to the map, that is if it was not\nalready present."
            },
            "id": 12581,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_set",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12527,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12522,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12581,
                  "src": "1809:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12521,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "1809:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12524,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12581,
                  "src": "1826:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12523,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1826:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12526,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12581,
                  "src": "1839:13:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12525,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1839:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1808:45:78"
            },
            "returnParameters": {
              "id": 12530,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12529,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12581,
                  "src": "1871:4:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12528,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1871:4:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1870:6:78"
            },
            "scope": 12958,
            "src": "1795:678:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12661,
              "nodeType": "Block",
              "src": "2711:1447:78",
              "statements": [
                {
                  "assignments": [
                    12592
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12592,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12661,
                      "src": "2819:16:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12591,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2819:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12597,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12593,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12584,
                        "src": "2838:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 12594,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12518,
                      "src": "2838:12:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 12596,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12595,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12586,
                      "src": "2851:3:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2838:17:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2819:36:78"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12600,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12598,
                      "name": "keyIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12592,
                      "src": "2870:8:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12599,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2882:1:78",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2870:13:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 12659,
                    "nodeType": "Block",
                    "src": "4115:37:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 12657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4136:5:78",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 12590,
                        "id": 12658,
                        "nodeType": "Return",
                        "src": "4129:12:78"
                      }
                    ]
                  },
                  "id": 12660,
                  "nodeType": "IfStatement",
                  "src": "2866:1286:78",
                  "trueBody": {
                    "id": 12656,
                    "nodeType": "Block",
                    "src": "2885:1224:78",
                    "statements": [
                      {
                        "assignments": [
                          12602
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12602,
                            "mutability": "mutable",
                            "name": "toDeleteIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12656,
                            "src": "3226:21:78",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12601,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3226:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12606,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12603,
                            "name": "keyIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12592,
                            "src": "3250:8:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 12604,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3261:1:78",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3250:12:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3226:36:78"
                      },
                      {
                        "assignments": [
                          12608
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12608,
                            "mutability": "mutable",
                            "name": "lastIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12656,
                            "src": "3276:17:78",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12607,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3276:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12614,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12609,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12584,
                                "src": "3296:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12610,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12514,
                              "src": "3296:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 12611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3296:19:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 12612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3318:1:78",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3296:23:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3276:43:78"
                      },
                      {
                        "assignments": [
                          12616
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12616,
                            "mutability": "mutable",
                            "name": "lastEntry",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12656,
                            "src": "3559:26:78",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                              "typeString": "struct EnumerableMap.MapEntry"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12615,
                              "name": "MapEntry",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 12511,
                              "src": "3559:8:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                                "typeString": "struct EnumerableMap.MapEntry"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12621,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12617,
                              "name": "map",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12584,
                              "src": "3588:3:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                "typeString": "struct EnumerableMap.Map storage pointer"
                              }
                            },
                            "id": 12618,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_entries",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12514,
                            "src": "3588:12:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                            }
                          },
                          "id": 12620,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12619,
                            "name": "lastIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12608,
                            "src": "3601:9:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3588:23:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$12511_storage",
                            "typeString": "struct EnumerableMap.MapEntry storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3559:52:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12622,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12584,
                                "src": "3703:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12625,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12514,
                              "src": "3703:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 12626,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12624,
                              "name": "toDeleteIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12602,
                              "src": "3716:13:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3703:27:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$12511_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12627,
                            "name": "lastEntry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12616,
                            "src": "3733:9:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                              "typeString": "struct EnumerableMap.MapEntry storage pointer"
                            }
                          },
                          "src": "3703:39:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$12511_storage",
                            "typeString": "struct EnumerableMap.MapEntry storage ref"
                          }
                        },
                        "id": 12629,
                        "nodeType": "ExpressionStatement",
                        "src": "3703:39:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12630,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12584,
                                "src": "3808:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12634,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12518,
                              "src": "3808:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 12635,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12632,
                                "name": "lastEntry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12616,
                                "src": "3821:9:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                                  "typeString": "struct EnumerableMap.MapEntry storage pointer"
                                }
                              },
                              "id": 12633,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_key",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12508,
                              "src": "3821:14:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3808:28:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 12638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 12636,
                              "name": "toDeleteIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12602,
                              "src": "3839:13:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 12637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3855:1:78",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "3839:17:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3808:48:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12640,
                        "nodeType": "ExpressionStatement",
                        "src": "3808:48:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12641,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12584,
                                "src": "3962:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12644,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12514,
                              "src": "3962:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 12645,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pop",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3962:16:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 12646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3962:18:78",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12647,
                        "nodeType": "ExpressionStatement",
                        "src": "3962:18:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "4048:24:78",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12648,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12584,
                                "src": "4055:3:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 12649,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12518,
                              "src": "4055:12:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 12651,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12650,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12586,
                              "src": "4068:3:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4055:17:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12653,
                        "nodeType": "ExpressionStatement",
                        "src": "4048:24:78"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 12654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4094:4:78",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 12590,
                        "id": 12655,
                        "nodeType": "Return",
                        "src": "4087:11:78"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 12582,
              "nodeType": "StructuredDocumentation",
              "src": "2479:157:78",
              "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": 12662,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12587,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12584,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12662,
                  "src": "2658:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12583,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "2658:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12586,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12662,
                  "src": "2675:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12585,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2675:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2657:30:78"
            },
            "returnParameters": {
              "id": 12590,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12589,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12662,
                  "src": "2705:4:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12588,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2705:4:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2704:6:78"
            },
            "scope": 12958,
            "src": "2641:1517:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12679,
              "nodeType": "Block",
              "src": "4314:46:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12672,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12665,
                          "src": "4331:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                            "typeString": "struct EnumerableMap.Map storage pointer"
                          }
                        },
                        "id": 12673,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_indexes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12518,
                        "src": "4331:12:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 12675,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 12674,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12667,
                        "src": "4344:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4331:17:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 12676,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4352:1:78",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4331:22:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 12671,
                  "id": 12678,
                  "nodeType": "Return",
                  "src": "4324:29:78"
                }
              ]
            },
            "documentation": {
              "id": 12663,
              "nodeType": "StructuredDocumentation",
              "src": "4164:68:78",
              "text": "@dev Returns true if the key is in the map. O(1)."
            },
            "id": 12680,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12665,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12680,
                  "src": "4256:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12664,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "4256:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12667,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12680,
                  "src": "4273:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12666,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4273:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4255:30:78"
            },
            "returnParameters": {
              "id": 12671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12670,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12680,
                  "src": "4308:4:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12669,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4308:4:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4307:6:78"
            },
            "scope": 12958,
            "src": "4237:123:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12692,
              "nodeType": "Block",
              "src": "4515:43:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12688,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12683,
                        "src": "4532:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 12689,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_entries",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12514,
                      "src": "4532:12:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                      }
                    },
                    "id": 12690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4532:19:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 12687,
                  "id": 12691,
                  "nodeType": "Return",
                  "src": "4525:26:78"
                }
              ]
            },
            "documentation": {
              "id": 12681,
              "nodeType": "StructuredDocumentation",
              "src": "4366:79:78",
              "text": "@dev Returns the number of key-value pairs in the map. O(1)."
            },
            "id": 12693,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12683,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12693,
                  "src": "4467:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12682,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "4467:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4466:17:78"
            },
            "returnParameters": {
              "id": 12687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12686,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12693,
                  "src": "4506:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12685,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4506:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4505:9:78"
            },
            "scope": 12958,
            "src": "4450:108:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12727,
              "nodeType": "Block",
              "src": "4986:189:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12710,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12706,
                              "name": "map",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12696,
                              "src": "5004:3:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                                "typeString": "struct EnumerableMap.Map storage pointer"
                              }
                            },
                            "id": 12707,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_entries",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12514,
                            "src": "5004:12:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                            }
                          },
                          "id": 12708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5004:19:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 12709,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12698,
                          "src": "5026:5:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5004:27:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473",
                        "id": 12711,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5033:36:78",
                        "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": 12705,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4996:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4996:74:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12713,
                  "nodeType": "ExpressionStatement",
                  "src": "4996:74:78"
                },
                {
                  "assignments": [
                    12715
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12715,
                      "mutability": "mutable",
                      "name": "entry",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12727,
                      "src": "5081:22:78",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                        "typeString": "struct EnumerableMap.MapEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12714,
                        "name": "MapEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12511,
                        "src": "5081:8:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                          "typeString": "struct EnumerableMap.MapEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12720,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12716,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12696,
                        "src": "5106:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 12717,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_entries",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12514,
                      "src": "5106:12:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                      }
                    },
                    "id": 12719,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12718,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12698,
                      "src": "5119:5:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5106:19:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MapEntry_$12511_storage",
                      "typeString": "struct EnumerableMap.MapEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5081:44:78"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12721,
                          "name": "entry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12715,
                          "src": "5143:5:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                            "typeString": "struct EnumerableMap.MapEntry storage pointer"
                          }
                        },
                        "id": 12722,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_key",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12508,
                        "src": "5143:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12723,
                          "name": "entry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12715,
                          "src": "5155:5:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$12511_storage_ptr",
                            "typeString": "struct EnumerableMap.MapEntry storage pointer"
                          }
                        },
                        "id": 12724,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12510,
                        "src": "5155:12:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 12725,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5142:26:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 12704,
                  "id": 12726,
                  "nodeType": "Return",
                  "src": "5135:33:78"
                }
              ]
            },
            "documentation": {
              "id": 12694,
              "nodeType": "StructuredDocumentation",
              "src": "4563:333:78",
              "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\narray, and it may change when more entries are added or removed.\n    * Requirements:\n    * - `index` must be strictly less than {length}."
            },
            "id": 12728,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12699,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12696,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12728,
                  "src": "4914:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12695,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "4914:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12698,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12728,
                  "src": "4931:13:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12697,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4931:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4913:32:78"
            },
            "returnParameters": {
              "id": 12704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12701,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12728,
                  "src": "4968:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12700,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4968:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12703,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12728,
                  "src": "4977:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12702,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4977:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4967:18:78"
            },
            "scope": 12958,
            "src": "4901:274:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12744,
              "nodeType": "Block",
              "src": "5402:72:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12739,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12731,
                        "src": "5424:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12740,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12733,
                        "src": "5429:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579",
                        "id": 12741,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5434:32:78",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072",
                          "typeString": "literal_string \"EnumerableMap: nonexistent key\""
                        },
                        "value": "EnumerableMap: nonexistent key"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072",
                          "typeString": "literal_string \"EnumerableMap: nonexistent key\""
                        }
                      ],
                      "id": 12738,
                      "name": "_get",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12745,
                        12780
                      ],
                      "referencedDeclaration": 12780,
                      "src": "5419:4:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$12519_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": 12742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5419:48:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12737,
                  "id": 12743,
                  "nodeType": "Return",
                  "src": "5412:55:78"
                }
              ]
            },
            "documentation": {
              "id": 12729,
              "nodeType": "StructuredDocumentation",
              "src": "5181:141:78",
              "text": "@dev Returns the value associated with `key`.  O(1).\n     * Requirements:\n     * - `key` must be in the map."
            },
            "id": 12745,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12731,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12745,
                  "src": "5341:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12730,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "5341:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12733,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12745,
                  "src": "5358:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12732,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5358:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5340:30:78"
            },
            "returnParameters": {
              "id": 12737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12736,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12745,
                  "src": "5393:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12735,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5393:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5392:9:78"
            },
            "scope": 12958,
            "src": "5327:147:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 12779,
              "nodeType": "Block",
              "src": "5685:212:78",
              "statements": [
                {
                  "assignments": [
                    12758
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12758,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12779,
                      "src": "5695:16:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12757,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5695:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12763,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12759,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12748,
                        "src": "5714:3:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 12760,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12518,
                      "src": "5714:12:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 12762,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12761,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12750,
                      "src": "5727:3:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5714:17:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5695:36:78"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12767,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12765,
                          "name": "keyIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12758,
                          "src": "5749:8:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5761:1:78",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5749:13:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12768,
                        "name": "errorMessage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12752,
                        "src": "5764:12:78",
                        "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": 12764,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5741:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12769,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5741:36:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12770,
                  "nodeType": "ExpressionStatement",
                  "src": "5741:36:78"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12771,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12748,
                          "src": "5830:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                            "typeString": "struct EnumerableMap.Map storage pointer"
                          }
                        },
                        "id": 12772,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_entries",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12514,
                        "src": "5830:12:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MapEntry_$12511_storage_$dyn_storage",
                          "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                        }
                      },
                      "id": 12776,
                      "indexExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12773,
                          "name": "keyIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12758,
                          "src": "5843:8:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 12774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5854:1:78",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "5843:12:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5830:26:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MapEntry_$12511_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref"
                      }
                    },
                    "id": 12777,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "_value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 12510,
                    "src": "5830:33:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12756,
                  "id": 12778,
                  "nodeType": "Return",
                  "src": "5823:40:78"
                }
              ]
            },
            "documentation": {
              "id": 12746,
              "nodeType": "StructuredDocumentation",
              "src": "5480:97:78",
              "text": "@dev Same as {_get}, with a custom error message when `key` is not in the map."
            },
            "id": 12780,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12753,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12748,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12780,
                  "src": "5596:15:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12747,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12519,
                    "src": "5596:3:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12750,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12780,
                  "src": "5613:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12749,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5613:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12752,
                  "mutability": "mutable",
                  "name": "errorMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12780,
                  "src": "5626:26:78",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 12751,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5626:6:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5595:58:78"
            },
            "returnParameters": {
              "id": 12756,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12755,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12780,
                  "src": "5676:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12754,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5676:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5675:9:78"
            },
            "scope": 12958,
            "src": "5582:315:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "canonicalName": "EnumerableMap.UintToAddressMap",
            "id": 12783,
            "members": [
              {
                "constant": false,
                "id": 12782,
                "mutability": "mutable",
                "name": "_inner",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 12783,
                "src": "5962:10:78",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                  "typeString": "struct EnumerableMap.Map"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 12781,
                  "name": "Map",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 12519,
                  "src": "5962:3:78",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$12519_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "UintToAddressMap",
            "nodeType": "StructDefinition",
            "scope": 12958,
            "src": "5928:51:78",
            "visibility": "public"
          },
          {
            "body": {
              "id": 12811,
              "nodeType": "Block",
              "src": "6301:79:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12796,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12786,
                          "src": "6323:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 12797,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12782,
                        "src": "6323:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12800,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12788,
                            "src": "6343:3:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6335:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 12798,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6335:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6335:12:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12806,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12790,
                                "src": "6365:5:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 12805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6357:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 12804,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6357:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 12807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6357:14:78",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6349:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 12802,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6349:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12808,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6349:23:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12795,
                      "name": "_set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12581,
                      "src": "6318:4:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$12519_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,bytes32) returns (bool)"
                      }
                    },
                    "id": 12809,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6318:55:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 12794,
                  "id": 12810,
                  "nodeType": "Return",
                  "src": "6311:62:78"
                }
              ]
            },
            "documentation": {
              "id": 12784,
              "nodeType": "StructuredDocumentation",
              "src": "5985:216:78",
              "text": "@dev Adds a key-value pair to a map, or updates the value for an existing\nkey. O(1).\n     * Returns true if the key was added to the map, that is if it was not\nalready present."
            },
            "id": 12812,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "set",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12786,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12812,
                  "src": "6219:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12785,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "6219:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12788,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12812,
                  "src": "6249:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12787,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6249:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12790,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12812,
                  "src": "6262:13:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12789,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6262:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6218:58:78"
            },
            "returnParameters": {
              "id": 12794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12793,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12812,
                  "src": "6295:4:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12792,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6295:4:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6294:6:78"
            },
            "scope": 12958,
            "src": "6206:174:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12831,
              "nodeType": "Block",
              "src": "6622:57:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12823,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12815,
                          "src": "6647:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 12824,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12782,
                        "src": "6647:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12827,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12817,
                            "src": "6667:3:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6659:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 12825,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6659:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12828,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6659:12:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12822,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12662,
                      "src": "6639:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$12519_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 12829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6639:33:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 12821,
                  "id": 12830,
                  "nodeType": "Return",
                  "src": "6632:40:78"
                }
              ]
            },
            "documentation": {
              "id": 12813,
              "nodeType": "StructuredDocumentation",
              "src": "6386:148:78",
              "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": 12832,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12818,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12815,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12832,
                  "src": "6555:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12814,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "6555:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12817,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12832,
                  "src": "6585:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12816,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6585:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6554:43:78"
            },
            "returnParameters": {
              "id": 12821,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12820,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12832,
                  "src": "6616:4:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12819,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6616:4:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6615:6:78"
            },
            "scope": 12958,
            "src": "6539:140:78",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12851,
              "nodeType": "Block",
              "src": "6848:59:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12843,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12835,
                          "src": "6875:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 12844,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12782,
                        "src": "6875:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12847,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12837,
                            "src": "6895:3:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6887:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 12845,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6887:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12848,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6887:12:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12842,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12680,
                      "src": "6865:9:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$12519_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 12849,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6865:35:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 12841,
                  "id": 12850,
                  "nodeType": "Return",
                  "src": "6858:42:78"
                }
              ]
            },
            "documentation": {
              "id": 12833,
              "nodeType": "StructuredDocumentation",
              "src": "6685:68:78",
              "text": "@dev Returns true if the key is in the map. O(1)."
            },
            "id": 12852,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12838,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12835,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12852,
                  "src": "6776:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12834,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "6776:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12837,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12852,
                  "src": "6806:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12836,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6806:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6775:43:78"
            },
            "returnParameters": {
              "id": 12841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12840,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12852,
                  "src": "6842:4:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 12839,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6842:4:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6841:6:78"
            },
            "scope": 12958,
            "src": "6758:149:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12865,
              "nodeType": "Block",
              "src": "7068:43:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12861,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12855,
                          "src": "7093:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 12862,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12782,
                        "src": "7093:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      ],
                      "id": 12860,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12693,
                      "src": "7085:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$12519_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 12863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7085:19:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 12859,
                  "id": 12864,
                  "nodeType": "Return",
                  "src": "7078:26:78"
                }
              ]
            },
            "documentation": {
              "id": 12853,
              "nodeType": "StructuredDocumentation",
              "src": "6913:72:78",
              "text": "@dev Returns the number of elements in the map. O(1)."
            },
            "id": 12866,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12856,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12855,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12866,
                  "src": "7006:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12854,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "7006:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7005:30:78"
            },
            "returnParameters": {
              "id": 12859,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12858,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12866,
                  "src": "7059:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12857,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7059:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7058:9:78"
            },
            "scope": 12958,
            "src": "6990:121:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12901,
              "nodeType": "Block",
              "src": "7537:126:78",
              "statements": [
                {
                  "assignments": [
                    12879,
                    12881
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12879,
                      "mutability": "mutable",
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12901,
                      "src": "7548:11:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 12878,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7548:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12881,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12901,
                      "src": "7561:13:78",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 12880,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7561:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12887,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12883,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12869,
                          "src": "7582:3:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 12884,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12782,
                        "src": "7582:10:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12885,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12871,
                        "src": "7594:5:78",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$12519_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12882,
                      "name": "_at",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12728,
                      "src": "7578:3:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$12519_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,uint256) view returns (bytes32,bytes32)"
                      }
                    },
                    "id": 12886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7578:22:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7547:53:78"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12890,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12879,
                            "src": "7626:3:78",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7618:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12888,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7618:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12891,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7618:12:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12896,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12881,
                                "src": "7648:5:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 12895,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7640:7:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 12894,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7640:7:78",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 12897,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7640:14:78",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 12893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7632:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 12892,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7632:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7632:23:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "id": 12899,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7617:39:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_address_payable_$",
                      "typeString": "tuple(uint256,address payable)"
                    }
                  },
                  "functionReturnParameters": 12877,
                  "id": 12900,
                  "nodeType": "Return",
                  "src": "7610:46:78"
                }
              ]
            },
            "documentation": {
              "id": 12867,
              "nodeType": "StructuredDocumentation",
              "src": "7116:318:78",
              "text": "@dev Returns the element stored at position `index` in the set. O(1).\nNote that there are no guarantees on the ordering of values inside the\narray, and it may change when more values are added or removed.\n    * Requirements:\n    * - `index` must be strictly less than {length}."
            },
            "id": 12902,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12872,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12869,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12902,
                  "src": "7451:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12868,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "7451:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12871,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12902,
                  "src": "7481:13:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12870,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7481:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7450:45:78"
            },
            "returnParameters": {
              "id": 12877,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12874,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12902,
                  "src": "7519:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12873,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7519:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12876,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12902,
                  "src": "7528:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12875,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7528:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7518:18:78"
            },
            "scope": 12958,
            "src": "7439:224:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12927,
              "nodeType": "Block",
              "src": "7903:72:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12917,
                                  "name": "map",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12905,
                                  "src": "7941:3:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                                    "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                                  }
                                },
                                "id": 12918,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_inner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12782,
                                "src": "7941:10:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12921,
                                    "name": "key",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12907,
                                    "src": "7961:3:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12920,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7953:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 12919,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7953:7:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 12922,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7953:12:78",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 12916,
                              "name": "_get",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                12745,
                                12780
                              ],
                              "referencedDeclaration": 12745,
                              "src": "7936:4:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$12519_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$",
                                "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bytes32)"
                              }
                            },
                            "id": 12923,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7936:30:78",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7928:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12914,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7928:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12924,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7928:39:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12913,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7920:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 12912,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7920:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 12925,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7920:48:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 12911,
                  "id": 12926,
                  "nodeType": "Return",
                  "src": "7913:55:78"
                }
              ]
            },
            "documentation": {
              "id": 12903,
              "nodeType": "StructuredDocumentation",
              "src": "7669:141:78",
              "text": "@dev Returns the value associated with `key`.  O(1).\n     * Requirements:\n     * - `key` must be in the map."
            },
            "id": 12928,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12905,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12928,
                  "src": "7828:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12904,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "7828:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12907,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12928,
                  "src": "7858:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12906,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7858:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7827:43:78"
            },
            "returnParameters": {
              "id": 12911,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12910,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12928,
                  "src": "7894:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12909,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7894:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7893:9:78"
            },
            "scope": 12958,
            "src": "7815:160:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12956,
              "nodeType": "Block",
              "src": "8198:86:78",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12945,
                                  "name": "map",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12931,
                                  "src": "8236:3:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                                    "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                                  }
                                },
                                "id": 12946,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_inner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12782,
                                "src": "8236:10:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12949,
                                    "name": "key",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12933,
                                    "src": "8256:3:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8248:7:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 12947,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8248:7:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 12950,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8248:12:78",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 12951,
                                "name": "errorMessage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12935,
                                "src": "8262:12:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$12519_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 12944,
                              "name": "_get",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                12745,
                                12780
                              ],
                              "referencedDeclaration": 12780,
                              "src": "8231:4:78",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$12519_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": 12952,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8231:44:78",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8223:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 12942,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8223:7:78",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 12953,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8223:53:78",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 12941,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8215:7:78",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 12940,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8215:7:78",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 12954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8215:62:78",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 12939,
                  "id": 12955,
                  "nodeType": "Return",
                  "src": "8208:69:78"
                }
              ]
            },
            "documentation": {
              "id": 12929,
              "nodeType": "StructuredDocumentation",
              "src": "7981:96:78",
              "text": "@dev Same as {get}, with a custom error message when `key` is not in the map."
            },
            "id": 12957,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 12936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12931,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12957,
                  "src": "8095:28:78",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12930,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12783,
                    "src": "8095:16:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$12783_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12933,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12957,
                  "src": "8125:11:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12932,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8125:7:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12935,
                  "mutability": "mutable",
                  "name": "errorMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12957,
                  "src": "8138:26:78",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 12934,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8138:6:78",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8094:71:78"
            },
            "returnParameters": {
              "id": 12939,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12938,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 12957,
                  "src": "8189:7:78",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12937,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8189:7:78",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8188:9:78"
            },
            "scope": 12958,
            "src": "8082:202:78",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 12959,
        "src": "731:7555:78"
      }
    ],
    "src": "0:8287:78"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.6+commit.6c089d02.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.1.0",
  "updatedAt": "2020-04-21T18:10:34.973Z",
  "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.",
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}