local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Error_0 = v1.Error;
local l_Map_0 = v1.Map;
local l_Object_0 = v1.Object;
local v7 = {};
local v8 = require(l_Parent_0.GraphQL);
local l_print_0 = v8.print;
local l_Kind_0 = v8.Kind;
local l_isSpecifiedScalarType_0 = v8.isSpecifiedScalarType;
local l_isIntrospectionType_0 = v8.isIntrospectionType;
local l_isSpecifiedDirective_0 = v8.isSpecifiedDirective;
local l_astFromValue_0 = v8.astFromValue;
local l_GraphQLDeprecatedDirective_0 = v8.GraphQLDeprecatedDirective;
local l_isObjectType_0 = v8.isObjectType;
local l_isInterfaceType_0 = v8.isInterfaceType;
local l_isUnionType_0 = v8.isUnionType;
local l_isInputObjectType_0 = v8.isInputObjectType;
local l_isEnumType_0 = v8.isEnumType;
local l_isScalarType_0 = v8.isScalarType;
local _ = require(script.Parent.types);
local l_astFromType_0 = require(script.Parent.astFromType).astFromType;
local l_getDirectivesInExtensions_0 = require(script.Parent["get-directives"]).getDirectivesInExtensions;
local l_astFromValueUntyped_0 = require(script.Parent.astFromValueUntyped).astFromValueUntyped;
local l_isSome_0 = require(script.Parent.helpers).isSome;
local l_getRootTypeMap_0 = require(script.Parent.rootTypes).getRootTypeMap;
local v28 = nil;
local v29 = nil;
local v30 = nil;
local v31 = nil;
local v32 = nil;
local v33 = nil;
local v34 = nil;
local v35 = nil;
local v36 = nil;
local v37 = nil;
local v38 = nil;
local v39 = nil;
local v40 = nil;
local v41 = nil;
local v42 = nil;
local v43 = nil;
local l_NULL_0 = v8.NULL;
local function v58(v45, v46)
    local l_pathToDirectivesInExtensions_0 = (if v46 ~= nil then v46 else {}).pathToDirectivesInExtensions;
    local v48 = v45:getTypeMap();
    local v49 = v28(v45, l_pathToDirectivesInExtensions_0);
    local v50 = if v49 ~= nil then {
        v49
    } else {};
    for _, v52 in (v45:getDirectives()), nil, nil do
        if not l_Boolean_0.toJSBoolean(l_isSpecifiedDirective_0(v52)) then
            table.insert(v50, v29(v52, v45, l_pathToDirectivesInExtensions_0));
        end;
    end;
    for _, v54 in v48, nil, nil do
        local v55 = v48:get(v54[1]);
        local v56 = l_isSpecifiedScalarType_0(v55);
        local v57 = l_isIntrospectionType_0(v55);
        if not (v56 or v57) then
            if not l_Boolean_0.toJSBoolean(l_isObjectType_0(v55)) then
                if not l_Boolean_0.toJSBoolean(l_isInterfaceType_0(v55)) then
                    if not l_Boolean_0.toJSBoolean(l_isUnionType_0(v55)) then
                        if not l_Boolean_0.toJSBoolean(l_isInputObjectType_0(v55)) then
                            if not l_Boolean_0.toJSBoolean(l_isEnumType_0(v55)) then
                                if not l_Boolean_0.toJSBoolean(l_isScalarType_0(v55)) then
                                    error(l_Error_0.new(("Unknown type %s."):format((tostring(v55)))));
                                else
                                    table.insert(v50, v40(v55, v45, l_pathToDirectivesInExtensions_0));
                                end;
                            else
                                table.insert(v50, v39(v55, v45, l_pathToDirectivesInExtensions_0));
                            end;
                        else
                            table.insert(v50, v38(v55, v45, l_pathToDirectivesInExtensions_0));
                        end;
                    else
                        table.insert(v50, v37(v55, v45, l_pathToDirectivesInExtensions_0));
                    end;
                else
                    table.insert(v50, v36(v55, v45, l_pathToDirectivesInExtensions_0));
                end;
            else
                table.insert(v50, v32(v55, v45, l_pathToDirectivesInExtensions_0));
            end;
        end;
    end;
    return {
        kind = l_Kind_0.DOCUMENT,
        definitions = v50
    };
end;
v7.getDocumentNodeFromSchema = v58;
v7.printSchemaWithDirectives = function(v59, v60)
    return l_print_0((v58(v59, if v60 ~= nil then v60 else {})));
end;
v28 = function(v61, v62)
    local v63 = l_Map_0.new({
        {
            "query",
            l_Object_0.None
        },
        {
            "mutation",
            l_Object_0.None
        },
        {
            "subscription",
            l_Object_0.None
        }
    });
    local v64 = {};
    if v61.astNode ~= nil then
        table.insert(v64, v61.astNode);
    end;
    if v61.extensionASTNodes ~= nil then
        for _, v66 in v61.extensionASTNodes, nil, nil do
            table.insert(v64, v66);
        end;
    end;
    for _, v68 in v64, nil, nil do
        if l_Boolean_0.toJSBoolean(v68.operationTypes) then
            for _, v70 in v68.operationTypes, nil, nil do
                v63:set(v70.operation, v70);
            end;
        end;
    end;
    local v71 = l_getRootTypeMap_0(v61);
    for _, v73 in v63, nil, nil do
        local v74, v75 = table.unpack(v73, 1, 2);
        local v76 = v71:get(v74);
        if v76 ~= nil then
            local v77 = l_astFromType_0(v76);
            if v75 ~= nil and v75 ~= l_Object_0.None then
                v75.type = v77;
            else
                v63:set(v74, {
                    kind = l_Kind_0.OPERATION_TYPE_DEFINITION,
                    operation = v74,
                    type = v77
                });
            end;
        end;
    end;
    local v78 = l_Array_0.filter(l_Array_0.concat({}, v63:values()), l_isSome_0);
    local v79 = v31(v61, v61, v62);
    if l_Boolean_0.toJSBoolean(#v78) or l_Boolean_0.toJSBoolean(#v79) then
        local v80 = {
            kind = if v78 ~= nil then l_Kind_0.SCHEMA_DEFINITION else l_Kind_0.SCHEMA_EXTENSION,
            operationTypes = v78,
            directives = v79
        };
        local l_toJSBoolean_0 = l_Boolean_0.toJSBoolean;
        local v82 = if typeof(v61.astNode) == "table" then v61.astNode.description else nil;
        v80.description = if not l_toJSBoolean_0(if v82 ~= nil then v82 else v61.description ~= nil) then nil else {
            kind = l_Kind_0.STRING,
            value = v61.description,
            block = true
        };
        return v80;
    else
        return nil;
    end;
end;
v7.astFromSchema = v28;
v29 = function(v83, v84, v85)
    local l_DIRECTIVE_DEFINITION_0 = l_Kind_0.DIRECTIVE_DEFINITION;
    local v87 = if typeof(v83.astNode) == "table" then v83.astNode.description else nil;
    local v88 = if v87 ~= nil then v87 else if l_Boolean_0.toJSBoolean(v83.description) then {
        kind = l_Kind_0.STRING,
        value = v83.description
    } else nil;
    local v89 = {
        kind = l_Kind_0.NAME,
        value = v83.name
    };
    local v91 = if typeof(v83.args) == "table" then l_Array_0.map(v83.args, function(v90)
        return v41(v90, v84, v85);
    end) else nil;
    local l_isRepeatable_0 = v83.isRepeatable;
    local v94 = if typeof(v83.locations) == "table" then l_Array_0.map(v83.locations, function(v93)
        return {
            kind = l_Kind_0.NAME,
            value = v93
        };
    end) else nil;
    return {
        kind = l_DIRECTIVE_DEFINITION_0,
        description = v88,
        name = v89,
        arguments = v91,
        repeatable = l_isRepeatable_0,
        locations = not not l_Boolean_0.toJSBoolean(v94) and v94 or {}
    };
end;
v7.astFromDirective = v29;
v31 = function(v95, v96, v97)
    local v98 = l_getDirectivesInExtensions_0(v95, v97);
    local v99 = {};
    if v95.astNode ~= nil then
        table.insert(v99, v95.astNode);
    end;
    if l_Array_0.indexOf(l_Object_0.keys(v95), "extensionASTNodes") ~= -1 and v95.extensionASTNodes ~= nil then
        v99 = l_Array_0.concat(v99, v95.extensionASTNodes);
    end;
    local v100 = nil;
    if v98 ~= nil then
        return (v33(v96, v98));
    else
        v100 = {};
        for _, v102 in v99, nil, nil do
            if l_Boolean_0.toJSBoolean(v102.directives) then
                v100 = l_Array_0.concat(v100, v102.directives);
            end;
        end;
        return v100;
    end;
end;
v7.getDirectiveNodes = v31;
local function v113(v103, v104, v105)
    local v106 = {};
    local v107 = nil;
    local v108 = l_getDirectivesInExtensions_0(v103, v105);
    local v109 = nil;
    v109 = if v108 ~= nil then v33(v104, v108) else if typeof(v103.astNode) == "table" then v103.astNode.directives else nil;
    if v109 ~= nil then
        v106 = l_Array_0.filter(v109, function(v110)
            return v110.name.value ~= "deprecated";
        end);
        if v103.deprecationReason ~= nil then
            v107 = if typeof(l_Array_0.filter(v109, function(v111)
                return v111.name.value == "deprecated";
            end)) == "table" then l_Array_0.filter(v109, function(v112)
                return v112.name.value == "deprecated";
            end)[1] else nil;
        end;
    end;
    if v103.deprecationReason ~= nil and v107 == nil then
        v107 = v35(v103.deprecationReason);
    end;
    if v107 == nil then
        return v106;
    else
        return (l_Array_0.concat({
            v107
        }, v106));
    end;
end;
v7.getDeprecatableDirectiveNodes = v113;
v41 = function(v114, v115, v116)
    local l_INPUT_VALUE_DEFINITION_0 = l_Kind_0.INPUT_VALUE_DEFINITION;
    local v118 = if typeof(v114.astNode) == "table" then v114.astNode.description else nil;
    return {
        kind = l_INPUT_VALUE_DEFINITION_0,
        description = if v118 ~= nil then v118 else if l_Boolean_0.toJSBoolean(v114.description) then {
            kind = l_Kind_0.STRING,
            value = v114.description,
            block = true
        } else nil,
        name = {
            kind = l_Kind_0.NAME,
            value = v114.name
        },
        type = l_astFromType_0(v114.type),
        defaultValue = if v114.defaultValue ~= nil then l_astFromValue_0(v114.defaultValue, v114.type) else nil,
        directives = v113(v114, v115, v116)
    };
end;
v7.astFromArg = v41;
v32 = function(v119, v120, v121)
    local l_OBJECT_TYPE_DEFINITION_0 = l_Kind_0.OBJECT_TYPE_DEFINITION;
    local v123 = if typeof(v119.astNode) == "table" then v119.astNode.description else nil;
    return {
        kind = l_OBJECT_TYPE_DEFINITION_0,
        description = if v123 ~= nil then v123 else if l_Boolean_0.toJSBoolean(v119.description) then {
            kind = l_Kind_0.STRING,
            value = v119.description,
            block = true
        } else nil,
        name = {
            kind = l_Kind_0.NAME,
            value = v119.name
        },
        fields = l_Array_0.map(v119:getFields():values(), function(v124)
            return v42(v124, v120, v121);
        end),
        interfaces = l_Array_0.map(l_Object_0.values(v119:getInterfaces()), function(v125)
            return (l_astFromType_0(v125));
        end),
        directives = v31(v119, v120, v121)
    };
end;
v7.astFromObjectType = v32;
v36 = function(v126, v127, v128)
    local l_INTERFACE_TYPE_DEFINITION_0 = l_Kind_0.INTERFACE_TYPE_DEFINITION;
    local v130 = if typeof(v126.astNode) == "table" then v126.astNode.description else nil;
    local v132 = {
        kind = l_INTERFACE_TYPE_DEFINITION_0,
        description = if v130 ~= nil then v130 else if l_Boolean_0.toJSBoolean(v126.description) then {
            kind = l_Kind_0.STRING,
            value = v126.description,
            block = true
        } else nil,
        name = {
            kind = l_Kind_0.NAME,
            value = v126.name
        },
        fields = l_Array_0.map(v126:getFields():values(), function(v131)
            return v42(v131, v127, v128);
        end),
        directives = v31(v126, v127, v128)
    };
    if v126.getInterfaces ~= nil then
        v132.interfaces = l_Array_0.map(l_Object_0.values(v126:getInterfaces()), function(v133)
            return (l_astFromType_0(v133));
        end);
    end;
    return v132;
end;
v7.astFromInterfaceType = v36;
v37 = function(v134, v135, v136)
    local l_UNION_TYPE_DEFINITION_0 = l_Kind_0.UNION_TYPE_DEFINITION;
    local v138 = if typeof(v134.astNode) == "table" then v134.astNode.description else nil;
    return {
        kind = l_UNION_TYPE_DEFINITION_0,
        description = if v138 ~= nil then v138 else if l_Boolean_0.toJSBoolean(v134.description) then {
            kind = l_Kind_0.STRING,
            value = v134.description,
            block = true
        } else nil,
        name = {
            kind = l_Kind_0.NAME,
            value = v134.name
        },
        directives = v31(v134, v135, v136),
        types = l_Array_0.map(v134:getTypes(), function(v139)
            return (l_astFromType_0(v139));
        end)
    };
end;
v7.astFromUnionType = v37;
v38 = function(v140, v141, v142)
    local l_INPUT_OBJECT_TYPE_DEFINITION_0 = l_Kind_0.INPUT_OBJECT_TYPE_DEFINITION;
    local v144 = if typeof(v140.astNode) == "table" then v140.astNode.description else nil;
    return {
        kind = l_INPUT_OBJECT_TYPE_DEFINITION_0,
        description = if v144 ~= nil then v144 else if l_Boolean_0.toJSBoolean(v140.description) then {
            kind = l_Kind_0.STRING,
            value = v140.description,
            block = true
        } else nil,
        name = {
            kind = l_Kind_0.NAME,
            value = v140.name
        },
        fields = l_Array_0.map(v140:getFields():values(), function(v145)
            return v43(v145, v141, v142);
        end),
        directives = v31(v140, v141, v142)
    };
end;
v7.astFromInputObjectType = v38;
v39 = function(v146, v147, v148)
    local l_ENUM_TYPE_DEFINITION_0 = l_Kind_0.ENUM_TYPE_DEFINITION;
    local v150 = if typeof(v146.astNode) == "table" then v146.astNode.description else nil;
    return {
        kind = l_ENUM_TYPE_DEFINITION_0,
        description = if v150 ~= nil then v150 else if l_Boolean_0.toJSBoolean(v146.description) then {
            kind = l_Kind_0.STRING,
            value = v146.description,
            block = true
        } else nil,
        name = {
            kind = l_Kind_0.NAME,
            value = v146.name
        },
        values = l_Array_0.map(l_Object_0.values(v146:getValues()), function(v151)
            return v34(v151, v147, v148);
        end),
        directives = v31(v146, v147, v148)
    };
end;
v7.astFromEnumType = v39;
v40 = function(v152, v153, v154)
    local v155 = l_getDirectivesInExtensions_0(v152, v154);
    local v156 = if not l_Boolean_0.toJSBoolean(v155) then if typeof(v152.astNode) == "table" then v152.astNode.directives else nil or {} else v33(v153, v155);
    local v157 = not not l_Boolean_0.toJSBoolean(v152.specifiedByUrl) and v152.specifiedByUrl or v152.specifiedByURL;
    if l_Boolean_0.toJSBoolean(if not l_Boolean_0.toJSBoolean(v157) then v157 else not l_Boolean_0.toJSBoolean(l_Array_0.some(v156, function(v158)
        return v158.name.value == "specifiedBy";
    end))) then
        table.insert(v156, v30("specifiedBy", {
            url = v157
        }));
    end;
    local l_SCALAR_TYPE_DEFINITION_0 = l_Kind_0.SCALAR_TYPE_DEFINITION;
    local v160 = if typeof(v152.astNode) == "table" then v152.astNode.description else nil;
    return {
        kind = l_SCALAR_TYPE_DEFINITION_0,
        description = if v160 ~= nil then v160 else if l_Boolean_0.toJSBoolean(v152.description) then {
            kind = l_Kind_0.STRING,
            value = v152.description,
            block = true
        } else nil,
        name = {
            kind = l_Kind_0.NAME,
            value = v152.name
        },
        directives = v156
    };
end;
v7.astFromScalarType = v40;
v42 = function(v161, v162, v163)
    local l_FIELD_DEFINITION_0 = l_Kind_0.FIELD_DEFINITION;
    local v165 = if typeof(v161.astNode) == "table" then v161.astNode.description else nil;
    return {
        kind = l_FIELD_DEFINITION_0,
        description = if v165 ~= nil then v165 else if l_Boolean_0.toJSBoolean(v161.description) then {
            kind = l_Kind_0.STRING,
            value = v161.description,
            block = true
        } else nil,
        name = {
            kind = l_Kind_0.NAME,
            value = v161.name
        },
        arguments = l_Array_0.map(v161.args, function(v166)
            return v41(v166, v162, v163);
        end),
        type = l_astFromType_0(v161.type),
        directives = v113(v161, v162, v163)
    };
end;
v7.astFromField = v42;
v43 = function(v167, v168, v169)
    local l_INPUT_VALUE_DEFINITION_1 = l_Kind_0.INPUT_VALUE_DEFINITION;
    local v171 = if typeof(v167.astNode) == "table" then v167.astNode.description else nil;
    local v172 = if v171 ~= nil then v171 else if l_Boolean_0.toJSBoolean(v167.description) then {
        kind = l_Kind_0.STRING,
        value = v167.description,
        block = true
    } else nil;
    local v173 = {
        kind = l_Kind_0.NAME,
        value = v167.name
    };
    local v174 = l_astFromType_0(v167.type);
    local v175 = v113(v167, v168, v169);
    local v176 = l_astFromValue_0(v167.defaultValue, v167.type);
    return {
        kind = l_INPUT_VALUE_DEFINITION_1,
        description = v172,
        name = v173,
        type = v174,
        directives = v175,
        defaultValue = if v176 ~= nil and v176 ~= l_NULL_0 then v176 else nil
    };
end;
v7.astFromInputField = v43;
v34 = function(v177, v178, v179)
    local l_ENUM_VALUE_DEFINITION_0 = l_Kind_0.ENUM_VALUE_DEFINITION;
    local v181 = if typeof(v177.astNode) == "table" then v177.astNode.description else nil;
    return {
        kind = l_ENUM_VALUE_DEFINITION_0,
        description = if v181 ~= nil then v181 else if l_Boolean_0.toJSBoolean(v177.description) then {
            kind = l_Kind_0.STRING,
            value = v177.description,
            block = true
        } else nil,
        name = {
            kind = l_Kind_0.NAME,
            value = v177.name
        },
        directives = v113(v177, v178, v179)
    };
end;
v7.astFromEnumValue = v34;
v35 = function(v182)
    return v30("deprecated", {
        reason = v182
    }, l_GraphQLDeprecatedDirective_0);
end;
v7.makeDeprecatedDirective = v35;
v30 = function(v183, v184, v185)
    local v186 = {};
    if v185 ~= nil then
        for _, v188 in v185.args, nil, nil do
            local l_name_0 = v188.name;
            local v190 = v184[tostring(l_name_0)];
            if v190 ~= nil then
                local v191 = l_astFromValue_0(v190, v188.type);
                if l_Boolean_0.toJSBoolean(v191) then
                    table.insert(v186, {
                        kind = l_Kind_0.ARGUMENT,
                        name = {
                            kind = l_Kind_0.NAME,
                            value = l_name_0
                        },
                        value = v191
                    });
                end;
            end;
        end;
    else
        for v192 in v184, nil, nil do
            local v193 = l_astFromValueUntyped_0(v184[tostring(v192)]);
            if l_Boolean_0.toJSBoolean(v193) then
                table.insert(v186, {
                    kind = l_Kind_0.ARGUMENT,
                    name = {
                        kind = l_Kind_0.NAME,
                        value = v192
                    },
                    value = v193
                });
            end;
        end;
    end;
    return {
        kind = l_Kind_0.DIRECTIVE,
        name = {
            kind = l_Kind_0.NAME,
            value = v183
        },
        arguments = v186
    };
end;
v7.makeDirectiveNode = v30;
v33 = function(v194, v195)
    local v196 = {};
    for v197 in v195, nil, nil do
        local v198 = v195[tostring(v197)];
        local v199 = if typeof(v194) == "table" then v194:getDirective(v197) else nil;
        if l_Array_0.isArray(v198) and #v198 ~= 0 then
            for _, v201 in v198, nil, nil do
                table.insert(v196, v30(v197, v201, v199));
            end;
        else
            table.insert(v196, v30(v197, v198, v199));
        end;
    end;
    return v196;
end;
v7.makeDirectiveNodes = v33;
return v7;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Error_0 = v1.Error;
local l_Object_0 = v1.Object;
local v6 = {};
local v7 = require(l_Parent_0.GraphQL);
local l_GraphQLEnumType_0 = v7.GraphQLEnumType;
local l_GraphQLInputObjectType_0 = v7.GraphQLInputObjectType;
local l_GraphQLInterfaceType_0 = v7.GraphQLInterfaceType;
local l_GraphQLObjectType_0 = v7.GraphQLObjectType;
local l_GraphQLScalarType_0 = v7.GraphQLScalarType;
local l_GraphQLUnionType_0 = v7.GraphQLUnionType;
local l_isEnumType_0 = v7.isEnumType;
local l_isInterfaceType_0 = v7.isInterfaceType;
local l_isInputObjectType_0 = v7.isInputObjectType;
local l_isObjectType_0 = v7.isObjectType;
local l_isScalarType_0 = v7.isScalarType;
local l_isUnionType_0 = v7.isUnionType;
v6.renameType = function(v20, v21)
    if not l_Boolean_0.toJSBoolean(l_isObjectType_0(v20)) then
        if not l_Boolean_0.toJSBoolean(l_isInterfaceType_0(v20)) then
            if not l_Boolean_0.toJSBoolean(l_isUnionType_0(v20)) then
                if not l_Boolean_0.toJSBoolean(l_isInputObjectType_0(v20)) then
                    if not l_Boolean_0.toJSBoolean(l_isEnumType_0(v20)) then
                        if not l_Boolean_0.toJSBoolean(l_isScalarType_0(v20)) then
                            error(l_Error_0.new(("Unknown type %s."):format((tostring(v20)))));
                            return ;
                        else
                            return l_GraphQLScalarType_0.new(l_Object_0.assign({}, v20:toConfig(), {
                                name = v21,
                                astNode = if v20.astNode == nil then v20.astNode else l_Object_0.assign({}, v20.astNode, {
                                    name = l_Object_0.assign({}, v20.astNode.name, {
                                        value = v21
                                    })
                                }),
                                extensionASTNodes = if v20.extensionASTNodes == nil then v20.extensionASTNodes else l_Array_0.map(v20.extensionASTNodes, function(v22)
                                    return l_Object_0.assign({}, v22, {
                                        name = l_Object_0.assign({}, v22.name, {
                                            value = v21
                                        })
                                    });
                                end)
                            }));
                        end;
                    else
                        return l_GraphQLEnumType_0.new(l_Object_0.assign({}, v20:toConfig(), {
                            name = v21,
                            astNode = if v20.astNode == nil then v20.astNode else l_Object_0.assign({}, v20.astNode, {
                                name = l_Object_0.assign({}, v20.astNode.name, {
                                    value = v21
                                })
                            }),
                            extensionASTNodes = if v20.extensionASTNodes == nil then v20.extensionASTNodes else l_Array_0.map(v20.extensionASTNodes, function(v23)
                                return l_Object_0.assign({}, v23, {
                                    name = l_Object_0.assign({}, v23.name, {
                                        value = v21
                                    })
                                });
                            end)
                        }));
                    end;
                else
                    return l_GraphQLInputObjectType_0.new(l_Object_0.assign({}, v20:toConfig(), {
                        name = v21,
                        astNode = if v20.astNode == nil then v20.astNode else l_Object_0.assign({}, v20.astNode, {
                            name = l_Object_0.assign({}, v20.astNode.name, {
                                value = v21
                            })
                        }),
                        extensionASTNodes = if v20.extensionASTNodes == nil then v20.extensionASTNodes else l_Array_0.map(v20.extensionASTNodes, function(v24)
                            return l_Object_0.assign({}, v24, {
                                name = l_Object_0.assign({}, v24.name, {
                                    value = v21
                                })
                            });
                        end)
                    }));
                end;
            else
                return l_GraphQLUnionType_0.new(l_Object_0.assign({}, v20:toConfig(), {
                    name = v21,
                    astNode = if v20.astNode == nil then v20.astNode else l_Object_0.assign({}, v20.astNode, {
                        name = l_Object_0.assign({}, v20.astNode.name, {
                            value = v21
                        })
                    }),
                    extensionASTNodes = if v20.extensionASTNodes == nil then v20.extensionASTNodes else l_Array_0.map(v20.extensionASTNodes, function(v25)
                        return l_Object_0.assign({}, v25, {
                            name = l_Object_0.assign({}, v25.name, {
                                value = v21
                            })
                        });
                    end)
                }));
            end;
        else
            return l_GraphQLInterfaceType_0.new(l_Object_0.assign({}, v20:toConfig(), {
                name = v21,
                astNode = if v20.astNode == nil then v20.astNode else l_Object_0.assign({}, v20.astNode, {
                    name = l_Object_0.assign({}, v20.astNode.name, {
                        value = v21
                    })
                }),
                extensionASTNodes = if v20.extensionASTNodes == nil then v20.extensionASTNodes else l_Array_0.map(v20.extensionASTNodes, function(v26)
                    return l_Object_0.assign({}, v26, {
                        name = l_Object_0.assign({}, v26.name, {
                            value = v21
                        })
                    });
                end)
            }));
        end;
    else
        return l_GraphQLObjectType_0.new(l_Object_0.assign({}, v20:toConfig(), {
            name = v21,
            astNode = if v20.astNode == nil then v20.astNode else l_Object_0.assign({}, v20.astNode, {
                name = l_Object_0.assign({}, v20.astNode.name, {
                    value = v21
                })
            }),
            extensionASTNodes = if v20.extensionASTNodes == nil then v20.extensionASTNodes else l_Array_0.map(v20.extensionASTNodes, function(v27)
                return l_Object_0.assign({}, v27, {
                    name = l_Object_0.assign({}, v27.name, {
                        value = v21
                    })
                });
            end)
        }));
    end;
end;
return v6;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Error_0 = v1.Error;
local l_Object_0 = v1.Object;
local l_console_0 = v1.console;
local v6 = {};
local v7 = require(l_Parent_0.GraphQL);
local l_GraphQLDirective_0 = v7.GraphQLDirective;
local l_GraphQLEnumType_0 = v7.GraphQLEnumType;
local l_GraphQLInputObjectType_0 = v7.GraphQLInputObjectType;
local l_GraphQLInterfaceType_0 = v7.GraphQLInterfaceType;
local l_GraphQLList_0 = v7.GraphQLList;
local l_GraphQLObjectType_0 = v7.GraphQLObjectType;
local l_GraphQLNonNull_0 = v7.GraphQLNonNull;
local l_GraphQLScalarType_0 = v7.GraphQLScalarType;
local l_GraphQLUnionType_0 = v7.GraphQLUnionType;
local l_isInterfaceType_0 = v7.isInterfaceType;
local l_isEnumType_0 = v7.isEnumType;
local l_isInputObjectType_0 = v7.isInputObjectType;
local l_isListType_0 = v7.isListType;
local l_isNamedType_0 = v7.isNamedType;
local l_isNonNullType_0 = v7.isNonNullType;
local l_isObjectType_0 = v7.isObjectType;
local l_isScalarType_0 = v7.isScalarType;
local l_isUnionType_0 = v7.isUnionType;
local l_isSpecifiedScalarType_0 = v7.isSpecifiedScalarType;
local l_isSpecifiedDirective_0 = v7.isSpecifiedDirective;
local v28 = require(script.Parent.stub);
local l_getBuiltInForStub_0 = v28.getBuiltInForStub;
local l_isNamedStub_0 = v28.isNamedStub;
local l_Map_0 = v1.Map;
local l_String_0 = v1.String;
v6.rewireTypes = function(v33, v34)
    local v35 = nil;
    local v36 = nil;
    local v37 = nil;
    local v38 = nil;
    local v39 = nil;
    local v40 = nil;
    local v41 = nil;
    local v42 = nil;
    local v43 = nil;
    v37 = function(v44)
        if not l_isSpecifiedDirective_0(v44) then
            local v45 = v44:toConfig();
            v45.args = v38(v45.args);
            return l_GraphQLDirective_0.new(v45);
        else
            return v44;
        end;
    end;
    v38 = function(v46)
        local v47 = l_Map_0.new();
        for _, v49 in v46, nil, nil do
            local v50 = v49[1];
            local v51 = v46:get(v50);
            local v52 = v43(v51.type);
            if v52 ~= nil then
                v51.type = v52;
                v47:set(v50, v51);
            end;
        end;
        return v47;
    end;
    v39 = function(v53)
        if not l_isObjectType_0(v53) then
            if not l_isInterfaceType_0(v53) then
                if not l_isUnionType_0(v53) then
                    if not l_isInputObjectType_0(v53) then
                        if not l_isEnumType_0(v53) then
                            if not l_isScalarType_0(v53) then
                                error(l_Error_0.new(("Unexpected schema type: %s"):format((tostring(v53)))));
                                return ;
                            elseif not l_isSpecifiedScalarType_0(v53) then
                                local v54 = v53:toConfig();
                                local l_serialize_0 = v54.serialize;
                                local l_parseValue_0 = v54.parseValue;
                                local l_parseLiteral_0 = v54.parseLiteral;
                                if l_serialize_0 then
                                    v54.serialize = function(...)
                                        return l_serialize_0(v54, ...);
                                    end;
                                end;
                                if l_parseValue_0 then
                                    v54.parseValue = function(...)
                                        return l_parseValue_0(v54, ...);
                                    end;
                                end;
                                if l_parseLiteral_0 then
                                    v54.parseLiteral = function(...)
                                        return l_parseLiteral_0(v54, ...);
                                    end;
                                end;
                                return l_GraphQLScalarType_0.new(v54);
                            else
                                return v53;
                            end;
                        else
                            return l_GraphQLEnumType_0.new((v53:toConfig()));
                        end;
                    else
                        local v58 = v53:toConfig();
                        return l_GraphQLInputObjectType_0.new((l_Object_0.assign({}, v58, {
                            fields = function()
                                return v41(v58.fields);
                            end
                        })));
                    end;
                else
                    local v59 = v53:toConfig();
                    return l_GraphQLUnionType_0.new((l_Object_0.assign({}, v59, {
                        types = function()
                            return v42(v59.types);
                        end
                    })));
                end;
            else
                local v60 = v53:toConfig();
                local v61 = l_Object_0.assign({}, v60, {
                    fields = function()
                        return v40(v60.fields);
                    end
                });
                if l_Array_0.indexOf(l_Object_0.keys(v61), "interfaces") ~= -1 then
                    v61.interfaces = function(_)
                        return v42(v60.interfaces);
                    end;
                end;
                return l_GraphQLInterfaceType_0.new(v61);
            end;
        else
            local v63 = v53:toConfig();
            return l_GraphQLObjectType_0.new((l_Object_0.assign({}, v63, {
                fields = function()
                    return v40(v63.fields);
                end,
                interfaces = function()
                    return v42(v63.interfaces);
                end
            })));
        end;
    end;
    v40 = function(v64)
        local v65 = l_Map_0.new();
        for _, v67 in v64, nil, nil do
            local v68 = v67[1];
            local v69 = v64:get(v68);
            local v70 = v43(v69.type);
            if not (not (v70 ~= nil) or not v69.args) then
                v69.type = v70;
                v69.args = v38(v69.args);
                v65:set(v68, v69);
            end;
        end;
        return v65;
    end;
    v41 = function(v71)
        local v72 = l_Map_0.new();
        for _, v74 in v71, nil, nil do
            local v75 = v74[1];
            local v76 = v71:get(v75);
            local v77 = v43(v76.type);
            if v77 ~= nil then
                v76.type = v77;
                v72:set(v75, v76);
            end;
        end;
        return v72;
    end;
    v42 = function(v78)
        local v79 = {};
        for _, v81 in v78, nil, nil do
            local v82 = v43(v81);
            if v82 ~= nil and v82 ~= l_Object_0.None then
                table.insert(v79, v82);
            end;
        end;
        return v79;
    end;
    v43 = function(v83)
        if not l_isListType_0(v83) then
            if not l_isNonNullType_0(v83) then
                if not l_isNamedType_0(v83) then
                    return nil;
                else
                    local v84 = v35:get(v83.name);
                    if v84 == nil then
                        v84 = if not l_isNamedStub_0(v83) then v39(v83) else l_getBuiltInForStub_0(v83);
                        v35:set(v83.name, v84);
                        v36:set(v84.name, (v35:get(v83.name)));
                    end;
                    if v84 ~= nil and v84 ~= l_Object_0.None then
                        return (v36:get(v84.name));
                    else
                        return nil;
                    end;
                end;
            else
                local v85 = v43(v83.ofType);
                if v85 ~= nil and v85 ~= l_Object_0.None then
                    return (l_GraphQLNonNull_0.new(v85));
                else
                    return nil;
                end;
            end;
        else
            local v86 = v43(v83.ofType);
            if v86 ~= nil and v86 ~= l_Object_0.None then
                return (l_GraphQLList_0.new(v86));
            else
                return nil;
            end;
        end;
    end;
    v35 = l_Map_0.new();
    for _, v88 in v33, nil, nil do
        local v89 = v88[1];
        v35:set(v89, (v33:get(v89)));
    end;
    v36 = l_Map_0.new();
    for _, v91 in v35, nil, nil do
        local v92 = v91[1];
        local v93 = v35:get(v92);
        if not (not (v93 ~= nil and v93 ~= l_Object_0.None) or l_String_0.startsWith(v92, "__")) then
            local l_name_0 = v93.name;
            if not l_String_0.startsWith(l_name_0, "__") then
                if v36:get(l_name_0) ~= nil then
                    l_console_0.warn(("Duplicate schema type name %s found; keeping the existing one found in the schema"):format((tostring(l_name_0))));
                else
                    v36:set(l_name_0, v93);
                end;
            end;
        end;
    end;
    for _, v96 in v36, nil, nil do
        local v97 = v96[1];
        v36:set(v97, v39(v36:get(v97)));
    end;
    return {
        typeMap = v36,
        directives = l_Array_0.map(v34, function(v98)
            return v37(v98);
        end)
    };
end;
return v6;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Error_0 = v1.Error;
local l_Map_0 = v1.Map;
local l_Set_0 = v1.Set;
local v7 = {};
local _ = require(l_Parent_0.GraphQL);
local l_memoize1_0 = require(script.Parent.memoize).memoize1;
local v10 = nil;
local v11 = nil;
v7.getDefinedRootType = function(v12, v13)
    local v14 = v10(v12):get(v13);
    if v14 == nil then
        error(l_Error_0.new(("Root type for operation \"%s\" not defined by the given schema."):format((tostring(v13)))));
    end;
    return v14;
end;
local function _(v15)
    local v16 = {};
    v15:forEach(function(v17)
        table.insert(v16, v17);
    end);
    return v16;
end;
v7.getRootTypeNames = l_memoize1_0(function(v19)
    local v20 = v11(v19);
    local l_new_0 = l_Set_0.new;
    local l_map_0 = l_Array_0.map;
    local l_concat_0 = l_Array_0.concat;
    local v24 = {};
    local v25 = {};
    v20:forEach(function(v26)
        table.insert(v25, v26);
    end);
    return l_new_0(l_map_0(l_concat_0(v24, v25), function(v27)
        return v27.name;
    end));
end);
v11 = l_memoize1_0(function(v28)
    return l_Set_0.new(v10(v28):values());
end);
v7.getRootTypes = v11;
v10 = l_memoize1_0(function(v29)
    local v30 = l_Map_0.new();
    local v31 = v29:getQueryType();
    if l_Boolean_0.toJSBoolean(v31) then
        v30:set("query", v31);
    end;
    local v32 = v29:getMutationType();
    if l_Boolean_0.toJSBoolean(v32) then
        v30:set("mutation", v32);
    end;
    local v33 = v29:getSubscriptionType();
    if l_Boolean_0.toJSBoolean(v33) then
        v30:set("subscription", v33);
    end;
    return v30;
end);
v7.getRootTypeMap = v10;
return v7;


local l_Parent_0 = script.Parent.Parent;
local v1 = {};
local l_parse_0 = require(l_Parent_0.GraphQL).parse;
local _ = require(script.Parent.Interfaces);
v1.parseSelectionSet = function(v4, v5)
    return l_parse_0(v4, v5).definitions[1].selectionSet;
end;
return v1;


local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local v2 = {};
local v3 = require(l_Parent_0.GraphQL);
local l_GraphQLObjectType_0 = v3.GraphQLObjectType;
local l_GraphQLInterfaceType_0 = v3.GraphQLInterfaceType;
local l_GraphQLInputObjectType_0 = v3.GraphQLInputObjectType;
local l_GraphQLString_0 = v3.GraphQLString;
local l_GraphQLInt_0 = v3.GraphQLInt;
local l_GraphQLFloat_0 = v3.GraphQLFloat;
local l_GraphQLBoolean_0 = v3.GraphQLBoolean;
local l_GraphQLID_0 = v3.GraphQLID;
local l_Kind_0 = v3.Kind;
local l_GraphQLList_0 = v3.GraphQLList;
local l_GraphQLNonNull_0 = v3.GraphQLNonNull;
local function v18(v15, v16)
    local _ = nil;
    return (if v16 == "object" then l_GraphQLObjectType_0 else if v16 == "interface" then l_GraphQLInterfaceType_0 else l_GraphQLInputObjectType_0).new({
        name = v15,
        fields = {
            _fake = {
                type = l_GraphQLString_0
            }
        }
    });
end;
v2.createNamedStub = v18;
local function v19(v20, v21)
    local l_kind_0 = v20.kind;
    if l_kind_0 == l_Kind_0.LIST_TYPE then
        return l_GraphQLList_0.new(v19(v20.type, v21));
    elseif l_kind_0 == l_Kind_0.NON_NULL_TYPE then
        return l_GraphQLNonNull_0.new(v19(v20.type, v21));
    elseif v21 == "output" then
        return v18(v20.name.value, "object");
    else
        return v18(v20.name.value, "input");
    end;
end;
v2.createStub = v19;
v2.isNamedStub = function(v23)
    if v23.getFields ~= nil then
        local v24 = v23:getFields();
        for _, v26 in v24, nil, nil do
            return v24[tostring((table.unpack(v26)))].name == "_fake";
        end;
    end;
    return false;
end;
v2.getBuiltInForStub = function(v27)
    local l_name_0 = v27.name;
    if l_name_0 == l_GraphQLInt_0.name then
        return l_GraphQLInt_0;
    elseif l_name_0 == l_GraphQLFloat_0.name then
        return l_GraphQLFloat_0;
    elseif l_name_0 == l_GraphQLString_0.name then
        return l_GraphQLString_0;
    elseif l_name_0 == l_GraphQLBoolean_0.name then
        return l_GraphQLBoolean_0;
    elseif l_name_0 == l_GraphQLID_0.name then
        return l_GraphQLID_0;
    else
        return v27;
    end;
end;
return v2;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local v4 = {};
local v5 = require(l_Parent_0.GraphQL);
local l_getNullableType_0 = v5.getNullableType;
local l_isLeafType_0 = v5.isLeafType;
local l_isListType_0 = v5.isListType;
local l_isInputObjectType_0 = v5.isInputObjectType;
local _ = require(script.Parent.types);
local function v11(v12, v13, v14, v15)
    local v16 = if v14 ~= nil then v14 else nil;
    local v17 = if v15 ~= nil then v15 else nil;
    if v13 == nil then
        return v13;
    else
        local v18 = l_getNullableType_0(v12);
        if not l_Boolean_0.toJSBoolean(l_isLeafType_0(v18)) then
            if not l_Boolean_0.toJSBoolean(l_isListType_0(v18)) then
                if not l_Boolean_0.toJSBoolean(l_isInputObjectType_0(v18)) then
                    return nil;
                else
                    local v19 = v18:getFields();
                    local v20 = {};
                    for v21 in v13, nil, nil do
                        local v22 = v19[tostring(v21)];
                        if v22 ~= nil then
                            v20[tostring(v21)] = v11(v22.type, v13[tostring(v21)], v16, v17);
                        end;
                    end;
                    if v17 ~= nil then
                        return (v17(v18, v20));
                    else
                        return v20;
                    end;
                end;
            else
                return l_Array_0.map(v13, function(v23)
                    return v11(v18.ofType, v23, v16, v17);
                end);
            end;
        elseif v16 ~= nil then
            return (v16(v18, v13));
        else
            return v13;
        end;
    end;
end;
v4.transformInputValue = v11;
v4.serializeInputValue = function(v24, v25)
    return v11(v24, v25, function(v26, v27)
        local l_status_0, l_result_0 = pcall(v26.serialize, v26, v27);
        if l_status_0 then
            return l_result_0;
        else
            return v27;
        end;
    end);
end;
v4.parseInputValue = function(v30, v31)
    return v11(v30, v31, function(v32, v33)
        local l_status_1, l_result_1 = pcall(v32.parseValue, v32, v33);
        if l_status_1 then
            return l_result_1;
        else
            return v33;
        end;
    end);
end;
v4.parseInputValueLiteral = function(v36, v37)
    return v11(v36, v37, function(v38, v39)
        return v38:parseLiteral(v39, {});
    end);
end;
return v4;


local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local v2 = {};
local _ = require(l_Parent_0.GraphQL).visit;
v2.DirectiveLocation = {
    QUERY = "QUERY",
    MUTATION = "MUTATION",
    SUBSCRIPTION = "SUBSCRIPTION",
    FIELD = "FIELD",
    FRAGMENT_DEFINITION = "FRAGMENT_DEFINITION",
    FRAGMENT_SPREAD = "FRAGMENT_SPREAD",
    INLINE_FRAGMENT = "INLINE_FRAGMENT",
    VARIABLE_DEFINITION = "VARIABLE_DEFINITION",
    SCHEMA = "SCHEMA",
    SCALAR = "SCALAR",
    OBJECT = "OBJECT",
    FIELD_DEFINITION = "FIELD_DEFINITION",
    ARGUMENT_DEFINITION = "ARGUMENT_DEFINITION",
    INTERFACE = "INTERFACE",
    UNION = "UNION",
    ENUM = "ENUM",
    ENUM_VALUE = "ENUM_VALUE",
    INPUT_OBJECT = "INPUT_OBJECT",
    INPUT_FIELD_DEFINITION = "INPUT_FIELD_DEFINITION"
};
return v2;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Object_0 = v1.Object;
local v4 = {};
local l_Kind_0 = require(l_Parent_0.GraphQL).Kind;
local l_astFromType_0 = require(script.Parent.astFromType).astFromType;
v4.updateArgument = function(v7, v8, v9, v10, v11, v12, v13)
    v7[tostring(v10)] = {
        kind = l_Kind_0.ARGUMENT,
        name = {
            kind = l_Kind_0.NAME,
            value = v10
        },
        value = {
            kind = l_Kind_0.VARIABLE,
            name = {
                kind = l_Kind_0.NAME,
                value = v11
            }
        }
    };
    v8[tostring(v11)] = {
        kind = l_Kind_0.VARIABLE_DEFINITION,
        variable = {
            kind = l_Kind_0.VARIABLE,
            name = {
                kind = l_Kind_0.NAME,
                value = v11
            }
        },
        type = l_astFromType_0(v12)
    };
    if v13 ~= nil then
        v9[tostring(v11)] = v13;
        return ;
    else
        if l_Array_0.indexOf(l_Object_0.keys(v9), (tostring(v11))) ~= -1 then
            v9[tostring(v11)] = nil;
        end;
        return ;
    end;
end;
v4.createVariableNameGenerator = function(v14)
    local v15 = 0;
    return function(v16)
        local v17 = nil;
        while true do
            v17 = ("_v%s_%s"):format(tostring(v15), v16);
            v15 = v15 + 1;
            if not (l_Array_0.indexOf(l_Object_0.keys(v14), (tostring(v17))) ~= -1) then
                break;
            end;
        end;
        return v17;
    end;
end;
return v4;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Error_0 = v1.Error;
local l_Map_0 = v1.Map;
local v5 = require(l_Parent_0.Promise);
local v6 = {};
local v7 = require(l_Parent_0.GraphQL);
local l_Kind_0 = v7.Kind;
local l_validate_0 = v7.validate;
local l_specifiedRules_0 = v7.specifiedRules;
local l_concatAST_0 = v7.concatAST;
local l_versionInfo_0 = v7.versionInfo;
local _ = require(script.Parent.loaders);
local l_AggregateError_0 = require(script.Parent.AggregateError).AggregateError;
local v15 = nil;
v6.validateGraphQlDocuments = function(v16, v17, v18)
    local v19 = if v18 ~= nil then v18 else v15();
    return v5.resolve():andThen(function()
        local v20 = l_Map_0.new();
        local v21 = {};
        for _, v23 in v17, nil, nil do
            if v23.document then
                local v24 = {};
                for _, v26 in v23.document.definitions, nil, nil do
                    if v26.kind == l_Kind_0.FRAGMENT_DEFINITION then
                        v20:set(v26.name.value, v26);
                    else
                        table.insert(v24, v26);
                    end;
                end;
                table.insert(v21, {
                    location = v23.location,
                    document = {
                        kind = l_Kind_0.DOCUMENT,
                        definitions = v24
                    }
                });
            end;
        end;
        local v27 = {};
        local v28 = {
            kind = l_Kind_0.DOCUMENT,
            definitions = l_Array_0.concat({}, v20:values())
        };
        v5.all(l_Array_0.map(v21, function(v29)
            return v5.resolve():andThen(function()
                local v30 = l_validate_0(v16, l_concatAST_0({
                    v28,
                    v29.document
                }), v19);
                if #v30 > 0 then
                    table.insert(v27, {
                        filePath = v29.location,
                        errors = v30
                    });
                end;
            end);
        end)):expect();
        return v27;
    end);
end;
v6.checkValidationErrors = function(v31)
    if #v31 > 0 then
        local v32 = {};
        for _, v34 in v31, nil, nil do
            for _, v36 in v34.errors, nil, nil do
                local v37 = l_Error_0.new();
                v37.name = "GraphQLDocumentError";
                v37.message = ("%s: %s"):format(tostring(v37.name), (tostring(v36.message)));
                v37.stack = v37.message;
                if v36.locations then
                    for _, v39 in v36.locations, nil, nil do
                        v37.stack = tostring(v37.stack) .. ("\n    at %s:%s:%s"):format(tostring(v34.filePath), tostring(v39.line), (tostring(v39.column)));
                    end;
                end;
                table.insert(v32, v37);
            end;
        end;
        error(l_AggregateError_0.new(v32, ("GraphQL Document Validation failed with %s errors;\n  %s"):format(tostring(#v32), (tostring(l_Array_0.join(l_Array_0.map(v32, function(v40, v41)
            return ("Error %s: %s"):format(tostring(v41), (tostring(v40.stack)));
        end), "\n\n"))))));
    end;
end;
v15 = function()
    local v42 = {
        "NoUnusedFragmentsRule",
        "NoUnusedVariablesRule",
        "KnownDirectivesRule"
    };
    if l_versionInfo_0.major < 15 then
        v42 = l_Array_0.map(v42, function(v43)
            return (v43:gsub("Rule$", "", 1));
        end);
    end;
    return l_Array_0.filter(l_specifiedRules_0, function(v44)
        return not l_Array_0.includes(v42, (debug.info(v44, "n")));
    end);
end;
v6.createDefaultRules = v15;
return v6;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Object_0 = v1.Object;
local l_instanceof_0 = v1.instanceof;
local v6 = require(l_Parent_0.LuauRegExp);
local v7 = {};
local function v8(v9, v10)
    if v9 == nil then
        return v9 == v10;
    elseif not l_Array_0.isArray(v9) then
        if typeof(v9) == "table" then
            local v11 = false;
            if typeof(v10) == "table" then
                v11 = l_Boolean_0.toJSBoolean(v10) and l_Array_0.every(l_Object_0.keys(v10), function(v12)
                    return v8(v9[v12], v10[v12]);
                end);
            end;
            return v11;
        elseif not l_instanceof_0(v10, v6) then
            return v9 == v10;
        else
            return v10:test(v9);
        end;
    else
        return l_Array_0.isArray(v10) and l_Array_0.every(v9, function(v13, v14)
            return v8(v13, v10[v14]);
        end);
    end;
end;
v7.valueMatchesCriteria = v8;
return v7;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Map_0 = v1.Map;
local l_Object_0 = v1.Object;
local l_Set_0 = v1.Set;
local v7 = {};
local l_getOperationASTFromRequest_0 = require(script.Parent.getOperationASTFromRequest).getOperationASTFromRequest;
local v9 = require(l_Parent_0.GraphQL);
local l_Kind_0 = v9.Kind;
local l_isListType_0 = v9.isListType;
local l_getNullableType_0 = v9.getNullableType;
local l_isAbstractType_0 = v9.isAbstractType;
local l_isObjectType_0 = v9.isObjectType;
local l_TypeNameMetaFieldDef_0 = v9.TypeNameMetaFieldDef;
local l_SchemaMetaFieldDef_0 = v9.SchemaMetaFieldDef;
local v17 = require(script.Parent.collectFields);
local l_collectFields_0 = v17.collectFields;
local l_collectSubFields_0 = v17.collectSubFields;
local _ = require(script.Parent.Interfaces);
local _ = require(script.Parent.types);
local l_NULL_0 = v9.NULL;
local v23 = nil;
local v24 = nil;
local v25 = nil;
local v26 = nil;
local v27 = nil;
local v28 = nil;
local v29 = nil;
local function v30(v31, v32, v33)
    if not l_Boolean_0.toJSBoolean(l_Array_0.isArray(v31)) then
        if typeof(v31) == "table" then
            local v34 = if v32 ~= nil then v32(v31) else v31;
            if v34 ~= nil then
                for v35 in v34, nil, nil do
                    v34[v35] = v30(v34[tostring(v35)], v32, v33);
                end;
            end;
            if v33 ~= nil then
                return (v33(v34));
            else
                return v34;
            end;
        else
            return v31;
        end;
    else
        return l_Array_0.map(v31, function(v36)
            return v30(v36, v32, v33);
        end);
    end;
end;
v7.visitData = v30;
v7.visitErrors = function(v37, v38)
    return l_Array_0.map(v37, function(v39)
        return v38(v39);
    end);
end;
v7.visitResult = function(v40, v41, v42, v43, v44)
    local v47 = l_Array_0.reduce(v41.document.definitions, function(v45, v46)
        if v46.kind == l_Kind_0.FRAGMENT_DEFINITION then
            v45[tostring(v46.name.value)] = v46;
        end;
        return v45;
    end, {});
    local v48 = if not l_Boolean_0.toJSBoolean(v41.variables) then {} else v41.variables;
    local v49 = {
        segmentInfoMap = l_Map_0.new(),
        unpathedErrors = l_Set_0.new()
    };
    local l_data_0 = v40.data;
    local l_errors_0 = v40.errors;
    local v52 = false;
    if l_errors_0 ~= nil then
        v52 = v44 ~= nil;
    end;
    local v53 = l_getOperationASTFromRequest_0(v41);
    if l_data_0 ~= nil and v53 ~= nil then
        v40.data = v23(l_data_0, v53, v42, v47, v48, v43, if not l_Boolean_0.toJSBoolean(v52) then nil else l_errors_0, v49);
    end;
    local l_toJSBoolean_0 = l_Boolean_0.toJSBoolean;
    local v55 = false;
    if l_errors_0 ~= nil then
        v55 = v44;
    end;
    if l_toJSBoolean_0(v55) then
        v40.errors = v24(l_errors_0, v44, v49);
    end;
    return v40;
end;
v24 = function(v56, v57, v58)
    local l_segmentInfoMap_0 = v58.segmentInfoMap;
    local l_unpathedErrors_0 = v58.unpathedErrors;
    local l___unpathed_0 = v57.__unpathed;
    return l_Array_0.map(v56, function(v62)
        local v63 = l_segmentInfoMap_0:get(v62);
        local v68 = if v63 == nil then v62 else l_Array_0.reduce(l_Array_0.reverse(l_Array_0.concat({}, v63)), function(v64, v65)
            local v66 = v57[v65.type.name];
            if v66 == nil then
                return v64;
            else
                local v67 = v66[tostring(v65.fieldName)];
                if v67 == nil then
                    return v64;
                else
                    return (v67(v64, v65.pathIndex));
                end;
            end;
        end, v62);
        if not l_Boolean_0.toJSBoolean(if not l_Boolean_0.toJSBoolean(l___unpathed_0) then l___unpathed_0 else l_unpathedErrors_0:has(v62)) then
            return v68;
        else
            return l___unpathed_0(v68);
        end;
    end);
end;
local function _(v69, v70)
    local l_operation_0 = v70.operation;
    if l_operation_0 == "query" then
        return v69:getQueryType();
    elseif l_operation_0 == "mutation" then
        return v69:getMutationType();
    elseif l_operation_0 == "subscription" then
        return v69:getSubscriptionType();
    else
        return nil;
    end;
end;
v23 = function(v73, v74, v75, v76, v77, v78, v79, v80)
    local l_operation_1 = v74.operation;
    local v82 = if l_operation_1 == "query" then v75:getQueryType() else if l_operation_1 == "mutation" then v75:getMutationType() else if l_operation_1 == "subscription" then v75:getSubscriptionType() else nil;
    return v25(v73, v82, l_collectFields_0(v75, v76, v77, v82, v74.selectionSet, l_Map_0.new(), l_Set_0.new()), v75, v76, v77, v78, 1, v79, v80);
end;
v25 = function(v83, v84, v85, v86, v87, v88, v89, v90, v91, v92)
    local v93 = v84:getFields();
    local v94 = if typeof(v89) == "table" then v89[v84.name] else nil;
    local v95 = if typeof(v94) == "table" then v94.__enter else nil;
    local v96 = if v95 ~= nil then v95(v83) else v83;
    local v97 = nil;
    local v98 = nil;
    if v91 ~= nil then
        v97 = v26(v91, v90);
        v98 = v97.errorMap;
        for _, v100 in v97.unpathedErrors, nil, nil do
            v92.unpathedErrors:add(v100);
        end;
    end;
    for _, v102 in v85, nil, nil do
        local v103, v104 = table.unpack(v102, 1, 2);
        local l_value_0 = v104[1].name.value;
        local v106 = if typeof(v93:get(l_value_0)) == "table" then v93:get(l_value_0).type else nil;
        if v106 == nil then
            if l_value_0 == "__typename" then
                v106 = l_TypeNameMetaFieldDef_0.type;
            elseif l_value_0 == "__schema" then
                v106 = l_SchemaMetaFieldDef_0.type;
            end;
        end;
        local v107 = v90 + 1;
        local v108 = nil;
        if v98 then
            v108 = v98[tostring(v103)];
            if v108 ~= nil then
                v98[tostring(v103)] = nil;
            end;
            v28(v84, l_value_0, v107, v108, v92);
        end;
        v27(v96, v103, v29(v83[tostring(v103)], v106, v104, v86, v87, v88, v89, v107, v108, v92), v94, l_value_0);
    end;
    local l___typename_0 = v96.__typename;
    if l___typename_0 ~= nil then
        v27(v96, "__typename", l___typename_0, v94, "__typename");
    end;
    if v98 then
        for v110 in v98, nil, nil do
            for _, v112 in v98[v110], nil, nil do
                v92.unpathedErrors:add(v112);
            end;
        end;
    end;
    local v113 = if typeof(v94) == "table" then v94.__leave else nil;
    if v113 ~= nil then
        return (v113(v96));
    else
        return v96;
    end;
end;
v27 = function(v114, v115, v116, v117, v118)
    if v117 == nil then
        v114[tostring(v115)] = v116;
        return ;
    else
        local v119 = v117[v118];
        if v119 == nil then
            v114[tostring(v115)] = v116;
            return ;
        else
            local v120 = v119(v116);
            if v120 == nil then
                v114[tostring(v115)] = nil;
                return ;
            else
                v114[tostring(v115)] = v120;
                return ;
            end;
        end;
    end;
end;
local function v132(v121, v122, v123, v124, v125, v126, v127, v128, v129, v130)
    return l_Array_0.map(v121, function(v131)
        return v29(v131, v122, v123, v124, v125, v126, v127, v128 + 1, v129, v130);
    end);
end;
v29 = function(v133, v134, v135, v136, v137, v138, v139, v140, v141, v142)
    local v143 = if v141 ~= nil then v141 else {};
    if not (v133 ~= nil) or v133 == l_NULL_0 then
        return v133;
    else
        local v144 = l_getNullableType_0(v134);
        if not l_Boolean_0.toJSBoolean(l_isListType_0(v144)) then
            if not l_Boolean_0.toJSBoolean(l_isAbstractType_0(v144)) then
                if not l_Boolean_0.toJSBoolean(l_isObjectType_0(v144)) then
                    local v145 = if typeof(v139) == "table" then v139[v144.name] else nil;
                    if v145 == nil then
                        return v133;
                    else
                        local v146 = v145(v133);
                        if v146 == nil then
                            return v133;
                        else
                            return v146;
                        end;
                    end;
                else
                    return v25(v133, v144, l_collectSubFields_0(v136, v137, v138, v144, v135), v136, v137, v138, v139, v140, v143, v142);
                end;
            else
                local v147 = v136:getType(v133.__typename);
                return v25(v133, v147, l_collectSubFields_0(v136, v137, v138, v147, v135), v136, v137, v138, v139, v140, v143, v142);
            end;
        else
            return v132(v133, v144.ofType, v135, v136, v137, v138, v139, v140, v143, v142);
        end;
    end;
end;
v26 = function(v148, v149)
    local v150 = {};
    local v151 = l_Set_0.new();
    for _, v153 in v148, nil, nil do
        local v154 = if typeof(v153.path) == "table" then v153.path[v149] else nil;
        if v154 == nil then
            v151:add(v153);
        elseif l_Array_0.indexOf(l_Object_0.keys(v150), (tostring(v154))) ~= -1 then
            table.insert(v150[tostring(v154)], v153);
        else
            v150[tostring(v154)] = {
                v153
            };
        end;
    end;
    return {
        errorMap = v150,
        unpathedErrors = v151
    };
end;
v28 = function(v155, v156, v157, v158, v159)
    local v160 = if v158 ~= nil then v158 else {};
    for _, v162 in v160, nil, nil do
        local v163 = {
            type = v155,
            fieldName = v156,
            pathIndex = v157
        };
        local v164 = v159.segmentInfoMap:get(v162);
        if v164 == nil then
            v159.segmentInfoMap:set(v162, {
                v163
            });
        else
            table.insert(v164, v163);
        end;
    end;
end;
return v7;


local l_Boolean_0 = require((nil).LuauPolyfill).Boolean;
local v1 = require((nil).Promise);
local v2 = {};
local _ = require((nil).Dev.JestGlobals).expect;
local l_memoize2_0 = require(script.Parent["memoize.js"]).memoize2;
local function v6(v5)
    return v1.resolve():andThen(function()
        return {
            value = v5,
            done = true
        };
    end);
end;
local v9 = l_memoize2_0(function(v7, v8)
    return function(...)
        return Reflect:apply(v8, v7, {
            ...
        });
    end;
end);
local function v22(v10, v11)
    return Proxy.new(v10, {
        has = function(_, v13, v14)
            if v14 == "return" then
                return true;
            else
                return Reflect:has(v13, v14);
            end;
        end,
        get = function(_, v16, v17, v18)
            local v19 = Reflect:get(v16, v17, v18);
            if v17 == "return" then
                local v20 = not not l_Boolean_0.toJSBoolean(v19) and v19 or v6;
                return function(v21)
                    return v1.resolve():andThen(function()
                        return Reflect:apply(v20, v16, {
                            (v11(v21):expect())
                        });
                    end);
                end;
            elseif typeof(v19) == "function" then
                return v9(v16, v19);
            else
                return v19;
            end;
        end
    });
end;
v2.getAsyncIteratorWithCancel = v22;
local function v30(v23, v24)
    return Proxy.new(v23, {
        get = function(_, v26, v27, v28)
            local v29 = Reflect:get(v26, v27, v28);
            if Symbol.asyncIterator == v27 then
                return function()
                    return v22(Reflect:apply(v29, v26, {}), v24);
                end;
            elseif typeof(v29) == "function" then
                return v9(v26, v29);
            else
                return v29;
            end;
        end
    });
end;
v2.getAsyncIterableWithCancel = v30;
v2.withCancel = v30;
return v2;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Object_0 = v1.Object;
local v4 = require(l_Parent_0.React);
local l_Change_0 = v4.Change;
local v6 = v4.Component:extend("ScrollContentViewNativeComponent");
v6.init = function(v7, v8)
    v7.props = v8;
end;
v6.render = function(v9)
    return v4.createElement("Frame", l_Object_0.assign({
        Name = "RCTScrollContentView",
        [l_Change_0.AbsoluteSize] = v9.props.onLayout,
        Size = UDim2.new(1, 0, 1, 0)
    }, if not v9.props.AutomaticSize then nil else {
        AutomaticSize = v9.props.AutomaticSize
    }, if not l_Array_0.isArray(v9.props.style) then v9.props.style else l_Array_0.reduce(v9.props.style, function(v10, v11)
        return l_Object_0.assign(v10, v11);
    end, {})), v9.props.children);
end;
return v6;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local _ = require(l_Parent_0.React);
return {
    default = {
        flashScrollIndicators = function(_)
            warn("flashScrollIndicators not implemented");
        end,
        scrollTo = function(v4, v5, v6, v7)
            if not v7 then
                v4._nativeRef.current.CanvasPosition = Vector2.new(v5, v6);
                return ;
            else
                v4._nativeRef.animateScrollTo(v5, v6);
                return ;
            end;
        end,
        scrollToEnd = function(v8, v9)
            local v10 = v8._nativeRef.current.ScrollingDirection == Enum.ScrollingDirection.Y and 0 or v8._nativeRef.current.AbsoluteCanvasSize.X;
            local v11 = if v8._nativeRef.current.ScrollingDirection == Enum.ScrollingDirection.Y then v8._nativeRef.current.AbsoluteCanvasSize.Y else 0;
            if not v9 then
                v8._nativeRef.current.CanvasPosition = Vector2.new(v10, v11);
                return ;
            else
                v8._nativeRef.animateScrollTo(v10, v11);
                return ;
            end;
        end,
        zoomToRect = function(_, _, _)
            warn("zoomToRect not implemented");
        end
    }
};


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Object_0 = require(l_Parent_0.LuauPolyfill).Object;
local v2 = require(l_Parent_0.React);
local v3 = {};
local v4 = v2.createContext(nil);
if _G.__DEV__ then
    v4.displayName = "ScrollViewContext";
end;
v3.default = v4;
v3.HORIZONTAL = l_Object_0.freeze({
    horizontal = true
});
v3.VERTICAL = l_Object_0.freeze({
    horizontal = false
});
return v3;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_console_0 = v1.console;
local l_Array_0 = v1.Array;
local l_Object_0 = v1.Object;
local v5 = require(l_Parent_0.React);
local l_Change_0 = v5.Change;
local l_Event_0 = v5.Event;
local v8 = require(l_Parent_0.Otter);
local v9 = {
    restingPositionLimit = 1,
    restingVelocityLimit = 10
};
local v10 = v5.Component:extend("ScrollViewNativeComponent");
v10.init = function(v11, v12)
    v11.props = v12;
    v11._nativeRef = v5.createRef();
    v11.lastScrollEventTime = 0;
    v11.animationConfig = if not v11.props.animationConfig then v9 else v11.props.animationConfig;
    v11.motor = v8.createGroupMotor({
        x = 0,
        y = 0
    });
    v11.motorStepDisconnect = v11.motor:onStep(function(v13)
        v11._nativeRef.current.CanvasPosition = Vector2.new(v13.x, v13.y);
    end);
    v11._nativeRef.animateScrollTo = function(v14, v15)
        v11:_startAnimatedScroll(v14, v15);
    end;
end;
v10._validateAnimatedScrollInputs = function(v16, v17, v18)
    if not v16._nativeRef.current then
        l_console_0.error("scrollTo animation failed: ScrollViewNativeComponent._nativeRef instance is undefined");
    end;
    if v16._nativeRef.current.ScrollingDirection == Enum.ScrollingDirection.X then
        if v16._nativeRef.current.AbsoluteCanvasSize.X < v17 then
            l_console_0.warn("scrollTo animation goal out of bounds, setting X goal to: " .. tostring(v16._nativeRef.current.AbsoluteCanvasSize.X - v16._nativeRef.current.AbsoluteWindowSize.X));
            return ;
        elseif v17 < 0 then
            l_console_0.warn("scrollTo animation goal out of bounds, setting X goal to: 0");
            return ;
        end;
    elseif v16._nativeRef.current.AbsoluteCanvasSize.Y < v18 then
        l_console_0.warn("scrollTo animation goal out of bounds, setting Y goal to: " .. tostring(v16._nativeRef.current.AbsoluteCanvasSize.Y - v16._nativeRef.current.AbsoluteWindowSize.Y));
        return ;
    elseif v18 < 0 then
        l_console_0.warn("scrollTo animation goal out of bounds, setting Y goal to: 0");
    end;
end;
v10._startAnimatedScroll = function(v19, v20, v21)
    if _G.__DEV__ then
        v19:_validateAnimatedScrollInputs(v20, v21);
    end;
    local l_CanvasPosition_0 = v19._nativeRef.current.CanvasPosition;
    v19.motor:setGoal({
        x = v8.instant(l_CanvasPosition_0.X),
        y = v8.instant(l_CanvasPosition_0.Y)
    });
    v19.motor:step(0);
    v19.motor:setGoal({
        x = v8.spring(v20, v19.animationConfig),
        y = v8.spring(v21, v19.animationConfig)
    });
end;
v10.render = function(v23)
    return v5.createElement("ScrollingFrame", l_Object_0.assign({
        Name = "RCTScrollView",
        ScrollingEnabled = not (v23.props.scrollEnabled ~= nil) or v23.props.scrollEnabled,
        Size = UDim2.new(1, 0, 1, 0),
        CanvasPosition = v23.props.CanvasPosition,
        CanvasSize = v23.props.CanvasSize or UDim2.new(0, 0, 0, 0),
        AutomaticCanvasSize = v23.props.AutomaticCanvasSize or Enum.AutomaticSize.XY,
        ScrollBarThickness = (not (not v23.props.horizontal or v23.props.showsHorizontalScrollIndicator ~= false) or not v23.props.horizontal and v23.props.showsVerticalScrollIndicator == false) and 0 or nil,
        ref = v23._nativeRef,
        [l_Change_0.AbsoluteWindowSize] = v23.props.onLayout,
        [l_Change_0.CanvasPosition] = function(v24)
            local v25 = os.clock() * 1000;
            if (v23.props.scrollEventThrottle or 0) < v25 - v23.lastScrollEventTime then
                v23.props.onScroll(v24);
                v23.lastScrollEventTime = v25;
            end;
        end,
        [l_Event_0.InputBegan] = function(v26, v27)
            if (not (v27.UserInputType ~= Enum.UserInputType.MouseWheel) or v27.UserInputType == Enum.UserInputType.Touch) and v23.motor ~= nil then
                v23.motor:stop();
            end;
            if v27.UserInputType == Enum.UserInputType.Touch then
                v23.props.onTouchStart(v26, v27);
            end;
        end,
        [l_Event_0.InputEnded] = function(v28, v29)
            if v29.UserInputType == Enum.UserInputType.Touch then
                v23.props.onTouchEnd(v28, v29);
            end;
        end,
        [l_Event_0.InputChanged] = function(v30, v31)
            if v31.UserInputType == Enum.UserInputType.Touch then
                v23.props.onTouchMove(v30, v31);
            end;
        end,
        [l_Event_0.SelectionChanged] = if not v23.props.onSelectionChanged then nil else function(v32, v33, v34, v35)
            v23.props.onSelectionChanged(v32, v33, v34, v35);
        end
    }, if not l_Array_0.isArray(v23.props.style) then v23.props.style else l_Array_0.reduce(v23.props.style, function(v36, v37)
        return l_Object_0.assign(v36, v37);
    end, {})), {
        Layout = if not v23.props.inverted or v23.props.getItemLayout then nil else v5.createElement("UIListLayout", {
            HorizontalAlignment = if not v23.props.horizontal then Enum.HorizontalAlignment.Center else Enum.HorizontalAlignment.Right,
            VerticalAlignment = if not v23.props.horizontal then Enum.VerticalAlignment.Bottom else Enum.VerticalAlignment.Center
        }),
        [1] = v23.props.children
    });
end;
v10.willUnmount = function(v38)
    if v38.motor ~= nil then
        v38.motor:destroy();
    end;
    if v38.motorStepDisconnect ~= nil then
        v38.motorStepDisconnect();
    end;
end;
return v10;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Boolean_0 = v2.Boolean;
local l_clearTimeout_0 = v2.clearTimeout;
local l_setTimeout_0 = v2.setTimeout;
local v6 = {
    new = function(...)
        return nil;
    end
};
local v7 = {
    new = function(...)
        return nil;
    end
};
local v8 = require(l_Parent_1.React);
local v9 = require(l_Parent_0.StyleSheet.StyleSheet);
local v10 = {
    OS = "roblox"
};
local v11 = nil;
local v12 = v8.Component:extend("ScrollViewStickyHeader");
v12.init = function(v13, v14)
    warn("ScrollViewStickyHeader not fully implemented");
    v13.props = v14;
    v13.state = {
        measured = false,
        layoutY = 0,
        layoutHeight = 0,
        nextHeaderLayoutY = v13.props.nextHeaderLayoutY,
        translateY = nil
    };
    v13._translateY = nil;
    v13._shouldRecreateTranslateY = true;
    v13._haveReceivedInitialZeroTranslateY = true;
    v13._debounceTimeout = v10.OS == "android" and 15 or 64;
    v13.setNextHeaderY = function(_, v16)
        v13._shouldRecreateTranslateY = true;
        v13.setState({
            nextHeaderLayoutY = v16
        });
    end;
    v13._onLayout = function(_, v18)
        local l_y_0 = v18.nativeEvent.layout.y;
        local l_height_0 = v18.nativeEvent.layout.height;
        if not (l_y_0 == v13.state.layoutY and l_height_0 == v13.state.layoutHeight) or v13.state.measured ~= true then
            v13._shouldRecreateTranslateY = true;
        end;
        v13:setState({
            measured = true,
            layoutY = l_y_0,
            layoutHeight = l_height_0
        });
        v13.props:onLayout(v18);
        local v21 = v8.Children.only(v13.props.children);
        if v21.props.onLayout then
            v21.props:onLayout(v18);
        end;
    end;
    v13._setComponentRef = function(_, v23)
        v13._ref = v23;
    end;
end;
v12.componentWillUnmount = function(v24)
    if v24._translateY ~= nil and v24._animatedValueListenerId ~= nil then
        v24._translateY:removeListener(v24._animatedValueListenerId);
    end;
    if l_Boolean_0.toJSBoolean(v24._timer) then
        l_clearTimeout_0(v24._timer);
    end;
end;
v12.UNSAFE_componentWillReceiveProps = function(v25, v26)
    if not (v26.scrollViewHeight == v25.props.scrollViewHeight and v26.scrollAnimatedValue == v25.props.scrollAnimatedValue) or v26.inverted ~= v25.props.inverted then
        v25._shouldRecreateTranslateY = true;
    end;
end;
v12.updateTranslateListener = function(v27, v28, v29, v30)
    if v27._translateY ~= nil and v27._animatedValueListenerId ~= nil then
        v27._translateY:removeListener(v27._animatedValueListenerId);
    end;
    v27.translateY = if not l_Boolean_0.toJSBoolean(v30) then v28 else v6.new(v28, v30);
    v27._shouldRecreateTranslateY = false;
    if v29 then
        if not v27._animatedValueListener then
            v27._animatedValueListener = function(v31)
                local l_value_0 = v31.value;
                if not (l_value_0 == 0) or v27._haveReceivedInitialZeroTranslateY then
                    if l_Boolean_0.toJSBoolean(v27._timer) then
                        l_clearTimeout_0(v27._timer);
                    end;
                    v27._timer = l_setTimeout_0(function()
                        if l_value_0 ~= v27.state.translateY then
                            v27:setState({
                                translateY = l_value_0
                            });
                        end;
                    end, v27._debounceTimeout);
                    return ;
                else
                    v27._haveReceivedInitialZeroTranslateY = true;
                    return ;
                end;
            end;
        end;
        if v27.state.translateY ~= 0 and v27.state.translateY ~= nil then
            v27._haveReceivedInitialZeroTranslateY = false;
        end;
        v27._animatedValueListenerId = v28:addListener(v27._animatedValueListener);
        return ;
    else
        return ;
    end;
end;
v12.render = function(v33)
    local v34 = ((v33._ref and v33._ref._internalInstanceHandle) and v33._ref._internalInstanceHandle.stateNode) and l_Boolean_0.toJSBoolean(v33._ref._internalInstanceHandle.stateNode.canonical);
    if v33._shouldRecreateTranslateY then
        local l_inverted_0 = v33.props.inverted;
        local l_scrollViewHeight_0 = v33.props.scrollViewHeight;
        local l_measured_0 = v33.state.measured;
        local l_layoutHeight_0 = v33.state.layoutHeight;
        local l_layoutY_0 = v33.state.layoutY;
        local l_nextHeaderLayoutY_0 = v33.state.nextHeaderLayoutY;
        local v41 = {
            -1,
            0
        };
        local v42 = {
            0,
            0
        };
        if l_measured_0 then
            if not l_inverted_0 then
                table.insert(v41, l_layoutY_0);
                table.insert(v42, 0);
                local v43 = (l_nextHeaderLayoutY_0 or 0) - l_layoutHeight_0;
                if l_layoutY_0 <= v43 then
                    table.insert(v41, v43);
                    table.insert(v41, v43 + 1);
                    table.insert(v42, v43 - l_layoutY_0);
                    table.insert(v42, v43 - l_layoutY_0);
                else
                    table.insert(v41, l_layoutY_0 + 1);
                    table.insert(v42, 1);
                end;
            elseif l_scrollViewHeight_0 ~= nil then
                local v44 = (l_layoutY_0 + l_layoutHeight_0) - l_scrollViewHeight_0;
                if v44 > 0 then
                    table.insert(v41, v44);
                    table.insert(v42, 0);
                    table.insert(v41, v44 + 1);
                    table.insert(v42, 1);
                    local v45 = ((l_nextHeaderLayoutY_0 or 0) - l_layoutHeight_0) - l_scrollViewHeight_0;
                    if v44 < v45 then
                        table.insert(v41, v45);
                        table.insert(v41, v45 + 1);
                        table.insert(v42, v45 - v44);
                        table.insert(v42, v45 - v44);
                    end;
                end;
            end;
        end;
        v33:updateTranslateListener(v33.props.scrollAnimatedValue:interpolate({
            inputRange = v41,
            outputRange = v42
        }), v34, if not v33.props.hiddenOnScroll then nil else v7.new(v33.props.scrollAnimatedValue:interpolate({
            extrapolateLeft = "clamp",
            inputRange = {
                l_layoutY_0,
                l_layoutY_0 + 1
            },
            outputRange = {
                0,
                1
            }
        }):interpolate({
            inputRange = {
                0,
                1
            },
            outputRange = {
                0,
                -1
            }
        }), -v33.state.layoutHeight, 0));
    end;
    local v46 = v8.Children.only(v33.props.children);
    return v8.createElement("AnimatedView", {
        collapsable = false,
        nativeID = v33.props.nativeID,
        onLayout = v33._onLayout,
        ref = v33._setComponentRef,
        style = {
            v46.props.style,
            v11.header,
            {
                transform = {
                    {
                        translateY = v33._translateY
                    }
                }
            }
        },
        passthroughAnimatedPropExplicitValues = if not not v34 and v33.state.translateY ~= nil then {
            style = {
                transform = {
                    {
                        translateY = v33.state.translateY
                    }
                }
            }
        } else nil
    }, v8.cloneElement(v46, {
        style = v11.fill,
        onLayout = nil
    }));
end;
v11 = v9.create({
    header = {
        zIndex = 10,
        position = "relative"
    },
    fill = {
        flex = 1
    }
});
return v12;


return {
    uiViewClassName = "RCTScrollView",
    bubblingEventTypes = {},
    directEventTypes = {
        topScrollToTop = {
            registrationName = "onScrollToTop"
        }
    },
    validAttributes = {
        alwaysBounceHorizontal = true,
        alwaysBounceVertical = true,
        automaticallyAdjustContentInsets = true,
        automaticallyAdjustKeyboardInsets = true,
        automaticallyAdjustsScrollIndicatorInsets = true,
        bounces = true,
        bouncesZoom = true,
        canCancelContentTouches = true,
        centerContent = true,
        contentInsetAdjustmentBehavior = true,
        decelerationRate = true,
        directionalLockEnabled = true,
        disableIntervalMomentum = true,
        fadingEdgeLength = true,
        indicatorStyle = true,
        inverted = true,
        keyboardDismissMode = true,
        maintainVisibleContentPosition = true,
        maximumZoomScale = true,
        minimumZoomScale = true,
        nestedScrollEnabled = true,
        onMomentumScrollBegin = true,
        onMomentumScrollEnd = true,
        onScroll = true,
        onScrollBeginDrag = true,
        onScrollEndDrag = true,
        onScrollToTop = true,
        overScrollMode = true,
        pagingEnabled = true,
        persistentScrollbar = true,
        pinchGestureEnabled = true,
        scrollEnabled = true,
        scrollEventThrottle = true,
        scrollPerfTag = true,
        scrollToOverflowEnabled = true,
        scrollsToTop = true,
        sendMomentumEvents = true,
        showsHorizontalScrollIndicator = true,
        showsVerticalScrollIndicator = true,
        snapToAlignment = true,
        snapToEnd = true,
        snapToInterval = true,
        snapToOffsets = true,
        snapToStart = true,
        zoomScale = true
    }
};


return function(v0)
    if v0 == "normal" then
        return 0.985;
    elseif v0 == "fast" then
        return 0.9;
    else
        return v0;
    end;
end;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Object_0 = v1.Object;
local v4 = require(l_Parent_0.React);
local l_Change_0 = v4.Change;
local v6 = v4.Component:extend("View");
v6.init = function(v7, v8)
    v7.props = v8;
    v7._nativeRef = v7.props.nativeRef or v4.createRef();
end;
v6.render = function(v9)
    local v12 = l_Object_0.assign(table.clone(v9.props), if not l_Array_0.isArray(v9.props.style) then v9.props.style else l_Array_0.reduce(v9.props.style, function(v10, v11)
        return l_Object_0.assign(v10, v11);
    end, {}));
    v9.nativeProps = {
        ref = v9._nativeRef,
        BackgroundColor3 = v12.BackgroundColor3,
        Name = v12.Name or "View",
        Size = v12.Size or UDim2.new(1, 0, 0, 0),
        AutomaticSize = v12.AutomaticSize or Enum.AutomaticSize.Y,
        ZIndex = v12.ZIndex or nil,
        LayoutOrder = v12.LayoutOrder or nil,
        BorderSizePixel = v12.BorderSizePixel or 0,
        BackgroundTransparency = v12.BackgroundTransparency or 1,
        [l_Change_0.AbsoluteSize] = v12.onLayout
    };
    return v4.createElement("Frame", v9.nativeProps, v9.props.children);
end;
return v6;


local v0 = require(script.Parent.Parent.Parent.LuauPolyfill);
local l_setTimeout_0 = v0.setTimeout;
local l_clearTimeout_0 = v0.clearTimeout;
local v5 = {
    runAfterInteractions = function(_, v4)
        v4();
        return nil;
    end
};
local v6 = {};
v6.__index = v6;
v6.new = function(v7, v8)
    local v9 = setmetatable({}, v6);
    v9._delay = v8;
    v9._callback = v7;
    return v9;
end;
v6.dispose = function(v10, v11)
    local v12 = v11 or {
        abort = false
    };
    if v10._taskHandle then
        v10._taskHandle.cancel();
        if not v12.abort then
            v10._callback();
        end;
        v10._taskHandle = nil;
    end;
end;
v6.schedule = function(v13)
    if not v13._taskHandle then
        local v14 = l_setTimeout_0(function()
            v13._taskHandle = v5:runAfterInteractions(function()
                v13._taskHandle = nil;
                v13._callback();
            end);
        end, v13._delay);
        v13._taskHandle = {
            cancel = function()
                return l_clearTimeout_0(v14);
            end
        };
        return ;
    else
        return ;
    end;
end;
return v6;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.React);
local l_Object_0 = require(l_Parent_0.LuauPolyfill).Object;
local v3 = require(script.Parent.FlatList);
local l_useFocusNavigationScrolling_0 = require(script.Parent.Hooks).useFocusNavigationScrolling;
return function(v5)
    local v6 = v1.useRef(nil);
    local v7, v8 = l_useFocusNavigationScrolling_0({
        listRef = v5.listRef or v6,
        onSelectedIndexChanged = v5.onSelectedIndexChanged,
        initialIndex = v5.initialScrollIndex,
        cellRendererKey = v5.cellRendererKey,
        viewOffset = v5.viewOffset,
        animated = v5.animated,
        data = v5.data
    });
    return v1.createElement(v3, (l_Object_0.assign(table.clone(v5), {
        viewOffset = l_Object_0.None,
        animated = l_Object_0.None,
        onSelectedIndexChanged = l_Object_0.None,
        ref = v5.listRef or v6,
        onScrollToIndexFailed = if not v5.getItemLayout then v8 else nil,
        onSelectionChanged = v7
    })));
end;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Object_0 = require(l_Parent_1.LuauPolyfill).Object;
local v3 = require(l_Parent_1.Promise);
local v4 = {};
local v5 = require(l_Parent_1.React);
local l_useRef_0 = v5.useRef;
local l_useState_0 = v5.useState;
local v8 = require(l_Parent_0.Components.View.View);
local v9 = require(script.Parent.FlatList);
local function _(v10)
    return function(v11)
        if not v10 then
            return v11.Y;
        else
            return v11.X;
        end;
    end;
end;
v4.BidirectionalFlatList = v5.forwardRef(function(v13, v14)
    local function v15()
        return v3.resolve();
    end;
    local _ = v13.activityIndicatorColor == nil and "black" or v13.activityIndicatorColor;
    local v17 = v13.autoscrollToTopThreshold == nil and 100 or v13.autoscrollToTopThreshold;
    local l_data_0 = v13.data;
    local l_enableAutoscrollToTop_0 = v13.enableAutoscrollToTop;
    local l_FooterLoadingIndicator_0 = v13.FooterLoadingIndicator;
    local l_HeaderLoadingIndicator_0 = v13.HeaderLoadingIndicator;
    local l_ListHeaderComponent_0 = v13.ListHeaderComponent;
    local l_ListFooterComponent_0 = v13.ListFooterComponent;
    local v24 = if v13.onEndReached == nil then v15 else v13.onEndReached;
    local v25 = v13.onEndReachedThreshold == nil and 10 or v13.onEndReachedThreshold;
    local l_onScroll_0 = v13.onScroll;
    local v27 = if v13.onStartReached == nil then v15 else v13.onStartReached;
    local v28 = v13.onStartReachedThreshold == nil and 10 or v13.onStartReachedThreshold;
    local v29 = v13.showDefaultLoadingIndicators == nil and true or v13.showDefaultLoadingIndicators;
    local v30 = not (v13.enableRetryOnStartReached == nil) and v13.enableRetryOnStartReached;
    local v31 = not (v13.enableRetryOnEndReached == nil) and v13.enableRetryOnEndReached;
    local v32, v33 = l_useState_0(false);
    local v34, v35 = l_useState_0(false);
    local v36, v37 = l_useState_0(0);
    local v38 = l_useRef_0({});
    local v39 = l_useRef_0({});
    local v40 = l_useRef_0(nil);
    local v41 = l_useRef_0(nil);
    local function v45()
        if not (l_data_0 and #l_data_0 > 0) or not v38.current[#l_data_0] then
            local v42 = if not v13.inverted then v36 >= 1 else v36 >= 3;
            if v42 then
                if not (not (l_data_0 and #l_data_0 > 0) or not v42) then
                    v38.current[#l_data_0] = true;
                end;
                v33(true);
                local function v44()
                    return v3.new(function(v43)
                        v40.current = nil;
                        v33(false);
                        v43();
                    end);
                end;
                if not v41.current then
                    v40.current = v27():andThen(v44);
                    return ;
                else
                    v41.current:andThen(function()
                        v40.current = v27():andThen(v44);
                    end);
                    return ;
                end;
            else
                return ;
            end;
        else
            return ;
        end;
    end;
    local function v49()
        if not (l_data_0 and #l_data_0 > 0) or not v39.current[#l_data_0] then
            local v46 = if not v13.inverted then v36 >= 1 else v36 >= 3;
            if v46 then
                if not (not (l_data_0 and #l_data_0 > 0) or not v46) then
                    v39.current[#l_data_0] = true;
                end;
                v35(true);
                local function v48()
                    return v3.new(function(v47)
                        v41.current = nil;
                        v35(false);
                        v47();
                    end);
                end;
                if not v40.current then
                    v41.current = v24():andThen(v48);
                    return ;
                else
                    v40.current:andThen(function()
                        v41.current = v24():andThen(v48);
                    end);
                    return ;
                end;
            else
                return ;
            end;
        else
            return ;
        end;
    end;
    return v5.createElement(v5.Fragment, nil, v5.createElement(v9, l_Object_0.assign(table.clone(v13), {
        renderItem = function(v50)
            local l_item_0 = v50.item;
            return v5.createElement(v8, {
                onLayout = function(v52)
                    local v53 = if not not v14 and v14.current then v14.current._listRef._scrollRef.getNativeScrollRef()._nativeRef.current else nil;
                    local l_horizontal_0 = v13.horizontal;
                    local l_l_horizontal_0_0 = l_horizontal_0 --[[ copy: 3 -> 9 ]];
                    local function v57(v56)
                        if not l_l_horizontal_0_0 then
                            return v56.Y;
                        else
                            return v56.X;
                        end;
                    end;
                    if not (not l_item_0.shouldResizeOnMount or not v53) then
                        l_horizontal_0 = v57(v52.AbsoluteSize);
                        if not (l_horizontal_0 > 0) or v53 == nil then
                            l_item_0.shouldResizeOnMount = false;
                            return ;
                        else
                            local l_CanvasPosition_0 = v53.CanvasPosition;
                            local l_AbsoluteSize_0 = v53.AbsoluteSize;
                            local l_AbsoluteCanvasSize_0 = v53.AbsoluteCanvasSize;
                            local v61 = if not l_enableAutoscrollToTop_0 then nil else v17;
                            if v61 and if not v13.inverted then v57(l_CanvasPosition_0) else (v57(l_AbsoluteCanvasSize_0) - v57(l_CanvasPosition_0)) - v57(l_AbsoluteSize_0) < v61 then
                                l_item_0.shouldResizeOnMount = false;
                                v53.CanvasPosition = if not v13.inverted then if v13.horizontal then Vector2.new(0, v53.CanvasPosition.Y) else Vector2.new(v53.CanvasPosition.X, 0) else if v13.horizontal then Vector2.new(v57(l_AbsoluteCanvasSize_0) - v57(l_AbsoluteSize_0), v53.CanvasPosition.Y) else Vector2.new(v53.CanvasPosition.X, v57(l_AbsoluteCanvasSize_0) - v57(l_AbsoluteSize_0));
                                return ;
                            else
                                local v62 = if not v13.inverted then if v13.horizontal then Vector2.new(l_CanvasPosition_0.X + l_horizontal_0, l_CanvasPosition_0.Y) else Vector2.new(l_CanvasPosition_0.X, l_CanvasPosition_0.Y + l_horizontal_0) else if v13.horizontal then Vector2.new(l_CanvasPosition_0.X - l_horizontal_0, l_CanvasPosition_0.Y) else Vector2.new(l_CanvasPosition_0.X, l_CanvasPosition_0.Y - l_horizontal_0);
                                l_item_0.shouldResizeOnMount = false;
                                v53.CanvasPosition = v62;
                            end;
                        end;
                    end;
                end,
                AutomaticSize = if not v13.horizontal then Enum.AutomaticSize.Y else Enum.AutomaticSize.X,
                Size = if not v13.horizontal then UDim2.new(1, 0, 0, 0) else UDim2.new(0, 0, 1, 0),
                BorderSizePixel = 0,
                name = "resize"
            }, {
                child = v13.renderItem(v50)
            });
        end,
        ref = v14,
        ListHeaderComponent = function()
            if v29 then
                if v32 then
                    if not l_HeaderLoadingIndicator_0 then
                        if _G.__DEV__ then
                            warn("default activity indicator not available");
                        end;
                        return nil;
                    else
                        return v5.createElement(l_HeaderLoadingIndicator_0, nil);
                    end;
                else
                    return nil;
                end;
            elseif not l_ListHeaderComponent_0 then
                return nil;
            else
                return v5.createElement(l_ListHeaderComponent_0, nil);
            end;
        end,
        ListFooterComponent = function()
            if v29 then
                if v34 then
                    if not l_FooterLoadingIndicator_0 then
                        if _G.__DEV__ then
                            warn("default activity indicator not available");
                        end;
                        return nil;
                    else
                        return v5.createElement(l_FooterLoadingIndicator_0, nil);
                    end;
                else
                    return nil;
                end;
            elseif not l_ListFooterComponent_0 then
                return nil;
            else
                return v5.createElement(l_ListFooterComponent_0, nil);
            end;
        end,
        onEndReached = l_Object_0.None,
        onScroll = function(v63)
            v37(function(v64)
                return v64 + 1;
            end);
            if l_onScroll_0 then
                l_onScroll_0(v63);
            end;
            local v65 = v63:GetChildren()[1];
            local l_horizontal_1 = v13.horizontal;
            local l_l_horizontal_1_0 = l_horizontal_1 --[[ copy: 3 -> 8 ]];
            local function v69(v68)
                if not l_l_horizontal_1_0 then
                    return v68.Y;
                else
                    return v68.X;
                end;
            end;
            l_horizontal_1 = v69(v63.AbsoluteSize);
            local v70 = v69(v65.AbsoluteSize);
            local v71 = if not v13.inverted then v69(v63.CanvasPosition) else (v69(v63.AbsoluteCanvasSize) - v69(v63.CanvasPosition)) - l_horizontal_1;
            local v72 = v71 < v28;
            local v73 = (v70 - l_horizontal_1) - v71 < v25;
            if not v72 then
                if not (not (not (not v30 or not l_data_0) and #l_data_0 > 0) or not v38.current[#l_data_0]) then
                    v38.current[#l_data_0] = false;
                end;
            else
                v45();
            end;
            if not v73 then
                if not (not (not (not v31 or not l_data_0) and #l_data_0 > 0) or not v39.current[#l_data_0]) then
                    v39.current[#l_data_0] = false;
                end;
                return ;
            else
                v49();
                return ;
            end;
        end,
        maintainVisibleContentPosition = {
            autoscrollToTopThreshold = if not l_enableAutoscrollToTop_0 then nil else v17,
            minIndexForVisible = 1
        }
    })));
end);
return v4;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Parent.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Object_0 = v1.Object;
local v4 = {};
local v5 = require(l_Parent_0.jsUtils.invariant);
local v6 = {};
v6.__index = v6;
v6.new = function(v7)
    local v8 = setmetatable({}, v6);
    v5(v7 >= 0, "CellRenderMask must contain a non-negative number os cells");
    v8._numCells = v7;
    if v7 == 0 then
        v8._regions = {};
        return v8;
    else
        v8._regions = {
            {
                first = 0,
                last = v7 - 1,
                isSpacer = true
            }
        };
        return v8;
    end;
end;
v6.enumerateRegions = function(v9)
    return v9._regions;
end;
v6.addCells = function(v10, v11)
    local l_v5_0 = v5;
    local v13 = false;
    if v11.first >= 0 then
        v13 = false;
        if v11.first < v10._numCells then
            v13 = false;
            if v11.last >= 0 then
                v13 = false;
                if v11.last < v10._numCells then
                    v13 = v11.first <= v11.last;
                end;
            end;
        end;
    end;
    l_v5_0(v13, "CellRenderMask.addCells called with invalid cell range");
    l_v5_0, v13 = v10:_findRegion(v11.first);
    local v14, v15 = v10:_findRegion(v11.last);
    if not (v13 == v15) or l_v5_0.isSpacer then
        local v16 = {};
        local v17 = {};
        local v18 = l_Object_0.assign({}, v11, {
            isSpacer = false
        });
        if l_v5_0.first < v18.first then
            if not l_v5_0.isSpacer then
                v18.first = l_v5_0.first;
            else
                table.insert(v16, {
                    first = l_v5_0.first,
                    last = v18.first - 1,
                    isSpacer = true
                });
            end;
        end;
        if v18.last < v14.last then
            if not v14.isSpacer then
                v18.last = v14.last;
            else
                table.insert(v17, {
                    first = v18.last + 1,
                    last = v14.last,
                    isSpacer = true
                });
            end;
        end;
        l_Array_0.splice(v10._regions, v13, (v15 - v13) + 1, table.unpack((l_Array_0.concat(v16, {
            v18
        }, v17))));
        return ;
    else
        return ;
    end;
end;
v6.equals = function(v19, v20)
    local v21 = false;
    if v19._numCells == v20._numCells then
        v21 = false;
        if #v19._regions == #v20._regions then
            v21 = l_Array_0.every(v19._regions, function(v22, v23)
                local v24 = false;
                if v22.first == v20._regions[v23].first then
                    v24 = false;
                    if v22.last == v20._regions[v23].last then
                        v24 = v22.isSpacer == v20._regions[v23].isSpacer;
                    end;
                end;
                return v24;
            end);
        end;
    end;
    return v21;
end;
v6._findRegion = function(v25, v26)
    local v27 = 1;
    local v28 = #v25._regions;
    while true do
        if v27 <= v28 then
            local v29 = math.floor((v27 + v28) / 2);
            local v30 = v25._regions[v29];
            if v30.first <= v26 and v26 <= v30.last then
                return v30, v29;
            elseif v26 < v30.first then
                v28 = v29 - 1;
            elseif v30.last < v26 then
                v27 = v29 + 1;
            end;
        else
            v5(false, string.format("A region was not found containing cellIdx %s", (tostring(v26))));
            return nil, nil;
        end;
    end;
end;
v4.CellRenderMask = v6;
return v4;