local l_UGCValidationService_0 = game:GetService("UGCValidationService");
local v1 = game:DefineFastFlag("TruncateMeshBoundsErrorMessage", false);
local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.util.Types);
local v4 = require(l_Parent_0.util.pcallDeferred);
local v5 = require(l_Parent_0.flags.getFFlagUGCValidationShouldYield);
local v6 = require(l_Parent_0.flags.getFFlagUGCLCQualityReplaceLua);
local v7 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v8 = require(l_Parent_0.flags.getEngineFeatureUGCValidateEditableMeshAndImage);
local v9 = require(l_Parent_0.Analytics);
local v10 = Vector3.new(0, 0, 0);
local function v16(v11, v12, v13)
    local v14 = v12:PointToObjectSpace(v11);
    local v15 = false;
    if -v13.X / 2 <= v14.X then
        v15 = false;
        if v14.X <= v13.X / 2 then
            v15 = false;
            if -v13.Y / 2 <= v14.Y then
                v15 = false;
                if v14.Y <= v13.Y / 2 then
                    v15 = false;
                    if -v13.Z / 2 <= v14.Z then
                        v15 = v14.Z <= v13.Z / 2;
                    end;
                end;
            end;
        end;
    end;
    return v15;
end;
local function _(v17)
    return math.floor(v17 * 100) / 100;
end;
local function v22(v19, v20, v21)
    return {
        string.format("%s has size larger than max allowed bounding size. The max size for type %s is [%.2f, %.2f, %.2f]", v19, v20, math.floor(v21.X * 100) / 100, math.floor(v21.Y * 100) / 100, math.floor(v21.Z * 100) / 100)
    };
end;
local function v26(v23, v24, v25)
    if not v1 then
        return {
            "Mesh is too large",
            string.format("Max size for type %s is [%.2f, %.2f, %.2f] from %s", v23, v24.X, v24.Y, v24.Z, v25.Name),
            "Use SpecialMesh.Scale if using SpecialMeshes"
        };
    else
        return {
            "Mesh is too large",
            string.format("Max size for type %s is [%.2f, %.2f, %.2f] from %s", v23, math.floor(v24.X * 100) / 100, math.floor(v24.Y * 100) / 100, math.floor(v24.Z * 100) / 100, v25.Name),
            "Use SpecialMesh.Scale if using SpecialMeshes"
        };
    end;
end;
local function v52(v27, v28, v29, v30, v31, v32, v33)
    local l_isServer_0 = v33.isServer;
    local l_size_0 = v31.size;
    local v36 = v31.offset or v10;
    local v37 = (v27.CFrame * v28.CFrame) * CFrame.new(v36);
    if not v6() then
        local v38 = nil;
        local v39 = nil;
        if not v8() then
            local l_status_0, l_result_0 = pcall(function()
                return l_UGCValidationService_0:GetMeshVerts(v29.contentId);
            end);
            v38 = l_status_0;
            v39 = l_result_0;
        else
            local l_status_1, l_result_1 = pcall(function()
                return l_UGCValidationService_0:GetEditableMeshVerts(v29.editableMesh);
            end);
            v38 = l_status_1;
            v39 = l_result_1;
        end;
        if v38 then
            for _, v45 in pairs(v39) do
                if not v16(v27.CFrame:PointToWorldSpace(v45 * v30), v37, l_size_0) then
                    v9.reportFailure(v9.ErrorType.validateMeshBounds_TooLarge);
                    return false, (v22(v29.context, v32, l_size_0));
                end;
            end;
        else
            v9.reportFailure(v9.ErrorType.validateMeshBounds_FailedToLoadMesh);
            if not (not (l_isServer_0 ~= nil) or not l_isServer_0) then
                error(string.format("Failed to load body part mesh %s. Make sure body part exists and try again.", v29.fullName));
            end;
            return false, {
                string.format("Failed to load body part mesh %s. Make sure body part exists and try again.", v29.fullName)
            };
        end;
    else
        local v46 = nil;
        local v47 = nil;
        if not v8() or not v5() then
            local l_status_2, l_result_2 = pcall(function()
                return l_UGCValidationService_0:ValidateMeshBounds(v29.contentId, v30, v36, v28.CFrame, v27.CFrame);
            end);
            v46 = l_status_2;
            v47 = l_result_2;
        else
            local v50, v51 = v4(function()
                return l_UGCValidationService_0:ValidateEditableMeshBounds(v29.editableMesh, v30, v36, v28.CFrame, v27.CFrame);
            end, v33);
            v46 = v50;
            v47 = v51;
        end;
        if v46 then
            if not v47 then
                v9.reportFailure(v9.ErrorType.validateMeshBounds_TooLarge);
                return false, (v22(v29.context, v32, l_size_0));
            end;
        else
            if not (not (l_isServer_0 ~= nil) or not l_isServer_0) then
                error("Failed to execute validateMeshBounds check");
            end;
            v9.reportFailure(v9.ErrorType.validateMeshBounds_FailedToExecute);
            return false, {
                "Failed to execute validateMeshBounds check"
            };
        end;
    end;
    return true;
end;
local function v69(v53, v54, v55, v56, v57, v58, v59)
    local l_size_1 = v57.size;
    local v61 = v57.offset or v10;
    local v62 = (v53.CFrame * v54.CFrame) * CFrame.new(v61);
    if not v6() then
        local l_status_3, l_result_3 = pcall(function()
            return l_UGCValidationService_0:GetMeshVerts(v55);
        end);
        if l_status_3 then
            for _, v66 in pairs(l_result_3) do
                if not v16(v53.CFrame:PointToWorldSpace(v66 * v56), v62, l_size_1) then
                    v9.reportFailure(v9.ErrorType.validateMeshBounds_TooLarge);
                    return false, (v26(v58, l_size_1, v54));
                end;
            end;
        else
            v9.reportFailure(v9.ErrorType.validateMeshBounds_FailedToLoadMesh);
            if not (not (v59 ~= nil) or not v59) then
                error("Failed to read mesh");
            end;
            return false, {
                "Failed to read mesh"
            };
        end;
    else
        local l_status_4, l_result_4 = pcall(function()
            return l_UGCValidationService_0:ValidateMeshBounds(v55, v56, v61, v54.CFrame, v53.CFrame);
        end);
        if l_status_4 then
            if not l_result_4 then
                v9.reportFailure(v9.ErrorType.validateMeshBounds_TooLarge);
                return false, (v26(v58, l_size_1, v54));
            end;
        else
            if not (not (v59 ~= nil) or not v59) then
                error("Failed to execute validateMeshBounds check");
            end;
            v9.reportFailure(v9.ErrorType.validateMeshBounds_FailedToExecute);
            return false, {
                "Failed to execute validateMeshBounds check"
            };
        end;
    end;
    return true;
end;
if not v7() then
    return v69;
else
    return v52;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local _ = require(l_Parent_0.util.Types);
local v3 = require(l_Parent_0.Analytics);
local v4 = require(l_Parent_0.util.ParseContentIds);
local v5 = require(l_Parent_0.util.getMeshMinMax);
local function v11(v6, v7, v8)
    local function _(v9)
        return (not not v9.context and v9.context .. " mesh " or "mesh ") .. v4.tryGetAssetIdFromContentId(v9.contentId);
    end;
    return string.format("%s is more than max difference %.2f in size compared to the other mesh %s. You need to edit the model to adjust its size", (not not v6.context and v6.context .. " mesh " or "mesh ") .. v4.tryGetAssetIdFromContentId(v6.contentId), v8, (not not v7.context and v7.context .. " mesh " or "mesh ") .. v4.tryGetAssetIdFromContentId(v7.contentId));
end;
local function v17(v12, v13, v14)
    local function _(v15)
        return (not not v15.context and v15.context .. " mesh " or "mesh ") .. v4.tryGetAssetIdFromContentId(v15.id);
    end;
    return string.format("%s is more than %.2f different in size to %s", (not not v12.context and v12.context .. " mesh " or "mesh ") .. v4.tryGetAssetIdFromContentId(v12.id), v14, (not not v13.context and v13.context .. " mesh " or "mesh ") .. v4.tryGetAssetIdFromContentId(v13.id));
end;
local function v30(v18, v19, v20, v21)
    local v22, v23, v24, v25 = v5(v18, v21);
    if v22 then
        local v26, v27, v28, v29 = v5(v19, v21);
        if v26 then
            if not (v20 >= (v24 - v28).Magnitude) or v20 < (v25 - v29).Magnitude then
                v3.reportFailure(v3.ErrorType.validateMeshComparison);
                return false, {
                    v11(v18, v19, v20)
                };
            else
                return true;
            end;
        else
            return v26, v27;
        end;
    else
        return v22, v23;
    end;
end;
local function v43(v31, v32, v33, v34)
    local v35, v36, v37, v38 = v5(v31.id, v34, v31.scale);
    if v35 then
        local v39, v40, v41, v42 = v5(v32.id, v34, v32.scale);
        if v39 then
            if not (v33 >= (v37 - v41).Magnitude) or v33 < (v38 - v42).Magnitude then
                v3.reportFailure(v3.ErrorType.validateMeshComparison);
                return false, {
                    v17(v31, v32, v33)
                };
            else
                return true;
            end;
        else
            return v39, v40;
        end;
    else
        return v35, v36;
    end;
end;
if not v1() then
    return v43;
else
    return v30;
end;


local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.util.Types);
local v2 = require(l_Parent_0.Analytics);
local v3 = require(l_Parent_0.Constants);
local v4 = require(l_Parent_0.validation.validateInstanceTree);
local v5 = require(l_Parent_0.validation.validateMeshTriangles);
local v6 = require(l_Parent_0.validation.validateModeration);
local v7 = require(l_Parent_0.validation.validateMaterials);
local v8 = require(l_Parent_0.validation.validateTags);
local v9 = require(l_Parent_0.validation.validateMeshBounds);
local v10 = require(l_Parent_0.validation.validateTextureSize);
local v11 = require(l_Parent_0.validation.validateProperties);
local v12 = require(l_Parent_0.validation.validateAttributes);
local v13 = require(l_Parent_0.validation.validateMeshVertColors);
local v14 = require(l_Parent_0.validation.validateSingleInstance);
local v15 = require(l_Parent_0.validation.validateCanLoad);
local v16 = require(l_Parent_0.validation.validateThumbnailConfiguration);
local v17 = require(l_Parent_0.validation.validateAccessoryName);
local v18 = require(l_Parent_0.validation.validateSurfaceAppearances);
local v19 = require(l_Parent_0.validation.validateScaleType);
local v20 = require(l_Parent_0.util.createMeshPartAccessorySchema);
local v21 = require(l_Parent_0.util.getAttachment);
local v22 = require(l_Parent_0.util.getMeshSize);
local v23 = require(l_Parent_0.util.FailureReasonsAccumulator);
local v24 = require(l_Parent_0.util.getEditableMeshFromContext);
local v25 = require(l_Parent_0.util.getEditableImageFromContext);
local v26 = require(l_Parent_0.flags.getFFlagUGCValidateMeshVertColors);
local v27 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v28 = require(l_Parent_0.flags.getFFlagUGCValidateThumbnailConfiguration);
local v29 = require(l_Parent_0.flags.getFFlagUGCValidationNameCheck);
local v30 = require(l_Parent_0.flags.getFFlagUGCValidateAccessoriesScaleType);
local v31 = require(l_Parent_0.flags.getEngineFeatureUGCValidateEditableMeshAndImage);
local function v68(v32)
    assert(v32.assetTypeEnum ~= nil, "assetTypeEnum required in validationContext for validateMeshPartAccessory");
    local l_instances_0 = v32.instances;
    local l_assetTypeEnum_0 = v32.assetTypeEnum;
    local l_isServer_0 = v32.isServer;
    local l_allowUnreviewedAssets_0 = v32.allowUnreviewedAssets;
    local v37 = v3.ASSET_TYPE_INFO[l_assetTypeEnum_0];
    local v38 = nil;
    local v39 = nil;
    local v40, v41 = v14(l_instances_0, v32);
    v38 = v40;
    v39 = v41;
    if v38 then
        v40 = l_instances_0[1];
        local v42, v43 = v4(v20(v37.attachmentNames), v40);
        v38 = v42;
        v39 = v43;
        if v38 then
            if not (not v29() or not l_isServer_0) then
                v42, v43 = v17(v40);
                v38 = v42;
                v39 = v43;
                if not v38 then
                    return false, v39;
                end;
            end;
            v42 = v40:FindFirstChild("Handle");
            v43 = {
                fullName = v42:GetFullName(),
                fieldName = "MeshId",
                contentId = v42.MeshId,
                context = v40.Name
            };
            local v44 = v23.new();
            local v45 = false;
            if v43.contentId ~= nil then
                v45 = v43.contentId ~= "";
            end;
            if v31() then
                local v46, v47 = v24(v42, "MeshId", v32);
                if not v46 then
                    if v43.contentId then
                        v2.reportFailure(v2.ErrorType.validateMeshPartAccessory_FailedToLoadMesh);
                        return false, {
                            string.format("Failed to load mesh for accessory '%s'. Make sure mesh exists and try again.", v40.Name)
                        };
                    else
                        v45 = false;
                        v2.reportFailure(v2.ErrorType.validateMeshPartAccessory_NoMeshId);
                        v44:updateReasons(false, {
                            string.format("Accessory MeshPart '%s' must contain a valid meshId. Make sure the mesh referred to by the meshId exists and try again.", v42:GetFullName())
                        });
                    end;
                end;
                v43.editableMesh = v47;
                v45 = true;
            end;
            local l_TextureID_0 = v42.TextureID;
            local v49 = {
                fullName = v42:GetFullName(),
                fieldName = "TextureID",
                contentId = l_TextureID_0
            };
            if not v31() then
                if l_isServer_0 then
                    local v50 = true;
                    local v51 = nil;
                    local v52 = {};
                    if l_TextureID_0 ~= "" then
                        local v53, v54 = v15(l_TextureID_0);
                        v50 = v53;
                        v52 = v54;
                    end;
                    local v55, v56 = v15(v42.MeshId);
                    v51 = v55;
                    v52 = v56;
                    if not (v50 and v51) then
                        error(string.format("Failed to load children assets (Meshes, Textures, etc.) for '%s'. Make sure the assets exist and try again.", v40.Name));
                    end;
                end;
            else
                local v57 = nil;
                local v58 = nil;
                if l_TextureID_0 ~= "" then
                    local v59, v60 = v25(v42, "TextureID", v32);
                    v57 = v59;
                    v58 = v60;
                    if v57 then
                        v49.editableImage = v58;
                    else
                        return false, {
                            string.format("Failed to load texture for accessory '%s'. Make sure texture exists and try again.", v40.Name)
                        };
                    end;
                end;
            end;
            local l_status_0, l_result_0 = pcall(v22, v43);
            if l_status_0 then
                local v63 = v42.Size / l_result_0;
                local v64 = v21(v42, v37.attachmentNames);
                assert(v64);
                local v65 = assert(v37.bounds[v64.Name], "Could not find bounds for " .. v64.Name);
                v44:updateReasons(v7(v40));
                v44:updateReasons(v11(v40));
                v44:updateReasons(v8(v40));
                v44:updateReasons(v12(v40));
                v44:updateReasons(v10(v49, true, v32));
                if v28() then
                    v44:updateReasons(v16(v40, v42, v43, v63));
                end;
                local v66 = not l_isServer_0;
                if l_allowUnreviewedAssets_0 then
                    v66 = false;
                end;
                if v66 then
                    v44:updateReasons(v6(v40, {}));
                end;
                if v45 then
                    v44:updateReasons(v9(v42, v64, v43, v63, v65, l_assetTypeEnum_0.Name, v32));
                    v44:updateReasons(v5(v43, nil, v32));
                    if v26() then
                        v44:updateReasons(v13(v43, false, v32));
                    end;
                end;
                v44:updateReasons(v18(v40));
                if v30() then
                    local l_AvatarPartScaleType_0 = v42:FindFirstChild("AvatarPartScaleType");
                    if not (not l_AvatarPartScaleType_0 or not l_AvatarPartScaleType_0:IsA("StringValue")) then
                        v44:updateReasons(v19(l_AvatarPartScaleType_0));
                    end;
                end;
                return v44:getFinalResults();
            else
                v2.reportFailure(v2.ErrorType.validateMeshPartAccessory_FailedToLoadMesh);
                return false, {
                    string.format("Failed to load mesh for accessory '%s'. Make sure mesh exists and try again.", v40.Name)
                };
            end;
        else
            return false, v39;
        end;
    else
        return false, v39;
    end;
end;
local function v96(v69, v70, v71, v72)
    local v73 = v3.ASSET_TYPE_INFO[v70];
    local v74 = nil;
    local v75 = nil;
    local v76, v77 = v14(v69);
    v74 = v76;
    v75 = v77;
    if v74 then
        v76 = v69[1];
        local v78, v79 = v4(v20(v73.attachmentNames), v76);
        v74 = v78;
        v75 = v79;
        if v74 then
            if not (not v29() or not v71) then
                v78, v79 = v17(v76);
                v74 = v78;
                v75 = v79;
                if not v74 then
                    return false, v75;
                end;
            end;
            v78 = v76:FindFirstChild("Handle");
            v79 = v78.MeshId;
            local l_status_1, l_result_1 = pcall(v22, v79);
            if l_status_1 then
                local v82 = v78.Size / l_result_1;
                local l_TextureID_1 = v78.TextureID;
                local v84 = v21(v78, v73.attachmentNames);
                assert(v84);
                local v85 = assert(v73.bounds[v84.Name], "Could not find bounds for " .. v84.Name);
                if v71 then
                    local v86 = true;
                    local v87 = nil;
                    local v88 = {};
                    if l_TextureID_1 ~= "" then
                        local v89, v90 = v15(l_TextureID_1);
                        v86 = v89;
                        v88 = v90;
                    end;
                    local v91, v92 = v15(v79);
                    v87 = v91;
                    v88 = v92;
                    if not (v86 and v87) then
                        error("Failed to load asset");
                    end;
                end;
                local v93 = v23.new();
                v93:updateReasons(v7(v76));
                v93:updateReasons(v11(v76));
                v93:updateReasons(v8(v76));
                v93:updateReasons(v12(v76));
                v93:updateReasons(v10(l_TextureID_1, true));
                if v28() then
                    v93:updateReasons(v16(v76, v78, v79, v82));
                end;
                local v94 = not v71;
                if v72 then
                    v94 = false;
                end;
                if v94 then
                    v93:updateReasons(v6(v76, {}));
                end;
                if v79 == "" then
                    v2.reportFailure(v2.ErrorType.validateMeshPartAccessory_NoMeshId);
                    v93:updateReasons(false, {
                        "Mesh must contain valid MeshId"
                    });
                else
                    v93:updateReasons(v9(v78, v84, v79, v82, v85, v70.Name));
                    v93:updateReasons(v5(v79));
                    if v26() then
                        v93:updateReasons(v13(v79, false));
                    end;
                end;
                v93:updateReasons(v18(v76));
                if v30() then
                    local l_AvatarPartScaleType_1 = v78:FindFirstChild("AvatarPartScaleType");
                    if not (not l_AvatarPartScaleType_1 or not l_AvatarPartScaleType_1:IsA("StringValue")) then
                        v93:updateReasons(v19(l_AvatarPartScaleType_1));
                    end;
                end;
                return v93:getFinalResults();
            else
                v2.reportFailure(v2.ErrorType.validateMeshPartAccessory_FailedToLoadMesh);
                return false, {
                    "Failed to read mesh"
                };
            end;
        else
            return false, v75;
        end;
    else
        return false, v75;
    end;
end;
if not v27() then
    return v96;
else
    return v68;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Analytics);
local v2 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v3 = require(l_Parent_0.flags.getFFlagDebugUGCDisableSurfaceAppearanceTests);
local v4 = require(l_Parent_0.flags.getFFlagUGCValidateBodyPartsCollisionFidelity);
local v5 = require(l_Parent_0.flags.getFFlagUGCValidateBodyPartsModeration);
local v6 = require(l_Parent_0.flags.getFFlagUGCValidationFixResetPhysicsError);
local v7 = require(l_Parent_0.validation.validateBodyPartMeshBounds);
local v8 = require(l_Parent_0.validation.validateAssetBounds);
local v9 = require(l_Parent_0.validation.validateBodyPartChildAttachmentBounds);
local v10 = require(l_Parent_0.validation.validateDependencies);
local v11 = require(l_Parent_0.validation.validateDescendantMeshMetrics);
local v12 = require(l_Parent_0.validation.validateDescendantTextureMetrics);
local v13 = require(l_Parent_0.validation.validateSurfaceAppearances);
local v14 = require(l_Parent_0.validation.validateMaterials);
local v15 = require(l_Parent_0.validation.validateTags);
local v16 = require(l_Parent_0.validation.validateProperties);
local v17 = require(l_Parent_0.validation.validateAttributes);
local v18 = require(l_Parent_0.validation.validateHSR);
local v19 = require(l_Parent_0.validation.validateBodyPartCollisionFidelity);
local v20 = require(l_Parent_0.validation.validateModeration);
local v21 = require(l_Parent_0.validation.validateAssetTransparency);
local v22 = require(l_Parent_0.util.validateWithSchema);
local v23 = require(l_Parent_0.util.FailureReasonsAccumulator);
local v24 = require(l_Parent_0.util.resetPhysicsData);
local _ = require(l_Parent_0.util.Types);
local function v41(v26, v27, v28)
    local l_isServer_0 = v28.isServer;
    local l_assetTypeEnum_0 = v28.assetTypeEnum;
    local l_allowUnreviewedAssets_0 = v28.allowUnreviewedAssets;
    local v32 = not not v28.bypassFlags and v28.bypassFlags.skipSnapshot;
    local l_restrictedUserIds_0 = v28.restrictedUserIds;
    if not v6() then
        local v34, v35 = v24({
            v26
        }, v28);
        if not v34 then
            return false, {
                v35
            };
        end;
    end;
    local v36 = v22(v27, v26);
    if v36.success then
        if not v3() then
            local v37, v38 = v13(v26);
            if not v37 then
                return v37, v38;
            end;
        end;
        local v39, v40 = v10(v26, v28);
        if v39 then
            if v6() then
                v39, v40 = v24({
                    v26
                }, v28);
                if not v39 then
                    return false, {
                        v40
                    };
                end;
            end;
            v39 = v23.new();
            v39:updateReasons(v7(v26, v28));
            v39:updateReasons(v9(v26, v28));
            v39:updateReasons(v8(nil, v26, v28));
            v39:updateReasons(v11(v26, v28));
            v39:updateReasons(v12(v26, v28));
            v39:updateReasons(v18(v26, v28));
            if not v32 then
                v39:updateReasons(v21(v26, l_assetTypeEnum_0, l_isServer_0));
            end;
            v39:updateReasons(v14(v26));
            v39:updateReasons(v16(v26));
            if v4() then
                v39:updateReasons(v19(v26));
            end;
            v39:updateReasons(v15(v26));
            v39:updateReasons(v17(v26));
            if v5() then
                v40 = not l_isServer_0;
                if l_allowUnreviewedAssets_0 then
                    v40 = false;
                end;
                if v40 then
                    v39:updateReasons(v20(v26, l_restrictedUserIds_0));
                end;
            end;
            return v39:getFinalResults();
        else
            return v39, v40;
        end;
    else
        v1.reportFailure(v1.ErrorType.validateMeshPartBodyPart_ValidateWithSchema);
        return false, {
            string.format("Body part '%s' does not follow R15 schema. The specific issues are: ", v26.Name),
            v36.message
        };
    end;
end;
local function v54(v42, v43, v44, v45, v46, v47, v48)
    if not v6() then
        v24({
            v42
        });
    end;
    local v49 = v22(v43, v42);
    if v49.success then
        if not v3() then
            local v50, v51 = v13(v42);
            if not v50 then
                return v50, v51;
            end;
        end;
        local v52, v53 = v10(v42, v45, v46, v47, v48);
        if v52 then
            if v6() then
                v52, v53 = v24({
                    v42
                }, v45);
                if not v52 then
                    return false, {
                        v53
                    };
                end;
            end;
            v52 = v23.new();
            v52:updateReasons(v7(v42, v44, v45));
            v52:updateReasons(v9(v42, v44, v45));
            v52:updateReasons(v8(nil, v42, v44, v45));
            v52:updateReasons(v11(v42, v44, v45));
            v52:updateReasons(v12(v42, v45));
            v52:updateReasons(v18(v42));
            v52:updateReasons(v21(v42, v44, v45));
            v52:updateReasons(v14(v42));
            v52:updateReasons(v16(v42));
            if v4() then
                v52:updateReasons(v19(v42));
            end;
            v52:updateReasons(v15(v42));
            v52:updateReasons(v17(v42));
            if v5() then
                v53 = not v45;
                if v46 then
                    v53 = false;
                end;
                if v53 then
                    v52:updateReasons(v20(v42, v47));
                end;
            end;
            return v52:getFinalResults();
        else
            return v52, v53;
        end;
    else
        v1.reportFailure(v1.ErrorType.validateMeshPartBodyPart_ValidateWithSchema);
        return false, {
            v49.message
        };
    end;
end;
if not v2() then
    return v54;
else
    return v41;
end;


local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.util.Types);
local v2 = require(l_Parent_0.util.pcallDeferred);
local v3 = require(l_Parent_0.flags.getFFlagUGCValidationShouldYield);
local v4 = require(l_Parent_0.Analytics);
local v5 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v6 = require(l_Parent_0.flags.getEngineFeatureEngineUGCValidateMeshTriangleArea);
local v7 = require(l_Parent_0.flags.getEngineFeatureUGCValidateEditableMeshAndImage);
local l_UGCValidationService_0 = game:GetService("UGCValidationService");
local function v18(v9, v10)
    local v11 = if not v10 then nil else v10.isServer;
    if v6() then
        local v12 = nil;
        local v13 = nil;
        if not v7() or not v3() then
            local l_status_0, l_result_0 = pcall(function()
                return l_UGCValidationService_0:validateMeshTriangleArea(v9.contentId);
            end);
            v12 = l_status_0;
            v13 = l_result_0;
        else
            local v16, v17 = v2(function()
                return l_UGCValidationService_0:ValidateEditableMeshTriangleArea(v9.editableMesh);
            end, v10);
            v12 = v16;
            v13 = v17;
        end;
        if v12 then
            if not v13 then
                v4.reportFailure(v4.ErrorType.validateMeshTriangleArea_NoArea);
                return false, {
                    string.format("Detected zero-area triangle in model mesh %s. You need to edit the mesh to remove zero-area triangles.", v9.fullName)
                };
            end;
        else
            v4.reportFailure(v4.ErrorType.validateMeshTriangleArea_FailedToLoadMesh);
            if v11 then
                error(string.format("Failed to load model mesh %s. Make sure mesh exists and try again.", v9.fullName));
            end;
            return false, {
                string.format("Failed to load model mesh %s. Make sure mesh exists and try again.", v9.fullName)
            };
        end;
    end;
    return true;
end;
local function v25(v19, v20, v21)
    local v22 = v19[v20];
    if v6() then
        local l_status_1, l_result_1 = pcall(function()
            return l_UGCValidationService_0:validateMeshTriangleArea(v22);
        end);
        if l_status_1 then
            if not l_result_1 then
                v4.reportFailure(v4.ErrorType.validateMeshTriangleArea_NoArea);
                return false, {
                    string.format("%s.%s ( %s ) contained an invalid triangle which contained no area in 3D space", v19:GetFullName(), v20, v22)
                };
            end;
        else
            v4.reportFailure(v4.ErrorType.validateMeshTriangleArea_FailedToLoadMesh);
            if v21 then
                error("Failed to load mesh data");
            end;
            return false, {
                "Failed to load mesh data"
            };
        end;
    end;
    return true;
end;
if not v5() then
    return v25;
else
    return v18;
end;


local l_UGCValidationService_0 = game:GetService("UGCValidationService");
local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.util.Types);
local v3 = require(l_Parent_0.util.pcallDeferred);
local v4 = require(l_Parent_0.flags.getFFlagUGCValidationShouldYield);
local v5 = require(l_Parent_0.Analytics);
local v6 = require(l_Parent_0.Constants);
local v7 = require(l_Parent_0.flags.getFFlagUGCLCQualityReplaceLua);
local v8 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v9 = require(l_Parent_0.flags.getFFlagUGCValidateBodyPartsExtendedMeshTests);
local v10 = require(l_Parent_0.flags.getEngineFeatureUGCValidateEditableMeshAndImage);
local function v27(v11, v12, v13)
    local l_isServer_0 = v13.isServer;
    if not v7() or not v9() then
        local v15 = nil;
        local v16 = nil;
        if not v10() or not v4() then
            local l_status_0, l_result_0 = pcall(function()
                return l_UGCValidationService_0:GetMeshTriCount(v11.contentId);
            end);
            v15 = l_status_0;
            v16 = l_result_0;
        else
            local v19, v20 = v3(function()
                return l_UGCValidationService_0:GetEditableMeshTriCount(v11.editableMesh);
            end, v13);
            v15 = v19;
            v16 = v20;
        end;
        if not (v12 ~= nil) then
            v12 = v6.MAX_HAT_TRIANGLES;
        end;
        if v15 then
            if v12 < v16 then
                v5.reportFailure(v5.ErrorType.validateMeshTriangles_TooManyTriangles);
                return false, {
                    string.format("Model mesh %s resolution of %d is higher than max support value of %d. You need to retopologize your model and try again.", v11.fullName, v16, v12)
                };
            end;
        else
            v5.reportFailure(v5.ErrorType.validateMeshTriangles_FailedToLoadMesh);
            if not (not (l_isServer_0 ~= nil) or not l_isServer_0) then
                error(string.format("Failed to load model mesh %s. Make sure the mesh exists and try again.", v11.fullName));
            end;
            return false, {
                string.format("Failed to load model mesh %s. Make sure the mesh exists and try again.", v11.fullName)
            };
        end;
    else
        local v21 = nil;
        local v22 = nil;
        if not v10() or not v4() then
            local l_status_1, l_result_1 = pcall(function()
                return l_UGCValidationService_0:ValidateMeshTriangles(v11.contentId);
            end);
            v21 = l_status_1;
            v22 = l_result_1;
        else
            local v25, v26 = v3(function()
                return l_UGCValidationService_0:ValidateEditableMeshTriangles(v11.editableMesh);
            end, v13);
            v21 = v25;
            v22 = v26;
        end;
        if v21 then
            if not v22 then
                v5.reportFailure(v5.ErrorType.validateMeshTriangles_TooManyTriangles);
                return false, {
                    "Your mesh exceeds the max triangle limit for UGC upload requirements."
                };
            end;
        else
            v5.reportFailure(v5.ErrorType.validateMeshTriangles_FailedToExecute);
            if not (not (l_isServer_0 ~= nil) or not l_isServer_0) then
                error("Failed to execute validateMeshTriangles check");
            end;
            return false, {
                "Failed to execute validateMeshTriangles check"
            };
        end;
    end;
    return true;
end;
local function v35(v28, v29, v30)
    if not v7() or not v9() then
        local l_status_2, l_result_2 = pcall(function()
            return l_UGCValidationService_0:GetMeshTriCount(v28);
        end);
        if not (v29 ~= nil) then
            v29 = v6.MAX_HAT_TRIANGLES;
        end;
        if l_status_2 then
            if v29 < l_result_2 then
                v5.reportFailure(v5.ErrorType.validateMeshTriangles_TooManyTriangles);
                return false, {
                    string.format("Mesh has %d triangles, but the limit is %d", l_result_2, v29)
                };
            end;
        else
            v5.reportFailure(v5.ErrorType.validateMeshTriangles_FailedToLoadMesh);
            if not (not (v30 ~= nil) or not v30) then
                error("Failed to load mesh data");
            end;
            return false, {
                "Failed to load mesh data"
            };
        end;
    else
        local l_status_3, l_result_3 = pcall(function()
            return l_UGCValidationService_0:ValidateMeshTriangles(v28);
        end);
        if l_status_3 then
            if not l_result_3 then
                v5.reportFailure(v5.ErrorType.validateMeshTriangles_TooManyTriangles);
                return false, {
                    "Your mesh exceeds the max triangle limit for UGC upload requirements."
                };
            end;
        else
            v5.reportFailure(v5.ErrorType.validateMeshTriangles_FailedToExecute);
            if not (not (v30 ~= nil) or not v30) then
                error("Failed to execute validateMeshTriangles check");
            end;
            return false, {
                "Failed to execute validateMeshTriangles check"
            };
        end;
    end;
    return true;
end;
if not v8() then
    return v35;
else
    return v27;
end;


local l_UGCValidationService_0 = game:GetService("UGCValidationService");
local l_Parent_0 = script.Parent.Parent;
local v2 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v3 = require(l_Parent_0.flags.getEngineFeatureUGCValidateEditableMeshAndImage);
local _ = require(l_Parent_0.util.Types);
local v5 = require(l_Parent_0.util.pcallDeferred);
local v6 = require(l_Parent_0.flags.getFFlagUGCValidationShouldYield);
local v7 = require(l_Parent_0.Analytics);
local function v19(v8, v9, v10)
    local l_isServer_0 = v10.isServer;
    local v12 = nil;
    local v13 = nil;
    if not v3() or not v6() then
        local l_status_0, l_result_0 = pcall(function()
            return l_UGCValidationService_0:ValidateMeshVertColors(v8.contentId, v9);
        end);
        v12 = l_status_0;
        v13 = l_result_0;
    else
        local v16, v17 = v5(function()
            return l_UGCValidationService_0:ValidateEditableMeshVertColors(v8.editableMesh, v9);
        end, v10);
        v12 = v16;
        v13 = v17;
    end;
    if v12 then
        if v13 then
            return true;
        else
            v7.reportFailure(v7.ErrorType.validateMeshVertexColors_NonNeutralVertexColors);
            return false, {
                string.format("Invalid vertex color found in mesh model '%s'. You need to edit the color map to be all white %s and try again.", v8.fullName, not v9 and "" or "with no transarency")
            };
        end;
    else
        v7.reportFailure(v7.ErrorType.validateMeshVertexColors_FailedToLoadMesh);
        local v18 = string.format("Failed to load vertex color map for model mesh %s. Make sure it exists and try again.", v8.fullName);
        if not (not (l_isServer_0 ~= nil) or not l_isServer_0) then
            error(v18);
        end;
        return false, {
            v18
        };
    end;
end;
local function v25(v20, v21, v22)
    local l_status_1, l_result_1 = pcall(function()
        return l_UGCValidationService_0:ValidateMeshVertColors(v20, v21);
    end);
    if l_status_1 then
        if l_result_1 then
            return true;
        else
            v7.reportFailure(v7.ErrorType.validateMeshVertexColors_NonNeutralVertexColors);
            return false, {
                (("Your mesh (%*) has non-neutral vertex color values, which violates UGC upload requirements."):format(v20))
            };
        end;
    else
        v7.reportFailure(v7.ErrorType.validateMeshVertexColors_FailedToLoadMesh);
        if not (not (v22 ~= nil) or not v22) then
            error("Failed to execute validateMeshVertexColors check");
        end;
        return false, {
            "Failed to execute validateMeshVertexColors check"
        };
    end;
end;
if not v2() then
    return v25;
else
    return v19;
end;


local l_UGCValidationService_0 = game:GetService("UGCValidationService");
local l_Parent_0 = script.Parent.Parent;
local v2 = require(l_Parent_0.Analytics);
local _ = require(l_Parent_0.util.Types);
local v4 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v5 = require(l_Parent_0.flags.getEngineFeatureUGCValidateEditableMeshAndImage);
local function v14(v6, v7)
    assert(v6.context == v7.context);
    local v8 = nil;
    local v9 = nil;
    if not v5() then
        local l_status_0, l_result_0 = pcall(function()
            return l_UGCValidationService_0:ValidateMisMatchUV(v6.contentId, v7.contentId);
        end);
        v8 = l_status_0;
        v9 = l_result_0;
    else
        local l_status_1, l_result_1 = pcall(function()
            return l_UGCValidationService_0:ValidateEditableMeshMisMatchUV(v6.editableMesh, v7.editableMesh);
        end);
        v8 = l_status_1;
        v9 = l_result_1;
    end;
    if v8 then
        if v9 then
            return true;
        else
            v2.reportFailure(v2.ErrorType.validateMisMatchUV_UVMismatch);
            return false, {
                string.format("Inner and Outer cage UV for '%s' are mismatched. The Roblox provided cage template should be used to create inner and outer cages with no modifications to the UV map.", v6.context)
            };
        end;
    else
        v2.reportFailure(v2.ErrorType.validateMisMatchUV_FailedToExecute);
        return false, {
            string.format("Failed to execute UV mismatch check for '%s'. Make sure UV map exists and try again.", v6.context)
        };
    end;
end;
local function v19(v15, v16)
    local l_status_2, l_result_2 = pcall(function()
        return l_UGCValidationService_0:ValidateMisMatchUV(v15, v16);
    end);
    if l_status_2 then
        if l_result_2 then
            return true;
        else
            v2.reportFailure(v2.ErrorType.validateMisMatchUV_UVMismatch);
            return false, {
                "Inner and Outer cage UV mismatched. Original cage template should be used and no modification to the UV map."
            };
        end;
    else
        v2.reportFailure(v2.ErrorType.validateMisMatchUV_FailedToExecute);
        return false, {
            "Failed to execute validateMisMatchUV check"
        };
    end;
end;
if not v4() then
    return v19;
else
    return v14;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Analytics);
local v2 = require(l_Parent_0.Constants);
local v3 = require(l_Parent_0.util.getAssetCreationDetails);
local v4 = require(l_Parent_0.util.ParseContentIds);
local _ = require(l_Parent_0.util.Types);
local v6 = require(l_Parent_0.flags.getFFlagUGCBetterModerationErrorText);
local v7 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local function v17(v8, v9, v10)
    if not v8 or #v8 == 0 then
        return true;
    else
        local v11 = {};
        for _, v13 in ipairs(v8) do
            v11[tonumber(v13.id)] = true;
        end;
        for _, v15 in ipairs(v9) do
            if not v11[tonumber(v15.creatorTargetId)] then
                local v16 = v10[tostring(v15.assetId)];
                assert(v16);
                if not v7() then
                    return false, {
                        string.format("%s.%s ( %s ) is not owned by the developer", v16.instance:GetFullName(), v16.fieldName, (tostring(v15.assetId)))
                    };
                else
                    return false, {
                        string.format("Failed to validate current user owns %s.%s ( %s ). Make sure you own the assets being validated and try again.", v16.instance:GetFullName(), v16.fieldName, (tostring(v15.assetId)))
                    };
                end;
            end;
        end;
        return true;
    end;
end;
return function(v18, v19)
    local v20 = {};
    local v21 = {};
    local v22, v23 = v4.parseWithErrorCheck(v21, v20, v18);
    if v22 then
        local v24 = {};
        local v25, v26 = v3(v21);
        if not v25 or #v26 ~= #v21 then
            v1.reportFailure(v1.ErrorType.validateModeration_CouldNotFetchModerationDetails);
            if not v7() then
                if not v6() then
                    return false, {
                        "Could not fetch details for assets"
                    };
                else
                    return false, {
                        "Could not fetch moderation details for assets.",
                        "Make sure all assets are created by the current user."
                    };
                end;
            else
                return false, {
                    string.format("Failed to fetch moderation results for %s. Make sure all assets are owned by the current user.", v18:GetFullName())
                };
            end;
        else
            local v27, v28 = v17(v19, v26, v20);
            if v27 then
                for _, v30 in pairs(v26) do
                    if not (v30.status ~= v2.ASSET_STATUS.UNKNOWN and v30.status ~= v2.ASSET_STATUS.REVIEW_PENDING) or v30.status == v2.ASSET_STATUS.MODERATED then
                        table.insert(v24, v30.assetId);
                    end;
                end;
                if #v24 > 0 then
                    local v31 = {};
                    for v32, v33 in pairs(v24) do
                        local v34 = v20[v33];
                        if not v34 then
                            v31[v32] = v33;
                        else
                            v31[v32] = string.format("%s.%s ( %s )", v34.instance:GetFullName(), v34.fieldName, v33);
                        end;
                    end;
                    v1.reportFailure(v1.ErrorType.validateModeration_AssetsHaveNotPassedModeration);
                    if not v7() then
                        return false, {
                            "The following asset IDs have not passed moderation:",
                            unpack(v31)
                        };
                    else
                        return false, {
                            "Asset(s) failed to pass moderation:",
                            unpack(v31)
                        };
                    end;
                else
                    return true;
                end;
            else
                v1.reportFailure(v1.ErrorType.validateModeration_ValidateUser);
                return v27, v28;
            end;
        end;
    else
        v1.reportFailure(v1.ErrorType.validateModeration_FailedToParse);
        return false, v23;
    end;
end;


local l_UGCValidationService_0 = game:GetService("UGCValidationService");
local l_Parent_0 = script.Parent.Parent;
local v2 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v3 = require(l_Parent_0.flags.getEngineFeatureUGCValidateEditableMeshAndImage);
local _ = require(l_Parent_0.util.Types);
local v5 = require(l_Parent_0.util.pcallDeferred);
local v6 = require(l_Parent_0.flags.getFFlagUGCValidationShouldYield);
local v7 = require(l_Parent_0.Analytics);
local function v17(v8, v9)
    local l_isServer_0 = v9.isServer;
    local v11 = nil;
    local v12 = nil;
    if not v3() or not v6() then
        local l_status_0, l_result_0 = pcall(function()
            return l_UGCValidationService_0:ValidateOverlappingVertices(v8.contentId);
        end);
        v11 = l_status_0;
        v12 = l_result_0;
    else
        local v15, v16 = v5(function()
            return l_UGCValidationService_0:ValidateEditableMeshOverlappingVertices(v8.editableMesh);
        end, v9);
        v11 = v15;
        v12 = v16;
    end;
    if v11 then
        if v12 then
            return true;
        else
            v7.reportFailure(v7.ErrorType.validateOverlappingVertices_OverlappingVertices);
            return false, {
                string.format("Detected two or more vertices in model mesh '%s' sharing near identical positions. You need to position vertices further apart from each other.", v8.fullName)
            };
        end;
    else
        if not (not (l_isServer_0 ~= nil) or not l_isServer_0) then
            error(string.format("Failed to execute overlapping mesh vertex check for '%s'. Make sure mesh exists and try again.", v8.fullName));
        end;
        v7.reportFailure(v7.ErrorType.validateOverlappingVertices_FailedToExecute);
        return false, {
            string.format("Failed to execute overlapping mesh vertex check for '%s'. Make sure mesh exists and try again.", v8.fullName)
        };
    end;
end;
local function v23(v18, v19, v20)
    local l_status_1, l_result_1 = pcall(function()
        return l_UGCValidationService_0:ValidateOverlappingVertices(v18);
    end);
    if l_status_1 then
        if l_result_1 then
            return true;
        else
            v7.reportFailure(v7.ErrorType.validateOverlappingVertices_OverlappingVertices);
            return false, {
                string.format("%s has multiple vertices sharing identical or near-identical positions.", v19)
            };
        end;
    else
        if not (not (v20 ~= nil) or not v20) then
            error(string.format("Failed to execute validateOverlappingVertices check for %s", v19));
        end;
        v7.reportFailure(v7.ErrorType.validateOverlappingVertices_FailedToExecute);
        return false, {
            string.format("Failed to execute validateOverlappingVertices check for %s", v19)
        };
    end;
end;
if not v2() then
    return v23;
else
    return v17;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v2 = require(l_Parent_0.Analytics);
local v3 = require(l_Parent_0.Constants);
local v4 = require(l_Parent_0.validation.validateSingleInstance);
local v5 = require(l_Parent_0.validation.validateAssetCreator);
local v6 = require(l_Parent_0.util.ParseContentIds);
local _ = require(l_Parent_0.util.Types);
local function v16(v8)
    assert(v8.instances ~= nil, "instances required in validationContext for validatePackage");
    local l_instances_0 = v8.instances;
    local l_restrictedUserIds_0 = v8.restrictedUserIds;
    local v11, v12 = v4(l_instances_0, v8);
    if v11 then
        local v13 = l_instances_0[1];
        local v14 = {};
        local v15 = {};
        if not l_restrictedUserIds_0 or #l_restrictedUserIds_0 == 0 then
            return true;
        elseif v6.parseWithErrorCheck(v14, v15, v13, v3.PACKAGE_CONTENT_ID_FIELDS) then
            return v5(v15, v8);
        else
            v2.reportFailure(v2.ErrorType.validatePackage_FailedToParse);
            return false, {
                string.format("Failed to parse package data for model '%s'. Make sure the packageId is valid and try again.", v13:GetFullName())
            };
        end;
    else
        return v11, v12;
    end;
end;
local function v28(v17, v18, v19, v20)
    local v21, v22 = v4(v17);
    if v21 then
        local v23 = v17[1];
        local v24 = {};
        local v25 = {};
        if not v19 or #v19 == 0 then
            return true;
        else
            local v26, v27 = v6.parseWithErrorCheck(v24, v25, v23, v3.PACKAGE_CONTENT_ID_FIELDS);
            if v26 then
                return v5(v25, v18, v19, v20);
            else
                v2.reportFailure(v2.ErrorType.validatePackage_FailedToParse);
                return false, v27;
            end;
        end;
    else
        return v21, v22;
    end;
end;
if not v1() then
    return v28;
else
    return v16;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Parent.Cryo);
local v2 = require(l_Parent_0.Analytics);
local v3 = require(l_Parent_0.Constants);
local v4 = require(l_Parent_0.util.valueToString);
local v5 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local function _(v6, v7)
    return math.abs(v6 - v7) <= 1.0E-5;
end;
local function _(v9, v10)
    return (math.abs(v9.X - v10.X) <= 1.0E-5 and math.abs(v9.Y - v10.Y) <= 1.0E-5) and math.abs(v9.Z - v10.Z) <= 1.0E-5;
end;
local function _(v12, v13)
    return (math.abs(v12.R - v13.R) <= 1.0E-5 and math.abs(v12.G - v13.G) <= 1.0E-5) and math.abs(v12.B - v13.B) <= 1.0E-5;
end;
local function v17(v15, v16)
    if v16 == v1.None then
        return v15 == nil;
    elseif typeof(v16) == "number" then
        return math.abs(v15 - v16) <= 1.0E-5;
    elseif typeof(v16) == "Vector3" then
        return (math.abs(v15.X - v16.X) <= 1.0E-5 and math.abs(v15.Y - v16.Y) <= 1.0E-5) and math.abs(v15.Z - v16.Z) <= 1.0E-5;
    elseif typeof(v16) == "Color3" then
        return (math.abs(v15.R - v16.R) <= 1.0E-5 and math.abs(v15.G - v16.G) <= 1.0E-5) and math.abs(v15.B - v16.B) <= 1.0E-5;
    else
        return v15 == v16;
    end;
end;
return function(v18)
    local l_v18_Descendants_0 = v18:GetDescendants();
    table.insert(l_v18_Descendants_0, v18);
    for _, v21 in pairs(l_v18_Descendants_0) do
        for v22, v23 in pairs(v3.PROPERTIES) do
            if v21:IsA(v22) then
                for v24, v25 in pairs(v23) do
                    local l_status_0, l_result_0 = pcall(function()
                        return v21[v24];
                    end);
                    if l_status_0 then
                        if not v17(l_result_0, v25) then
                            v2.reportFailure(v2.ErrorType.validateProperties_PropertyMismatch);
                            if not v5() then
                                return false, {
                                    string.format("Expected %s.%s to be %s", v21:GetFullName(), v24, v4(v25))
                                };
                            else
                                return false, {
                                    string.format("Tying to access property '%s.%s' using the incorrect type for it. Expected '%s' to be '%s'.", v21:GetFullName(), v24, v24, v4(v25))
                                };
                            end;
                        end;
                    else
                        v2.reportFailure(v2.ErrorType.validateProperties_PropertyDoesNotExist);
                        if not v5() then
                            return false, {
                                string.format("Property %s does not exist on type %s", v24, v21.ClassName)
                            };
                        else
                            return false, {
                                string.format("Property '%s' does not exist on type '%s'. Delete the property and try again.", v24, v21.ClassName)
                            };
                        end;
                    end;
                end;
            end;
        end;
    end;
    return true;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v2 = require(l_Parent_0.flags.getFFlagUGCValidateAccessoriesScaleType);
local v3 = require(l_Parent_0.Constants);
local v4 = require(l_Parent_0.Analytics);
return function(v5)
    if v2() then
        if v5 then
            if v3.AvatarPartScaleTypes[v5.Value] then
                return true;
            else
                v4.reportFailure(v4.ErrorType.validateScaleType_InvalidAvatarPartScaleType);
                assert(v5.Parent);
                if not v1() then
                    return false, {
                        (("%*.%*.Value must be either Classic, ProportionsSlender, or ProportionsNormal"):format(v5.Parent.Name, v5.Name))
                    };
                else
                    return false, {
                        string.format("The AvatarPartScaleType value in '%s' is invalid. Please, verify the value you are using is either Classic, ProportionsSlender, or ProportionsNormal.", v5.Parent.Name)
                    };
                end;
            end;
        else
            return true;
        end;
    else
        return true;
    end;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Analytics);
local _ = require(l_Parent_0.util.Types);
local v3 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local function v7(v4, v5)
    local l_assetTypeEnum_0 = v5.assetTypeEnum;
    if #v4 == 0 then
        v1.reportFailure(v1.ErrorType.validateSingleInstance_ZeroInstances);
        return false, {
            string.format("Failed to find an instance of the asset type '%s'. Make sure one exists and try again.", l_assetTypeEnum_0.Name)
        };
    elseif #v4 > 1 then
        v1.reportFailure(v1.ErrorType.validateSingleInstance_MultipleInstances);
        return false, {
            string.format("Selected more than one instance of type '%s'. Please, select a single instance of this type and try again.", l_assetTypeEnum_0.Name)
        };
    else
        return true;
    end;
end;
local function v9(v8)
    if #v8 == 0 then
        v1.reportFailure(v1.ErrorType.validateSingleInstance_ZeroInstances);
        return false, {
            "No instances selected"
        };
    elseif #v8 > 1 then
        v1.reportFailure(v1.ErrorType.validateSingleInstance_MultipleInstances);
        return false, {
            "More than one instance selected"
        };
    else
        return true;
    end;
end;
if not v3() then
    return v9;
else
    return v7;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Analytics);
local v2 = require(l_Parent_0.util.FailureReasonsAccumulator);
local v3 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
return function(v4)
    local l_v4_Descendants_0 = v4:GetDescendants();
    table.insert(l_v4_Descendants_0, v4);
    local v6 = v2.new();
    for _, v8 in pairs(l_v4_Descendants_0) do
        if v8:IsA("MeshPart") then
            local v9 = v8.TextureID ~= "";
            local l_SurfaceAppearance_0 = v8:FindFirstChildWhichIsA("SurfaceAppearance");
            if not v3() then
                if not v9 then
                    if not l_SurfaceAppearance_0 then
                        v1.reportFailure(v1.ErrorType.validateSurfaceAppearances_MissingSurfaceAppearance);
                        v6:updateReasons(false, {
                            (("(%*) has an empty TextureID, so must have a child SurfaceAppearance"):format((v8:GetFullName())))
                        });
                    end;
                elseif l_SurfaceAppearance_0 then
                    v1.reportFailure(v1.ErrorType.validateSurfaceAppearances_MeshPartHasTexture);
                    v6:updateReasons(false, {
                        (("SurfaceAppearance's parent (%*) must have an empty TextureID"):format((v8:GetFullName())))
                    });
                end;
            elseif not v9 then
                if not l_SurfaceAppearance_0 then
                    v1.reportFailure(v1.ErrorType.validateSurfaceAppearances_MissingSurfaceAppearance);
                    v6:updateReasons(false, {
                        (("(%*) has an empty TextureID and no child SurfaceAppearance instance. You need to define at least one of them."):format((v8:GetFullName())))
                    });
                end;
            elseif l_SurfaceAppearance_0 then
                v1.reportFailure(v1.ErrorType.validateSurfaceAppearances_MeshPartHasTexture);
                v6:updateReasons(false, {
                    (("TextureID and SurfaceAppearance are both defined for MeshPart (%*). Publishing will only use SurfaceApperance."):format((v8:GetFullName())))
                });
            end;
        end;
    end;
    return v6:getFinalResults();
end;


local l_CollectionService_0 = game:GetService("CollectionService");
local v1 = require(script.Parent.Parent.Analytics);
return function(v2)
    local l_v2_Descendants_0 = v2:GetDescendants();
    table.insert(l_v2_Descendants_0, v2);
    local v4 = {};
    for _, v6 in ipairs(l_v2_Descendants_0) do
        if #l_CollectionService_0:GetTags(v6) > 0 then
            table.insert(v4, v6);
        end;
    end;
    if #v4 > 0 then
        local v7 = {
            "Found the following instance tags which are not allowed:"
        };
        for _, v9 in ipairs(v4) do
            table.insert(v7, v9:GetFullName());
        end;
        v1.reportFailure(v1.ErrorType.validateTags);
        return false, v7;
    else
        return true;
    end;
end;


local l_UGCValidationService_0 = game:GetService("UGCValidationService");
local l_Parent_0 = script.Parent.Parent;
local v2 = require(l_Parent_0.flags.getFFlagUGCLCQualityReplaceLua);
local v3 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v4 = require(l_Parent_0.flags.getEngineFeatureUGCValidateEditableMeshAndImage);
local _ = require(l_Parent_0.util.Types);
local v6 = require(l_Parent_0.util.pcallDeferred);
local v7 = require(l_Parent_0.flags.getFFlagUGCValidationShouldYield);
local v8 = require(l_Parent_0.Analytics);
local v9 = require(l_Parent_0.Constants);
local function v26(v10, v11, v12)
    local l_isServer_0 = v12.isServer;
    if not v4() then
        if v10.contentId == "" then
            if not v11 then
                v8.reportFailure(v8.ErrorType.validateTextureSize_InvalidTextureId);
                return false, {
                    string.format("Invalid textureID used in mesh '%s'. Make sure the texture exists and try again.", v10.fullName)
                };
            else
                return true;
            end;
        end;
    elseif not v10.editableImage then
        if not v11 then
            v8.reportFailure(v8.ErrorType.validateTextureSize_InvalidTextureId);
            return false, {
                string.format("Invalid textureID used in mesh '%s'. Make sure the texture exists and try again.", v10.fullName)
            };
        else
            return true;
        end;
    end;
    if not v2() then
        local v14 = nil;
        local v15 = nil;
        if not v4() or not v7() then
            local l_status_0, l_result_0 = pcall(function()
                return l_UGCValidationService_0:GetTextureSize(v10.contentId);
            end);
            v14 = l_status_0;
            v15 = l_result_0;
        else
            local v18, v19 = v6(function()
                return l_UGCValidationService_0:GetEditableImageSize(v10.editableImage);
            end, v12);
            v14 = v18;
            v15 = v19;
        end;
        if v14 then
            if not (v9.MAX_TEXTURE_SIZE >= v15.X) or v9.MAX_TEXTURE_SIZE < v15.Y then
                v8.reportFailure(v8.ErrorType.validateTextureSize_TextureTooBig);
                return false, {
                    string.format("Texture resolution %dx%d px found in '%s' is higher than max size supported value of %dx%d px. You need to reduce the texture resolution", v15.X, v15.Y, v10.fullName, v9.MAX_TEXTURE_SIZE, v9.MAX_TEXTURE_SIZE)
                };
            end;
        else
            if not (not (l_isServer_0 ~= nil) or not l_isServer_0) then
                error(string.format("Failed to load texture data for '%s'. Make sure the texture exists and try again.", v10.fullName));
            end;
            v8.reportFailure(v8.ErrorType.validateTextureSize_FailedToLoadTexture);
            return false, {
                string.format("Failed to load texture data for '%s'. Make sure the texture exists and try again.", v10.fullName)
            };
        end;
    else
        local v20 = nil;
        local v21 = nil;
        if not v4() or not v7() then
            local l_status_1, l_result_1 = pcall(function()
                return l_UGCValidationService_0:ValidateTextureSize(v10.contentId);
            end);
            v20 = l_status_1;
            v21 = l_result_1;
        else
            local v24, v25 = v6(function()
                return l_UGCValidationService_0:ValidateEditableImageSize(v10.editableImage);
            end, v12);
            v20 = v24;
            v21 = v25;
        end;
        if v20 then
            if not v21 then
                v8.reportFailure(v8.ErrorType.validateTextureSize_TextureTooBig);
                return false, {
                    "Your textures exceeds the max texture size limit for UGC upload requirements."
                };
            end;
        else
            if not (not (l_isServer_0 ~= nil) or not l_isServer_0) then
                error("Failed to execute validateTextureSize check");
            end;
            v8.reportFailure(v8.ErrorType.validateTextureSize_FailedToExecute);
            return false, {
                "Failed to execute validateTextureSize check"
            };
        end;
    end;
    return true;
end;
local function v34(v27, v28, v29)
    if v27 == "" then
        if not v28 then
            v8.reportFailure(v8.ErrorType.validateTextureSize_InvalidTextureId);
            return false, {
                "Mesh must contain valid TextureId"
            };
        else
            return true;
        end;
    else
        if not v2() then
            local l_status_2, l_result_2 = pcall(function()
                return l_UGCValidationService_0:GetTextureSize(v27);
            end);
            if l_status_2 then
                if not (v9.MAX_TEXTURE_SIZE >= l_result_2.X) or v9.MAX_TEXTURE_SIZE < l_result_2.Y then
                    v8.reportFailure(v8.ErrorType.validateTextureSize_TextureTooBig);
                    return false, {
                        string.format("Texture size is %dx%d px, but the limit is %dx%d px", l_result_2.X, l_result_2.Y, v9.MAX_TEXTURE_SIZE, v9.MAX_TEXTURE_SIZE)
                    };
                end;
            else
                if not (not (v29 ~= nil) or not v29) then
                    error("Failed to load texture data " .. tostring(l_result_2));
                end;
                v8.reportFailure(v8.ErrorType.validateTextureSize_FailedToLoadTexture);
                return false, {
                    "Failed to load texture data",
                    l_result_2
                };
            end;
        else
            local l_status_3, l_result_3 = pcall(function()
                return l_UGCValidationService_0:ValidateTextureSize(v27);
            end);
            if l_status_3 then
                if not l_result_3 then
                    v8.reportFailure(v8.ErrorType.validateTextureSize_TextureTooBig);
                    return false, {
                        "Your textures exceeds the max texture size limit for UGC upload requirements."
                    };
                end;
            else
                if not (not (v29 ~= nil) or not v29) then
                    error("Failed to execute validateTextureSize check");
                end;
                v8.reportFailure(v8.ErrorType.validateTextureSize_FailedToExecute);
                return false, {
                    "Failed to execute validateTextureSize check"
                };
            end;
        end;
        return true;
    end;
end;
if not v3() then
    return v34;
else
    return v26;
end;


local l_UGCValidationService_0 = game:GetService("UGCValidationService");
local v1 = game:DefineFastFlag("UGCValidationAddThumbnailFrustumCheckingv2", false);
local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.util.Types);
local v4 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v5 = require(l_Parent_0.flags.getEngineFeatureUGCValidateEditableMeshAndImage);
local v6 = require(l_Parent_0.Analytics);
local function v15(v7, v8, v9, v10)
    local l_ThumbnailConfiguration_0 = v7:FindFirstChild("ThumbnailConfiguration");
    if l_ThumbnailConfiguration_0 then
        local l_ThumbnailCameraTarget_0 = l_ThumbnailConfiguration_0:FindFirstChild("ThumbnailCameraTarget");
        if l_ThumbnailCameraTarget_0.Value ~= v8 then
            v6.reportFailure(v6.ErrorType.validateThumbnailConfiguration_InvalidTarget);
            return false, {
                string.format("Invalid target asset for thumbnail generation. Expected it to be '%s'.", v8:GetFullName())
            };
        elseif not (not game:GetEngineFeature("EngineUGCValidateThumbnailerMeshInFrustum") or not v1) then
            local l_CFrame_0 = l_ThumbnailCameraTarget_0.Value.CFrame;
            local v14 = l_CFrame_0 * l_ThumbnailConfiguration_0:FindFirstChild("ThumbnailCameraValue").Value;
            if not v5() then
                if l_UGCValidationService_0:CheckMeshInCameraFrustum(v9.contentId, v10, l_CFrame_0, v14) == false then
                    v6.reportFailure(v6.ErrorType.validateThumbnailConfiguration_OutsideView);
                    return false, {
                        string.format("Asset '%s' is positioned outside the thumbnail camera view. You need to reposition the asset at the center of the camera view and try again.", v9.fullName)
                    };
                end;
            elseif l_UGCValidationService_0:CheckEditableMeshInCameraFrustum(v9.editableMesh, v10, l_CFrame_0, v14) == false then
                v6.reportFailure(v6.ErrorType.validateThumbnailConfiguration_OutsideView);
                return false, {
                    string.format("Asset '%s' is positioned outside the thumbnail camera view. You need to reposition the asset at the center of the camera view and try again.", v9.fullName)
                };
            end;
        end;
    end;
    return true;
end;
local function v23(v16, v17, v18, v19)
    local l_ThumbnailConfiguration_1 = v16:FindFirstChild("ThumbnailConfiguration");
    if l_ThumbnailConfiguration_1 then
        local l_ThumbnailCameraTarget_1 = l_ThumbnailConfiguration_1:FindFirstChild("ThumbnailCameraTarget");
        if l_ThumbnailCameraTarget_1.Value ~= v17 then
            v6.reportFailure(v6.ErrorType.validateThumbnailConfiguration_InvalidTarget);
            return false, {
                string.format("ThumbnailCameraTarget.Value must be %s", v17:GetFullName())
            };
        elseif not (not game:GetEngineFeature("EngineUGCValidateThumbnailerMeshInFrustum") or not v1) then
            local l_CFrame_1 = l_ThumbnailCameraTarget_1.Value.CFrame;
            if l_UGCValidationService_0:CheckMeshInCameraFrustum(v18, v19, l_CFrame_1, l_CFrame_1 * l_ThumbnailConfiguration_1:FindFirstChild("ThumbnailCameraValue").Value) == false then
                v6.reportFailure(v6.ErrorType.validateThumbnailConfiguration_OutsideView);
                return false, {
                    "Item must be fully within view of thumbnail camera"
                };
            end;
        end;
    end;
    return true;
end;
if not v4() then
    return v23;
else
    return v15;
end;


local l_UGCValidationService_0 = game:GetService("UGCValidationService");
local l_Parent_0 = script.Parent.Parent;
local v2 = require(l_Parent_0.Analytics);
local _ = require(l_Parent_0.util.Types);
local v4 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v5 = require(l_Parent_0.flags.getEngineFeatureUGCValidateEditableMeshAndImage);
local function v13(v6)
    local v7 = nil;
    local v8 = nil;
    if not v5() then
        local l_status_0, l_result_0 = pcall(function()
            return l_UGCValidationService_0:ValidateUVSpace(v6.contentId);
        end);
        v7 = l_status_0;
        v8 = l_result_0;
    else
        local l_status_1, l_result_1 = pcall(function()
            return l_UGCValidationService_0:ValidateEditableMeshUVSpace(v6.editableMesh);
        end);
        v7 = l_status_1;
        v8 = l_result_1;
    end;
    if v7 then
        if v8 then
            return true;
        else
            v2.reportFailure(v2.ErrorType.validateUVSpace_InvalidUVSpace);
            return false, {
                string.format("Detected modified UV values for '%s'. The original UV map for this model can't be altered.", v6.fullName)
            };
        end;
    else
        v2.reportFailure(v2.ErrorType.validateUVSpace_FailedToExecute);
        return false, {
            string.format("Failed to execute validateUVSpace check on '%s'. Make sure the UV maps exists and try again.", v6.fullName)
        };
    end;
end;
local function v17(v14)
    local l_status_2, l_result_2 = pcall(function()
        return l_UGCValidationService_0:ValidateUVSpace(v14);
    end);
    if l_status_2 then
        if l_result_2 then
            return true;
        else
            v2.reportFailure(v2.ErrorType.validateUVSpace_InvalidUVSpace);
            return false, {
                "Your mesh has UVs defined outside 0-1 space. This can lead to texturing discrepancies and violates UGC upload requirements."
            };
        end;
    else
        v2.reportFailure(v2.ErrorType.validateUVSpace_FailedToExecute);
        return false, {
            "Failed to execute validateUVSpace check"
        };
    end;
end;
if not v4() then
    return v17;
else
    return v13;
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.Roact);
local v3 = require(l_Parent_1.t);
local v4 = require(l_Parent_0.Utility.SpringAnimatedItem);
local v5 = {
    dampingRatio = 1,
    frequency = 3.5
};
local v6 = v2.PureComponent:extend("AccordionView");
v6.validateProps = v3.strictInterface({
    items = v3.table,
    itemWidth = v3.number,
    itemHeight = v3.number,
    renderItem = v3.callback,
    placeholderColor = v3.Color3,
    placeholderBaseTransparency = v3.number,
    collapseButtonSize = v3.number,
    renderCollapseButton = v3.callback,
    LayoutOrder = v3.optional(v3.integer),
    maxItemsInCompactView = v3.numberPositive
});
v6.defaultProps = {
    maxItemsInCompactView = 3
};
v6.init = function(v7)
    v7.state = {
        expanded = false,
        isExpandButtonPressed = false
    };
    v7.onExpandButtonActivated = function()
        v7:setState({
            expanded = true,
            isExpandButtonPressed = false
        });
    end;
    v7.onCollapseButtonActivated = function()
        v7:setState({
            expanded = false
        });
    end;
    v7.onExpandButtonInputBegan = function(_, v9)
        if v9.UserInputState == Enum.UserInputState.Begin and (not (v9.UserInputType ~= Enum.UserInputType.Touch) or v9.UserInputType == Enum.UserInputType.MouseButton1) then
            v7:setState({
                isExpandButtonPressed = true
            });
        end;
    end;
    v7.onExpandButtonInputEnded = function()
        if v7.state.isExpandButtonPressed then
            v7:setState({
                isExpandButtonPressed = false
            });
        end;
    end;
    v7.rootFrameRef = v2.createRef();
    v7.onListLayoutAbsoluteContentSizeChanged = function(v10)
        if v7.rootFrameRef.current then
            v7.rootFrameRef.current.Size = UDim2.new(0, v7.props.itemWidth, 0, (math.max(v10.AbsoluteContentSize.Y, (v7:getCompactTotalHeight()))));
        end;
    end;
end;
v6.getCompactTotalHeight = function(v11)
    local l_items_0 = v11.props.items;
    local l_itemHeight_0 = v11.props.itemHeight;
    local l_maxItemsInCompactView_0 = v11.props.maxItemsInCompactView;
    local v15 = #l_items_0;
    if v15 == 0 then
        return 0;
    else
        return l_itemHeight_0 + (math.min(l_maxItemsInCompactView_0, v15) - 1) * 10;
    end;
end;
v6.getLayoutInfo = function(v16)
    local l_items_1 = v16.props.items;
    local l_itemWidth_0 = v16.props.itemWidth;
    local l_itemHeight_1 = v16.props.itemHeight;
    local l_placeholderBaseTransparency_0 = v16.props.placeholderBaseTransparency;
    local l_maxItemsInCompactView_1 = v16.props.maxItemsInCompactView;
    local l_expanded_0 = v16.state.expanded;
    local v23 = {};
    local v24 = #l_items_1;
    local v25 = math.min(l_maxItemsInCompactView_1, v24);
    local v26 = 0;
    if v25 > 1 then
        v26 = (1 - l_placeholderBaseTransparency_0) / (v25 - 1);
    end;
    for v27 = 1, v24 do
        if not l_expanded_0 then
            if v27 == 1 then
                v23[v27] = {
                    width = l_itemWidth_0,
                    height = l_itemHeight_1,
                    placeholderTransparency = 1,
                    itemTransparency = 0
                };
            elseif v27 <= l_maxItemsInCompactView_1 then
                v23[v27] = {
                    width = l_itemWidth_0 - 20 * (v27 - 1),
                    height = 10,
                    placeholderTransparency = l_placeholderBaseTransparency_0 + v26 * (v27 - 2),
                    itemTransparency = 1
                };
            else
                v23[v27] = {
                    width = l_itemWidth_0 - 20 * (v27 - 1),
                    height = 0,
                    placeholderTransparency = 1,
                    itemTransparency = 1
                };
            end;
        else
            v23[v27] = {
                width = l_itemWidth_0,
                height = l_itemHeight_1,
                placeholderTransparency = 1,
                itemTransparency = 0
            };
        end;
    end;
    return v23;
end;
v6.render = function(v28)
    local l_items_2 = v28.props.items;
    local v30 = #l_items_2;
    if v30 == 0 then
        return nil;
    else
        local l_LayoutOrder_0 = v28.props.LayoutOrder;
        local l_itemWidth_1 = v28.props.itemWidth;
        local l_renderItem_0 = v28.props.renderItem;
        local l_placeholderColor_0 = v28.props.placeholderColor;
        local l_collapseButtonSize_0 = v28.props.collapseButtonSize;
        local l_renderCollapseButton_0 = v28.props.renderCollapseButton;
        local l_expanded_1 = v28.state.expanded;
        local l_isExpandButtonPressed_0 = v28.state.isExpandButtonPressed;
        local v39 = v28:getLayoutInfo();
        local v43 = {
            Layout = v2.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                SortOrder = Enum.SortOrder.LayoutOrder,
                Padding = UDim.new(0, not l_expanded_1 and 0 or 10),
                [v2.Change.AbsoluteContentSize] = v28.onListLayoutAbsoluteContentSizeChanged
            }),
            Scaler = v2.createElement(v4.AnimatedUIScale, {
                springOptions = v5,
                animatedValues = {
                    scale = not l_isExpandButtonPressed_0 and 1 or 0.9
                },
                mapValuesToProps = function(v40)
                    return {
                        Scale = v40.scale
                    };
                end
            }),
            CollapseButton = v2.createElement(v4.AnimatedFrame, {
                springOptions = v5,
                animatedValues = {
                    sizeOffsetY = not not l_expanded_1 and l_collapseButtonSize_0 + 1 or 0
                },
                mapValuesToProps = function(v41)
                    return {
                        Size = UDim2.new(0, l_collapseButtonSize_0, 0, v41.sizeOffsetY)
                    };
                end,
                regularProps = {
                    BackgroundTransparency = 1,
                    ClipsDescendants = true,
                    [v2.Children] = {
                        ButtonMoveContainer = v2.createElement(v4.AnimatedFrame, {
                            springOptions = v5,
                            animatedValues = {
                                positionOffsetY = if not l_expanded_1 then l_collapseButtonSize_0 / 2 else 0
                            },
                            mapValuesToProps = function(v42)
                                return {
                                    Position = UDim2.new(0, 0, 0, v42.positionOffsetY)
                                };
                            end,
                            regularProps = {
                                Size = UDim2.new(0, l_collapseButtonSize_0, 0, l_collapseButtonSize_0),
                                BackgroundTransparency = 1,
                                [v2.Children] = {
                                    Button = l_renderCollapseButton_0(v28.onCollapseButtonActivated)
                                }
                            }
                        })
                    }
                }
            })
        };
        for v44, _ in ipairs(l_items_2) do
            local v46 = v39[v44];
            v43["Item" .. tostring(v44)] = v2.createElement(v4.AnimatedFrame, {
                springOptions = v5,
                animatedValues = {
                    width = v46.width,
                    height = v46.height
                },
                mapValuesToProps = function(v47)
                    return {
                        Size = UDim2.new(0, v47.width, 0, v47.height)
                    };
                end,
                regularProps = {
                    Size = UDim2.new(1, 0, 0, 0),
                    BackgroundTransparency = 1,
                    BorderSizePixel = 0,
                    LayoutOrder = v44 + 1,
                    ZIndex = (v30 + 1) - v44,
                    ClipsDescendants = true,
                    [v2.Children] = {
                        Item = l_renderItem_0(l_items_2[v44], v46.itemTransparency, v5),
                        Placeholder = v2.createElement(v4.AnimatedFrame, {
                            key = "Placeholder",
                            springOptions = v5,
                            animatedValues = {
                                transparency = v46.placeholderTransparency
                            },
                            mapValuesToProps = function(v48)
                                return {
                                    BackgroundTransparency = v48.transparency
                                };
                            end,
                            regularProps = {
                                Size = UDim2.new(1, 0, 1, 0),
                                BackgroundColor3 = l_placeholderColor_0,
                                BorderSizePixel = 0
                            }
                        })
                    }
                }
            });
        end;
        return v2.createElement("Frame", {
            Size = UDim2.new(0, l_itemWidth_1, 0, 0),
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            LayoutOrder = l_LayoutOrder_0,
            [v2.Ref] = v28.rootFrameRef
        }, {
            ContentFrame = v2.createElement("Frame", {
                Size = UDim2.new(1, 0, 1, 0),
                Position = UDim2.new(0.5, 0, 0.5, 0),
                AnchorPoint = Vector2.new(0.5, 0.5),
                BackgroundTransparency = 1
            }, v43),
            ClickToExpandButton = (v30 > 1 and not l_expanded_1) and v2.createElement("TextButton", {
                Size = UDim2.new(1, 0, 1, 0),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                ZIndex = v30 + 1,
                Text = "",
                [v2.Event.Activated] = v28.onExpandButtonActivated,
                [v2.Event.InputBegan] = v28.onExpandButtonInputBegan,
                [v2.Event.InputEnded] = v28.onExpandButtonInputEnded
            })
        });
    end;
end;
return v6;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.Roact);
local v4 = require(l_Parent_2.t);
local v5 = require(l_Parent_2.Cryo);
local v6 = require(l_Parent_1.Core.Style.withStyle);
local v7 = require(script.Parent.ControllerBarHint);
local v8 = require(l_Parent_1.Core.Text.GetTextSize);
local l_ControllerBarHintInternalPadding_0 = require(script.Parent.BarConstants).ControllerBarHintInternalPadding;
local l_DefaultKeyLabelSize_0 = require(l_Parent_0.Menu.MenuConstants).DefaultKeyLabelSize;
local v11 = v3.PureComponent:extend("ControllerBar");
local v12 = v4.strictInterface({
    keyCode = v4.enum(Enum.KeyCode),
    text = v4.string
});
v11.validateProps = v4.strictInterface({
    leftHint = v12,
    rightHints = v4.optional(v4.map(v4.number, v12))
});
v11.init = function(v13)
    v13.state = {
        controllerBarWidth = 0,
        hintStringsConcat = nil,
        requiredSpace = nil,
        hintRatios = nil
    };
end;
v11.calculateHintRatios = function(v14, v15)
    local v16 = 84;
    local v17 = "";
    local v18 = {};
    local v19 = 0;
    local v20 = v5.List.join({
        v14
    }, v15 or {});
    for _, v22 in ipairs(v20) do
        v18[v22.text] = v8(v22.text, 17, Enum.Font.ArialBold, Vector2.new(10000, 10000)).X;
        v19 = v19 + v18[v22.text];
        v16 = (v16 + l_DefaultKeyLabelSize_0) + l_ControllerBarHintInternalPadding_0;
        v17 = v17 .. v22.text;
    end;
    for v23, v24 in pairs(v18) do
        v18[v23] = v24 / v19;
    end;
    return v18, v16 + math.max(#v20 - 2, 0) * 40, v17;
end;
v11.getDerivedStateFromProps = function(v25)
    local v26, v27, v28 = v11.calculateHintRatios(v25.leftHint, v25.rightHints);
    return {
        hintRatios = v26,
        requiredSpace = v27,
        hintStringsConcat = v28
    };
end;
v11.calculateHintSize = function(v29, v30, v31)
    local v32 = v30 - v29.state.requiredSpace;
    local v33 = v31.Header2.RelativeSize * v31.BaseSize;
    local v34 = v31.Header2.RelativeMinSize * v31.BaseSize;
    local l_X_0 = v8(v29.state.hintStringsConcat, v34, v31.Header2.Font, Vector2.new(10000, 10000)).X;
    if l_X_0 <= v32 then
        local l_X_1 = v8(v29.state.hintStringsConcat, v33, v31.Header2.Font, Vector2.new(10000, 10000)).X;
        local v37 = (v33 - v34) / (l_X_1 - l_X_0);
        return nil, (math.clamp(v32 * v37 + (v33 - v37 * l_X_1), v34, v33));
    else
        local v38 = {};
        for v39, v40 in pairs(v29.state.hintRatios) do
            v38[v39] = v40 * v32;
        end;
        return v38;
    end;
end;
v11.render = function(v41)
    return v6(function(v42)
        local l_Theme_0 = v42.Theme;
        local v44, v45 = v41:calculateHintSize(v41.state.controllerBarWidth, v42.Font);
        local function v48(v46, v47)
            return v3.createElement(v7, (v5.Dictionary.join(v46, {
                key = "Hint" .. tostring(v47),
                hintTextSize = v45,
                maxWidth = not not v44 and v44[v46.text] or nil
            })));
        end;
        local v49 = nil;
        if v41.props.rightHints then
            v49 = v3.createFragment(v5.List.map(v41.props.rightHints, v48));
        end;
        return v3.createElement("Frame", {
            BorderSizePixel = 0,
            BackgroundTransparency = l_Theme_0.BackgroundUIContrast.Transparency,
            BackgroundColor3 = l_Theme_0.BackgroundUIContrast.Color,
            Size = UDim2.new(1, 0, 0, 72),
            Position = UDim2.fromScale(0, 1),
            AnchorPoint = Vector2.new(0, 1),
            [v3.Change.AbsoluteSize] = function(v50)
                v41:setState({
                    controllerBarWidth = v50.AbsoluteSize.X
                });
            end,
            [v3.Event.AncestryChanged] = function(v51)
                v41:setState({
                    controllerBarWidth = v51.AbsoluteSize.X
                });
            end
        }, {
            Padding = v3.createElement("UIPadding", {
                PaddingLeft = UDim.new(0, 24),
                PaddingRight = UDim.new(0, 24)
            }),
            LeftFrame = v3.createElement("Frame", {
                BackgroundTransparency = 1,
                Size = UDim2.fromScale(0.5, 1)
            }, {
                v3.createElement("UIListLayout", {
                    key = "Layout",
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    FillDirection = Enum.FillDirection.Horizontal,
                    HorizontalAlignment = Enum.HorizontalAlignment.Left,
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    Padding = UDim.new(0, 40)
                }),
                v48(v41.props.leftHint, "Left")
            }),
            RightFrame = v3.createElement("Frame", {
                BackgroundTransparency = 1,
                Size = UDim2.fromScale(0.5, 1),
                Position = UDim2.fromScale(1, 0),
                AnchorPoint = Vector2.new(1, 0)
            }, {
                Layout = v3.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    FillDirection = Enum.FillDirection.Horizontal,
                    HorizontalAlignment = Enum.HorizontalAlignment.Right,
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    Padding = UDim.new(0, 40)
                }),
                RightHints = v49
            })
        });
    end);
end;
return v11;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.Roact);
local v4 = require(l_Parent_2.t);
local v5 = require(l_Parent_1.Core.Style.withStyle);
local v6 = require(l_Parent_1.Core.Text.GenericTextLabel.GenericTextLabel);
local v7 = require(l_Parent_0.Menu.KeyLabel.KeyLabel);
local l_ControllerBarHintInternalPadding_0 = require(script.Parent.BarConstants).ControllerBarHintInternalPadding;
local v9 = v3.PureComponent:extend("ControllerBarHint");
v9.validateProps = v4.strictInterface({
    layoutOrder = v4.optional(v4.integer),
    keyCode = v4.enum(Enum.KeyCode),
    text = v4.string,
    maxWidth = v4.optional(v4.number),
    hintTextSize = v4.optional(v4.number)
});
v9.render = function(v10)
    return v5(function(v11)
        local l_Theme_0 = v11.Theme;
        return v3.createElement("Frame", {
            LayoutOrder = v10.props.layoutOrder,
            BackgroundTransparency = 1,
            AutomaticSize = Enum.AutomaticSize.X
        }, {
            Layout = v3.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Horizontal,
                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                VerticalAlignment = Enum.VerticalAlignment.Center,
                Padding = UDim.new(0, l_ControllerBarHintInternalPadding_0)
            }),
            ControllerBarHintIcon = v3.createElement(v7, {
                keyCode = v10.props.keyCode,
                LayoutOrder = 1,
                iconThemeKey = "IconEmphasis"
            }),
            ControllerBarHintText = v3.createElement(v6, {
                TextSize = v10.props.hintTextSize,
                maxSize = not not v10.props.maxWidth and Vector2.new(v10.props.maxWidth) or nil,
                BackgroundTransparency = 1,
                LayoutOrder = 2,
                fontStyle = v11.Font.Header2,
                colorStyle = l_Theme_0.TextEmphasis,
                AutomaticSize = not v10.props.maxWidth and Enum.AutomaticSize.X or nil,
                TextTransparency = l_Theme_0.TextEmphasis.TextTransparency,
                fluidSizing = not not v10.props.maxWidth or false,
                Text = v10.props.text,
                TextTruncate = not not v10.props.maxWidth and Enum.TextTruncate.AtEnd or nil,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Center
            })
        });
    end);
end;
return v9;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.Roact);
local v4 = require(l_Parent_2.Otter);
local v5 = require(l_Parent_2.t);
local v6 = require(l_Parent_0.Button.IconButton);
local v7 = require(l_Parent_0.ImageSet.Images);
local v8 = require(l_Parent_0.ImageSet.Enum.IconSize);
local v9 = require(l_Parent_0.ImageSet.getIconSize);
local v10 = require(l_Parent_2.UIBlox.Core.Control.Enum.ControlState);
local v11 = require(l_Parent_1.Core.Style.withStyle);
local v12 = require(l_Parent_1.Core.Bar.ThreeSectionBar);
local v13 = require(l_Parent_2.UIBlox.Utility.lerp);
local v14 = require(l_Parent_2.UIBlox.Utility.divideTransparency);
local v15 = UDim2.new(0, 0, 0, -88);
local v16 = UDim2.fromOffset(0, 0);
local v17 = {
    frequency = 5
};
local v18 = v3.PureComponent:extend("FullscreenTitleBar");
v18.validateProps = v5.strictInterface({
    title = v5.string,
    isTriggered = v5.optional(v5.boolean),
    onDisappear = v5.optional(v5.callback),
    onHover = v5.optional(v5.callback),
    exitFullscreen = v5.optional(v5.callback),
    closeRoblox = v5.optional(v5.callback)
});
v18.init = function(v19)
    local v20 = not v19.props.isTriggered and 0 or 1;
    local v21 = nil;
    local v22, v23 = v3.createBinding(v20);
    v19.progress = v22;
    v21 = v23;
    v22, v23 = v3.createBinding(v10.Default);
    v19.exitControlState = v22;
    v19.setExitControlState = v23;
    v22, v23 = v3.createBinding(v10.Default);
    v19.closeControlState = v22;
    v19.setCloseControlState = v23;
    v19.titleBarPosition = v19.progress:map(function(v24)
        return v15:lerp(v16, v24);
    end);
    v19.progressMotor = v4.createSingleMotor(v20);
    v19.progressMotor:onStep(v21);
end;
v18.render = function(v25)
    return v11(function(v26)
        local l_Theme_0 = v26.Theme;
        local l_Font_0 = v26.Font;
        local l_BackgroundUIDefault_0 = l_Theme_0.BackgroundUIDefault;
        local l_TextEmphasis_0 = l_Theme_0.TextEmphasis;
        local l_Header2_0 = l_Font_0.Header2;
        local v32 = l_Header2_0.RelativeSize * l_Font_0.BaseSize;
        local v34 = v25.progress:map(function(v33)
            return v13(1, l_BackgroundUIDefault_0.Transparency, v33);
        end);
        local v36 = v3.joinBindings({
            progress = v25.progress,
            controlState = v25.exitControlState
        }):map(function(v35)
            return v13(1, v14(l_Theme_0.ContextualPrimaryDefault.Transparency, v35.controlState == v10.Pressed and 2 or 1), v35.progress);
        end);
        local v38 = v3.joinBindings({
            progress = v25.progress,
            controlState = v25.closeControlState
        }):map(function(v37)
            return v13(1, v14(l_Theme_0.ContextualPrimaryDefault.Transparency, v37.controlState == v10.Pressed and 2 or 1), v37.progress);
        end);
        local v40 = v25.progress:map(function(v39)
            return v13(1, l_TextEmphasis_0.Transparency, v39);
        end);
        return v3.createElement("Frame", {
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            Position = v25.titleBarPosition,
            Size = UDim2.new(1, 0, 0, 88)
        }, {
            BarFrame = v3.createElement("Frame", {
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Position = UDim2.fromOffset(0, 0),
                Size = UDim2.new(1, 0, 0, 64),
                [v3.Event.MouseLeave] = v25.props.onDisappear,
                [v3.Event.MouseEnter] = v25.props.onHover
            }, {
                ThreeSectionBar = v3.createElement(v12, {
                    BackgroundColor3 = l_BackgroundUIDefault_0.Color,
                    BackgroundTransparency = v34,
                    barHeight = 64,
                    marginLeft = 20,
                    contentPaddingLeft = UDim.new(0, 12),
                    renderLeft = function()
                        local v41 = v9(v8.Medium);
                        return v3.createFragment({
                            First = v3.createElement("ImageLabel", {
                                BackgroundTransparency = 1,
                                Size = UDim2.fromOffset(v41, v41)
                            }),
                            Second = v3.createElement("ImageLabel", {
                                BackgroundTransparency = 1,
                                Size = UDim2.fromOffset(v41, v41)
                            })
                        });
                    end,
                    renderCenter = function()
                        return v3.createElement("TextLabel", {
                            BackgroundTransparency = 1,
                            Font = l_Header2_0.Font,
                            Size = UDim2.new(1, 0, 0, v32),
                            Text = v25.props.title,
                            TextColor3 = l_TextEmphasis_0.Color,
                            TextSize = v32,
                            TextTransparency = v40,
                            TextTruncate = Enum.TextTruncate.AtEnd,
                            TextWrapped = false
                        });
                    end,
                    marginRight = 20,
                    contentPaddingRight = UDim.new(0, 12),
                    renderRight = function()
                        return v3.createFragment({
                            ExitButton = v3.createElement(v6, {
                                icon = v7["icons/actions/previewShrink"],
                                iconSize = v8.Medium,
                                iconTransparency = v36,
                                onActivated = v25.props.exitFullscreen,
                                layoutOrder = 1,
                                onStateChanged = function(_, v43)
                                    v25.setExitControlState(v43);
                                end
                            }),
                            CloseButton = v3.createElement(v6, {
                                icon = v7["icons/navigation/close"],
                                iconSize = v8.Medium,
                                iconTransparency = v38,
                                onActivated = v25.props.closeRoblox,
                                layoutOrder = 2,
                                onStateChanged = function(_, v45)
                                    v25.setCloseControlState(v45);
                                end
                            })
                        });
                    end
                })
            }),
            ShadowFrame = v3.createElement("Frame", {
                BackgroundTransparency = l_BackgroundUIDefault_0.Transparency,
                BackgroundColor3 = l_BackgroundUIDefault_0.Color,
                BorderSizePixel = 0,
                Position = UDim2.fromOffset(0, 64),
                Size = UDim2.new(1, 0, 0, 24)
            }, {
                UIGradient = v3.createElement("UIGradient", {
                    Rotation = 90,
                    Color = ColorSequence.new({
                        ColorSequenceKeypoint.new(0, Color3.new(0, 0, 0)),
                        ColorSequenceKeypoint.new(1, Color3.new(0, 0, 0))
                    }),
                    Transparency = NumberSequence.new({
                        NumberSequenceKeypoint.new(0, 0.75),
                        NumberSequenceKeypoint.new(1, 1)
                    })
                })
            })
        });
    end);
end;
v18.didMount = function(v46)
    v46.progressMotor:start();
end;
v18.didUpdate = function(v47, v48, _)
    if v48.isTriggered ~= v47.props.isTriggered then
        v47.progressMotor:setGoal(v4.spring(not v47.props.isTriggered and 0 or 1, v17));
    end;
end;
v18.willUnmount = function(v50)
    v50.progressMotor:destroy();
end;
return v18;