{
  "abi": [],
  "allSourcePaths": {
    "16": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/structs/EnumerableSet.sol"
  },
  "ast": {
    "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/structs/EnumerableSet.sol",
    "exportedSymbols": {
      "EnumerableSet": [
        10109
      ]
    },
    "id": 10110,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9512,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "115:23:16"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 9513,
          "nodeType": "StructuredDocumentation",
          "src": "140:1087:16",
          "text": " @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableSet for EnumerableSet.AddressSet;\n     // Declare a set state variable\n     EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported.\n [WARNING]\n ====\n  Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.\n  See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n  In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet.\n ===="
        },
        "fullyImplemented": true,
        "id": 10109,
        "linearizedBaseContracts": [
          10109
        ],
        "name": "EnumerableSet",
        "nameLocation": "1236:13:16",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "EnumerableSet.Set",
            "id": 9521,
            "members": [
              {
                "constant": false,
                "id": 9516,
                "mutability": "mutable",
                "name": "_values",
                "nameLocation": "1760:7:16",
                "nodeType": "VariableDeclaration",
                "scope": 9521,
                "src": "1750:17:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                  "typeString": "bytes32[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 9514,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1750:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 9515,
                  "nodeType": "ArrayTypeName",
                  "src": "1750:9:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9520,
                "mutability": "mutable",
                "name": "_indexes",
                "nameLocation": "1928:8:16",
                "nodeType": "VariableDeclaration",
                "scope": 9521,
                "src": "1900:36:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 9519,
                  "keyType": {
                    "id": 9517,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1908:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1900:27:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 9518,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1919:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Set",
            "nameLocation": "1703:3:16",
            "nodeType": "StructDefinition",
            "scope": 10109,
            "src": "1696:247:16",
            "visibility": "public"
          },
          {
            "body": {
              "id": 9562,
              "nodeType": "Block",
              "src": "2182:335:16",
              "statements": [
                {
                  "condition": {
                    "id": 9536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "2196:22:16",
                    "subExpression": {
                      "arguments": [
                        {
                          "id": 9533,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9525,
                          "src": "2207:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                            "typeString": "struct EnumerableSet.Set storage pointer"
                          }
                        },
                        {
                          "id": 9534,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9527,
                          "src": "2212:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                            "typeString": "struct EnumerableSet.Set storage pointer"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 9532,
                        "name": "_contains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9666,
                        "src": "2197:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9521_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                          "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                        }
                      },
                      "id": 9535,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2197:21:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 9560,
                    "nodeType": "Block",
                    "src": "2474:37:16",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "66616c7365",
                          "id": 9558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2495:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 9531,
                        "id": 9559,
                        "nodeType": "Return",
                        "src": "2488:12:16"
                      }
                    ]
                  },
                  "id": 9561,
                  "nodeType": "IfStatement",
                  "src": "2192:319:16",
                  "trueBody": {
                    "id": 9557,
                    "nodeType": "Block",
                    "src": "2220:248:16",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9542,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9527,
                              "src": "2251:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 9537,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9525,
                                "src": "2234:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 9540,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9516,
                              "src": "2234:11:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 9541,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "2234:16:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$bound_to$_t_array$_t_bytes32_$dyn_storage_ptr_$",
                              "typeString": "function (bytes32[] storage pointer,bytes32)"
                            }
                          },
                          "id": 9543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2234:23:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9544,
                        "nodeType": "ExpressionStatement",
                        "src": "2234:23:16"
                      },
                      {
                        "expression": {
                          "id": 9553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 9545,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9525,
                                "src": "2392:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 9548,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9520,
                              "src": "2392:12:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 9549,
                            "indexExpression": {
                              "id": 9547,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9527,
                              "src": "2405:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2392:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 9550,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9525,
                                "src": "2414:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 9551,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9516,
                              "src": "2414:11:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 9552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2414:18:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2392:40:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9554,
                        "nodeType": "ExpressionStatement",
                        "src": "2392:40:16"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 9555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2453:4:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 9531,
                        "id": 9556,
                        "nodeType": "Return",
                        "src": "2446:11:16"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 9522,
              "nodeType": "StructuredDocumentation",
              "src": "1949:159:16",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 9563,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_add",
            "nameLocation": "2122:4:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9525,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "2139:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9563,
                  "src": "2127:15:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 9524,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9523,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9521,
                      "src": "2127:3:16"
                    },
                    "referencedDeclaration": 9521,
                    "src": "2127:3:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9527,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "2152:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9563,
                  "src": "2144:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9526,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2144:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2126:32:16"
            },
            "returnParameters": {
              "id": 9531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9530,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9563,
                  "src": "2176:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9529,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2176:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2175:6:16"
            },
            "scope": 10109,
            "src": "2113:404:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 9646,
              "nodeType": "Block",
              "src": "2757:1316:16",
              "statements": [
                {
                  "assignments": [
                    9575
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9575,
                      "mutability": "mutable",
                      "name": "valueIndex",
                      "nameLocation": "2875:10:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 9646,
                      "src": "2867:18:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9574,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2867:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9580,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 9576,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9567,
                        "src": "2888:3:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                          "typeString": "struct EnumerableSet.Set storage pointer"
                        }
                      },
                      "id": 9577,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9520,
                      "src": "2888:12:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 9579,
                    "indexExpression": {
                      "id": 9578,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9569,
                      "src": "2901:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2888:19:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2867:40:16"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9581,
                      "name": "valueIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9575,
                      "src": "2922:10:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 9582,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2936:1:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2922:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 9644,
                    "nodeType": "Block",
                    "src": "4030:37:16",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "66616c7365",
                          "id": 9642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4051:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 9573,
                        "id": 9643,
                        "nodeType": "Return",
                        "src": "4044:12:16"
                      }
                    ]
                  },
                  "id": 9645,
                  "nodeType": "IfStatement",
                  "src": "2918:1149:16",
                  "trueBody": {
                    "id": 9641,
                    "nodeType": "Block",
                    "src": "2939:1085:16",
                    "statements": [
                      {
                        "assignments": [
                          9585
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9585,
                            "mutability": "mutable",
                            "name": "toDeleteIndex",
                            "nameLocation": "3299:13:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 9641,
                            "src": "3291:21:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9584,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3291:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9589,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9586,
                            "name": "valueIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9575,
                            "src": "3315:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 9587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3328:1:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3315:14:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3291:38:16"
                      },
                      {
                        "assignments": [
                          9591
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9591,
                            "mutability": "mutable",
                            "name": "lastIndex",
                            "nameLocation": "3351:9:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 9641,
                            "src": "3343:17:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9590,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3343:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9597,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 9592,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9567,
                                "src": "3363:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 9593,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9516,
                              "src": "3363:11:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 9594,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3363:18:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 9595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3384:1:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3363:22:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3343:42:16"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9598,
                            "name": "lastIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9591,
                            "src": "3404:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9599,
                            "name": "toDeleteIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9585,
                            "src": "3417:13:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3404:26:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9625,
                        "nodeType": "IfStatement",
                        "src": "3400:398:16",
                        "trueBody": {
                          "id": 9624,
                          "nodeType": "Block",
                          "src": "3432:366:16",
                          "statements": [
                            {
                              "assignments": [
                                9602
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9602,
                                  "mutability": "mutable",
                                  "name": "lastValue",
                                  "nameLocation": "3458:9:16",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9624,
                                  "src": "3450:17:16",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 9601,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3450:7:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9607,
                              "initialValue": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 9603,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9567,
                                    "src": "3470:3:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                                      "typeString": "struct EnumerableSet.Set storage pointer"
                                    }
                                  },
                                  "id": 9604,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_values",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9516,
                                  "src": "3470:11:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                    "typeString": "bytes32[] storage ref"
                                  }
                                },
                                "id": 9606,
                                "indexExpression": {
                                  "id": 9605,
                                  "name": "lastIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9591,
                                  "src": "3482:9:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3470:22:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3450:42:16"
                            },
                            {
                              "expression": {
                                "id": 9614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 9608,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9567,
                                      "src": "3592:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                                        "typeString": "struct EnumerableSet.Set storage pointer"
                                      }
                                    },
                                    "id": 9611,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_values",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9516,
                                    "src": "3592:11:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 9612,
                                  "indexExpression": {
                                    "id": 9610,
                                    "name": "toDeleteIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9585,
                                    "src": "3604:13:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3592:26:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 9613,
                                  "name": "lastValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9602,
                                  "src": "3621:9:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "3592:38:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 9615,
                              "nodeType": "ExpressionStatement",
                              "src": "3592:38:16"
                            },
                            {
                              "expression": {
                                "id": 9622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 9616,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9567,
                                      "src": "3704:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                                        "typeString": "struct EnumerableSet.Set storage pointer"
                                      }
                                    },
                                    "id": 9619,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_indexes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9520,
                                    "src": "3704:12:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                      "typeString": "mapping(bytes32 => uint256)"
                                    }
                                  },
                                  "id": 9620,
                                  "indexExpression": {
                                    "id": 9618,
                                    "name": "lastValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9602,
                                    "src": "3717:9:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3704:23:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 9621,
                                  "name": "valueIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9575,
                                  "src": "3730:10:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3704:36:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9623,
                              "nodeType": "ExpressionStatement",
                              "src": "3704:36:16"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "expression": {
                                "id": 9626,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9567,
                                "src": "3876:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 9629,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9516,
                              "src": "3876:11:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 9630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pop",
                            "nodeType": "MemberAccess",
                            "src": "3876:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_bytes32_$dyn_storage_ptr_$",
                              "typeString": "function (bytes32[] storage pointer)"
                            }
                          },
                          "id": 9631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3876:17:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9632,
                        "nodeType": "ExpressionStatement",
                        "src": "3876:17:16"
                      },
                      {
                        "expression": {
                          "id": 9637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "3961:26:16",
                          "subExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 9633,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9567,
                                "src": "3968:3:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 9634,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9520,
                              "src": "3968:12:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 9636,
                            "indexExpression": {
                              "id": 9635,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9569,
                              "src": "3981:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3968:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9638,
                        "nodeType": "ExpressionStatement",
                        "src": "3961:26:16"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 9639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4009:4:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 9573,
                        "id": 9640,
                        "nodeType": "Return",
                        "src": "4002:11:16"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 9564,
              "nodeType": "StructuredDocumentation",
              "src": "2523:157:16",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 9647,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_remove",
            "nameLocation": "2694:7:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9567,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "2714:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9647,
                  "src": "2702:15:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 9566,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9565,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9521,
                      "src": "2702:3:16"
                    },
                    "referencedDeclaration": 9521,
                    "src": "2702:3:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9569,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "2727:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9647,
                  "src": "2719:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9568,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2719:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2701:32:16"
            },
            "returnParameters": {
              "id": 9573,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9572,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9647,
                  "src": "2751:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9571,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2751:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2750:6:16"
            },
            "scope": 10109,
            "src": "2685:1388:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 9665,
              "nodeType": "Block",
              "src": "4233:48:16",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9663,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "expression": {
                          "id": 9658,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9651,
                          "src": "4250:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                            "typeString": "struct EnumerableSet.Set storage pointer"
                          }
                        },
                        "id": 9659,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_indexes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9520,
                        "src": "4250:12:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 9661,
                      "indexExpression": {
                        "id": 9660,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9653,
                        "src": "4263:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4250:19:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 9662,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4273:1:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4250:24:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 9657,
                  "id": 9664,
                  "nodeType": "Return",
                  "src": "4243:31:16"
                }
              ]
            },
            "documentation": {
              "id": 9648,
              "nodeType": "StructuredDocumentation",
              "src": "4079:70:16",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 9666,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_contains",
            "nameLocation": "4163:9:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9654,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9651,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "4185:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9666,
                  "src": "4173:15:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 9650,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9649,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9521,
                      "src": "4173:3:16"
                    },
                    "referencedDeclaration": 9521,
                    "src": "4173:3:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9653,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "4198:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9666,
                  "src": "4190:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9652,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4190:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4172:32:16"
            },
            "returnParameters": {
              "id": 9657,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9656,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9666,
                  "src": "4227:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9655,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4227:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4226:6:16"
            },
            "scope": 10109,
            "src": "4154:127:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 9679,
              "nodeType": "Block",
              "src": "4427:42:16",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "expression": {
                        "id": 9675,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9670,
                        "src": "4444:3:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                          "typeString": "struct EnumerableSet.Set storage pointer"
                        }
                      },
                      "id": 9676,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9516,
                      "src": "4444:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 9677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "4444:18:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9674,
                  "id": 9678,
                  "nodeType": "Return",
                  "src": "4437:25:16"
                }
              ]
            },
            "documentation": {
              "id": 9667,
              "nodeType": "StructuredDocumentation",
              "src": "4287:70:16",
              "text": " @dev Returns the number of values on the set. O(1)."
            },
            "id": 9680,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_length",
            "nameLocation": "4371:7:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9670,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "4391:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9680,
                  "src": "4379:15:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 9669,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9668,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9521,
                      "src": "4379:3:16"
                    },
                    "referencedDeclaration": 9521,
                    "src": "4379:3:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4378:17:16"
            },
            "returnParameters": {
              "id": 9674,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9673,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9680,
                  "src": "4418:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9672,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4418:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4417:9:16"
            },
            "scope": 10109,
            "src": "4362:107:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 9696,
              "nodeType": "Block",
              "src": "4887:42:16",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "expression": {
                        "id": 9691,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9684,
                        "src": "4904:3:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                          "typeString": "struct EnumerableSet.Set storage pointer"
                        }
                      },
                      "id": 9692,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9516,
                      "src": "4904:11:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 9694,
                    "indexExpression": {
                      "id": 9693,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9686,
                      "src": "4916:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4904:18:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 9690,
                  "id": 9695,
                  "nodeType": "Return",
                  "src": "4897:25:16"
                }
              ]
            },
            "documentation": {
              "id": 9681,
              "nodeType": "StructuredDocumentation",
              "src": "4475:331:16",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 9697,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_at",
            "nameLocation": "4820:3:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9684,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "4836:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9697,
                  "src": "4824:15:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 9683,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9682,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9521,
                      "src": "4824:3:16"
                    },
                    "referencedDeclaration": 9521,
                    "src": "4824:3:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9686,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "4849:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9697,
                  "src": "4841:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9685,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4841:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4823:32:16"
            },
            "returnParameters": {
              "id": 9690,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9689,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9697,
                  "src": "4878:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9688,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4878:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4877:9:16"
            },
            "scope": 10109,
            "src": "4811:118:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 9710,
              "nodeType": "Block",
              "src": "5543:35:16",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "id": 9707,
                      "name": "set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9701,
                      "src": "5560:3:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                        "typeString": "struct EnumerableSet.Set storage pointer"
                      }
                    },
                    "id": 9708,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "_values",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 9516,
                    "src": "5560:11:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                      "typeString": "bytes32[] storage ref"
                    }
                  },
                  "functionReturnParameters": 9706,
                  "id": 9709,
                  "nodeType": "Return",
                  "src": "5553:18:16"
                }
              ]
            },
            "documentation": {
              "id": 9698,
              "nodeType": "StructuredDocumentation",
              "src": "4935:529:16",
              "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."
            },
            "id": 9711,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_values",
            "nameLocation": "5478:7:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9701,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "5498:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9711,
                  "src": "5486:15:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 9700,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9699,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9521,
                      "src": "5486:3:16"
                    },
                    "referencedDeclaration": 9521,
                    "src": "5486:3:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5485:17:16"
            },
            "returnParameters": {
              "id": 9706,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9705,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9711,
                  "src": "5525:16:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9703,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5525:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 9704,
                    "nodeType": "ArrayTypeName",
                    "src": "5525:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5524:18:16"
            },
            "scope": 10109,
            "src": "5469:109:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "canonicalName": "EnumerableSet.Bytes32Set",
            "id": 9715,
            "members": [
              {
                "constant": false,
                "id": 9714,
                "mutability": "mutable",
                "name": "_inner",
                "nameLocation": "5635:6:16",
                "nodeType": "VariableDeclaration",
                "scope": 9715,
                "src": "5631:10:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                  "typeString": "struct EnumerableSet.Set"
                },
                "typeName": {
                  "id": 9713,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 9712,
                    "name": "Set",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9521,
                    "src": "5631:3:16"
                  },
                  "referencedDeclaration": 9521,
                  "src": "5631:3:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Bytes32Set",
            "nameLocation": "5610:10:16",
            "nodeType": "StructDefinition",
            "scope": 10109,
            "src": "5603:45:16",
            "visibility": "public"
          },
          {
            "body": {
              "id": 9732,
              "nodeType": "Block",
              "src": "5894:47:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 9727,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9719,
                          "src": "5916:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 9728,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9714,
                        "src": "5916:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "id": 9729,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9721,
                        "src": "5928:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9726,
                      "name": "_add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9563,
                      "src": "5911:4:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$9521_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 9730,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5911:23:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 9725,
                  "id": 9731,
                  "nodeType": "Return",
                  "src": "5904:30:16"
                }
              ]
            },
            "documentation": {
              "id": 9716,
              "nodeType": "StructuredDocumentation",
              "src": "5654:159:16",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 9733,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nameLocation": "5827:3:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9722,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9719,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "5850:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9733,
                  "src": "5831:22:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 9718,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9717,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9715,
                      "src": "5831:10:16"
                    },
                    "referencedDeclaration": 9715,
                    "src": "5831:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9721,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "5863:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9733,
                  "src": "5855:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9720,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5855:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5830:39:16"
            },
            "returnParameters": {
              "id": 9725,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9724,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9733,
                  "src": "5888:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9723,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5888:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5887:6:16"
            },
            "scope": 10109,
            "src": "5818:123:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9750,
              "nodeType": "Block",
              "src": "6188:50:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 9745,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9737,
                          "src": "6213:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 9746,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9714,
                        "src": "6213:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "id": 9747,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9739,
                        "src": "6225:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9744,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9647,
                      "src": "6205:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$9521_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 9748,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6205:26:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 9743,
                  "id": 9749,
                  "nodeType": "Return",
                  "src": "6198:33:16"
                }
              ]
            },
            "documentation": {
              "id": 9734,
              "nodeType": "StructuredDocumentation",
              "src": "5947:157:16",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 9751,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nameLocation": "6118:6:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9740,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9737,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "6144:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9751,
                  "src": "6125:22:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 9736,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9735,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9715,
                      "src": "6125:10:16"
                    },
                    "referencedDeclaration": 9715,
                    "src": "6125:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9739,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "6157:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9751,
                  "src": "6149:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9738,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6149:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6124:39:16"
            },
            "returnParameters": {
              "id": 9743,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9742,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9751,
                  "src": "6182:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9741,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6182:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6181:6:16"
            },
            "scope": 10109,
            "src": "6109:129:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9768,
              "nodeType": "Block",
              "src": "6405:52:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 9763,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9755,
                          "src": "6432:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 9764,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9714,
                        "src": "6432:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "id": 9765,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9757,
                        "src": "6444:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9762,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9666,
                      "src": "6422:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9521_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 9766,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6422:28:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 9761,
                  "id": 9767,
                  "nodeType": "Return",
                  "src": "6415:35:16"
                }
              ]
            },
            "documentation": {
              "id": 9752,
              "nodeType": "StructuredDocumentation",
              "src": "6244:70:16",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 9769,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nameLocation": "6328:8:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9755,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "6356:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9769,
                  "src": "6337:22:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 9754,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9753,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9715,
                      "src": "6337:10:16"
                    },
                    "referencedDeclaration": 9715,
                    "src": "6337:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9757,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "6369:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9769,
                  "src": "6361:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9756,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6361:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6336:39:16"
            },
            "returnParameters": {
              "id": 9761,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9760,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9769,
                  "src": "6399:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9759,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6399:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6398:6:16"
            },
            "scope": 10109,
            "src": "6319:138:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9783,
              "nodeType": "Block",
              "src": "6610:43:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 9779,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9773,
                          "src": "6635:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 9780,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9714,
                        "src": "6635:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 9778,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9680,
                      "src": "6627:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9521_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 9781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6627:19:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9777,
                  "id": 9782,
                  "nodeType": "Return",
                  "src": "6620:26:16"
                }
              ]
            },
            "documentation": {
              "id": 9770,
              "nodeType": "StructuredDocumentation",
              "src": "6463:70:16",
              "text": " @dev Returns the number of values in the set. O(1)."
            },
            "id": 9784,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nameLocation": "6547:6:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9774,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9773,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "6573:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9784,
                  "src": "6554:22:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 9772,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9771,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9715,
                      "src": "6554:10:16"
                    },
                    "referencedDeclaration": 9715,
                    "src": "6554:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6553:24:16"
            },
            "returnParameters": {
              "id": 9777,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9776,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9784,
                  "src": "6601:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9775,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6601:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6600:9:16"
            },
            "scope": 10109,
            "src": "6538:115:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9801,
              "nodeType": "Block",
              "src": "7078:46:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 9796,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9788,
                          "src": "7099:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 9797,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9714,
                        "src": "7099:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "id": 9798,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9790,
                        "src": "7111:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9795,
                      "name": "_at",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9697,
                      "src": "7095:3:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9521_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                      }
                    },
                    "id": 9799,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7095:22:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 9794,
                  "id": 9800,
                  "nodeType": "Return",
                  "src": "7088:29:16"
                }
              ]
            },
            "documentation": {
              "id": 9785,
              "nodeType": "StructuredDocumentation",
              "src": "6659:331:16",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 9802,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nameLocation": "7004:2:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9788,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "7026:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9802,
                  "src": "7007:22:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 9787,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9786,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9715,
                      "src": "7007:10:16"
                    },
                    "referencedDeclaration": 9715,
                    "src": "7007:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9790,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "7039:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9802,
                  "src": "7031:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9789,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7031:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7006:39:16"
            },
            "returnParameters": {
              "id": 9794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9793,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9802,
                  "src": "7069:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9792,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7069:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7068:9:16"
            },
            "scope": 10109,
            "src": "6995:129:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9817,
              "nodeType": "Block",
              "src": "7745:43:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 9813,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9806,
                          "src": "7770:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 9814,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9714,
                        "src": "7770:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 9812,
                      "name": "_values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9711,
                      "src": "7762:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9521_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"
                      }
                    },
                    "id": 9815,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7762:19:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 9811,
                  "id": 9816,
                  "nodeType": "Return",
                  "src": "7755:26:16"
                }
              ]
            },
            "documentation": {
              "id": 9803,
              "nodeType": "StructuredDocumentation",
              "src": "7130:529:16",
              "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."
            },
            "id": 9818,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "values",
            "nameLocation": "7673:6:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9807,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9806,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "7699:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9818,
                  "src": "7680:22:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 9805,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9804,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9715,
                      "src": "7680:10:16"
                    },
                    "referencedDeclaration": 9715,
                    "src": "7680:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$9715_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7679:24:16"
            },
            "returnParameters": {
              "id": 9811,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9810,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9818,
                  "src": "7727:16:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9808,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "7727:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 9809,
                    "nodeType": "ArrayTypeName",
                    "src": "7727:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7726:18:16"
            },
            "scope": 10109,
            "src": "7664:124:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "canonicalName": "EnumerableSet.AddressSet",
            "id": 9822,
            "members": [
              {
                "constant": false,
                "id": 9821,
                "mutability": "mutable",
                "name": "_inner",
                "nameLocation": "7845:6:16",
                "nodeType": "VariableDeclaration",
                "scope": 9822,
                "src": "7841:10:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                  "typeString": "struct EnumerableSet.Set"
                },
                "typeName": {
                  "id": 9820,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 9819,
                    "name": "Set",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9521,
                    "src": "7841:3:16"
                  },
                  "referencedDeclaration": 9521,
                  "src": "7841:3:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "AddressSet",
            "nameLocation": "7820:10:16",
            "nodeType": "StructDefinition",
            "scope": 10109,
            "src": "7813:45:16",
            "visibility": "public"
          },
          {
            "body": {
              "id": 9848,
              "nodeType": "Block",
              "src": "8104:74:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 9834,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9826,
                          "src": "8126:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 9835,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9821,
                        "src": "8126:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 9842,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9828,
                                    "src": "8162:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 9841,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8154:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 9840,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8154:7:16",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8154:14:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 9839,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8146:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9838,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8146:7:16",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9844,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8146:23:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8138:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 9836,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8138:7:16",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9845,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8138:32:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9833,
                      "name": "_add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9563,
                      "src": "8121:4:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$9521_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 9846,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8121:50:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 9832,
                  "id": 9847,
                  "nodeType": "Return",
                  "src": "8114:57:16"
                }
              ]
            },
            "documentation": {
              "id": 9823,
              "nodeType": "StructuredDocumentation",
              "src": "7864:159:16",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 9849,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nameLocation": "8037:3:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9829,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9826,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "8060:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9849,
                  "src": "8041:22:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 9825,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9824,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9822,
                      "src": "8041:10:16"
                    },
                    "referencedDeclaration": 9822,
                    "src": "8041:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9828,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "8073:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9849,
                  "src": "8065:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9827,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8065:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8040:39:16"
            },
            "returnParameters": {
              "id": 9832,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9831,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9849,
                  "src": "8098:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9830,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8098:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8097:6:16"
            },
            "scope": 10109,
            "src": "8028:150:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9875,
              "nodeType": "Block",
              "src": "8425:77:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 9861,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9853,
                          "src": "8450:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 9862,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9821,
                        "src": "8450:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 9869,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9855,
                                    "src": "8486:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 9868,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8478:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 9867,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8478:7:16",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9870,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8478:14:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 9866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8470:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9865,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8470:7:16",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9871,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8470:23:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8462:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 9863,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8462:7:16",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9872,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8462:32:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9860,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9647,
                      "src": "8442:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$9521_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 9873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8442:53:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 9859,
                  "id": 9874,
                  "nodeType": "Return",
                  "src": "8435:60:16"
                }
              ]
            },
            "documentation": {
              "id": 9850,
              "nodeType": "StructuredDocumentation",
              "src": "8184:157:16",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 9876,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nameLocation": "8355:6:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9856,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9853,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "8381:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9876,
                  "src": "8362:22:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 9852,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9851,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9822,
                      "src": "8362:10:16"
                    },
                    "referencedDeclaration": 9822,
                    "src": "8362:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9855,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "8394:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9876,
                  "src": "8386:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9854,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8386:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8361:39:16"
            },
            "returnParameters": {
              "id": 9859,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9858,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9876,
                  "src": "8419:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9857,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8419:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8418:6:16"
            },
            "scope": 10109,
            "src": "8346:156:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9902,
              "nodeType": "Block",
              "src": "8669:79:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 9888,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9880,
                          "src": "8696:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 9889,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9821,
                        "src": "8696:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 9896,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9882,
                                    "src": "8732:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 9895,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8724:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 9894,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8724:7:16",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 9897,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8724:14:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 9893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8716:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9892,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8716:7:16",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8716:23:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8708:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 9890,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8708:7:16",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9899,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8708:32:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9887,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9666,
                      "src": "8686:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9521_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 9900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8686:55:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 9886,
                  "id": 9901,
                  "nodeType": "Return",
                  "src": "8679:62:16"
                }
              ]
            },
            "documentation": {
              "id": 9877,
              "nodeType": "StructuredDocumentation",
              "src": "8508:70:16",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 9903,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nameLocation": "8592:8:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9883,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9880,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "8620:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9903,
                  "src": "8601:22:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 9879,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9878,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9822,
                      "src": "8601:10:16"
                    },
                    "referencedDeclaration": 9822,
                    "src": "8601:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9882,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "8633:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9903,
                  "src": "8625:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9881,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8625:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8600:39:16"
            },
            "returnParameters": {
              "id": 9886,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9885,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9903,
                  "src": "8663:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9884,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8663:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8662:6:16"
            },
            "scope": 10109,
            "src": "8583:165:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9917,
              "nodeType": "Block",
              "src": "8901:43:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 9913,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9907,
                          "src": "8926:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 9914,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9821,
                        "src": "8926:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 9912,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9680,
                      "src": "8918:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9521_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 9915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8918:19:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9911,
                  "id": 9916,
                  "nodeType": "Return",
                  "src": "8911:26:16"
                }
              ]
            },
            "documentation": {
              "id": 9904,
              "nodeType": "StructuredDocumentation",
              "src": "8754:70:16",
              "text": " @dev Returns the number of values in the set. O(1)."
            },
            "id": 9918,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nameLocation": "8838:6:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9907,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "8864:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9918,
                  "src": "8845:22:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 9906,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9905,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9822,
                      "src": "8845:10:16"
                    },
                    "referencedDeclaration": 9822,
                    "src": "8845:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8844:24:16"
            },
            "returnParameters": {
              "id": 9911,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9910,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9918,
                  "src": "8892:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9909,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8892:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8891:9:16"
            },
            "scope": 10109,
            "src": "8829:115:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9944,
              "nodeType": "Block",
              "src": "9369:73:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 9936,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9922,
                                      "src": "9414:3:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                                        "typeString": "struct EnumerableSet.AddressSet storage pointer"
                                      }
                                    },
                                    "id": 9937,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_inner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9821,
                                    "src": "9414:10:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$9521_storage",
                                      "typeString": "struct EnumerableSet.Set storage ref"
                                    }
                                  },
                                  {
                                    "id": 9938,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9924,
                                    "src": "9426:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Set_$9521_storage",
                                      "typeString": "struct EnumerableSet.Set storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 9935,
                                  "name": "_at",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9697,
                                  "src": "9410:3:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9521_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                                  }
                                },
                                "id": 9939,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9410:22:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 9934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9402:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9933,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9402:7:16",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9940,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9402:31:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9394:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint160_$",
                            "typeString": "type(uint160)"
                          },
                          "typeName": {
                            "id": 9931,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "9394:7:16",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9941,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9394:40:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 9930,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "9386:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 9929,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9386:7:16",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 9942,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9386:49:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 9928,
                  "id": 9943,
                  "nodeType": "Return",
                  "src": "9379:56:16"
                }
              ]
            },
            "documentation": {
              "id": 9919,
              "nodeType": "StructuredDocumentation",
              "src": "8950:331:16",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 9945,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nameLocation": "9295:2:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9925,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9922,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "9317:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9945,
                  "src": "9298:22:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 9921,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9920,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9822,
                      "src": "9298:10:16"
                    },
                    "referencedDeclaration": 9822,
                    "src": "9298:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9924,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "9330:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9945,
                  "src": "9322:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9923,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9322:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9297:39:16"
            },
            "returnParameters": {
              "id": 9928,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9927,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9945,
                  "src": "9360:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9926,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9360:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9359:9:16"
            },
            "scope": 10109,
            "src": "9286:156:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9974,
              "nodeType": "Block",
              "src": "10063:219:16",
              "statements": [
                {
                  "assignments": [
                    9959
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9959,
                      "mutability": "mutable",
                      "name": "store",
                      "nameLocation": "10090:5:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 9974,
                      "src": "10073:22:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9957,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10073:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 9958,
                        "nodeType": "ArrayTypeName",
                        "src": "10073:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9964,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 9961,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9949,
                          "src": "10106:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 9962,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9821,
                        "src": "10106:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 9960,
                      "name": "_values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9711,
                      "src": "10098:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9521_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"
                      }
                    },
                    "id": 9963,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10098:19:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10073:44:16"
                },
                {
                  "assignments": [
                    9969
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9969,
                      "mutability": "mutable",
                      "name": "result",
                      "nameLocation": "10144:6:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 9974,
                      "src": "10127:23:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9967,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10127:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9968,
                        "nodeType": "ArrayTypeName",
                        "src": "10127:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 9970,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10127:23:16"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "10213:39:16",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "10227:15:16",
                        "value": {
                          "name": "store",
                          "nodeType": "YulIdentifier",
                          "src": "10237:5:16"
                        },
                        "variableNames": [
                          {
                            "name": "result",
                            "nodeType": "YulIdentifier",
                            "src": "10227:6:16"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": "@solidity memory-safe-assembly",
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 9969,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "10227:6:16",
                      "valueSize": 1
                    },
                    {
                      "declaration": 9959,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "10237:5:16",
                      "valueSize": 1
                    }
                  ],
                  "id": 9971,
                  "nodeType": "InlineAssembly",
                  "src": "10204:48:16"
                },
                {
                  "expression": {
                    "id": 9972,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9969,
                    "src": "10269:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 9954,
                  "id": 9973,
                  "nodeType": "Return",
                  "src": "10262:13:16"
                }
              ]
            },
            "documentation": {
              "id": 9946,
              "nodeType": "StructuredDocumentation",
              "src": "9448:529:16",
              "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."
            },
            "id": 9975,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "values",
            "nameLocation": "9991:6:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9950,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9949,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "10017:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 9975,
                  "src": "9998:22:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 9948,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9947,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9822,
                      "src": "9998:10:16"
                    },
                    "referencedDeclaration": 9822,
                    "src": "9998:10:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$9822_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9997:24:16"
            },
            "returnParameters": {
              "id": 9954,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9953,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9975,
                  "src": "10045:16:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 9951,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "10045:7:16",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 9952,
                    "nodeType": "ArrayTypeName",
                    "src": "10045:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10044:18:16"
            },
            "scope": 10109,
            "src": "9982:300:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "canonicalName": "EnumerableSet.UintSet",
            "id": 9979,
            "members": [
              {
                "constant": false,
                "id": 9978,
                "mutability": "mutable",
                "name": "_inner",
                "nameLocation": "10333:6:16",
                "nodeType": "VariableDeclaration",
                "scope": 9979,
                "src": "10329:10:16",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                  "typeString": "struct EnumerableSet.Set"
                },
                "typeName": {
                  "id": 9977,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 9976,
                    "name": "Set",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9521,
                    "src": "10329:3:16"
                  },
                  "referencedDeclaration": 9521,
                  "src": "10329:3:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$9521_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "UintSet",
            "nameLocation": "10311:7:16",
            "nodeType": "StructDefinition",
            "scope": 10109,
            "src": "10304:42:16",
            "visibility": "public"
          },
          {
            "body": {
              "id": 9999,
              "nodeType": "Block",
              "src": "10589:56:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 9991,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9983,
                          "src": "10611:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 9992,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9978,
                        "src": "10611:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 9995,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9985,
                            "src": "10631:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10623:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 9993,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "10623:7:16",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 9996,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10623:14:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9990,
                      "name": "_add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9563,
                      "src": "10606:4:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$9521_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 9997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10606:32:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 9989,
                  "id": 9998,
                  "nodeType": "Return",
                  "src": "10599:39:16"
                }
              ]
            },
            "documentation": {
              "id": 9980,
              "nodeType": "StructuredDocumentation",
              "src": "10352:159:16",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 10000,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nameLocation": "10525:3:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9983,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "10545:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 10000,
                  "src": "10529:19:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 9982,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9981,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9979,
                      "src": "10529:7:16"
                    },
                    "referencedDeclaration": 9979,
                    "src": "10529:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9985,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "10558:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 10000,
                  "src": "10550:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9984,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10550:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10528:36:16"
            },
            "returnParameters": {
              "id": 9989,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9988,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 10000,
                  "src": "10583:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9987,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10583:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10582:6:16"
            },
            "scope": 10109,
            "src": "10516:129:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10020,
              "nodeType": "Block",
              "src": "10889:59:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 10012,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10004,
                          "src": "10914:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 10013,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9978,
                        "src": "10914:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 10016,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10006,
                            "src": "10934:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 10015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10926:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 10014,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "10926:7:16",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 10017,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10926:14:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10011,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9647,
                      "src": "10906:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$9521_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 10018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10906:35:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10010,
                  "id": 10019,
                  "nodeType": "Return",
                  "src": "10899:42:16"
                }
              ]
            },
            "documentation": {
              "id": 10001,
              "nodeType": "StructuredDocumentation",
              "src": "10651:157:16",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 10021,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nameLocation": "10822:6:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10007,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10004,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "10845:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 10021,
                  "src": "10829:19:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 10003,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10002,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9979,
                      "src": "10829:7:16"
                    },
                    "referencedDeclaration": 9979,
                    "src": "10829:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10006,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "10858:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 10021,
                  "src": "10850:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10005,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10850:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10828:36:16"
            },
            "returnParameters": {
              "id": 10010,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10009,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 10021,
                  "src": "10883:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10008,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10883:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10882:6:16"
            },
            "scope": 10109,
            "src": "10813:135:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10041,
              "nodeType": "Block",
              "src": "11112:61:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 10033,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10025,
                          "src": "11139:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 10034,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9978,
                        "src": "11139:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 10037,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10027,
                            "src": "11159:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 10036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "11151:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 10035,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "11151:7:16",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 10038,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11151:14:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10032,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9666,
                      "src": "11129:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9521_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 10039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11129:37:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10031,
                  "id": 10040,
                  "nodeType": "Return",
                  "src": "11122:44:16"
                }
              ]
            },
            "documentation": {
              "id": 10022,
              "nodeType": "StructuredDocumentation",
              "src": "10954:70:16",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 10042,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nameLocation": "11038:8:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10028,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10025,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "11063:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 10042,
                  "src": "11047:19:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 10024,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10023,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9979,
                      "src": "11047:7:16"
                    },
                    "referencedDeclaration": 9979,
                    "src": "11047:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10027,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "11076:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 10042,
                  "src": "11068:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10026,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11068:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11046:36:16"
            },
            "returnParameters": {
              "id": 10031,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10030,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 10042,
                  "src": "11106:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10029,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11106:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11105:6:16"
            },
            "scope": 10109,
            "src": "11029:144:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10056,
              "nodeType": "Block",
              "src": "11323:43:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 10052,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10046,
                          "src": "11348:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 10053,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9978,
                        "src": "11348:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 10051,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9680,
                      "src": "11340:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9521_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 10054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11340:19:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10050,
                  "id": 10055,
                  "nodeType": "Return",
                  "src": "11333:26:16"
                }
              ]
            },
            "documentation": {
              "id": 10043,
              "nodeType": "StructuredDocumentation",
              "src": "11179:70:16",
              "text": " @dev Returns the number of values on the set. O(1)."
            },
            "id": 10057,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nameLocation": "11263:6:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10046,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "11286:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 10057,
                  "src": "11270:19:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 10045,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10044,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9979,
                      "src": "11270:7:16"
                    },
                    "referencedDeclaration": 9979,
                    "src": "11270:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11269:21:16"
            },
            "returnParameters": {
              "id": 10050,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10049,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 10057,
                  "src": "11314:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10048,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11314:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11313:9:16"
            },
            "scope": 10109,
            "src": "11254:112:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10077,
              "nodeType": "Block",
              "src": "11788:55:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 10071,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10061,
                              "src": "11817:3:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                                "typeString": "struct EnumerableSet.UintSet storage pointer"
                              }
                            },
                            "id": 10072,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9978,
                            "src": "11817:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$9521_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "id": 10073,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10063,
                            "src": "11829:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$9521_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 10070,
                          "name": "_at",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9697,
                          "src": "11813:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9521_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                          }
                        },
                        "id": 10074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11813:22:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10069,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "11805:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": {
                        "id": 10068,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11805:7:16",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 10075,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11805:31:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10067,
                  "id": 10076,
                  "nodeType": "Return",
                  "src": "11798:38:16"
                }
              ]
            },
            "documentation": {
              "id": 10058,
              "nodeType": "StructuredDocumentation",
              "src": "11372:331:16",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 10078,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nameLocation": "11717:2:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10064,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10061,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "11736:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 10078,
                  "src": "11720:19:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 10060,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10059,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9979,
                      "src": "11720:7:16"
                    },
                    "referencedDeclaration": 9979,
                    "src": "11720:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10063,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "11749:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 10078,
                  "src": "11741:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10062,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11741:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11719:36:16"
            },
            "returnParameters": {
              "id": 10067,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10066,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 10078,
                  "src": "11779:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10065,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11779:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11778:9:16"
            },
            "scope": 10109,
            "src": "11708:135:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10107,
              "nodeType": "Block",
              "src": "12461:219:16",
              "statements": [
                {
                  "assignments": [
                    10092
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10092,
                      "mutability": "mutable",
                      "name": "store",
                      "nameLocation": "12488:5:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 10107,
                      "src": "12471:22:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 10090,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12471:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 10091,
                        "nodeType": "ArrayTypeName",
                        "src": "12471:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 10097,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 10094,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10082,
                          "src": "12504:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 10095,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9978,
                        "src": "12504:10:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$9521_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 10093,
                      "name": "_values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9711,
                      "src": "12496:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9521_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"
                      }
                    },
                    "id": 10096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12496:19:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12471:44:16"
                },
                {
                  "assignments": [
                    10102
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10102,
                      "mutability": "mutable",
                      "name": "result",
                      "nameLocation": "12542:6:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 10107,
                      "src": "12525:23:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 10100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12525:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10101,
                        "nodeType": "ArrayTypeName",
                        "src": "12525:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 10103,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12525:23:16"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "12611:39:16",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "12625:15:16",
                        "value": {
                          "name": "store",
                          "nodeType": "YulIdentifier",
                          "src": "12635:5:16"
                        },
                        "variableNames": [
                          {
                            "name": "result",
                            "nodeType": "YulIdentifier",
                            "src": "12625:6:16"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": "@solidity memory-safe-assembly",
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 10102,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "12625:6:16",
                      "valueSize": 1
                    },
                    {
                      "declaration": 10092,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "12635:5:16",
                      "valueSize": 1
                    }
                  ],
                  "id": 10104,
                  "nodeType": "InlineAssembly",
                  "src": "12602:48:16"
                },
                {
                  "expression": {
                    "id": 10105,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10102,
                    "src": "12667:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "functionReturnParameters": 10087,
                  "id": 10106,
                  "nodeType": "Return",
                  "src": "12660:13:16"
                }
              ]
            },
            "documentation": {
              "id": 10079,
              "nodeType": "StructuredDocumentation",
              "src": "11849:529:16",
              "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."
            },
            "id": 10108,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "values",
            "nameLocation": "12392:6:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10083,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10082,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "12415:3:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 10108,
                  "src": "12399:19:16",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 10081,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10080,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 9979,
                      "src": "12399:7:16"
                    },
                    "referencedDeclaration": 9979,
                    "src": "12399:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$9979_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12398:21:16"
            },
            "returnParameters": {
              "id": 10087,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10086,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 10108,
                  "src": "12443:16:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10084,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12443:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 10085,
                    "nodeType": "ArrayTypeName",
                    "src": "12443:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12442:18:16"
            },
            "scope": 10109,
            "src": "12383:297:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 10110,
        "src": "1228:11454:16"
      }
    ],
    "src": "115:12568:16"
  },
  "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220896386dbafaa0c78db3534aa54e3e2abfbc1ef48ed351dde6a9980b4ded6adfd64736f6c63430008020033",
  "bytecodeSha1": "1ce946f6a4eaa185320328620ccf999b9e86db7c",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.2+commit.661d1103"
  },
  "contractName": "EnumerableSet",
  "coverageMap": {
    "branches": {
      "16": {}
    },
    "statements": {
      "16": {}
    }
  },
  "dependencies": [],
  "deployedBytecode": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220896386dbafaa0c78db3534aa54e3e2abfbc1ef48ed351dde6a9980b4ded6adfd64736f6c63430008020033",
  "deployedSourceMap": "1228:11454:16:-:0;;;;;;;;",
  "language": "Solidity",
  "natspec": {
    "details": "Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableSet for EnumerableSet.AddressSet;     // Declare a set state variable     EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported. [WARNING] ====  Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.  See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.  In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet. ====",
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "offset": [
    1228,
    12682
  ],
  "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 PUSH4 0x86DBAFAA 0xC PUSH25 0xDB3534AA54E3E2ABFBC1EF48ED351DDE6A9980B4DED6ADFD64 PUSH20 0x6F6C634300080200330000000000000000000000 ",
  "pcMap": {
    "0": {
      "offset": [
        1228,
        12682
      ],
      "op": "PUSH20",
      "path": "16",
      "value": "0x0"
    },
    "21": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "ADDRESS",
      "path": "16"
    },
    "22": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "EQ",
      "path": "16"
    },
    "23": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x80"
    },
    "25": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "27": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "28": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "30": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "DUP1",
      "path": "16"
    },
    "31": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "REVERT",
      "path": "16"
    }
  },
  "sha1": "8b81534eb2b6020143d47494f95e5c014e6befbb",
  "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/structs/EnumerableSet.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n *     // Add the library methods\n *     using EnumerableSet for EnumerableSet.AddressSet;\n *\n *     // Declare a set state variable\n *     EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n *\n * [WARNING]\n * ====\n *  Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.\n *  See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n *\n *  In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet.\n * ====\n */\nlibrary EnumerableSet {\n    // To implement this library for multiple types with as little code\n    // repetition as possible, we write it in terms of a generic Set type with\n    // bytes32 values.\n    // The Set implementation uses private functions, and user-facing\n    // implementations (such as AddressSet) are just wrappers around the\n    // underlying Set.\n    // This means that we can only create new EnumerableSets for types that fit\n    // in bytes32.\n\n    struct Set {\n        // Storage of set values\n        bytes32[] _values;\n        // Position of the value in the `values` array, plus 1 because index 0\n        // means a value is not in the set.\n        mapping(bytes32 => uint256) _indexes;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function _add(Set storage set, bytes32 value) private returns (bool) {\n        if (!_contains(set, value)) {\n            set._values.push(value);\n            // The value is stored at length-1, but we add 1 to all indexes\n            // and use 0 as a sentinel value\n            set._indexes[value] = set._values.length;\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function _remove(Set storage set, bytes32 value) private returns (bool) {\n        // We read and store the value's index to prevent multiple reads from the same storage slot\n        uint256 valueIndex = set._indexes[value];\n\n        if (valueIndex != 0) {\n            // Equivalent to contains(set, value)\n            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n            // the array, and then remove the last element (sometimes called as 'swap and pop').\n            // This modifies the order of the array, as noted in {at}.\n\n            uint256 toDeleteIndex = valueIndex - 1;\n            uint256 lastIndex = set._values.length - 1;\n\n            if (lastIndex != toDeleteIndex) {\n                bytes32 lastValue = set._values[lastIndex];\n\n                // Move the last value to the index where the value to delete is\n                set._values[toDeleteIndex] = lastValue;\n                // Update the index for the moved value\n                set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\n            }\n\n            // Delete the slot where the moved value was stored\n            set._values.pop();\n\n            // Delete the index for the deleted slot\n            delete set._indexes[value];\n\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function _contains(Set storage set, bytes32 value) private view returns (bool) {\n        return set._indexes[value] != 0;\n    }\n\n    /**\n     * @dev Returns the number of values on the set. O(1).\n     */\n    function _length(Set storage set) private view returns (uint256) {\n        return set._values.length;\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\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(Set storage set, uint256 index) private view returns (bytes32) {\n        return set._values[index];\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function _values(Set storage set) private view returns (bytes32[] memory) {\n        return set._values;\n    }\n\n    // Bytes32Set\n\n    struct Bytes32Set {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _add(set._inner, value);\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _remove(set._inner, value);\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n        return _contains(set._inner, value);\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(Bytes32Set storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\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(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n        return _at(set._inner, index);\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\n        return _values(set._inner);\n    }\n\n    // AddressSet\n\n    struct AddressSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(AddressSet storage set, address value) internal returns (bool) {\n        return _add(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(AddressSet storage set, address value) internal returns (bool) {\n        return _remove(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(AddressSet storage set, address value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(AddressSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\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(AddressSet storage set, uint256 index) internal view returns (address) {\n        return address(uint160(uint256(_at(set._inner, index))));\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function values(AddressSet storage set) internal view returns (address[] memory) {\n        bytes32[] memory store = _values(set._inner);\n        address[] memory result;\n\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := store\n        }\n\n        return result;\n    }\n\n    // UintSet\n\n    struct UintSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(UintSet storage set, uint256 value) internal returns (bool) {\n        return _add(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(UintSet storage set, uint256 value) internal returns (bool) {\n        return _remove(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns the number of values on the set. O(1).\n     */\n    function length(UintSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\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(UintSet storage set, uint256 index) internal view returns (uint256) {\n        return uint256(_at(set._inner, index));\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function values(UintSet storage set) internal view returns (uint256[] memory) {\n        bytes32[] memory store = _values(set._inner);\n        uint256[] memory result;\n\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := store\n        }\n\n        return result;\n    }\n}\n",
  "sourceMap": "1228:11454:16:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1228:11454:16;;;;;;;;;;;;;;;;;",
  "sourcePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/structs/EnumerableSet.sol",
  "type": "library"
}