local l_AnimationClipProvider_0 = game:GetService("AnimationClipProvider");
local l_InsertService_0 = game:GetService("InsertService");
local v2 = game:DefineFastString("EmoteUtilityFallbackKeyframeSequenceAssetId", "10921261056");
local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local v4 = {
    FallbackKeyframeSequenceAssetId = v2,
    debugLoadAssetsFromFiles = false,
    mapAssetIdToFileName = nil,
    FALLBACK_KEYFRAME_SEQUENCE_ASSET_URL = "http://www.roblox.com/asset/?id=" .. v2
};
local v5 = {};
local function _()
    v5 = {};
end;
local function _(v7)
    v5[v7] = true;
end;
local function _(v9)
    if v5[v9] then
        return true;
    else
        return false;
    end;
end;
local function _(v11, v12)
    return (math.sqrt((v12.X ^ 2 + v12.Y ^ 2) + v12.Z ^ 2) / 2) * (1 / math.tan(math.rad(v11) / 2));
end;
local function _()
    local l_status_0, l_result_0 = pcall(function()
        return game.GetService(game, "ThumbnailGenerator") ~= nil;
    end);
    return l_status_0 and l_result_0;
end;
local _ = function(v17, v18)
    local _ = nil;
    local _ = nil;
    local l_status_1, l_result_1 = pcall(function()
        return game.GetService(game, "ThumbnailGenerator") ~= nil;
    end);
    l_RbxAnalyticsService_0:ReportCounter((not (l_status_1 and l_result_1) and "Client" or "RCC") .. "_" .. v17 .. "_" .. (not v18 and "Failure" or "Success"));
end;
local function v40(v24)
    local v25 = true;
    if typeof(v24) ~= "number" then
        v25 = typeof(v24) == "string";
    end;
    assert(v25, "getAnimationAndIsIdle expects animationAssetIdOrUrl to be a number or string");
    local v26 = nil;
    v25 = nil;
    local v27 = nil;
    if typeof(v24) == "number" then
        local v28 = nil;
        local v29, v30 = v4.LoadAsset(v24);
        v25 = v29;
        v28 = v30;
        if not (not v25 or not v28) then
            v26 = v28:GetChildren()[1];
        end;
        v27 = "EmoteUtility_LoadAsset";
    else
        local v31 = nil;
        local l_status_2, l_result_2 = pcall(function()
            return game:GetObjects(v24)[1];
        end);
        v25 = l_status_2;
        v31 = l_result_2;
        if not (not v25 or not v31) then
            v26 = v31;
        end;
        v27 = "EmoteUtility_GetObjects";
    end;
    local l_v27_0 = v27;
    local l_v25_0 = v25;
    local v36 = nil;
    local v37 = nil;
    local l_status_3, l_result_3 = pcall(function()
        return game.GetService(game, "ThumbnailGenerator") ~= nil;
    end);
    l_RbxAnalyticsService_0:ReportCounter((not (l_status_3 and l_result_3) and "Client" or "RCC") .. "_" .. l_v27_0 .. "_" .. (not l_v25_0 and "Failure" or "Success"));
    if v25 and v26 then
        assert(v26, "animation is non-nil. Silence type checker.");
        l_v27_0 = false;
        if v26.ClassName == "Folder" then
            l_v27_0 = true;
            l_v25_0 = v26:FindFirstChild("Pose", true) or v26:FindFirstChild("pose", true);
            if l_v25_0 == nil then
                l_v25_0 = v26:FindFirstChild("Idle", true) or v26:FindFirstChild("idle", true);
            end;
            v26 = if not l_v25_0 then v26:FindFirstChildWhichIsA("Animation", true) else l_v25_0:FindFirstChildWhichIsA("Animation", true);
        end;
        return v26, l_v27_0;
    else
        l_v27_0 = nil;
        v36, v37 = pcall(function()
            return game.GetService(game, "ThumbnailGenerator") ~= nil;
        end);
        l_RbxAnalyticsService_0:SendEventDeferred(not (v36 and v37) and "Client" or "RCC", "EmoteUtility_getPoseAsset", v27 .. "_Failed", {
            animationAssetIdOrUrl = v24
        });
        return nil, nil;
    end;
end;
local function v58(v41)
    local v42 = nil;
    local v43 = nil;
    if not v4.debugLoadAssetsFromFiles then
        local l_status_4, l_result_4 = pcall(function()
            return l_AnimationClipProvider_0:GetAnimationClipAsync(v41);
        end);
        v42 = l_status_4;
        v43 = l_result_4;
    else
        local v46 = nil;
        for v47 in string.gmatch(v41, ".*id=([0-9]+)") do
            v46 = v47;
        end;
        assert(v46, "assetId should be non-nil");
        local v48 = tonumber(v46);
        assert(v48, "assetIdAsNumber should be non-nil");
        local v49 = nil;
        local v50, v51 = v4.LoadAsset(v48);
        v42 = v50;
        v49 = v51;
        if not (not v42 or not v49) then
            v43 = v49;
        end;
    end;
    local l_v42_0 = v42;
    local _ = nil;
    local v54 = nil;
    local l_status_5, l_result_5 = pcall(function()
        return game.GetService(game, "ThumbnailGenerator") ~= nil;
    end);
    l_RbxAnalyticsService_0:ReportCounter((not (l_status_5 and l_result_5) and "Client" or "RCC") .. "_" .. "EmoteUtility_GetAnimationClipAsync" .. "_" .. (not l_v42_0 and "Failure" or "Success"));
    if v42 then
        return v43;
    else
        l_v42_0 = nil;
        local v57;
        v54, v57 = pcall(function()
            return game.GetService(game, "ThumbnailGenerator") ~= nil;
        end);
        l_RbxAnalyticsService_0:SendEventDeferred(not (v54 and v57) and "Client" or "RCC", "EmoteUtility_GetAnimationClip", "EmoteUtility_GetAnimationClip_GetAnimationClipAsyncFailed", {
            keyframeSequenceId = v41
        });
        return nil;
    end;
end;
local function _(v59, v60, v61)
    pcall(function()
        v59[v60] = v61;
    end);
end;
local function v72(v63, v64, v65)
    if v64 then
        assert(v64, "parentPose is non-nil. Silence type checker.");
        local l_v63_FirstChild_0 = v63:FindFirstChild(v64.Name);
        if l_v63_FirstChild_0 then
            local l_l_v63_FirstChild_0_FirstChild_0 = l_v63_FirstChild_0:FindFirstChild(v65.Name);
            if l_l_v63_FirstChild_0_FirstChild_0 then
                for _, v69 in v65:GetChildren() do
                    if v69:IsA("NumberPose") then
                        local l_Name_0 = v69.Name;
                        local l_Value_0 = v69.Value;
                        pcall(function()
                            l_l_v63_FirstChild_0_FirstChild_0[l_Name_0] = l_Value_0;
                        end);
                    end;
                end;
                return ;
            else
                return ;
            end;
        else
            return ;
        end;
    else
        return ;
    end;
end;
local function v83(v73, v74)
    local function v75(v76, v77)
        if not (not v76 or not v77:IsA("Pose")) then
            local v78 = v4.GetMotor6DBetween(v73:FindFirstChild(v76.Name), (v73:FindFirstChild(v77.Name)));
            if v78 and not (v5[v78] and true or false) then
                assert(v78, "motor6d is non-nil. Silence type checker.");
                v78.Transform = v77.CFrame;
                v5[v78] = true;
            end;
        end;
        if not v77:IsA("Folder") then
            for _, v80 in v77:GetChildren() do
                v75(v77, v80);
            end;
            return ;
        else
            v72(v73, v76, v77);
            return ;
        end;
    end;
    if v74 then
        for _, v82 in pairs(v74:GetPoses()) do
            v75(nil, v82);
        end;
    end;
end;
local function v89(v84, v85)
    if not v85 or v85 == 0 then
        return v84;
    else
        assert(v85, "rotationDegrees is non-nil. Silence type checker.");
        local v86 = v84:Clone();
        local v87 = v86:GetPoses()[1];
        if v87 then
            local v88 = v87:GetSubPoses()[1];
            if v88 then
                v88.CFrame = v88.CFrame * CFrame.Angles(0, math.rad(v85), 0);
            end;
        end;
        return v86;
    end;
end;
local function v92(v90, v91)
    if not v90:IsA("EulerRotationCurve") then
        if not v90:IsA("RotationCurve") then
            error("Unsupported rotation type:" .. v90.ClassName);
            return nil;
        else
            return v90:GetValueAtTime(v91);
        end;
    else
        return v90:GetRotationAtTime(v91);
    end;
end;
local function v93(v94, v95)
    for _, v97 in pairs(v94:GetChildren()) do
        if not v97:IsA("Attachment") then
            if not (v97:IsA("Tool") or v97:IsA("Accoutrement")) then
                v93(v97, v95);
            end;
        else
            v95[v97.Name] = v97;
        end;
    end;
end;
local function _(v98)
    local v99 = {};
    v93(v98, v99);
    return v99;
end;
local function _(v101)
    local v102 = {};
    v93(v101, v102);
    return v102;
end;
local function _(v104, v105)
    local l_Weld_0 = Instance.new("Weld");
    l_Weld_0.Part0 = v104.Parent;
    l_Weld_0.Part1 = v105.Parent;
    l_Weld_0.C0 = v104.CFrame;
    l_Weld_0.C1 = v105.CFrame;
    l_Weld_0.Parent = v104.Parent;
    return l_Weld_0;
end;
local function v121(v108, v109, v110)
    local v111 = {};
    v93(v108, v111);
    local l_v111_0 = v111;
    local v113 = {};
    v93(v110, v113);
    v111 = v113;
    v113 = false;
    for _, v115 in pairs(v111) do
        local v116 = l_v111_0[v115.Name];
        if v116 then
            v113 = true;
            local l_Weld_1 = Instance.new("Weld");
            l_Weld_1.Part0 = v116.Parent;
            l_Weld_1.Part1 = v115.Parent;
            l_Weld_1.C0 = v116.CFrame;
            l_Weld_1.C1 = v115.CFrame;
            l_Weld_1.Parent = v116.Parent;
        end;
    end;
    if not v113 then
        v110.Parent = nil;
        local l_Handle_0 = v110:FindFirstChild("Handle");
        local l_Grip_0 = v110.Grip;
        if not (not l_Handle_0 or not l_Grip_0) then
            local l_RightGripAttachment_0 = l_v111_0.RightGripAttachment;
            if l_RightGripAttachment_0 then
                l_Handle_0.CFrame = (l_RightGripAttachment_0.Parent.CFrame * l_RightGripAttachment_0.CFrame) * l_Grip_0:Inverse();
            end;
        end;
        v109:EquipTool(v110);
        return ;
    else
        v110.Parent = v108;
        return ;
    end;
end;
local function v129(v122, v123, v124, v125, v126, v127, v128)
    if not v128 then
        v83(v122, v127);
        if v125 ~= nil then
            v83(v122, v126);
        end;
    else
        v83(v122, v128);
        v83(v122, v126);
    end;
    v121(v122, v123, v124);
end;
local function v148(v130, v131, v132, v133)
    local v134 = nil;
    local v135 = false;
    local v136 = nil;
    if not v131 then
        if v133 then
            local l_FALLBACK_KEYFRAME_SEQUENCE_ASSET_URL_0 = v4.FALLBACK_KEYFRAME_SEQUENCE_ASSET_URL;
            local l_Animate_0 = v130:FindFirstChild("Animate");
            if l_Animate_0 then
                local v139 = l_Animate_0:FindFirstChild("Pose") or l_Animate_0:FindFirstChild("pose");
                if v139 then
                    local l_Animation_0 = v139:FindFirstChildOfClass("Animation");
                    if l_Animation_0 then
                        l_FALLBACK_KEYFRAME_SEQUENCE_ASSET_URL_0 = l_Animation_0.AnimationId;
                    end;
                end;
            end;
            v136 = l_FALLBACK_KEYFRAME_SEQUENCE_ASSET_URL_0;
            local v141 = v58(l_FALLBACK_KEYFRAME_SEQUENCE_ASSET_URL_0);
            if v141 then
                if v141:IsA("KeyframeSequence") then
                    v134 = v141:GetKeyframes()[1];
                else
                    return nil, false, v136;
                end;
            end;
        end;
    else
        v136 = v131;
        local v142, v143 = v40(v131);
        if v142 == nil then
            return nil, v135, v136;
        else
            assert(v142, "animation is non-nil. Silence type checker.");
            if not v143 then
                v135 = true;
            end;
            local v144 = v4.GetNumberValueWithDefault(v142, "ThumbnailKeyframe", nil);
            local v145 = v4.GetNumberValueWithDefault(v142, "ThumbnailTime", nil);
            local v146 = 0;
            if v132 then
                v146 = v4.GetNumberValueWithDefault(v142, "ThumbnailCharacterRotation", 0);
            end;
            local v147 = v4.GetAnimationClip(v142);
            if v147 then
                if not v147:IsA("KeyframeSequence") then
                    if not v147:IsA("CurveAnimation") then
                        error("Unsupported Animation type:" .. v147.ClassName);
                        return v134, v135, v136;
                    else
                        return v4.GetThumbnailKeyframeFromCurve(v145, v147, v146), v135, v136;
                    end;
                else
                    return v4.GetThumbnailKeyframe(v144, v147, v146), v135, v136;
                end;
            end;
        end;
    end;
    return v134, v135, v136;
end;
local function v156(v149)
    local v150 = nil;
    if v149 then
        assert(v149, "moodAssetId is non-nil. Silence type checker.");
        local v151, _ = v40(v149);
        if v151 == nil then
            return nil;
        else
            assert(v151, "animation is non-nil. Silence type checker.");
            local v153 = v4.GetNumberValueWithDefault(v151, "ThumbnailKeyframe", nil);
            local v154 = v4.GetNumberValueWithDefault(v151, "ThumbnailTime", nil);
            local v155 = v4.GetAnimationClip(v151);
            if v155 then
                if not v155:IsA("KeyframeSequence") then
                    if not v155:IsA("CurveAnimation") then
                        error("Unsupported Animation type:" .. v155.ClassName);
                    else
                        return (v4.GetThumbnailKeyframeFromCurve(v154, v155, 0));
                    end;
                else
                    return (v4.GetThumbnailKeyframe(v153, v155, 0));
                end;
            end;
            return v150;
        end;
    else
        return nil;
    end;
end;
local function v167(v157, v158)
    local v159 = nil;
    local v160 = nil;
    local l_Tool_0 = v157:FindFirstChildOfClass("Tool");
    if l_Tool_0 then
        assert(l_Tool_0, "tool is non-nil. Silence type checker.");
        local v162 = false;
        if not v158 then
            v159 = l_Tool_0:FindFirstChild("ThumbnailPose");
            if not (not v159 or not v159:IsA("Keyframe")) then
                v162 = true;
            end;
        end;
        if not v162 then
            v159 = nil;
            local l_Animate_1 = v157:FindFirstChild("Animate");
            if l_Animate_1 then
                assert(l_Animate_1, "animateScript is non-nil. Silence type checker.");
                local l_toolnone_0 = l_Animate_1:FindFirstChild("toolnone");
                if l_toolnone_0 then
                    assert(l_toolnone_0, "toolNoneStringValue is non-nil. Silence type checker.");
                    local l_ToolNoneAnim_0 = l_toolnone_0:FindFirstChild("ToolNoneAnim");
                    if l_ToolNoneAnim_0 then
                        local v166 = v4.GetAnimationClip(l_ToolNoneAnim_0);
                        if v166 then
                            assert(v166, "toolAnimationClip is non-nil. Silence type checker.");
                            assert(v166:IsA("KeyframeSequence"), "ToolNoneAnim must be a KeyframeSequence");
                            v160 = v4.GetThumbnailKeyframe(nil, v166, 0);
                            if not l_Tool_0:IsDescendantOf(v157) then
                                return nil, nil;
                            end;
                        else
                            return nil, nil;
                        end;
                    end;
                else
                    return nil, nil;
                end;
            else
                return nil, nil;
            end;
        end;
        return v159, v160;
    else
        return nil, nil;
    end;
end;
v4.ForceAnimationToStep = function(v168)
    local l_Humanoid_0 = v168:FindFirstChildOfClass("Humanoid");
    if l_Humanoid_0 then
        local l_Animator_0 = l_Humanoid_0:FindFirstChildOfClass("Animator");
        if l_Animator_0 then
            l_Animator_0:StepAnimations(0.1);
        end;
    end;
end;
v4.LoadAsset = function(v171)
    local l_status_6, l_result_6 = pcall(function()
        if not v4.debugLoadAssetsFromFiles or not v4.mapAssetIdToFileName then
            return l_InsertService_0:LoadAsset(v171);
        else
            return l_InsertService_0:LoadLocalAsset("rbxasset://" .. v4.mapAssetIdToFileName(v171));
        end;
    end);
    return l_status_6, l_result_6;
end;
v4.SetDebugLoadAssetsFromFiles = function(v174, v175)
    v4.debugLoadAssetsFromFiles = v174;
    v4.mapAssetIdToFileName = v175;
end;
v4.GetMotor6DBetween = function(v176, v177)
    if v176 and v177 then
        assert(v176, "part0 is non-nil. Silence type checker.");
        assert(v177, "part1 is non-nil. Silence type checker.");
        for _, v179 in pairs(v177:GetChildren()) do
            if v179:IsA("Motor6D") and v179.Part0 == v176 then
                return v179;
            end;
        end;
        return nil;
    else
        return nil;
    end;
end;
v4.PoseKeyframeHasFaceAnimation = function(v180)
    if v180 then
        assert(v180, "poseKeyframe is non-nil. Silence type checker.");
        local function v181(v182)
            if not v182:IsA("Folder") then
                for _, v184 in v182:GetChildren() do
                    if v181(v184) then
                        return true;
                    end;
                end;
                return false;
            else
                return true;
            end;
        end;
        for _, v186 in pairs(v180:GetPoses()) do
            if v181(v186) then
                return true;
            end;
        end;
        return false;
    else
        return false;
    end;
end;
v4.ApplyKeyframe = function(v187, v188)
    v5 = {};
    v83(v187, v188);
    v5 = {};
    local l_status_7, l_result_7 = pcall(function()
        return game.GetService(game, "ThumbnailGenerator") ~= nil;
    end);
    if l_status_7 and l_result_7 then
        v4.ForceAnimationToStep(v187);
    end;
end;
v4.GetNumberValueWithDefault = function(v191, v192, v193)
    local l_v193_0 = v193;
    local l_v191_FirstChild_0 = v191:FindFirstChild(v192);
    if not (not l_v191_FirstChild_0 or not l_v191_FirstChild_0:IsA("NumberValue")) then
        l_v193_0 = l_v191_FirstChild_0.Value;
    end;
    return l_v193_0;
end;
v4.GetAnimationClip = function(v196)
    if not v196:IsA("KeyframeSequence") then
        if not v196:IsA("Animation") then
            error("Unknown keyframeSequenceOrAnimation type:" .. v196.ClassName);
            return nil;
        else
            return (v58(v196.AnimationId));
        end;
    else
        return v196;
    end;
end;
v4.GetThumbnailKeyframe = function(v197, v198, v199)
    local l_v198_Keyframes_0 = v198:GetKeyframes();
    local _ = nil;
    return (v89(if (not not v197 and v197 > 0) and v197 <= #l_v198_Keyframes_0 then l_v198_Keyframes_0[v197] else l_v198_Keyframes_0[math.ceil(#l_v198_Keyframes_0 / 2)], v199));
end;
v4.GetCurveAnimationTimeLength = function(v202)
    local v203 = 0;
    for _, v205 in v202:GetDescendants() do
        if v205:IsA("FloatCurve") then
            v203 = math.max(v203, v205:GetKeyAtIndex(v205.Length).Time);
        end;
    end;
    return v203;
end;
v4.GetThumbnailKeyframeFromCurve = function(v206, v207, v208)
    local v209 = v4.GetCurveAnimationTimeLength(v207);
    if not (v206 and v206 >= 0) or v209 < v206 then
        v206 = v209 / 2;
    end;
    assert(v206, "thumbnailTime should be non-nil. Silence type checker");
    local v210 = {
        Position = true,
        Rotation = true
    };
    local function v211(v212, v213)
        local v214 = nil;
        local l_Position_0 = v213:FindFirstChild("Position");
        local l_Rotation_0 = v213:FindFirstChild("Rotation");
        if not l_Position_0 or not l_Rotation_0 then
            local l_Folder_0 = Instance.new("Folder");
            l_Folder_0.Name = v213.Name;
            l_Folder_0.Parent = v212;
            v214 = l_Folder_0;
        else
            local v218 = v92(l_Rotation_0, v206);
            if v218 then
                v218 = v218 + Vector3.new(table.unpack(l_Position_0:GetValueAtTime(v206)));
                local l_Pose_0 = Instance.new("Pose");
                l_Pose_0.CFrame = v218;
                l_Pose_0.Name = v213.Name;
                l_Pose_0.Parent = v212;
                v214 = l_Pose_0;
            end;
        end;
        for _, v221 in v213:GetChildren() do
            if not v221:IsA("FloatCurve") or v210[v221] then
                if v221:IsA("Folder") then
                    v211(v214, v221);
                end;
            else
                local l_NumberPose_0 = Instance.new("NumberPose");
                l_NumberPose_0.Name = v221.Name;
                local v223 = v221:GetValueAtTime(v206) or 0;
                assert(v223, "valueAtTime should be non-nil. Silence type checker.");
                l_NumberPose_0.Value = v223;
                l_NumberPose_0.Parent = v214;
            end;
        end;
    end;
    local l_Keyframe_0 = Instance.new("Keyframe");
    l_Keyframe_0.Name = v207.Name;
    l_Keyframe_0.Time = v206;
    for _, v226 in v207:GetChildren() do
        if v226:IsA("Folder") then
            v211(l_Keyframe_0, v226);
        end;
    end;
    return (v89(l_Keyframe_0, v208));
end;
v4.ClearPlayerCharacterFace = function(v227)
    local l_v227_FirstChildWhichIsA_0 = v227:FindFirstChildWhichIsA("FaceControls", true);
    if l_v227_FirstChildWhichIsA_0 then
        local l_Parent_0 = l_v227_FirstChildWhichIsA_0.Parent;
        local l_l_v227_FirstChildWhichIsA_0_Children_0 = l_v227_FirstChildWhichIsA_0:GetChildren();
        local l_FaceControls_0 = Instance.new("FaceControls");
        l_FaceControls_0.Parent = l_Parent_0;
        for _, v233 in l_l_v227_FirstChildWhichIsA_0_Children_0, nil, nil do
            v233.Parent = l_FaceControls_0;
        end;
        l_v227_FirstChildWhichIsA_0:Destroy();
    end;
end;
v4.AdjustArmOnR6ForTool = function(v234)
    local l_Tool_1 = v234:FindFirstChildOfClass("Tool");
    local l_Torso_0 = v234:FindFirstChild("Torso");
    if l_Torso_0 then
        local l_l_Torso_0_FirstChild_0 = l_Torso_0:FindFirstChild("Right Shoulder");
        if l_l_Torso_0_FirstChild_0 then
            if not l_Tool_1 then
                l_l_Torso_0_FirstChild_0.CurrentAngle = 0;
                l_l_Torso_0_FirstChild_0.DesiredAngle = 0;
            else
                l_l_Torso_0_FirstChild_0.CurrentAngle = 1.5707963267948966;
                l_l_Torso_0_FirstChild_0.DesiredAngle = 1.5707963267948966;
                return ;
            end;
        end;
    end;
end;
v4.SetPlayerCharacterFace = function(v238, v239)
    if v239 then
        if v239 == "" then
            return ;
        elseif v239 == 0 then
            return ;
        else
            local v240 = true;
            if typeof(v239) ~= "number" then
                v240 = typeof(v239) == "string";
            end;
            assert(v240, "EmoteUtility.SetPlayerCharacterFace expects animationAssetIdOrUrl to be a number or string");
            if v238:FindFirstChildOfClass("Humanoid") then
                v240 = v156(v239);
                if v240 then
                    v4.ClearPlayerCharacterFace(v238);
                    v4.ApplyKeyframe(v238, v240);
                    return ;
                else
                    return ;
                end;
            else
                return ;
            end;
        end;
    else
        return ;
    end;
end;
v4.SetPlayerCharacterNeutralPose = function(v241)
    local l_Humanoid_1 = v241:FindFirstChildOfClass("Humanoid");
    if l_Humanoid_1 then
        assert(l_Humanoid_1, "humanoid should be non-nil. Silence type checker.");
        l_Humanoid_1:BuildRigFromAttachments();
        if l_Humanoid_1.RigType ~= Enum.HumanoidRigType.R15 then
            return ;
        else
            v4.ClearPlayerCharacterFace(v241);
            local function v243(v244)
                if v244:IsA("Motor6D") then
                    v244.Transform = CFrame.new();
                end;
                for _, v246 in (v244:GetChildren()), nil, nil do
                    v243(v246);
                end;
            end;
            v243(v241);
            return ;
        end;
    else
        return ;
    end;
end;
local function v263(v247, v248, v249, v250, v251)
    local v252 = {
        originalAnimationAssetId = v248
    };
    local _ = nil;
    local v254, v255, v256 = v148(v247, v248, not v250, not v251 and true or false);
    local v257 = nil;
    local v258 = nil;
    if not (v251 or not v254) then
        local v259, v260 = v167(v247, v255);
        v257 = v259;
        v258 = v260;
    end;
    local v261 = nil;
    local v262 = false;
    if v249 and v249 ~= 0 then
        if v248 == nil then
            v262 = true;
        elseif not v4.PoseKeyframeHasFaceAnimation(v254) then
            v262 = true;
        end;
    end;
    if v262 then
        v261 = v156(v249);
    end;
    v252.poseKeyframe = v254;
    v252.moodKeyframe = v261;
    v252.defaultToolKeyframe = v258;
    v252.suggestedKeyframeFromTool = v257;
    v252.finalAnimationAssetIdOrUrl = v256;
    return v252;
end;
v4.LoadKeyframesForPose = function(v264, v265, v266, v267, v268)
    assert(v264, "character should be non-nil");
    if v265 ~= nil then
        assert(typeof(v265) == "number", "EmoteUtility.LoadKeyframesForPose expects animationAssetId to be a number or nil");
        assert(v265 > 0, "EmoteUtility.LoadKeyframesForPose expects animationAssetId to be a real asset ID (positive number)");
    end;
    if v266 ~= nil then
        assert(typeof(v266) == "number", "EmoteUtility.LoadKeyframesForPose expects moodAssetId to be a number or nil");
    end;
    local l_Humanoid_2 = v264:FindFirstChildOfClass("Humanoid");
    if l_Humanoid_2 then
        assert(l_Humanoid_2, "humanoid should be non-nil. Silence type checker.");
        if l_Humanoid_2.RigType == Enum.HumanoidRigType.R15 then
            return (v263(v264, v265, v266, v267, v268));
        else
            return {
                originalAnimationAssetId = v265
            };
        end;
    else
        return nil;
    end;
end;
v4.ApplyKeyframesForPose = function(v270, v271)
    assert(v270, "character should be non-nil");
    if v271 then
        assert(v271, "keyframesForPose should be non-nil. Silence type checker.");
        local l_Humanoid_3 = v270:FindFirstChildOfClass("Humanoid");
        if l_Humanoid_3 then
            assert(l_Humanoid_3, "humanoid should be non-nil. Silence type checker.");
            v4.SetPlayerCharacterNeutralPose(v270);
            v5 = {};
            local l_Tool_2 = v270:FindFirstChildOfClass("Tool");
            if l_Humanoid_3.RigType == Enum.HumanoidRigType.R15 then
                if not l_Tool_2 then
                    v83(v270, v271.poseKeyframe);
                else
                    v129(v270, l_Humanoid_3, l_Tool_2, v271.originalAnimationAssetId, v271.poseKeyframe, v271.defaultToolKeyframe, v271.suggestedKeyframeFromTool);
                end;
            else
                v4.AdjustArmOnR6ForTool(v270);
            end;
            if l_Humanoid_3.RigType == Enum.HumanoidRigType.R15 then
                v83(v270, v271.moodKeyframe);
            end;
            v5 = {};
            local l_status_8, l_result_8 = pcall(function()
                return game.GetService(game, "ThumbnailGenerator") ~= nil;
            end);
            if l_status_8 and l_result_8 then
                v4.ForceAnimationToStep(v270);
            end;
            return ;
        else
            return ;
        end;
    else
        return ;
    end;
end;
v4.SetPlayerCharacterPoseWithMoodFallback = function(v276, v277, v278, v279, v280)
    local l_Humanoid_4 = v276:FindFirstChildOfClass("Humanoid");
    if l_Humanoid_4 then
        assert(l_Humanoid_4, "humanoid should be non-nil.  Silence type checker.");
        v4.ApplyKeyframesForPose(v276, (v4.LoadKeyframesForPose(v276, v277, v278, v279, v280)));
        return ;
    else
        return ;
    end;
end;
v4.ThumbnailZoomExtents = function(v282, v283, v284, v285, v286)
    local l_v282_ModelCFrame_0 = v282:GetModelCFrame();
    local l_LookVector_0 = l_v282_ModelCFrame_0.LookVector;
    local l_HumanoidRootPart_0 = v282:FindFirstChild("HumanoidRootPart");
    if l_HumanoidRootPart_0 then
        l_LookVector_0 = l_HumanoidRootPart_0.CFrame.LookVector;
    end;
    local v290 = CFrame.new(l_v282_ModelCFrame_0.Position + l_LookVector_0 * 5, l_v282_ModelCFrame_0.Position);
    local v291 = l_v282_ModelCFrame_0.Position + Vector3.new(v284, -v285, 0);
    local l_v282_ExtentsSize_0 = v282:GetExtentsSize();
    return ((v290 - v290.Position) + v291) + l_LookVector_0 * (((math.sqrt((l_v282_ExtentsSize_0.X ^ 2 + l_v282_ExtentsSize_0.Y ^ 2) + l_v282_ExtentsSize_0.Z ^ 2) / 2) * (1 / math.tan(math.rad(v283) / 2))) * (1 / v286));
end;
return v4;


local v0 = {};
local l_Lighting_0 = game:GetService("Lighting");
local v2 = require(script.Parent.ColorUtility);
local v3 = require(script.Parent.VectorUtility);
v0.AddLight = function(v4, v5)
    local l_Part_0 = Instance.new("Part");
    l_Part_0.Anchored = true;
    l_Part_0.Transparency = 1;
    l_Part_0.Shape = Enum.PartType.Ball;
    l_Part_0.Color = v4.color;
    l_Part_0.Name = "ThumbnailLightAnchor_" .. tostring(v5);
    l_Part_0.Parent = workspace;
    local l_PointLight_0 = Instance.new("PointLight");
    l_PointLight_0.Color = v4.color;
    l_PointLight_0.Brightness = 3;
    l_PointLight_0.Range = 10;
    l_PointLight_0.Shadows = true;
    l_PointLight_0.Name = "PointLight_" .. tostring(v5);
    l_PointLight_0.Parent = l_Part_0;
    l_Part_0.Position = v4.worldPos;
end;
v0.AddLightsFromExtraParams = function(v8, v9)
    local v10 = false;
    local v11 = v8 and v8.pointLights;
    if v11 then
        for v12, v13 in ipairs(v11) do
            v0.AddLight({
                color = v2.Color3FromString(v13.color),
                worldPos = v9 * v3.Vector3FromJson(v13.pos)
            }, v12);
            v10 = true;
        end;
    end;
    local v14 = v8 and v8.clockTime;
    if v14 then
        l_Lighting_0.ClockTime = v14;
        v10 = true;
    end;
    local v15 = v8 and v8.brightness;
    if v15 then
        l_Lighting_0.Brightness = v15;
        v10 = true;
    end;
    return v10;
end;
local v16 = Vector3.new(-5, 7, -5);
v0.AddDefaultPointLightRelativeTo = function(v17)
    v0.AddLight({
        color = Color3.new(1, 1, 1),
        worldPos = v17 * v16
    }, 0);
end;
return v0;


local v0 = {};
local l_InsertService_0 = game:GetService("InsertService");
local v2 = {
    R6 = true,
    R15 = true,
    R15ArtistIntent = true
};
v0.CharacterPartNames = {
    R6 = {
        HumanoidRootPart = true,
        Head = true,
        Torso = true,
        ["Left Arm"] = true,
        ["Left Leg"] = true,
        ["Right Arm"] = true,
        ["Right Leg"] = true,
        CharacterMesh = true
    },
    R15 = {
        HumanoidRootPart = true,
        Head = true,
        UpperTorso = true,
        LowerTorso = true,
        LeftUpperLeg = true,
        LeftLowerLeg = true,
        LeftFoot = true,
        RightUpperLeg = true,
        RightLowerLeg = true,
        RightFoot = true,
        LeftUpperArm = true,
        LeftLowerArm = true,
        LeftHand = true,
        RightUpperArm = true,
        RightLowerArm = true,
        RightHand = true
    }
};
v0.R15PartNameToEnum = {
    Head = Enum.BodyPartR15.Head,
    UpperTorso = Enum.BodyPartR15.UpperTorso,
    LowerTorso = Enum.BodyPartR15.LowerTorso,
    LeftUpperLeg = Enum.BodyPartR15.LeftUpperLeg,
    LeftLowerLeg = Enum.BodyPartR15.LeftLowerLeg,
    LeftFoot = Enum.BodyPartR15.LeftFoot,
    RightUpperLeg = Enum.BodyPartR15.RightUpperLeg,
    RightLowerLeg = Enum.BodyPartR15.RightLowerLeg,
    RightFoot = Enum.BodyPartR15.RightFoot,
    LeftUpperArm = Enum.BodyPartR15.LeftUpperArm,
    LeftLowerArm = Enum.BodyPartR15.LeftLowerArm,
    LeftHand = Enum.BodyPartR15.LeftHand,
    RightUpperArm = Enum.BodyPartR15.RightUpperArm,
    RightLowerArm = Enum.BodyPartR15.RightLowerArm,
    RightHand = Enum.BodyPartR15.RightHand
};
v0.CharacterPartNames.All = {};
for v3, _ in pairs(v0.CharacterPartNames.R6) do
    v0.CharacterPartNames.All[v3] = true;
end;
for v5, _ in pairs(v0.CharacterPartNames.R15) do
    v0.CharacterPartNames.All[v5] = true;
end;
local function _(v7, v8)
    if v8 == nil then
        v8 = true;
    end;
    local v9 = l_InsertService_0:LoadLocalAsset(v7);
    local l_Humanoid_0 = v9:FindFirstChild("Humanoid");
    assert(l_Humanoid_0, "Assert Humanoid is not nil to silence type checker");
    l_Humanoid_0.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None;
    if v8 then
        v9.Parent = workspace;
    end;
    return v9;
end;
v0.LoadR15Mannequin = function(v12)
    local l_v12_0 = v12;
    if l_v12_0 == nil then
        l_v12_0 = true;
    end;
    local v14 = l_InsertService_0:LoadLocalAsset("rbxasset://models/Thumbnails/Mannequins/R15.rbxm");
    local l_Humanoid_1 = v14:FindFirstChild("Humanoid");
    assert(l_Humanoid_1, "Assert Humanoid is not nil to silence type checker");
    l_Humanoid_1.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None;
    if l_v12_0 then
        v14.Parent = workspace;
    end;
    return v14;
end;
v0.LoadR6Mannequin = function(v16)
    local l_v16_0 = v16;
    if l_v16_0 == nil then
        l_v16_0 = true;
    end;
    local v18 = l_InsertService_0:LoadLocalAsset("rbxasset://models/Thumbnails/Mannequins/R6.rbxm");
    local l_Humanoid_2 = v18:FindFirstChild("Humanoid");
    assert(l_Humanoid_2, "Assert Humanoid is not nil to silence type checker");
    l_Humanoid_2.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None;
    if l_v16_0 then
        v18.Parent = workspace;
    end;
    return v18;
end;
v0.LoadRthroMannequin = function(v20)
    local l_v20_0 = v20;
    if l_v20_0 == nil then
        l_v20_0 = true;
    end;
    local v22 = l_InsertService_0:LoadLocalAsset("rbxasset://models/Thumbnails/Mannequins/Rthro.rbxm");
    local l_Humanoid_3 = v22:FindFirstChild("Humanoid");
    assert(l_Humanoid_3, "Assert Humanoid is not nil to silence type checker");
    l_Humanoid_3.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None;
    if l_v20_0 then
        v22.Parent = workspace;
    end;
    return v22;
end;
v0.LoadMannequinForScaleType = function(v24, v25)
    if v24 == "Classic" then
        return v0.LoadR15Mannequin(v25);
    else
        return v0.LoadRthroMannequin(v25);
    end;
end;
v0.AssertObjectsFormat = function(v26)
    local v27 = false;
    for _, v29 in v26, nil, nil do
        assert(v29:IsA("Folder"), "object should always be a Folder");
        if v2[v29.Name] then
            v27 = true;
            for _, v31 in v29:GetChildren() do
                assert(v0.CharacterPartNames.All[v31.Name], string.format("Name of %s of Folder %s does not exist in CharacterParts", v31.Name, v29.Name));
            end;
        end;
    end;
    assert(v27, "objects does not have at least one of R15ArtistIntent, R15, and R6 folders");
end;
v0.CreateBodyPartMannequin = function(v32, v33)
    local v34 = false;
    local v35 = false;
    local v36 = "Classic";
    v0.AssertObjectsFormat(v32);
    for _, v38 in v32, nil, nil do
        if not (v38.Name ~= "R15") or v38.Name == "R15ArtistIntent" then
            v34 = true;
            local l_v38_FirstChild_0 = v38:FindFirstChild("AvatarPartScaleType", true);
            if l_v38_FirstChild_0 then
                v36 = l_v38_FirstChild_0.Value;
                break;
            else
                break;
            end;
        end;
    end;
    for _, v41 in v32, nil, nil do
        if v41.Name == "R15ArtistIntent" then
            v35 = true;
            break;
        end;
    end;
    local v42 = nil;
    v42 = if not v34 then v0.LoadR6Mannequin(v33) else v0.LoadMannequinForScaleType(v36, v33);
    local l_Humanoid_4 = v42:FindFirstChildOfClass("Humanoid");
    l_Humanoid_4.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None;
    local l_BodyTypeScale_0 = l_Humanoid_4:FindFirstChild("BodyTypeScale");
    if l_BodyTypeScale_0 == nil then
        l_BodyTypeScale_0 = Instance.new("NumberValue");
        l_BodyTypeScale_0.Name = "BodyTypeScale";
        l_BodyTypeScale_0.Value = 0;
        l_BodyTypeScale_0.Parent = l_Humanoid_4;
    end;
    local l_BodyProportionScale_0 = l_Humanoid_4:FindFirstChild("BodyProportionScale");
    if l_BodyProportionScale_0 == nil then
        l_BodyProportionScale_0 = Instance.new("NumberValue");
        l_BodyProportionScale_0.Name = "BodyProportionScale";
        l_BodyProportionScale_0.Value = 0;
        l_BodyProportionScale_0.Parent = l_Humanoid_4;
    end;
    if v36 == "ProportionsNormal" then
        l_BodyTypeScale_0.Value = 1;
        l_BodyProportionScale_0.Value = 0;
    elseif v36 == "ProportionsSlender" then
        l_BodyTypeScale_0.Value = 1;
        l_BodyProportionScale_0.Value = 1;
    end;
    return v34, v35, v42;
end;
v0.SetupBodyPartMannequin = function(v46, v47, v48, v49, v50)
    v0.AssertObjectsFormat(v49);
    local v51 = false;
    if v50 then
        game:GetObjects(v50)[1].Parent = v48;
    end;
    local function v57(v52, v53, v54)
        for _, v56 in pairs(v52:GetChildren()) do
            assert(v56:IsA("BasePart"), "Only BaseParts should be in Folders");
            if string.find(v56.Name, "Right") then
                v51 = true;
            end;
            v48:FindFirstChild("Humanoid"):ReplaceBodyPartR15(v0.R15PartNameToEnum[v56.Name], v56);
            table.insert(v53, v56.Name);
            table.insert(v54, v56);
        end;
    end;
    local v58 = "R15";
    if not (not v46 or not v47) then
        v58 = "R15ArtistIntent";
    end;
    local v59 = {};
    local v60 = {};
    for _, v62 in pairs(v49) do
        if not (not v46 or v62.Name ~= v58) or not v46 and v62.Name == "R6" then
            v57(v62, v60, v59);
        elseif not string.find(v62.Name, "R15") then
            v62.Parent = v48;
        end;
    end;
    if v46 then
        local l_HumanoidRootPart_0 = v48:FindFirstChild("HumanoidRootPart");
        v48.PrimaryPart = l_HumanoidRootPart_0;
        l_HumanoidRootPart_0.CFrame = CFrame.new((Vector3.new(0, 5, 0))) * CFrame.Angles(0, 3.141592653589793, 0);
        l_HumanoidRootPart_0.Anchored = true;
        v48:FindFirstChildOfClass("Humanoid"):BuildRigFromAttachments();
    end;
    return v51, v60;
end;
v0.CreateHeadModel = function(v64)
    local l_Model_0 = Instance.new("Model");
    v64.Name = "Head";
    v64.Parent = l_Model_0;
    local l_Humanoid_5 = Instance.new("Humanoid");
    l_Humanoid_5.RigType = Enum.HumanoidRigType.R15;
    l_Humanoid_5.Parent = l_Model_0;
    l_Humanoid_5.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None;
    return l_Model_0;
end;
return v0;


local v1 = {
    InstanceIsAParticleEffect = function(v0)
        return ((v0:IsA("ParticleEmitter") or v0:IsA("Fire")) or v0:IsA("Smoke")) or v0:IsA("Sparkles");
    end
};
local function v2(v3)
    if v1.InstanceIsAParticleEffect(v3) then
        v3:FastForward(240);
    end;
    for _, v5 in (v3:GetChildren()), nil, nil do
        v2(v5);
    end;
end;
v1.FastForwardParticles = function(v6)
    v2(v6);
end;
return v1;


local v3 = {
    Vector3FromXYRotPlusDistance = function(v0, v1, v2)
        return CFrame.fromEulerAnglesXYZ(math.rad(v0), math.rad(v1), 0).LookVector * v2;
    end
};
v3.Vector3FromJson = function(v4)
    local v5, v6, v7 = unpack(v4:split("/"));
    local v8 = tonumber(v5);
    local v9 = tonumber(v6);
    local v10 = tonumber(v7);
    if (not v8 or not v9) or not v10 then
        return (Vector3.new(0, 0, 0));
    else
        return v3.Vector3FromXYRotPlusDistance(v8, v9, v10);
    end;
end;
return v3;


return {
    CameraUtility = require(script.CameraUtility),
    CFrameUtility = require(script.CFrameUtility),
    ColorUtility = require(script.ColorUtility),
    EmoteUtility = require(script.EmoteUtility),
    LightUtility = require(script.LightUtility),
    VectorUtility = require(script.VectorUtility),
    CharacterUtility = require(script.CharacterUtility),
    ParticleUtility = require(script.ParticleUtility),
    MannequinUtility = require(script.MannequinUtility)
};


local l_Parent_0 = script.Parent;
local l_RunService_0 = game:GetService("RunService");
local v2 = if not l_RunService_0:IsStudio() then nil else game:GetService("StudioService");
local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local v4 = require(l_Parent_0.flags.getFFlagUGCValidationAnalytics);
local v5 = require(l_Parent_0.flags.getFFlagUGCValidateTestInactiveControls);
local v6 = require(l_Parent_0.flags.getFFlagUGCValidateAccessoriesScaleType);
local v7 = require(l_Parent_0.flags.getFFlagUGCValidationFixResetPhysicsError);
local function v12(...)
    local v8 = {};
    for v9 = 1, select("#", ...) do
        for v10, v11 in select(v9, ...) do
            v8[v10] = v11;
        end;
    end;
    return v8;
end;
local v13 = {
    ErrorType = {
        validateAccessoryName = "validateAccessoryName",
        validateAssetBounds_AssetSizeTooBig = "validateAssetBounds_AssetSizeTooBig",
        validateAssetBounds_AssetSizeTooSmall = "validateAssetBounds_AssetSizeTooSmall",
        validateAssetBounds_InconsistentAvatarPartScaleType = "validateAssetBounds_InconsistentAvatarPartScaleType",
        validateAssetBounds_InvalidAvatarPartScaleType = not v6() and "validateAssetBounds_InvalidAvatarPartScaleType" or nil,
        validateScaleType_InvalidAvatarPartScaleType = if not v6() then nil else "validateScaleType_InvalidAvatarPartScaleType",
        validateAssetCreator_DependencyNotOwnedByCreator = "validateAssetCreator_DependencyNotOwnedByCreator",
        validateAssetCreator_FailedToLoad = "validateAssetCreator_FailedToLoad",
        validateAssetCreator_TooManyDependencies = "validateAssetCreator_TooManyDependencies",
        validateAttributes = "validateAttributes",
        validateBodyPartChildAttachmentBounds_AttachmentRotated = "validateBodyPartChildAttachmentBounds_AttachmentRotated",
        validateBodyPartChildAttachmentBounds_InvalidAttachmentPosition = "validateBodyPartChildAttachmentBounds_InvalidAttachmentPosition",
        validateBodyPartCollisionFidelity = "validateBodyPartCollisionFidelity",
        validateBodyPartMeshBounds_FailedToLoadMesh = "validateBodyPartMeshBounds_FailedToLoadMesh",
        validateCageMeshIntersection_AverageOuterCageToMeshVertDistances = "validateCageMeshIntersection_AverageOuterCageToMeshVertDistances",
        validateCageMeshIntersection_FailedToExecute = "validateCageMeshIntersection_FailedToExecute",
        validateCageMeshIntersection_Intersection = "validateCageMeshIntersection_Intersection",
        validateCageMeshIntersection_InvalidRefMeshId = "validateCageMeshIntersection_InvalidRefMeshId",
        validateCageMeshIntersection_IrrelevantCageModified = "validateCageMeshIntersection_IrrelevantCageModified",
        validateCageMeshIntersection_OuterCageFarExtendedFromMesh = "validateCageMeshIntersection_OuterCageFarExtendedFromMesh",
        validateCageNonManifoldAndHoles_CageHoles = "validateCageNonManifoldAndHoles_CageHoles",
        validateCageNonManifoldAndHoles_FailedToExecute = "validateCageNonManifoldAndHoles_FailedToExecute",
        validateCageNonManifoldAndHoles_NonManifold = "validateCageNonManifoldAndHoles_NonManifold",
        validateCageUVs_TestExecutedSuccessfully = "validateCageUVs_TestExecutedSuccessfully",
        validateCageUVs_TestPassed = "validateCageUVs_TestPassed",
        validateCageUVTriangleArea_FailedToLoadMesh = "validateCageUVTriangleArea_FailedToLoadMesh",
        validateCageUVTriangleArea_ZeroAreaTriangle = "validateCageUVTriangleArea_ZeroAreaTriangle",
        validateCageUVValues_FailedToLoadMesh = "validateCageUVValues_FailedToLoadMesh",
        validateCageUVValues_UnexpectedUVValue = "validateCageUVValues_UnexpectedUVValue",
        validateCanLoad = "validateCanLoad",
        validateDependencies_IsNotApproved = "validateDependencies_IsNotApproved",
        validateDependencies_IsRestrictedUserId = "validateDependencies_IsRestrictedUserId",
        validateDependencies_IsReviewing = "validateDependencies_IsReviewing",
        validateDependencies_ParseFailure = "validateDependencies_ParseFailure",
        validateDescendantMeshMetrics_FailedToCalculateTriangles = "validateDescendantMeshMetrics_FailedToCalculateTriangles",
        validateDescendantMeshMetrics_FailedToLoadMesh = "validateDescendantMeshMetrics_FailedToLoadMesh",
        validateDescendantMeshMetrics_HasSkinnedMeshMismatch = "validateDescendantMeshMetrics_HasSkinnedMeshMismatch",
        validateDescendantMeshMetrics_NoSkinningInfo = "validateDescendantMeshMetrics_NoSkinningInfo",
        validateDescendantMeshMetrics_TooFarFromOrigin = "validateDescendantMeshMetrics_TooFarFromOrigin",
        validateDescendantMeshMetrics_TooManyTriangles = "validateDescendantMeshMetrics_TooManyTriangles",
        validateDynamicHeadMeshPartFormat_FailedToLoadMesh = "validateDynamicHeadMeshPartFormat_FailedToLoadMesh",
        validateDynamicHeadMeshPartFormat_ValidateDynamicHeadMesh = "validateDynamicHeadMeshPartFormat_ValidateDynamicHeadMesh",
        validateFullBody_IncorrectAssetTypeSet = "validateFullBody_IncorrectAssetTypeSet",
        validateFullBody_InstancesMissing = "validateFullBody_InstancesMissing",
        validateFullBodyCageDeletion_FailedToExecute = "validateFullBodyCageDeletion_FailedToExecute",
        validateFullBodyCageDeletion_GeometryRemoved = "validateFullBodyCageDeletion_GeometryRemoved",
        validateHSR_HSRDataNotReady = "validateHSR_HSRDataNotReady",
        validateHSR_NoWrapLayer = "validateHSR_NoWrapLayer",
        validateInstanceTree = "validateInstanceTree",
        validateInstanceTree_InvalidDescendants = "validateInstanceTree_InvalidDescendants",
        validateLayeredClothingAccessory_AssetTypeNotAllowedAsLayeredClothing = "validateLayeredClothingAccessory_AssetTypeNotAllowedAsLayeredClothing",
        validateLayeredClothingAccessory_FailedToLoadMesh = "validateLayeredClothingAccessory_FailedToLoadMesh",
        validateLayeredClothingAccessory_NoInnerCageId = "validateLayeredClothingAccessory_NoInnerCageId",
        validateLayeredClothingAccessory_NoMeshId = "validateLayeredClothingAccessory_NoMeshId",
        validateLayeredClothingAccessory_NoOuterCageId = "validateLayeredClothingAccessory_NoOuterCageId",
        validateLayeredClothingAccessory_NoWrapLayer = "validateLayeredClothingAccessory_NoWrapLayer",
        validateLayeredClothingAccessoryMeshPartAssetFormatMatch_MeshIdMismatch = "validateLayeredClothingAccessoryMeshPartAssetFormatMatch_MeshIdMismatch",
        validateLayeredClothingAccessoryMeshPartAssetFormatMatch_TextureIdMismatch = "validateLayeredClothingAccessoryMeshPartAssetFormatMatch_TextureIdMismatch",
        validateLegacyAccessoryMeshPartAssetFormatMatch_MeshIdMismatch = "validateLegacyAccessoryMeshPartAssetFormatMatch_MeshIdMismatch",
        validateLegacyAccessoryMeshPartAssetFormatMatch_TextureIdMismatch = "validateLegacyAccessoryMeshPartAssetFormatMatch_TextureIdMismatch",
        validateLimbsAndTorso_FolderInfoMismatch = "validateLimbsAndTorso_FolderInfoMismatch",
        validateLimbsAndTorso_R6FolderHasChildren = "validateLimbsAndTorso_R6FolderHasChildren",
        validateLimbsAndTorso_TopLevelFolders = "validateLimbsAndTorso_TopLevelFolders",
        validateMaterials = "validateMaterials",
        validateMeshBounds_FailedToExecute = "validateMeshBounds_FailedToExecute",
        validateMeshBounds_FailedToLoadMesh = "validateMeshBounds_FailedToLoadMesh",
        validateMeshBounds_TooLarge = "validateMeshBounds_TooLarge",
        validateMeshComparison = "validateMeshComparison",
        validateMeshPartAccessory_FailedToLoadMesh = "validateMeshPartAccessory_FailedToLoadMesh",
        validateMeshPartAccessory_NoMeshId = "validateMeshPartAccessory_NoMeshId",
        validateMeshPartBodyPart_ValidateWithSchema = "validateMeshPartBodyPart_ValidateWithSchema",
        validateMeshTriangleArea_FailedToLoadMesh = "validateMeshTriangleArea_FailedToLoadMesh",
        validateMeshTriangleArea_NoArea = "validateMeshTriangleArea_NoArea",
        validateMeshTriangles_FailedToExecute = "validateMeshTriangles_FailedToExecute",
        validateMeshTriangles_FailedToLoadMesh = "validateMeshTriangles_FailedToLoadMesh",
        validateMeshTriangles_TooManyTriangles = "validateMeshTriangles_TooManyTriangles",
        validateMeshVertexColors_FailedToLoadMesh = "validateMeshVertexColors_FailedToLoadMesh",
        validateMeshVertexColors_NonNeutralVertexColors = "validateMeshVertexColors_NonNeutralVertexColors",
        validateMisMatchUV_FailedToExecute = "validateMisMatchUV_FailedToExecute",
        validateMisMatchUV_UVMismatch = "validateMisMatchUV_UVMismatch",
        validateModeration_AssetsHaveNotPassedModeration = "validateModeration_AssetsHaveNotPassedModeration",
        validateModeration_CouldNotFetchModerationDetails = "validateModeration_CouldNotFetchModerationDetails",
        validateModeration_FailedToParse = "validateModeration_FailedToParse",
        validateModeration_ValidateUser = "validateModeration_ValidateUser",
        validateOverlappingVertices_FailedToExecute = "validateOverlappingVertices_FailedToExecute",
        validateOverlappingVertices_OverlappingVertices = "validateOverlappingVertices_OverlappingVertices",
        validatePackage_FailedToParse = "validatePackage_FailedToParse",
        validateProperties_PropertyDoesNotExist = "validateProperties_PropertyDoesNotExist",
        validateProperties_PropertyMismatch = "validateProperties_PropertyMismatch",
        validateSingleInstance_MultipleInstances = "validateSingleInstance_MultipleInstances",
        validateSingleInstance_ZeroInstances = "validateSingleInstance_ZeroInstances",
        validateSurfaceAppearances_MeshPartHasTexture = "validateSurfaceAppearances_MeshPartHasTexture",
        validateSurfaceAppearances_MissingSurfaceAppearance = "validateSurfaceAppearances_MissingSurfaceAppearance",
        validateTags = "validateTags",
        validateTextureSize_FailedToExecute = "validateTextureSize_FailedToExecute",
        validateTextureSize_FailedToLoadTexture = "validateTextureSize_FailedToLoadTexture",
        validateTextureSize_InvalidTextureId = "validateTextureSize_InvalidTextureId",
        validateTextureSize_TextureTooBig = "validateTextureSize_TextureTooBig",
        validateThumbnailConfiguration_InvalidTarget = "validateThumbnailConfiguration_InvalidTarget",
        validateThumbnailConfiguration_OutsideView = "validateThumbnailConfiguration_OutsideView",
        validateUVSpace_FailedToExecute = "validateUVSpace_FailedToExecute",
        validateUVSpace_InvalidUVSpace = "validateUVSpace_InvalidUVSpace"
    }
};
if v5() then
    v13.ErrorType.validateDynamicHeadMeshPartFormat_ValidateDynamicHeadMeshControls = "validateDynamicHeadMeshPartFormat_ValidateDynamicHeadMeshControls";
end;
if v7() then
    v13.ErrorType.resetPhysicsData_FailedToLoadMesh = "resetPhysicsData_FailedToLoadMesh";
    v13.ErrorType.validateFullBody_MeshIdsMissing = "validateFullBody_MeshIdsMissing";
end;
setmetatable(v13.ErrorType, {
    __index = function(_, v15)
        return (("UNREGISTERED_%*"):format(v15));
    end
});
v13.metadata = {};
v13.setMetadata = function(v16)
    if v4() then
        local v17 = {};
        for v18, v19 in v16, nil, nil do
            v17[v18] = tostring(v19);
        end;
        v13.metadata = v17;
        return ;
    else
        return ;
    end;
end;
v13.reportFailure = function(v20, v21)
    if v4() then
        l_RbxAnalyticsService_0:SendEventDeferred(not l_RunService_0:IsStudio() and "rcc" or "studio", "ugcValidation", "failure", (v12(v13.metadata, v21 or {}, {
            errorType = v20,
            studioSid = l_RbxAnalyticsService_0:GetSessionId(),
            clientId = l_RbxAnalyticsService_0:GetClientId(),
            placeId = game.PlaceId,
            userId = not v2 and 0 or v2:GetUserId()
        })));
        return ;
    else
        return ;
    end;
end;
v13.reportThumbnailing = function(v22, v23)
    if v4() then
        l_RbxAnalyticsService_0:SendEventDeferred(not l_RunService_0:IsStudio() and "rcc" or "studio", "ugcValidation", "thumbnailing", (v12(v13.metadata, v23 or {}, {
            time = v22,
            studioSid = l_RbxAnalyticsService_0:GetSessionId(),
            clientId = l_RbxAnalyticsService_0:GetClientId(),
            placeId = game.PlaceId,
            userId = not v2 and 0 or v2:GetUserId()
        })));
        return ;
    else
        return ;
    end;
end;
return v13;


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.Parent.Cryo);
local v2 = require(l_Parent_0.flags.getFIntMeshDivision);
local v3 = require(l_Parent_0.flags.getFIntMeshDivisionFull);
local v4 = require(l_Parent_0.flags.getFIntMeshDivisionFullExtended);
local v5 = require(l_Parent_0.flags.getFIntMeshDivisionMedium);
local v6 = require(l_Parent_0.flags.getFIntMeshDivisionNarrow);
local v7 = require(l_Parent_0.flags.getFFlagUseUGCValidationContext);
local v8 = require(l_Parent_0.flags.getFFlagAddUGCValidationForPackage);
local v9 = require(l_Parent_0.flags.getFFlagUGCValidationAdjustLegBounds);
local v10 = require(l_Parent_0.flags.getFFlagUGCValidateSurfaceAppearanceAlphaMode);
local v11 = require(l_Parent_0.flags.getFFlagFixPackageIDFieldName);
local v12 = require(l_Parent_0.flags.getFFlagUGCValidateRestrictAttachmentPositions);
local _ = function(v13)
    local v14 = {};
    for _, v16 in pairs(v13) do
        v14[v16] = true;
    end;
    return v14;
end;
local v18 = {
    MAX_HAT_TRIANGLES = 4000,
    MAX_TEXTURE_SIZE = 1024
};
local v19 = {
    Enum.Material.Plastic
};
local v20 = {};
for _, v22 in pairs(v19) do
    v20[v22] = true;
end;
v18.MATERIAL_WHITELIST = v20;
v18.BANNED_CLASS_NAMES = {
    "Script",
    "LocalScript",
    "ModuleScript",
    "ParticleEmitter",
    "Fire",
    "Smoke",
    "Sparkles"
};
v18.R6_BODY_PARTS = {
    "Torso",
    "Left Leg",
    "Right Leg",
    "Left Arm",
    "Right Arm"
};
v18.R15_BODY_PARTS = {
    "UpperTorso",
    "LowerTorso",
    "LeftUpperLeg",
    "LeftLowerLeg",
    "LeftFoot",
    "RightUpperLeg",
    "RightLowerLeg",
    "RightFoot",
    "LeftUpperArm",
    "LeftLowerArm",
    "LeftHand",
    "RightUpperArm",
    "RightLowerArm",
    "RightHand"
};
v18.UGC_BODY_PARTS = {
    "Head",
    "UpperTorso",
    "LowerTorso",
    "LeftUpperLeg",
    "LeftLowerLeg",
    "LeftHand",
    "RightUpperArm",
    "RightLowerArm",
    "RightHand",
    "LeftUpperArm",
    "LeftLowerArm",
    "LeftFoot",
    "RightUpperLeg",
    "RightLowerLeg",
    "RightFoot",
    "EyebrowAccessory",
    "EyelashAccessory",
    "HairAccessory"
};
v18.UGC_BODY_PART_NAMES_TO_ASSET_TYPE = {
    Head = Enum.AssetType.DynamicHead,
    UpperTorso = Enum.AssetType.Torso,
    LowerTorso = Enum.AssetType.Torso,
    LeftUpperArm = Enum.AssetType.LeftArm,
    LeftLowerArm = Enum.AssetType.LeftArm,
    LeftHand = Enum.AssetType.LeftArm,
    RightUpperArm = Enum.AssetType.RightArm,
    RightLowerArm = Enum.AssetType.RightArm,
    RightHand = Enum.AssetType.RightArm,
    LeftUpperLeg = Enum.AssetType.LeftLeg,
    LeftLowerLeg = Enum.AssetType.LeftLeg,
    LeftFoot = Enum.AssetType.LeftLeg,
    RightUpperLeg = Enum.AssetType.RightLeg,
    RightLowerLeg = Enum.AssetType.RightLeg,
    RightFoot = Enum.AssetType.RightLeg,
    EyebrowAccessory = Enum.AssetType.EyebrowAccessory,
    EyelashAccessory = Enum.AssetType.EyelashAccessory,
    HairAccessory = Enum.AssetType.HairAccessory
};
v18.ASSET_TYPES_THAT_SKIP_FOLDER = {
    Enum.AssetType.DynamicHead,
    Enum.AssetType.EyebrowAccessory,
    Enum.AssetType.EyelashAccessory,
    Enum.AssetType.HairAccessory
};
v18.FOLDER_NAMES = {
    R6 = "R6",
    R15ArtistIntent = "R15ArtistIntent",
    R15Fixed = "R15Fixed"
};
v18.EXTRA_BANNED_NAMES = {
    "Head",
    "HumanoidRootPart",
    "Humanoid"
};
for _, v24 in ipairs({
    "Body Colors",
    "Shirt Graphic",
    "Shirt",
    "Pants",
    "Health",
    "Animate"
}) do
    table.insert(v18.EXTRA_BANNED_NAMES, v24);
end;
v20 = v1.Dictionary.join(v18.R6_BODY_PARTS, v18.R15_BODY_PARTS, v18.EXTRA_BANNED_NAMES);
local v25 = {};
for _, v27 in pairs(v20) do
    v25[v27] = true;
end;
v18.BANNED_NAMES = v25;
v18.ASSET_STATUS = {
    UNKNOWN = "Unknown",
    REVIEW_PENDING = "ReviewPending",
    MODERATED = "Moderated"
};
v18.ASSET_TYPE_INFO = {};
v18.ASSET_TYPE_INFO[Enum.AssetType.Hat] = {
    attachmentNames = {
        "HatAttachment"
    },
    bounds = {
        HatAttachment = {
            size = Vector3.new(3, 4, 3)
        }
    },
    rigidAllowed = true
};
v18.ASSET_TYPE_INFO[Enum.AssetType.HairAccessory] = {
    attachmentNames = {
        "HairAttachment"
    },
    bounds = {
        HairAttachment = {
            size = Vector3.new(3, 5, 3.5),
            offset = Vector3.new(0, -0.5, 0.25)
        }
    },
    rigidAllowed = true
};
v19 = {
    size = Vector3.new(3, 2, 2)
};
v18.ASSET_TYPE_INFO[Enum.AssetType.FaceAccessory] = {
    attachmentNames = {
        "FaceFrontAttachment",
        "FaceCenterAttachment"
    },
    bounds = {
        FaceFrontAttachment = v19,
        FaceCenterAttachment = v19
    },
    rigidAllowed = true
};
v18.ASSET_TYPE_INFO[Enum.AssetType.NeckAccessory] = {
    attachmentNames = {
        "NeckAttachment"
    },
    bounds = {
        NeckAttachment = {
            size = Vector3.new(3, 3, 2)
        }
    },
    rigidAllowed = true
};
v20 = {
    size = Vector3.new(3, 3, 3)
};
v18.ASSET_TYPE_INFO[Enum.AssetType.ShoulderAccessory] = {
    attachmentNames = {
        "NeckAttachment",
        "LeftCollarAttachment",
        "RightCollarAttachment",
        "LeftShoulderAttachment",
        "RightShoulderAttachment"
    },
    bounds = {
        NeckAttachment = {
            size = Vector3.new(7, 3, 3)
        },
        LeftCollarAttachment = v20,
        RightCollarAttachment = v20,
        LeftShoulderAttachment = v20,
        RightShoulderAttachment = v20
    },
    rigidAllowed = true
};
v18.ASSET_TYPE_INFO[Enum.AssetType.FrontAccessory] = {
    attachmentNames = {
        "BodyFrontAttachment"
    },
    bounds = {
        BodyFrontAttachment = {
            size = Vector3.new(3, 3, 3)
        }
    },
    rigidAllowed = true
};
v18.ASSET_TYPE_INFO[Enum.AssetType.BackAccessory] = {
    attachmentNames = {
        "BodyBackAttachment"
    },
    bounds = {
        BodyBackAttachment = {
            size = Vector3.new(10, 7, 4.5),
            offset = Vector3.new(0, 0, 0.75)
        }
    },
    rigidAllowed = true
};
v25 = {
    size = Vector3.new(4, 3.5, 7),
    offset = Vector3.new(0, -0.25, 0)
};
v18.ASSET_TYPE_INFO[Enum.AssetType.WaistAccessory] = {
    attachmentNames = {
        "WaistBackAttachment",
        "WaistFrontAttachment",
        "WaistCenterAttachment"
    },
    bounds = {
        WaistBackAttachment = v25,
        WaistFrontAttachment = v25,
        WaistCenterAttachment = v25
    },
    rigidAllowed = true
};
v18.ASSET_TYPE_INFO[Enum.AssetType.TShirtAccessory] = {
    attachmentNames = {
        "BodyFrontAttachment"
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.ShirtAccessory] = {
    attachmentNames = {
        "BodyFrontAttachment"
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.PantsAccessory] = {
    attachmentNames = {
        "WaistCenterAttachment"
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.JacketAccessory] = {
    attachmentNames = {
        "BodyFrontAttachment"
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.SweaterAccessory] = {
    attachmentNames = {
        "BodyFrontAttachment"
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.ShortsAccessory] = {
    attachmentNames = {
        "WaistCenterAttachment"
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.LeftShoeAccessory] = {
    attachmentNames = {
        "LeftFootAttachment"
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.RightShoeAccessory] = {
    attachmentNames = {
        "RightFootAttachment"
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.DressSkirtAccessory] = {
    attachmentNames = {
        "WaistCenterAttachment"
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.EyebrowAccessory] = {
    attachmentNames = {
        "FaceFrontAttachment",
        "FaceCenterAttachment"
    },
    layeredClothingBounds = {
        FaceFrontAttachment = {
            size = Vector3.new(1.5, 0.5, 0.5)
        },
        FaceCenterAttachment = {
            size = Vector3.new(1.5, 0.5, 0.5)
        }
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.EyelashAccessory] = {
    attachmentNames = {
        "FaceFrontAttachment",
        "FaceCenterAttachment"
    },
    layeredClothingBounds = {
        FaceFrontAttachment = {
            size = Vector3.new(1.5, 0.5, 0.5)
        },
        FaceCenterAttachment = {
            size = Vector3.new(1.5, 0.5, 0.5)
        }
    }
};
v18.AvatarPartScaleTypes = {
    Classic = true,
    ProportionsSlender = true,
    ProportionsNormal = true
};
local v28 = v4() / 100;
local v29 = v2() / 100;
local v30 = v3() / 100;
local v31 = v5() / 100;
local v32 = if not v12() then nil else v6() / 100;
local v33 = {
    min = Vector3.new(-v30, -v30, -v30),
    max = Vector3.new(v30, v30, v30)
};
local v34 = {
    min = Vector3.new(-v28, -v28, -v28),
    max = Vector3.new(v28, v28, v28)
};
local v35 = {
    min = v33.min,
    max = Vector3.new(-v31, v33.max.y, v33.max.z)
};
local v36 = {
    min = Vector3.new(v31, v33.min.y, v33.min.z),
    max = v33.max
};
local v37 = {
    min = Vector3.new(v33.min.x, v29, v33.min.z),
    max = v33.max
};
local v38 = if not v12() then nil else {
    min = Vector3.new(v33.min.X, v29, -v32),
    max = Vector3.new(-v29, v33.max.Y, v32)
};
local v39 = if not v12() then nil else {
    min = Vector3.new(v29, v29, -v32),
    max = Vector3.new(v33.max.X, v33.max.Y, v32)
};
local v40 = if not v12() then nil else {
    min = Vector3.new(-v32, v29, -v32),
    max = Vector3.new(v32, v33.max.Y, v32)
};
local v41 = {
    min = Vector3.new(v33.min.x, v29, v33.min.z),
    max = Vector3.new(v33.max.x, v28, v33.max.z)
};
local v42 = {
    min = v33.min,
    max = Vector3.new(v33.max.x, -v29, v33.max.z)
};
local v43 = if not v12() then nil else {
    min = Vector3.new(v33.min.X, v33.min.Y, -v32),
    max = Vector3.new(-v29, -v29, v32)
};
local v44 = if not v12() then nil else {
    min = Vector3.new(v29, v33.min.Y, -v32),
    max = Vector3.new(v33.max.X, -v29, v32)
};
local v45 = if not v12() then nil else {
    min = Vector3.new(-v32, v33.min.Y, -v32),
    max = Vector3.new(v32, -v29, v32)
};
local v46 = {
    min = v33.min,
    max = Vector3.new(v33.max.x, v33.max.y, -v29)
};
local v47 = {
    min = Vector3.new(v33.min.x, v33.min.y, v29),
    max = v33.max
};
v18.ASSET_TYPE_INFO[Enum.AssetType.RightArm] = {
    isBodyPart = true,
    bounds = {
        Classic = {
            minSize = Vector3.new(0.25, 1.5, 0.25),
            maxSize = Vector3.new(2, 3, 2)
        },
        ProportionsSlender = {
            minSize = Vector3.new(0.25, 1.5, 0.25),
            maxSize = Vector3.new(1.5, 4, 2)
        },
        ProportionsNormal = {
            minSize = Vector3.new(0.25, 1.5, 0.25),
            maxSize = Vector3.new(2, 4.5, 2)
        }
    },
    subParts = {
        RightHand = {
            rigAttachmentToParent = {
                name = "RightWristRigAttachment",
                bounds = v37
            },
            otherAttachments = {
                RightGripAttachment = {
                    bounds = v34
                }
            }
        },
        RightUpperArm = {
            rigAttachmentToParent = {
                name = "RightShoulderRigAttachment",
                bounds = v37
            },
            otherAttachments = {
                RightShoulderAttachment = {
                    bounds = v37
                },
                RightElbowRigAttachment = {
                    bounds = v42
                }
            }
        },
        RightLowerArm = {
            rigAttachmentToParent = {
                name = "RightElbowRigAttachment",
                bounds = v37
            },
            otherAttachments = {
                RightWristRigAttachment = {
                    bounds = v42
                }
            }
        }
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.DynamicHead] = {
    isBodyPart = true,
    bounds = {
        Classic = {
            minSize = Vector3.new(0.5, 0.5, 0.5),
            maxSize = Vector3.new(1.5, 1.75, 2)
        },
        ProportionsSlender = {
            minSize = Vector3.new(0.5, 0.5, 0.5),
            maxSize = Vector3.new(2, 2, 2)
        },
        ProportionsNormal = {
            minSize = Vector3.new(0.5, 0.5, 0.5),
            maxSize = Vector3.new(3, 2, 2)
        }
    },
    subParts = {
        Head = {
            rigAttachmentToParent = {
                name = "NeckRigAttachment",
                bounds = v42
            },
            otherAttachments = {
                FaceFrontAttachment = {
                    bounds = v46
                },
                HatAttachment = {
                    bounds = v37
                },
                HairAttachment = {
                    bounds = v37
                },
                FaceCenterAttachment = {
                    bounds = v33
                }
            }
        }
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.LeftArm] = {
    isBodyPart = true,
    bounds = {
        Classic = {
            minSize = Vector3.new(0.25, 1.5, 0.25),
            maxSize = Vector3.new(2, 3, 2)
        },
        ProportionsSlender = {
            minSize = Vector3.new(0.25, 1.5, 0.25),
            maxSize = Vector3.new(1.5, 4, 2)
        },
        ProportionsNormal = {
            minSize = Vector3.new(0.25, 1.5, 0.25),
            maxSize = Vector3.new(2, 4.5, 2)
        }
    },
    subParts = {
        LeftLowerArm = {
            rigAttachmentToParent = {
                name = "LeftElbowRigAttachment",
                bounds = v37
            },
            otherAttachments = {
                LeftWristRigAttachment = {
                    bounds = v42
                }
            }
        },
        LeftUpperArm = {
            rigAttachmentToParent = {
                name = "LeftShoulderRigAttachment",
                bounds = v37
            },
            otherAttachments = {
                LeftElbowRigAttachment = {
                    bounds = v42
                },
                LeftShoulderAttachment = {
                    bounds = v37
                }
            }
        },
        LeftHand = {
            rigAttachmentToParent = {
                name = "LeftWristRigAttachment",
                bounds = v37
            },
            otherAttachments = {
                LeftGripAttachment = {
                    bounds = v34
                }
            }
        }
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.Torso] = {
    isBodyPart = true,
    bounds = {
        Classic = {
            minSize = Vector3.new(1, 2, 0.7),
            maxSize = Vector3.new(3.5, 3.25, 2)
        },
        ProportionsSlender = {
            minSize = Vector3.new(1, 2, 0.7),
            maxSize = Vector3.new(2.5, 3, 2)
        },
        ProportionsNormal = {
            minSize = Vector3.new(1, 2, 0.7),
            maxSize = Vector3.new(4, 3, 2.25)
        }
    },
    subParts = {
        UpperTorso = {
            rigAttachmentToParent = {
                name = "WaistRigAttachment",
                bounds = if not v12() then v42 else v45
            },
            otherAttachments = {
                LeftShoulderRigAttachment = {
                    bounds = if not v12() then v35 else v38
                },
                RightCollarAttachment = {
                    bounds = v36
                },
                BodyBackAttachment = {
                    bounds = v47
                },
                NeckRigAttachment = {
                    bounds = v37
                },
                BodyFrontAttachment = {
                    bounds = v46
                },
                RightShoulderRigAttachment = {
                    bounds = if not v12() then v36 else v39
                },
                LeftCollarAttachment = {
                    bounds = v35
                },
                NeckAttachment = {
                    bounds = v41
                }
            }
        },
        LowerTorso = {
            rigAttachmentToParent = {
                name = "RootRigAttachment",
                bounds = v33
            },
            otherAttachments = {
                WaistCenterAttachment = {
                    bounds = v33
                },
                LeftHipRigAttachment = {
                    bounds = if not v12() then v35 else v43
                },
                RightHipRigAttachment = {
                    bounds = if not v12() then v36 else v44
                },
                WaistRigAttachment = {
                    bounds = if not v12() then v37 else v40
                },
                WaistBackAttachment = {
                    bounds = v47
                },
                WaistFrontAttachment = {
                    bounds = v46
                }
            }
        }
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.RightLeg] = {
    isBodyPart = true,
    bounds = {
        Classic = {
            minSize = Vector3.new(0.25, 2, 0.5),
            maxSize = Vector3.new(1.5, 2.75, 2)
        },
        ProportionsSlender = {
            minSize = Vector3.new(0.25, 2, 0.5),
            maxSize = if not v9() then Vector3.new(1.5, 3, 2) else Vector3.new(1.5, 3.3, 2)
        },
        ProportionsNormal = {
            minSize = Vector3.new(0.25, 2, 0.5),
            maxSize = if not v9() then Vector3.new(1.5, 3, 2) else Vector3.new(1.5, 3.3, 2)
        }
    },
    subParts = {
        RightUpperLeg = {
            rigAttachmentToParent = {
                name = "RightHipRigAttachment",
                bounds = v37
            },
            otherAttachments = {
                RightKneeRigAttachment = {
                    bounds = v42
                }
            }
        },
        RightFoot = {
            rigAttachmentToParent = {
                name = "RightAnkleRigAttachment",
                bounds = v37
            },
            otherAttachments = {
                RightFootAttachment = {
                    bounds = v33
                }
            }
        },
        RightLowerLeg = {
            rigAttachmentToParent = {
                name = "RightKneeRigAttachment",
                bounds = v37
            },
            otherAttachments = {
                RightAnkleRigAttachment = {
                    bounds = v42
                }
            }
        }
    }
};
v18.ASSET_TYPE_INFO[Enum.AssetType.LeftLeg] = {
    isBodyPart = true,
    bounds = {
        Classic = {
            minSize = Vector3.new(0.25, 2, 0.5),
            maxSize = Vector3.new(1.5, 2.75, 2)
        },
        ProportionsSlender = {
            minSize = Vector3.new(0.25, 2, 0.5),
            maxSize = if not v9() then Vector3.new(1.5, 3, 2) else Vector3.new(1.5, 3.3, 2)
        },
        ProportionsNormal = {
            minSize = Vector3.new(0.25, 2, 0.5),
            maxSize = if not v9() then Vector3.new(1.5, 3, 2) else Vector3.new(1.5, 3.3, 2)
        }
    },
    subParts = {
        LeftFoot = {
            rigAttachmentToParent = {
                name = "LeftAnkleRigAttachment",
                bounds = v37
            },
            otherAttachments = {
                LeftFootAttachment = {
                    bounds = v33
                }
            }
        },
        LeftUpperLeg = {
            rigAttachmentToParent = {
                name = "LeftHipRigAttachment",
                bounds = v37
            },
            otherAttachments = {
                LeftKneeRigAttachment = {
                    bounds = v42
                }
            }
        },
        LeftLowerLeg = {
            rigAttachmentToParent = {
                name = "LeftKneeRigAttachment",
                bounds = v37
            },
            otherAttachments = {
                LeftAnkleRigAttachment = {
                    bounds = v42
                }
            }
        }
    }
};
v18.RenderVsWrapMeshMaxDiff = 1;
v18.LC_BOUNDS = {
    size = Vector3.new(8, 8, 8)
};
v18.PROPERTIES = {
    Instance = {
        Archivable = true
    },
    Attachment = {
        Visible = false
    },
    SpecialMesh = {
        MeshType = Enum.MeshType.FileMesh,
        Offset = Vector3.new(0, 0, 0),
        VertexColor = Vector3.new(1, 1, 1)
    },
    BasePart = {
        Anchored = false,
        Color = BrickColor.new("Medium stone grey").Color,
        CollisionGroupId = 0,
        CustomPhysicalProperties = v1.None,
        Elasticity = 0.5,
        Friction = 0.3,
        LocalTransparencyModifier = 0,
        Massless = false,
        Reflectance = 0,
        RootPriority = 0,
        RotVelocity = Vector3.new(0, 0, 0),
        Transparency = 0,
        Velocity = Vector3.new(0, 0, 0),
        BackParamA = -0.5,
        BackParamB = 0.5,
        BackSurfaceInput = Enum.InputType.NoInput,
        BottomParamA = -0.5,
        BottomParamB = 0.5,
        BottomSurfaceInput = Enum.InputType.NoInput,
        FrontParamA = -0.5,
        FrontParamB = 0.5,
        FrontSurfaceInput = Enum.InputType.NoInput,
        LeftParamA = -0.5,
        LeftParamB = 0.5,
        LeftSurfaceInput = Enum.InputType.NoInput,
        RightParamA = -0.5,
        RightParamB = 0.5,
        RightSurfaceInput = Enum.InputType.NoInput,
        TopParamA = -0.5,
        TopParamB = 0.5,
        TopSurfaceInput = Enum.InputType.NoInput,
        BackSurface = Enum.SurfaceType.Smooth,
        BottomSurface = Enum.SurfaceType.Smooth,
        FrontSurface = Enum.SurfaceType.Smooth,
        LeftSurface = Enum.SurfaceType.Smooth,
        RightSurface = Enum.SurfaceType.Smooth,
        TopSurface = Enum.SurfaceType.Smooth
    },
    Part = {
        Shape = Enum.PartType.Block
    },
    SurfaceAppearance = if not v10() then nil else {
        AlphaMode = Enum.AlphaMode.Overlay
    }
};
v18.CONTENT_ID_FIELDS = {
    SpecialMesh = {
        "MeshId",
        "TextureId"
    },
    MeshPart = {
        "MeshId",
        "TextureID"
    },
    SurfaceAppearance = {
        "ColorMap",
        "MetalnessMap",
        "NormalMap",
        "RoughnessMap"
    },
    WrapLayer = {
        "CageMeshId",
        "ReferenceMeshId"
    },
    WrapTarget = {
        "CageMeshId"
    }
};
v18.CONTENT_ID_REQUIRED_FIELDS = {
    SpecialMesh = {
        MeshId = true,
        TextureId = true
    },
    MeshPart = {
        MeshId = true
    },
    WrapTarget = {
        CageMeshId = true
    }
};
v18.MESH_CONTENT_ID_FIELDS = {
    SpecialMesh = {
        "MeshId"
    },
    MeshPart = {
        "MeshId"
    },
    WrapTarget = {
        "CageMeshId"
    },
    WrapLayer = if not v7() then nil else {
        "CageMeshId",
        "ReferenceMeshId"
    }
};
v18.TEXTURE_CONTENT_ID_FIELDS = {
    SpecialMesh = {
        "TextureId"
    },
    MeshPart = {
        "TextureID"
    },
    SurfaceAppearance = {
        "ColorMap",
        "MetalnessMap",
        "NormalMap",
        "RoughnessMap"
    }
};
v18.ASSET_RENDER_MESH_MAX_TRIANGLES = {
    DynamicHead = 4000,
    LeftArm = 1248,
    RightArm = 1248,
    Torso = 1750,
    LeftLeg = 1248,
    RightLeg = 1248
};
v18.WRAP_TARGET_CAGE_MESH_UV_COUNTS = {
    Head = 343,
    LeftUpperArm = 77,
    LeftLowerArm = 77,
    LeftHand = 86,
    RightUpperArm = 77,
    RightLowerArm = 77,
    RightHand = 86,
    UpperTorso = 257,
    LowerTorso = 105,
    LeftUpperLeg = 88,
    LeftLowerLeg = 88,
    LeftFoot = 86,
    RightUpperLeg = 88,
    RightLowerLeg = 88,
    RightFoot = 86
};
if v8() then
    v18.PACKAGE_CONTENT_ID_FIELDS = v1.Dictionary.join(v18.CONTENT_ID_FIELDS, if not v11() then {
        Sound = {
            "SoundId"
        },
        Decal = {
            "Texture"
        },
        VideoFrame = {
            "Video"
        },
        PackageLink = {
            "PackageId"
        },
        CharacterMesh = {
            "baseTextureAssetId",
            "overlayTextureAssetId",
            "meshAssetId"
        },
        Tool = {
            "TextureId"
        },
        Sky = {
            "SkyUp",
            "SkyLf",
            "SkyRt",
            "SkyBk",
            "SkyFt",
            "SkyDn",
            "Sun",
            "Moon"
        },
        Trail = {
            "texture"
        },
        Beam = {
            "texture"
        },
        ShirtGraphic = {
            "Graphic"
        },
        Shirt = {
            "ShirtTemplate"
        },
        Pants = {
            "PantsTemplate"
        },
        AdGui = {
            "FallbackImage"
        }
    } else {
        Sound = {
            "SoundId"
        },
        Decal = {
            "Texture"
        },
        VideoFrame = {
            "Video"
        },
        PackageLink = {
            "PackageId"
        },
        CharacterMesh = {
            "OverlayTextureId",
            "MeshId",
            "BaseTextureId"
        },
        Tool = {
            "TextureId"
        },
        Trail = {
            "Texture"
        },
        Beam = {
            "Texture"
        },
        ShirtGraphic = {
            "Graphic"
        },
        Shirt = {
            "ShirtTemplate"
        },
        Pants = {
            "PantsTemplate"
        },
        AdGui = {
            "FallbackImage"
        }
    });
    v18.ExperienceAuthHeaderKey = "RBX-ExperienceAuthorization";
    v18.ContentType = "Content-Type";
    v18.ApplicationJson = "application/json";
end;
v18.GUIDAttributeName = "RBXGUID";
v18.GUIDAttributeMaxLength = 100;
return v18;


local v0 = require(script.Parent.Constants);
return {
    isBodyPart = function(v1)
        return v0.ASSET_TYPE_INFO[v1] and v0.ASSET_TYPE_INFO[v1].isBodyPart;
    end,
    getBodyPartAssets = function()
        local v2 = {};
        for v3, v4 in v0.ASSET_TYPE_INFO, nil, nil do
            if v4.isBodyPart then
                table.insert(v2, v3);
            end;
        end;
        return v2;
    end,
    getRigAttachmentToParent = function(v5, v6)
        if not v5 then
            for _, v8 in v0.ASSET_TYPE_INFO, nil, nil do
                if v8.isBodyPart then
                    local v9 = v8.subParts[v6];
                    if v9 then
                        return v9.rigAttachmentToParent.name;
                    end;
                end;
            end;
            return "";
        else
            local v10 = v0.ASSET_TYPE_INFO[v5];
            if v10.isBodyPart then
                return v10.subParts[v6].rigAttachmentToParent.name;
            else
                return "";
            end;
        end;
    end,
    getAttachments = function(v11, v12)
        local v13 = nil;
        if not v11 then
            for _, v15 in v0.ASSET_TYPE_INFO, nil, nil do
                if v15.isBodyPart then
                    v13 = v15.subParts[v12];
                    if v13 then
                        break;
                    end;
                end;
            end;
        else
            local v16 = v0.ASSET_TYPE_INFO[v11];
            if v16.isBodyPart then
                v13 = v16.subParts[v12];
            else
                return {};
            end;
        end;
        local v17 = {};
        if v13 then
            table.insert(v17, v13.rigAttachmentToParent.name);
            for v18 in v13.otherAttachments, nil, nil do
                table.insert(v17, v18);
            end;
        end;
        return v17;
    end,
    calculateFullBodyBounds = function(v19)
        local v20 = nil;
        local v21 = nil;
        local v22 = nil;
        local l_minSize_0 = v0.ASSET_TYPE_INFO[Enum.AssetType.DynamicHead].bounds[v19].minSize;
        local l_minSize_1 = v0.ASSET_TYPE_INFO[Enum.AssetType.Torso].bounds[v19].minSize;
        local l_minSize_2 = v0.ASSET_TYPE_INFO[Enum.AssetType.LeftArm].bounds[v19].minSize;
        local l_minSize_3 = v0.ASSET_TYPE_INFO[Enum.AssetType.RightArm].bounds[v19].minSize;
        local l_minSize_4 = v0.ASSET_TYPE_INFO[Enum.AssetType.LeftLeg].bounds[v19].minSize;
        local l_minSize_5 = v0.ASSET_TYPE_INFO[Enum.AssetType.RightLeg].bounds[v19].minSize;
        v20 = math.max((l_minSize_1.x + l_minSize_2.x) + l_minSize_3.x, l_minSize_4.x + l_minSize_5.x, l_minSize_0.x);
        v21 = (math.max(l_minSize_4.y, l_minSize_5.y) + l_minSize_1.y) + l_minSize_0.y;
        v22 = math.max(l_minSize_1.z, l_minSize_2.z, l_minSize_3.z, l_minSize_0.z, l_minSize_4.z, l_minSize_5.z);
        l_minSize_0 = nil;
        l_minSize_1 = nil;
        l_minSize_2 = nil;
        l_minSize_3 = v0.ASSET_TYPE_INFO[Enum.AssetType.DynamicHead].bounds[v19].maxSize;
        l_minSize_4 = v0.ASSET_TYPE_INFO[Enum.AssetType.Torso].bounds[v19].maxSize;
        l_minSize_5 = v0.ASSET_TYPE_INFO[Enum.AssetType.LeftArm].bounds[v19].maxSize;
        local l_maxSize_0 = v0.ASSET_TYPE_INFO[Enum.AssetType.RightArm].bounds[v19].maxSize;
        local l_maxSize_1 = v0.ASSET_TYPE_INFO[Enum.AssetType.LeftLeg].bounds[v19].maxSize;
        local l_maxSize_2 = v0.ASSET_TYPE_INFO[Enum.AssetType.RightLeg].bounds[v19].maxSize;
        return Vector3.new(v20, v21, v22), (Vector3.new(math.max((l_minSize_4.x + l_minSize_5.x) + l_maxSize_0.x, l_maxSize_1.x + l_maxSize_2.x, l_minSize_3.x), (math.max(l_maxSize_1.y, l_maxSize_2.y) + l_minSize_4.y) + l_minSize_3.y, (math.max(l_minSize_4.z, l_minSize_5.z, l_maxSize_0.z, l_minSize_3.z, l_maxSize_1.z, l_maxSize_2.z))));
    end
};


return function()
    return game:GetEngineFeature("EngineUGCValidateBodyParts3");
end;


return function()
    return game:GetEngineFeature("EngineUGCValidateCageUVTriangleArea");
end;


return function()
    return game:GetEngineFeature("EngineUGCValidateCalculateUniqueUV");
end;


return function()
    return game:GetEngineFeature("EngineUGCValidateMeshTriangleArea");
end;


return function()
    return game:GetEngineFeature("EngineUGCValidateTextureBorder");
end;


return function()
    return game:GetEngineFeature("EngineUGCValidateTransparency");
end;


return function()
    return game:GetEngineFeature("EngineUGCValidateUVValuesInReference");
end;


return function()
    return game:GetEngineFeature("EngineUGCValidateEditableMeshAndImage");
end;


return function()
    return game:GetEngineFeature("UGCValidateGetInactiveControls2");
end;


return function()
    return game:GetEngineFeature("ViewportFrameSnapshotEngineFeature");
end;


game:DefineFastFlag("AddUGCValidationForPackage2", false);
return function()
    return game:GetFastFlag("AddUGCValidationForPackage2");
end;


game:DefineFastFlag("CheckOrientationOnAllAttachments", false);
return function()
    return game:GetFastFlag("CheckOrientationOnAllAttachments");
end;


game:DefineFastFlag("DebugUGCDisableRCCOwnershipCheck", false);
return function()
    return game:GetFastFlag("DebugUGCDisableRCCOwnershipCheck");
end;


game:DefineFastFlag("DebugUGCDisableSurfaceAppearanceTests", false);
return function()
    return game:GetFastFlag("DebugUGCDisableSurfaceAppearanceTests");
end;


game:DefineFastFlag("FixPackageIDFieldName2", false);
return function()
    return game:GetFastFlag("FixPackageIDFieldName2");
end;


game:DefineFastFlag("UGCBetterModerationErrorText", false);
return function()
    return game:GetFastFlag("UGCBetterModerationErrorText");
end;


game:DefineFastFlag("UGCLCQualityReplaceLua", false);
return function()
    return game:GetFastFlag("UGCLCQualityReplaceLua");
end;


game:DefineFastFlag("UGCLCQualityValidation", false);
return function()
    return game:GetFastFlag("UGCLCQualityValidation");
end;


game:DefineFastFlag("UGCValidateAccessoriesScaleType", false);
return function()
    return game:GetFastFlag("UGCValidateAccessoriesScaleType");
end;


game:DefineFastFlag("UGCValidateAssetStatusNameChange", false);
return function()
    return game:GetFastFlag("UGCValidateAssetStatusNameChange");
end;


game:DefineFastFlag("UGCValidateBodyPartsCollisionFidelity", false);
return function()
    return game:GetFastFlag("UGCValidateBodyPartsCollisionFidelity");
end;


game:DefineFastFlag("UGCValidateBodyPartsExtendedMeshTests", false);
return function()
    return game:GetFastFlag("UGCValidateBodyPartsExtendedMeshTests");
end;


game:DefineFastFlag("UGCValidateBodyPartsModeration", false);
return function()
    return game:GetFastFlag("UGCValidateBodyPartsModeration");
end;


game:DefineFastFlag("UGCValidateCageUVTriangleArea", false);
return function()
    return game:GetFastFlag("UGCValidateCageUVTriangleArea");
end;


game:DefineFastFlag("UGCValidateDynamicHeadMoodClient", false);
return function()
    return game:GetFastFlag("UGCValidateDynamicHeadMoodClient");
end;


game:DefineFastFlag("UGCValidateDynamicHeadMoodClientVpfSnapshot", false);
return function()
    return game:GetFastFlag("UGCValidateDynamicHeadMoodClientVpfSnapshot");
end;


game:DefineFastFlag("UGCValidateDynamicHeadMoodRCC", false);
return function()
    return game:GetFastFlag("UGCValidateDynamicHeadMoodRCC");
end;


game:DefineFastFlag("UGCValidateFixAccessories", false);
return function()
    return game:GetFastFlag("UGCValidateFixAccessories");
end;


game:DefineFastFlag("UGCValidateFullBody2", false);
return function()
    return game:GetFastFlag("UGCValidateFullBody2");
end;


game:DefineFastFlag("UGCValidateHandleRestrictedUserIds", false);
return function()
    return game:GetFastFlag("UGCValidateHandleRestrictedUserIds");
end;


game:DefineFastFlag("UGCValidateMeshTriangleAreaForCages", false);
return function()
    return game:GetFastFlag("UGCValidateMeshTriangleAreaForCages");
end;


game:DefineFastFlag("UGCValidateMeshTriangleAreaForMeshes", false);
return function()
    return game:GetFastFlag("UGCValidateMeshTriangleAreaForMeshes");
end;


game:DefineFastFlag("UGCValidateMeshVertColors", false);
return function()
    return game:GetFastFlag("UGCValidateMeshVertColors");
end;


game:DefineFastFlag("UGCValidateMinBoundsOnlyMesh", false);
return function()
    return game:GetFastFlag("UGCValidateMinBoundsOnlyMesh");
end;


game:DefineFastFlag("UGCValidateMoveDynamicHeadTest3", false);
return function()
    return game:GetFastFlag("UGCValidateMoveDynamicHeadTest3");
end;


game:DefineFastFlag("UGCValidateRestrictAttachmentPositions", false);
return function()
    return game:GetFastFlag("UGCValidateRestrictAttachmentPositions");
end;


game:DefineFastFlag("UGCValidateSurfaceAppearanceAlphaMode", false);
return function()
    return game:GetFastFlag("UGCValidateSurfaceAppearanceAlphaMode");
end;


game:DefineFastFlag("UGCValidateTestInactiveControls2", false);
return function()
    return game:GetFastFlag("UGCValidateTestInactiveControls2");
end;


game:DefineFastFlag("UGCValidateThumbnailConfiguration", false);
return function()
    return game:GetFastFlag("UGCValidateThumbnailConfiguration");
end;


game:DefineFastFlag("UGCValidateUVValuesInReference", false);
return function()
    return game:GetFastFlag("UGCValidateUVValuesInReference");
end;


game:DefineFastFlag("UGCValidationAdjustLegBounds", false);
return function()
    return game:GetFastFlag("UGCValidationAdjustLegBounds");
end;


game:DefineFastFlag("UGCValidationAnalytics", false);
return function()
    return game:GetFastFlag("UGCValidationAnalytics");
end;


game:DefineFastFlag("UGCValidationFixResetPhysicsError", false);
return function()
    return game:GetFastFlag("UGCValidationFixResetPhysicsError");
end;


game:DefineFastFlag("UGCValidationMeshPartAccessoryUploads2", false);
return function()
    return game:GetFastFlag("UGCValidationMeshPartAccessoryUploads2");
end;


game:DefineFastFlag("UGCValidationNameCheck", false);
return function()
    return game:GetFastFlag("UGCValidationNameCheck");
end;


game:DefineFastFlag("UGCValidationRefactorAssetTraversal", false);
return function()
    return game:GetFastFlag("UGCValidationRefactorAssetTraversal");
end;


game:DefineFastFlag("UGCValidationShouldYield", false);
return function()
    return game:GetFastFlag("UGCValidationShouldYield");
end;


game:DefineFastFlag("UGCValidationValidateTransparencyClient2", false);
return function()
    return game:GetFastFlag("UGCValidationValidateTransparencyClient2");
end;


game:DefineFastFlag("UGCValidationValidateTransparencyServer3", false);
return function()
    return game:GetFastFlag("UGCValidationValidateTransparencyServer3");
end;


game:DefineFastFlag("UseThumbnailerUtil", false);
return function()
    return game:GetFastFlag("UseThumbnailerUtil");
end;


game:DefineFastFlag("UseUGCValidationContext3", false);
return function()
    return game:GetFastFlag("UseUGCValidationContext3");
end;


game:DefineFastInt("DynamicHeadBorderSize", 24);
return function()
    return game:GetFastInt("DynamicHeadBorderSize");
end;


game:DefineFastInt("UGCValidateMeshDivision", 9);
return function()
    return game:GetFastInt("UGCValidateMeshDivision");
end;


game:DefineFastInt("UGCValidateMeshDivisionFull", 159);
return function()
    return game:GetFastInt("UGCValidateMeshDivisionFull");
end;


game:DefineFastInt("UGCValidateMeshDivisionFullExtended", 159);
return function()
    return game:GetFastInt("UGCValidateMeshDivisionFullExtended");
end;


game:DefineFastInt("UGCValidateMeshDivisionMedium", 9);
return function()
    return game:GetFastInt("UGCValidateMeshDivisionMedium");
end;


game:DefineFastInt("UGCValidateMeshDivisionNarrow", 45);
return function()
    return game:GetFastInt("UGCValidateMeshDivisionNarrow");
end;


game:DefineFastInt("UGCValidationMaxMsPerFrame", 3);
return function()
    return game:GetFastInt("UGCValidationMaxMsPerFrame");
end;


game:DefineFastInt("UGCValidateUniqueUVTolerance", 7);
return function()
    return game:GetFastInt("UGCValidateUniqueUVTolerance");
end;


game:DefineFastString("UGCLCAllowedAssetTypeIds", "");
return function()
    return game:GetFastString("UGCLCAllowedAssetTypeIds");
end;