local _ = require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.Common.Types);
local v1 = game:DefineFastInt("DefaultInfiniteScrollRecommendationsFetchSize", 120);
local v2 = {
    "headColor3",
    "leftArmColor3",
    "leftLegColor3",
    "rightArmColor3",
    "rightLegColor3",
    "torsoColor3"
};
return {
    allBodyPartForSkinColoringIds = v2,
    AvatarType = {
        R6 = "R6",
        R15 = "R15"
    },
    AvatarSettings = {
        minDeltaBodyColorDifference = "minDeltaBodyColorDifference",
        scalesRules = "scalesRules"
    },
    RecommendationsType = {
        Asset = "Asset",
        BodyParts = "BodyParts",
        AvatarAnimations = "AvatarAnimations",
        Shoes = "Shoes",
        DynamicHeads = "DynamicHeads",
        None = "None"
    },
    DefaultUserRecommendationsFetchSize = v1,
    RecommendationsExpirationTime = 300,
    ShimmerColorCardsToDisplay = 30,
    ItemFetchLimit = 25,
    ItemFetchSortOrder = "Desc",
    ItemsGridMetrics = {
        minimumItemsPerRow = 4,
        minimumItemWidth = 140
    },
    ItemsGridTopPadding = 15,
    ItemsGridTopPaddingNew = 10,
    ItemsGridSidePadding = 30,
    ItemsGridBottomPadding = 24,
    ItemsGridBottomPaddingNew = 12,
    CreateOutfitKey = "avatar.createOutfit",
    UpdateOutfitKey = "avatar.updateOutfit",
    RenameOutfitKey = "avatar.renameOutfit",
    DeleteOutfitsKey = "avatar.deleteOutfit",
    GetAvatarDataKey = "avatareditor.getavatardata",
    AddOutfitButton = "ADD_OUTFIT_BUTTON",
    CharacterKey = "Character",
    HeadAndBody = "HeadAndBody",
    EditableCharacterKey = "EditableCharacter",
    PurchasedCharacterKey = "PurchasedCharacter",
    ReachedLastPage = "LastPage",
    Outfits = "Outfits",
    OutfitOrAsset = {
        Outfit = "Outfit",
        Asset = "Asset"
    },
    MaxPreloadEditableCharacters = 50,
    MaxHats = 3,
    BodyPartButtonData = {
        {
            textKey = "Feature.Avatar.Label.BodyColorAllLimbs",
            bodyPartForSkinColoringIds = v2,
            bodyParts = {
                "headColorId",
                "leftArmColorId",
                "leftLegColorId",
                "rightArmColorId",
                "rightLegColorId",
                "torsoColorId"
            }
        },
        {
            textKey = "Feature.Avatar.Label.BodyColorHead",
            bodyPartForSkinColoringIds = {
                "headColor3"
            },
            bodyParts = {
                "headColorId"
            }
        },
        {
            textKey = "Feature.Avatar.Label.BodyColorTorso",
            bodyPartForSkinColoringIds = {
                "torsoColor3"
            },
            bodyParts = {
                "torsoColorId"
            }
        },
        {
            textKey = "Feature.Avatar.Label.BodyColorLeftArm",
            bodyPartForSkinColoringIds = {
                "leftArmColor3"
            },
            bodyParts = {
                "leftArmColorId"
            }
        },
        {
            textKey = "Feature.Avatar.Label.BodyColorRightArm",
            bodyPartForSkinColoringIds = {
                "rightArmColor3"
            },
            bodyParts = {
                "rightArmColorId"
            }
        },
        {
            textKey = "Feature.Avatar.Label.BodyColorLeftLeg",
            bodyPartForSkinColoringIds = {
                "leftLegColor3"
            },
            bodyParts = {
                "leftLegColorId"
            }
        },
        {
            textKey = "Feature.Avatar.Label.BodyColorRightLeg",
            bodyPartForSkinColoringIds = {
                "rightLegColor3"
            },
            bodyParts = {
                "rightLegColorId"
            }
        }
    },
    ColorPickerViewSettings = {
        StandardView = "Standard",
        AdvancedView = "Advanced"
    },
    DefaultBodyColorRanges = {
        {
            Color3.fromRGB(49, 44, 37),
            Color3.fromRGB(61, 46, 36),
            Color3.fromRGB(78, 55, 49)
        },
        {
            Color3.fromRGB(62, 53, 42),
            Color3.fromRGB(75, 56, 46),
            Color3.fromRGB(96, 57, 45)
        },
        {
            Color3.fromRGB(90, 76, 46),
            Color3.fromRGB(86, 66, 54),
            Color3.fromRGB(92, 66, 49),
            Color3.fromRGB(94, 64, 53)
        },
        {
            Color3.fromRGB(82, 69, 54),
            Color3.fromRGB(90, 76, 66),
            Color3.fromRGB(98, 70, 58)
        },
        {
            Color3.fromRGB(116, 87, 62),
            Color3.fromRGB(124, 92, 70),
            Color3.fromRGB(115, 92, 61),
            Color3.fromRGB(137, 110, 74),
            Color3.fromRGB(138, 102, 70),
            Color3.fromRGB(140, 95, 77),
            Color3.fromRGB(118, 82, 67)
        },
        {
            Color3.fromRGB(199, 172, 120),
            Color3.fromRGB(188, 155, 93),
            Color3.fromRGB(170, 138, 98),
            Color3.fromRGB(173, 130, 96),
            Color3.fromRGB(174, 121, 102)
        },
        {
            Color3.fromRGB(145, 123, 90),
            Color3.fromRGB(175, 148, 131),
            Color3.fromRGB(149, 121, 119)
        },
        {
            Color3.fromRGB(215, 197, 154),
            Color3.fromRGB(218, 182, 142),
            Color3.fromRGB(211, 167, 131),
            Color3.fromRGB(212, 158, 140),
            Color3.fromRGB(204, 142, 105)
        },
        {
            Color3.fromRGB(230, 199, 158),
            Color3.fromRGB(229, 186, 152),
            Color3.fromRGB(234, 184, 146),
            Color3.fromRGB(232, 186, 170)
        },
        {
            Color3.fromRGB(255, 204, 153),
            Color3.fromRGB(238, 203, 173),
            Color3.fromRGB(240, 212, 185),
            Color3.fromRGB(237, 213, 180),
            Color3.fromRGB(239, 220, 191),
            Color3.fromRGB(243, 223, 212),
            Color3.fromRGB(240, 205, 196)
        },
        {
            Color3.fromRGB(17, 17, 17),
            Color3.fromRGB(27, 42, 53)
        },
        {
            Color3.fromRGB(99, 95, 98),
            Color3.fromRGB(163, 162, 165),
            Color3.fromRGB(205, 205, 205),
            Color3.fromRGB(229, 228, 223),
            Color3.fromRGB(242, 243, 243),
            Color3.fromRGB(248, 248, 248)
        },
        {
            Color3.fromRGB(255, 0, 0),
            Color3.fromRGB(196, 40, 28),
            Color3.fromRGB(163, 75, 75),
            Color3.fromRGB(218, 134, 122)
        },
        {
            Color3.fromRGB(105, 64, 40),
            Color3.fromRGB(170, 85, 0),
            Color3.fromRGB(160, 95, 53)
        },
        {
            Color3.fromRGB(213, 115, 61),
            Color3.fromRGB(218, 133, 65),
            Color3.fromRGB(226, 155, 64)
        },
        {
            Color3.fromRGB(255, 175, 0),
            Color3.fromRGB(245, 205, 48),
            Color3.fromRGB(248, 217, 109),
            Color3.fromRGB(253, 234, 141),
            Color3.fromRGB(255, 255, 204)
        },
        {
            Color3.fromRGB(255, 255, 0),
            Color3.fromRGB(193, 190, 66),
            Color3.fromRGB(164, 189, 71)
        },
        {
            Color3.fromRGB(0, 255, 0),
            Color3.fromRGB(58, 125, 21),
            Color3.fromRGB(75, 151, 75),
            Color3.fromRGB(91, 154, 76),
            Color3.fromRGB(161, 196, 140),
            Color3.fromRGB(204, 255, 204)
        },
        {
            Color3.fromRGB(39, 70, 45),
            Color3.fromRGB(40, 127, 71),
            Color3.fromRGB(124, 156, 107),
            Color3.fromRGB(127, 142, 100),
            Color3.fromRGB(120, 144, 130)
        },
        {
            Color3.fromRGB(0, 32, 96),
            Color3.fromRGB(0, 0, 255),
            Color3.fromRGB(4, 175, 236),
            Color3.fromRGB(128, 187, 220),
            Color3.fromRGB(116, 134, 157)
        },
        {
            Color3.fromRGB(0, 143, 156),
            Color3.fromRGB(0, 255, 255),
            Color3.fromRGB(18, 238, 212),
            Color3.fromRGB(159, 243, 233),
            Color3.fromRGB(200, 245, 240)
        },
        {
            Color3.fromRGB(33, 84, 185),
            Color3.fromRGB(13, 105, 172),
            Color3.fromRGB(82, 124, 174),
            Color3.fromRGB(110, 153, 202),
            Color3.fromRGB(175, 221, 255),
            Color3.fromRGB(180, 210, 228)
        },
        {
            Color3.fromRGB(255, 0, 191),
            Color3.fromRGB(255, 102, 204),
            Color3.fromRGB(255, 152, 220),
            Color3.fromRGB(255, 201, 201),
            Color3.fromRGB(232, 186, 200)
        },
        {
            Color3.fromRGB(98, 37, 209),
            Color3.fromRGB(180, 128, 255),
            Color3.fromRGB(177, 167, 255)
        },
        {
            Color3.fromRGB(107, 50, 124),
            Color3.fromRGB(140, 91, 159)
        },
        {
            Color3.fromRGB(170, 0, 170),
            Color3.fromRGB(167, 94, 155)
        }
    },
    BodyColorsSliderFrameHeight = 50,
    BodyColorsSliderTrackHeight = 24,
    SkinColorGridPadding = 12,
    SkinColorSliderPadding = 24,
    DefaultBodyColorBrickId = 194,
    DefaultBodyColor3 = Color3.fromRGB(163, 162, 165)
};


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v3 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local v4 = require(l_Modules_0.LuaApp.SearchUuid);
local v5 = require(l_Modules_0.AvatarExperience.Common.getClothingCategories);
local _ = require(l_Modules_0.AvatarExperience.Common.CategoryTypes);
local v7 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v8 = require(l_Modules_0.AvatarExperience.Common.Enum.CatalogCategories);
local v9 = require(l_Modules_0.AvatarExperience.Common.Enum.CatalogSubcategories);
local l_IsVRAppBuild_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).IsVRAppBuild;
game:DefineFastFlag("HideAvatarBuildCategoryInVR", false);
local v11 = nil;
local function v12()
    return {
        Name = v3.CharacterKey,
        Title = "Feature.Catalog.Label.Characters",
        IconOn = "icons/menu/clothing/characters_on",
        IconOff = "icons/menu/clothing/characters_off",
        RenderItemTiles = true,
        RenderOutfitItemTiles = true,
        RecommendationsType = v3.RecommendationsType.BodyParts,
        MatchingCatalogPage = {
            CategoryKey = v8.Characters
        },
        SearchUuid = v3.CharacterKey,
        CanAnimateCameraBasedMood = true,
        Subcategories = {
            [1] = {
                Name = "Creations",
                Title = "Feature.Avatar.Label.Creations",
                IconOn = "icons/menu/clothing/creations_on",
                IconOff = "icons/menu/clothing/creations_off",
                RenderItemTiles = true,
                RenderOutfitItemTiles = true,
                ManageOutfitsEnabled = true,
                RecommendationsType = v3.RecommendationsType.BodyParts,
                MatchingCatalogPage = {
                    CategoryKey = v8.Characters
                },
                SearchUuid = v3.EditableCharacterKey,
                BundleTypes = {
                    v2.BundleTypeIdStrings.BodyParts,
                    v2.BundleTypeIdStrings.Animations
                }
            },
            [2] = {
                Name = "Purchased",
                Title = "Feature.Avatar.Label.Purchased",
                IconOn = "icons/menu/clothing/purchased_on",
                IconOff = "icons/menu/clothing/purchased_off",
                RenderItemTiles = true,
                RenderOutfitItemTiles = true,
                RecommendationsType = v3.RecommendationsType.BodyParts,
                MatchingCatalogPage = {
                    CategoryKey = v8.Characters
                },
                SearchUuid = v3.PurchasedCharacterKey,
                OutfitType = v2.OutfitTypes.Avatar
            }
        } or nil
    };
end;
local function v13()
    return {
        Name = "Accessories",
        Title = "Feature.Catalog.LabelAccessories",
        IconOn = "icons/menu/clothing/accessories_on",
        IconOff = "icons/menu/clothing/accessories_off",
        SearchUuid = v4(),
        HideTextUnderTile = true,
        CanAnimateCameraBasedMood = true,
        Subcategories = {
            [1] = {
                Name = "Hats",
                Title = "Feature.Avatar.Label.Head",
                IconOn = "icons/menu/clothing/hats_on",
                IconOff = "icons/menu/clothing/hats_off",
                DEPRECATED_AssetTypeId = "8",
                RenderItemTiles = true,
                CameraFocus = v2.FocusType.Head,
                CameraZoomRadius = 11,
                RecommendationsType = v3.RecommendationsType.Asset,
                MatchingCatalogPage = {
                    CategoryKey = v8.Accessories,
                    SubcategoryKey = v9.Hats
                },
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.Hat
                },
                SearchUuid = v4()
            },
            [2] = {
                Name = "Face",
                Title = "Feature.Avatar.Label.Face",
                IconOn = "icons/menu/clothing/face_on",
                IconOff = "icons/menu/clothing/face_off",
                DEPRECATED_AssetTypeId = "42",
                RenderItemTiles = true,
                CameraFocus = v2.FocusType.Face,
                CameraZoomRadius = 7,
                RecommendationsType = v3.RecommendationsType.Asset,
                MatchingCatalogPage = {
                    CategoryKey = v8.Accessories,
                    SubcategoryKey = v9.Face
                },
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.FaceAccessory
                },
                SearchUuid = v4()
            },
            [3] = {
                Name = "Neck",
                Title = "Feature.Avatar.Label.Neck",
                IconOn = "icons/menu/clothing/neck_on",
                IconOff = "icons/menu/clothing/neck_off",
                DEPRECATED_AssetTypeId = "43",
                RenderItemTiles = true,
                CameraFocus = v2.FocusType.Neck,
                CameraZoomRadius = 9,
                RecommendationsType = v3.RecommendationsType.Asset,
                MatchingCatalogPage = {
                    CategoryKey = v8.Accessories,
                    SubcategoryKey = v9.Neck
                },
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.NeckAccessory
                },
                SearchUuid = v4()
            },
            [4] = {
                Name = "Shoulder",
                Title = "Feature.Avatar.Label.Shoulder",
                IconOn = "icons/menu/clothing/shoulder_on",
                IconOff = "icons/menu/clothing/shoulder_off",
                DEPRECATED_AssetTypeId = "44",
                RenderItemTiles = true,
                CameraFocus = v2.FocusType.Shoulders,
                CameraZoomRadius = 11,
                RecommendationsType = v3.RecommendationsType.Asset,
                MatchingCatalogPage = {
                    CategoryKey = v8.Accessories,
                    SubcategoryKey = v9.Shoulder
                },
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.ShoulderAccessory
                },
                SearchUuid = v4()
            },
            [5] = {
                Name = "Front",
                Title = "Feature.Avatar.Label.Front",
                IconOn = "icons/menu/clothing/front_on",
                IconOff = "icons/menu/clothing/front_off",
                DEPRECATED_AssetTypeId = "45",
                RenderItemTiles = true,
                CameraFocus = v2.FocusType.Arms,
                CameraZoomRadius = 9.5,
                RecommendationsType = v3.RecommendationsType.Asset,
                MatchingCatalogPage = {
                    CategoryKey = v8.Accessories,
                    SubcategoryKey = v9.Front
                },
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.FrontAccessory
                },
                SearchUuid = v4()
            },
            [6] = {
                Name = "Back",
                Title = "Feature.Avatar.Label.Back",
                IconOn = "icons/menu/clothing/back_on",
                IconOff = "icons/menu/clothing/back_off",
                DEPRECATED_AssetTypeId = "46",
                RenderItemTiles = true,
                CameraFocus = v2.FocusType.Arms,
                CameraZoomRadius = 21,
                RecommendationsType = v3.RecommendationsType.Asset,
                MatchingCatalogPage = {
                    CategoryKey = v8.Accessories,
                    SubcategoryKey = v9.Back
                },
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.BackAccessory
                },
                SearchUuid = v4()
            },
            [7] = {
                Name = "Waist",
                Title = "Feature.Avatar.Label.Waist",
                IconOn = "icons/menu/clothing/waist_on",
                IconOff = "icons/menu/clothing/waist_off",
                DEPRECATED_AssetTypeId = "47",
                RenderItemTiles = true,
                CameraFocus = v2.FocusType.Waist,
                CameraZoomRadius = 17,
                RecommendationsType = v3.RecommendationsType.Asset,
                MatchingCatalogPage = {
                    CategoryKey = v8.Accessories,
                    SubcategoryKey = v9.Waist
                },
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.WaistAccessory
                },
                SearchUuid = v4()
            },
            [8] = {
                Name = "Gear",
                Title = "Feature.Avatar.Label.Gear",
                IconOn = "icons/menu/clothing/gear_on",
                IconOff = "icons/menu/clothing/gear_off",
                DEPRECATED_AssetTypeId = "19",
                RenderItemTiles = true,
                RecommendationsType = v3.RecommendationsType.Asset,
                MatchingCatalogPage = {
                    CategoryKey = v8.Accessories,
                    SubcategoryKey = v9.Gear
                },
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.Gear
                },
                SearchUuid = v4()
            }
        }
    };
end;
local function v15()
    local v14 = {
        CategoryKey = v8.AllAnimations,
        SubcategoryKey = v9.AnimationBundles
    };
    return {
        Name = "Animation",
        Title = "Feature.Catalog.Label.Animation",
        IconOn = "icons/menu/clothing/animation_on",
        IconOff = "icons/menu/clothing/animation_off",
        SearchUuid = v4(),
        CameraZoomRadius = v2.AnimationCategoryCameraZoomRadius,
        PageType = v2.PageType.Animation,
        CanAnimateCameraBasedMood = true,
        Subcategories = {
            [1] = {
                Name = "Idle Animations",
                Title = "Feature.Avatar.Label.Idle",
                IconOn = "icons/menu/clothing/idle_on",
                IconOff = "icons/menu/clothing/idle_off",
                EmptyString = "Feature.Avatar.Label.IdleAnimations",
                DEPRECATED_AssetTypeId = "51",
                RenderItemTiles = true,
                RecommendationsType = v3.RecommendationsType.AvatarAnimations,
                MatchingCatalogPage = v14,
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.IdleAnimation
                },
                SearchUuid = v4()
            },
            [2] = {
                Name = "Walk Animations",
                Title = "Feature.Avatar.Label.Walk",
                IconOn = "icons/menu/clothing/walk_on",
                IconOff = "icons/menu/clothing/walk_off",
                EmptyString = "Feature.Avatar.Label.WalkAnimations",
                DEPRECATED_AssetTypeId = "55",
                RenderItemTiles = true,
                RecommendationsType = v3.RecommendationsType.AvatarAnimations,
                MatchingCatalogPage = v14,
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.WalkAnimation
                },
                SearchUuid = v4()
            },
            [3] = {
                Name = "Run Animations",
                Title = "Feature.Avatar.Label.Run",
                IconOn = "icons/menu/clothing/animation_on",
                IconOff = "icons/menu/clothing/animation_off",
                EmptyString = "Feature.Avatar.Label.RunAnimations",
                DEPRECATED_AssetTypeId = "53",
                RenderItemTiles = true,
                RecommendationsType = v3.RecommendationsType.AvatarAnimations,
                MatchingCatalogPage = v14,
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.RunAnimation
                },
                SearchUuid = v4()
            },
            [4] = {
                Name = "Jump Animations",
                Title = "Feature.Avatar.Label.Jump",
                IconOn = "icons/menu/clothing/jump_on",
                IconOff = "icons/menu/clothing/jump_off",
                EmptyString = "Feature.Avatar.Label.JumpAnimations",
                DEPRECATED_AssetTypeId = "52",
                RenderItemTiles = true,
                RecommendationsType = v3.RecommendationsType.AvatarAnimations,
                MatchingCatalogPage = v14,
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.JumpAnimation
                },
                SearchUuid = v4()
            },
            [5] = {
                Name = "Fall Animations",
                Title = "Feature.Avatar.Label.Fall",
                IconOn = "icons/menu/clothing/fall_on",
                IconOff = "icons/menu/clothing/fall_off",
                EmptyString = "Feature.Avatar.Label.FallAnimations",
                DEPRECATED_AssetTypeId = "50",
                RenderItemTiles = true,
                RecommendationsType = v3.RecommendationsType.AvatarAnimations,
                MatchingCatalogPage = v14,
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.FallAnimation
                },
                SearchUuid = v4()
            },
            [6] = {
                Name = "Climb Animations",
                Title = "Feature.Avatar.Label.Climb",
                IconOn = "icons/menu/clothing/climb_on",
                IconOff = "icons/menu/clothing/climb_off",
                EmptyString = "Feature.Avatar.Label.ClimbAnimations",
                DEPRECATED_AssetTypeId = "48",
                RenderItemTiles = true,
                RecommendationsType = v3.RecommendationsType.AvatarAnimations,
                MatchingCatalogPage = v14,
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.ClimbAnimation
                },
                SearchUuid = v4()
            },
            [7] = {
                Name = "Swim Animations",
                Title = "Feature.Avatar.Label.Swim",
                IconOn = "icons/menu/clothing/swim_on",
                IconOff = "icons/menu/clothing/swim_off",
                EmptyString = "Feature.Avatar.Label.SwimAnimations",
                DEPRECATED_AssetTypeId = "54",
                RenderItemTiles = true,
                RecommendationsType = v3.RecommendationsType.AvatarAnimations,
                MatchingCatalogPage = v14,
                AssetTypeIdStrings = {
                    v2.AssetTypeIdStrings.SwimAnimation
                },
                SearchUuid = v4()
            }
        }
    };
end;
local function v34()
    local v16 = v12();
    local v17 = {
        Name = "HeadAndBody",
        Title = "Feature.Avatar.Label.HeadBody",
        IconOn = "icons/menu/clothing/body_on",
        IconOff = "icons/menu/clothing/body_off",
        SearchUuid = v4(),
        CanAnimateCameraBasedMood = true
    };
    local v18 = {
        Name = "Style",
        Title = "Feature.Avatar.Label.Heads",
        IconOn = "icons/menu/clothing/type_on",
        IconOff = "icons/menu/clothing/type_off",
        RenderItemTiles = true,
        RenderOutfitItemTiles = true,
        CameraFocus = v2.FocusType.Face,
        CameraZoomRadius = 6.5,
        RecommendationsType = v3.RecommendationsType.DynamicHeads,
        MatchingCatalogPage = {
            CategoryKey = v8.Head,
            SubcategoryKey = v9.Heads
        },
        OutfitType = v2.OutfitTypes.DynamicHead,
        OutfitFilter = Enum.OutfitSource.Purchased,
        SearchUuid = v4()
    };
    local v19 = {
        Name = "Hair",
        Title = "Feature.Avatar.Label.Hair",
        IconOn = "icons/menu/clothing/hair_on",
        IconOff = "icons/menu/clothing/hair_off",
        DEPRECATED_AssetTypeId = "41",
        RenderItemTiles = true,
        CameraFocus = v2.FocusType.Head,
        CameraZoomRadius = 8.5,
        RecommendationsType = v3.RecommendationsType.Asset,
        MatchingCatalogPage = {
            CategoryKey = v8.Head,
            SubcategoryKey = v9.Hair
        },
        AssetTypeIdStrings = {
            v2.AssetTypeIdStrings.HairAccessory
        },
        SearchUuid = v4()
    };
    local v20 = {
        Name = "Skin",
        Title = "Feature.Avatar.Label.Skin",
        IconOn = "icons/menu/clothing/skin_on",
        IconOff = "icons/menu/clothing/skin_off",
        RenderItemTiles = false,
        RecommendationsType = v3.RecommendationsType.None,
        PageType = v2.PageType.BodyColors,
        SearchUuid = v4()
    };
    local v21 = {
        Name = "Classic Heads",
        Title = "Feature.Avatar.Label.ClassicHeads",
        IconOn = "icons/menu/clothing/classicHead_on",
        IconOff = "icons/menu/clothing/classicHead_off",
        DEPRECATED_AssetTypeId = "17",
        RenderItemTiles = true,
        CameraFocus = v2.FocusType.Face,
        CameraZoomRadius = 6.5,
        RecommendationsType = v3.RecommendationsType.Asset,
        MatchingCatalogPage = {
            CategoryKey = v8.Head,
            SubcategoryKey = v9.ClassicHeads
        },
        AssetTypeIdStrings = {
            v2.AssetTypeIdStrings.Head
        },
        SearchUuid = v4()
    };
    local v22 = {
        Name = "Classic Faces",
        Title = "Feature.Avatar.Label.ClassicFaces",
        IconOn = "icons/menu/clothing/faces_on",
        IconOff = "icons/menu/clothing/faces_off",
        DEPRECATED_AssetTypeId = "18",
        RenderItemTiles = true,
        CameraFocus = v2.FocusType.Face,
        CameraZoomRadius = 7,
        RecommendationsType = v3.RecommendationsType.Asset,
        MatchingCatalogPage = {
            CategoryKey = v8.Head,
            SubcategoryKey = v9.ClassicFaces
        },
        AssetTypeIdStrings = {
            v2.AssetTypeIdStrings.Face
        },
        SearchUuid = v4()
    };
    local v23 = {
        Name = "Torsos",
        Title = "Feature.Avatar.Label.Torsos",
        IconOn = "icons/menu/clothing/torsos_on",
        IconOff = "icons/menu/clothing/torsos_off",
        DEPRECATED_AssetTypeId = "27",
        RenderItemTiles = true,
        CameraFocus = v2.FocusType.Arms,
        CameraZoomRadius = 9,
        RecommendationsType = v3.RecommendationsType.BodyParts,
        MatchingCatalogPage = {
            CategoryKey = v8.Characters
        },
        AssetTypeIdStrings = {
            v2.AssetTypeIdStrings.Torso
        },
        SearchUuid = v4()
    };
    local v24 = {
        Name = "Left Arms",
        Title = "Feature.Avatar.Label.LeftArms",
        IconOn = "icons/menu/clothing/arms_on",
        IconOff = "icons/menu/clothing/arms_off",
        DEPRECATED_AssetTypeId = "29",
        RenderItemTiles = true,
        CameraFocus = v2.FocusType.Arms,
        CameraZoomRadius = 13,
        RecommendationsType = v3.RecommendationsType.BodyParts,
        MatchingCatalogPage = {
            CategoryKey = v8.Characters
        },
        AssetTypeIdStrings = {
            v2.AssetTypeIdStrings.LeftArm
        },
        SearchUuid = v4()
    };
    local v25 = {
        Name = "Right Arms",
        Title = "Feature.Avatar.Label.RightArms",
        IconOn = "icons/menu/clothing/arms_on",
        IconOff = "icons/menu/clothing/arms_off",
        DEPRECATED_AssetTypeId = "28",
        RenderItemTiles = true,
        CameraFocus = v2.FocusType.Arms,
        CameraZoomRadius = 13,
        RecommendationsType = v3.RecommendationsType.BodyParts,
        MatchingCatalogPage = {
            CategoryKey = v8.Characters
        },
        AssetTypeIdStrings = {
            v2.AssetTypeIdStrings.RightArm
        },
        SearchUuid = v4()
    };
    local v26 = {
        Name = "Left Legs",
        Title = "Feature.Avatar.Label.LeftLegs",
        IconOn = "icons/menu/clothing/legs_on",
        IconOff = "icons/menu/clothing/legs_off",
        DEPRECATED_AssetTypeId = "30",
        RenderItemTiles = true,
        CameraFocus = v2.FocusType.Legs,
        CameraZoomRadius = 13.5,
        RecommendationsType = v3.RecommendationsType.BodyParts,
        MatchingCatalogPage = {
            CategoryKey = v8.Characters
        },
        AssetTypeIdStrings = {
            v2.AssetTypeIdStrings.LeftLeg
        },
        SearchUuid = v4()
    };
    local v27 = {
        Name = "Right Legs",
        Title = "Feature.Avatar.Label.RightLegs",
        IconOn = "icons/menu/clothing/legs_on",
        IconOff = "icons/menu/clothing/legs_off",
        DEPRECATED_AssetTypeId = "31",
        RenderItemTiles = true,
        CameraFocus = v2.FocusType.Legs,
        CameraZoomRadius = 13.5,
        RecommendationsType = v3.RecommendationsType.BodyParts,
        MatchingCatalogPage = {
            CategoryKey = v8.Characters
        },
        AssetTypeIdStrings = {
            v2.AssetTypeIdStrings.RightLeg
        },
        SearchUuid = v4()
    };
    local v28 = {
        Name = "Build",
        Title = "Feature.Avatar.Label.Build",
        IconOn = "icons/menu/clothing/build_on",
        IconOff = "icons/menu/clothing/build_off",
        RenderItemTiles = false,
        RecommendationsType = v3.RecommendationsType.None,
        PageType = v2.PageType.BodyStyle,
        SearchUuid = v4()
    };
    local v29 = {};
    table.insert(v29, v18);
    table.insert(v29, v19);
    table.insert(v29, v20);
    table.insert(v29, v21);
    table.insert(v29, v22);
    table.insert(v29, v23);
    table.insert(v29, v24);
    table.insert(v29, v25);
    table.insert(v29, v26);
    table.insert(v29, v27);
    if not (game:GetFastFlag("HideAvatarBuildCategoryInVR") and l_IsVRAppBuild_0()) then
        table.insert(v29, v28);
    end;
    v17.Subcategories = v29;
    v11 = {
        v16,
        v17,
        v5().avatarEditorCategories,
        v13(),
        {
            Name = v2.AssetCategories.Emotes,
            Title = "Feature.Avatar.Heading.Emotes",
            IconOn = "icons/menu/clothing/emotes_on",
            IconOff = "icons/menu/clothing/emotes_off",
            CameraZoomRadius = v2.AnimationCategoryCameraZoomRadius,
            EquipSlotsCount = 8,
            DEPRECATED_AssetTypeId = "61",
            RenderItemTiles = true,
            PageType = v2.PageType.Emotes,
            CanAnimateCameraBasedMood = false,
            RecommendationsType = v3.RecommendationsType.Asset,
            MatchingCatalogPage = {
                CategoryKey = v8.AllAnimations,
                SubcategoryKey = v9.Emotes
            },
            AssetTypeIdStrings = {
                v2.AssetTypeIdStrings.EmoteAnimation
            },
            SearchUuid = v4()
        },
        (v15())
    };
    for v30, v31 in v11, nil, nil do
        v31.Category = v30;
        v31.Subcategory = nil;
        if v31.Subcategories then
            for v32, v33 in v31.Subcategories, nil, nil do
                v33.Category = v30;
                v33.Subcategory = v32;
            end;
        end;
    end;
end;
local function _(v35)
    v7.isNotNil(v35.IconOn, (("category %* is missing iconOn"):format(v35.Name)));
    v7.isNotNil(v35.IconOff, (("category %* is missing IconOff"):format(v35.Name)));
    v7.isNotNil(v35.SearchUuid, (("category %* is missing SearchUuid"):format(v35.Name)));
end;
local function v42(v37)
    for _, v39 in v37, nil, nil do
        v7.isNotNil(v39.IconOn, (("category %* is missing iconOn"):format(v39.Name)));
        v7.isNotNil(v39.IconOff, (("category %* is missing IconOff"):format(v39.Name)));
        v7.isNotNil(v39.SearchUuid, (("category %* is missing SearchUuid"):format(v39.Name)));
        if v39.Subcategories then
            for _, v41 in v39.Subcategories, nil, nil do
                v7.isNotNil(v41.IconOn, (("category %* is missing iconOn"):format(v41.Name)));
                v7.isNotNil(v41.IconOff, (("category %* is missing IconOff"):format(v41.Name)));
                v7.isNotNil(v41.SearchUuid, (("category %* is missing SearchUuid"):format(v41.Name)));
            end;
        end;
    end;
end;
return function()
    if not v11 then
        v34();
        v42(v11);
    end;
    return v11;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.AvatarExperience.AvatarEditor.GetAvatarEditorCategories);
local v2 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v3 = nil;
local function _(v4, v5)
    return {
        category = v4,
        subcategory = v5
    };
end;
local function v35()
    local v7 = {};
    local v8 = nil;
    local v9 = {};
    for _, v11 in (v1()), nil, nil do
        local l_Subcategories_0 = v11.Subcategories;
        if not l_Subcategories_0 then
            if not v11.AssetTypeIdStrings then
                if v11.OutfitType then
                    v9[v11.OutfitType] = {
                        category = v11.Category,
                        subcategory = v11.Subcategory
                    };
                end;
            else
                for _, v14 in v11.AssetTypeIdStrings, nil, nil do
                    v7[v14] = {
                        category = v11.Category,
                        subcategory = v11.Subcategory
                    };
                end;
            end;
        else
            for _, v16 in l_Subcategories_0, nil, nil do
                if not v16.AssetTypeIdStrings then
                    if not v16.BundleTypes then
                        if v16.OutfitType then
                            v9[v16.OutfitType] = {
                                category = v11.Category,
                                subcategory = v11.Subcategory
                            };
                        end;
                    else
                        v8 = {
                            category = v11.Category,
                            subcategory = v11.Subcategory
                        };
                    end;
                else
                    for _, v18 in v16.AssetTypeIdStrings, nil, nil do
                        v7[v18] = {
                            category = v16.Category,
                            subcategory = v16.Subcategory
                        };
                    end;
                end;
            end;
        end;
    end;
    local v19 = {};
    local function v25(v20, v21)
        for _, v23 in v21, nil, nil do
            if not v19[v23] then
                v19[v23] = {};
            end;
            local v24 = v19[v23];
            v24[#v24 + 1] = v20;
        end;
    end;
    local function v26(v27)
        for _, v29 in v27, nil, nil do
            if not (not v29.AssetTypeIdStrings or not v29.SearchUuid) then
                v25(v29.SearchUuid, v29.AssetTypeIdStrings);
            end;
            if v29.Subcategories then
                v26(v29.Subcategories);
            end;
        end;
    end;
    local _ = function()
        for v30, _ in v2.DynamicHeadAssetTypes, nil, nil do
            if not v7[v30] then
                v7[v30] = v9[v2.OutfitTypes.DynamicHead];
            end;
        end;
    end;
    v26(v1());
    for v33, _ in v2.DynamicHeadAssetTypes, nil, nil do
        if not v7[v33] then
            v7[v33] = v9[v2.OutfitTypes.DynamicHead];
        end;
    end;
    return {
        AssetTypeToCategorySubcategory = v7,
        AssetTypeToSearchUuids = v19,
        BundleToCategorySubcategory = v8,
        OutfitTypeToCategorySubcategory = v9
    };
end;
return function()
    if not v3 then
        v3 = v35();
    end;
    return v3;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_Modules_0.LuaApp.Http.Url);
local v3 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v4 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local _ = require(l_CorePackages_0.Workspace.Packages.Http);
local v6 = require(l_CorePackages_0.Promise);
local v7 = require(l_Modules_0.AvatarExperience.Flags.AEInfiniteScrollRecommendationsIXPTest);
local l_game_EngineFeature_0 = game:GetEngineFeature("ClientAvatarUsesColor3sForBodyParts");
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return {
    GetAvatarData = function(v10)
        local _ = nil;
        return v10(if not l_game_EngineFeature_0 then string.format("%s/v1/avatar", v2.AVATAR_URL) else string.format("%s/v2/avatar/avatar", v2.AVATAR_URL), "GET");
    end,
    GetOutfit = function(v12, v13)
        local _ = nil;
        return v12(if not l_game_EngineFeature_0 then string.format("%s/v1/outfits/%s/details", v2.AVATAR_URL, v13) else string.format("%s/v3/outfits/%s/details", v2.AVATAR_URL, v13), "GET");
    end,
    GetRecommendations = function(v15, v16, v17)
        local v18 = v2:makeQueryString({
            numItems = v3.NumRecommendedItems,
            details = true
        });
        local v19 = "%s/v2/recommendations/user-inventory?bundleTypeId=%s&%s";
        if v17 then
            v19 = "%s/v2/recommendations/user-inventory?assetTypeId=%s&%s";
        end;
        return v15(string.format(v19, v2.CATALOG_URL, v16, v18), "GET");
    end,
    GetRecommendedUserInventoryItems = function(v20, v21)
        if v7.isEnabled() then
            local v22 = string.format("%sv2/recommendations/user-inventory/details?limit=%s", v2.CATALOG_URL, (tostring(if not v21.limit then v4.DefaultUserRecommendationsFetchSize else v21.limit)));
            if v21.assetTypeId then
                v22 = v22 .. "&assetTypeId=" .. tostring(v21.assetTypeId);
            end;
            if v21.assetId then
                v22 = v22 .. "&assetId=" .. tostring(v21.assetId);
            end;
            if v21.bundleTypeId then
                v22 = v22 .. "&bundleTypeId=" .. tostring(v21.bundleTypeId);
            end;
            if v21.bundleId then
                v22 = v22 .. "&bundleId=" .. tostring(v21.bundleId);
            end;
            if v21.cursor then
                v22 = v22 .. "&cursor=" .. v21.cursor;
            end;
            return v20(v22, "GET");
        else
            return v6.resolve();
        end;
    end
};


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_MockId_0 = require(l_CorePackages_0.Workspace.Packages.UnitTestHelpers).MockId;
local v3 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local v4 = require(l_Modules_0.AvatarExperience.Common.Constants);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local v6 = require(l_Modules_0.AvatarExperience.Common.Models.AssetMetadata);
local v7 = require(l_Modules_0.AvatarExperience.Common.Utils);
local _ = require(l_Modules_0.AvatarExperience.AvatarEditor.Reducers.ExtendedBodyColors);
local v9 = require(l_Modules_0.AvatarExperience.Flags.ColorPickerSliderIXPTest);
local v10 = require(l_Modules_0.AvatarExperience.Common.Util.IXPUtils);
local l_game_EngineFeature_0 = game:GetEngineFeature("ClientAvatarUsesColor3sForBodyParts");
local v12 = require(l_CorePackages_0.Cryo);
local v13 = require(l_Modules_0.AvatarExperience.Flags.FFlagAXEnableOutfitAttribution);
local v14 = {
    new = function()
        return {};
    end,
    MockPantsAssetId = "123",
    MockHatAssetId = "124"
};
v14.mock = function()
    local v15 = v14.new();
    v15.outfitId = l_MockId_0();
    v15.name = "";
    v15.assets = {
        ["66"] = {
            [v14.MockPantsAssetId] = {
                version = "1",
                order = 2,
                type = Enum.AccessoryType.Jacket,
                isLayered = true
            }
        },
        ["8"] = {
            [v14.MockHatAssetId] = {
                version = "1",
                order = 1,
                type = Enum.AccessoryType.Hat,
                isLayered = true
            }
        }
    };
    v15.bodyColors = {
        headColorId = 194,
        leftArmColorId = 194,
        leftLegColorId = 194,
        rightArmColorId = 194,
        rightLegColorId = 194,
        torsoColorId = 194
    };
    v15.bodyColor3s = {
        headColor3 = v7.bodyColorToBodyColor3(194),
        leftArmColor3 = v7.bodyColorToBodyColor3(194),
        leftLegColor3 = v7.bodyColorToBodyColor3(194),
        rightArmColor3 = v7.bodyColorToBodyColor3(194),
        rightLegColor3 = v7.bodyColorToBodyColor3(194),
        torsoColor3 = v7.bodyColorToBodyColor3(194)
    };
    v15.scales = {
        height = 0,
        width = 0,
        head = 0,
        depth = 0,
        proportion = 0,
        bodyType = 0
    };
    v15.avatarType = v3.AvatarType.R15;
    v15.isEditable = true;
    v15.updateCounter = 0;
    v15.outfitType = "Avatar";
    return v15;
end;
v14.mockWithData = function(v16)
    return (v12.Dictionary.join(v14.mock(), v16));
end;
v14.fromWebApi = function(v17, v18, v19, v20)
    local v21 = v14.new();
    v21.containsDynamicHead = false;
    local v22 = {};
    if v19.assets then
        for _, v24 in v19.assets, nil, nil do
            local v25 = tostring(v24.assetType.id);
            local v26 = tostring(v24.id);
            local v27 = v22[v25] or {};
            v27[v26] = v6.fromMetadata(v24.meta, v25);
            v22[v25] = v27;
            if v25 == v4.AssetTypeIdStrings.DynamicHead then
                v21.containsDynamicHead = true;
            end;
        end;
    end;
    v21.outfitId = v17;
    v21.name = v19.name;
    v21.assets = v22;
    if not v10.readTestVariable(v9.EnabledForUser) then
        if not l_game_EngineFeature_0 then
            v21.bodyColors = v19.bodyColors;
        else
            v21.bodyColors = v7.convertBodyColor3HexesToIds(v19.bodyColor3s, v20);
        end;
    elseif not l_game_EngineFeature_0 then
        v21.bodyColor3s = v7.convertBodyColorsToColor3s(v19.bodyColors);
    else
        v21.bodyColor3s = v7.convertBodyColor3HexesToColor3s(v19.bodyColor3s);
    end;
    v21.scales = v19.scale;
    v21.avatarType = v19.playerAvatarType;
    v21.isEditable = v19.isEditable;
    v21.outfitType = v19.outfitType;
    v21.creatingUniverseId = if not not v13 and v19.universeId ~= 0 then tostring(v19.universeId) else nil;
    v21.updateCounter = v18 or 0;
    return v21;
end;
return v14;


local v0 = require(game:GetService("CorePackages").Rodux);
local l_Parent_0 = script.Parent;
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v3 = require(l_Parent_0.Character);
local v4 = require(l_Parent_0.Categories);
local v5 = require(l_Parent_0.EquippedEmotes);
local v6 = require(l_Parent_0.OutfitInfos);
local v7 = require(l_Parent_0.AvatarSettings);
local v8 = require(l_Parent_0.DefaultBodyColors);
local v9 = require(l_Parent_0.ExtendedBodyColors);
local v10 = require(l_Parent_0.DefaultBodyColorRanges);
local v11 = require(l_Parent_0.PageFinished);
local v12 = require(l_Parent_0.RecommendedItems);
local v13 = require(l_Parent_0.PageLoaded);
local v14 = require(l_Parent_0.NewItemNotifications);
local v15 = require(l_Parent_0.BodyColorPickerSettings);
local v16 = require(l_Parent_0.HasAvatarData);
local v17 = require(l_Parent_0.UserInventoryRecommendations);
local v18 = require(l_Parent_0.UserInventoryRecommendationsFetchStatus);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v0.combineReducers({
    Character = v3,
    Categories = v4,
    EquippedEmotes = v5,
    OutfitInfos = v6,
    AvatarSettings = v7,
    DefaultBodyColors = v8,
    ExtendedBodyColors = v9,
    DefaultBodyColorRanges = v10,
    PageFinished = v11,
    RecommendedItems = v12,
    PageLoaded = v13,
    NewItemNotifications = v14,
    BodyColorPickerSettings = v15,
    HasAvatarData = v16,
    UserInventoryRecommendations = v17,
    UserInventoryRecommendationsFetchStatus = v18
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_CorePackages_0.Cryo);
return v2.createReducer({
    height = 1,
    width = 1,
    depth = 1,
    head = 1,
    bodyType = 0,
    proportion = 0
}, {
    [require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetAvatarScales).name] = function(v4, v5)
        return v3.Dictionary.join(v4, v5.scales);
    end,
    [require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.ReceivedAvatarData).name] = function(v6, v7)
        if v7.avatarData then
            return v7.avatarData.scales;
        else
            return v6;
        end;
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Rodux);
local v2 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetAvatarSettings);
local v3 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
return v1.createReducer({
    ObtainedAvatarRules = false,
    [v3.AvatarSettings.minDeltaBodyColorDifference] = 0,
    [v3.AvatarSettings.scalesRules] = {
        height = {
            min = 0.9,
            max = 1.05,
            increment = 0.01
        },
        width = {
            min = 0.7,
            max = 1,
            increment = 0.01
        },
        head = {
            min = 0.95,
            max = 1,
            increment = 0.01
        },
        proportion = {
            min = 0,
            max = 1,
            increment = 0.01
        },
        bodyType = {
            min = 0,
            max = 1,
            increment = 0.01
        }
    }
}, {
    [v2.name] = function(_, v5)
        return {
            ObtainedAvatarRules = true,
            [v3.AvatarSettings.scalesRules] = v5.scalesRules,
            [v3.AvatarSettings.minDeltaBodyColorDifference] = v5.minimumDeltaEBodyColorDifference
        };
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Rodux);
local v2 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.ReceivedAvatarData);
local v3 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetAvatarType);
local v4 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
return v1.createReducer(v4.AvatarType.R15, {
    [v2.name] = function(v5, v6)
        local l_playerAvatarType_0 = v6.avatarData.playerAvatarType;
        if l_playerAvatarType_0 and v4.AvatarType[l_playerAvatarType_0] == l_playerAvatarType_0 then
            return l_playerAvatarType_0;
        else
            return v5;
        end;
    end,
    [v3.name] = function(_, v9)
        return v9.avatarType;
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetBodyColor3s);
local v4 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.ReceivedAvatarData);
local v5 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local v6 = require(l_CorePackages_0.Cryo);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v2.createReducer({
    headColor3 = v5.DefaultBodyColor3,
    leftArmColor3 = v5.DefaultBodyColor3,
    leftLegColor3 = v5.DefaultBodyColor3,
    rightArmColor3 = v5.DefaultBodyColor3,
    rightLegColor3 = v5.DefaultBodyColor3,
    torsoColor3 = v5.DefaultBodyColor3
}, {
    [v3.name] = function(v8, v9)
        return (v6.Dictionary.join(v8, v9.bodyColor3s));
    end,
    [v4.name] = function(_, v11)
        return v11.avatarData.bodyColor3s;
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_CorePackages_0.Cryo);
local v4 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetBodyColorViewSetting);
local v5 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetSelectedBodyPartColorIds);
local v6 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetRangeIdToBodyPartsToSliderAndColor3Values);
local v7 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetSelectedBodyPartIndex);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v2.createReducer({
    viewSetting = "Standard",
    selectedBodyPartColorIds = {},
    rangeIdToBodyPartsToSliderAndColor3Values = {},
    selectedBodyPartIndex = 1
}, {
    [v6.name] = function(v9, v10)
        local l_rangeIdToBodyPartsToSliderAndColor3Values_0 = v9.rangeIdToBodyPartsToSliderAndColor3Values;
        return v3.Dictionary.join(v9, {
            rangeIdToBodyPartsToSliderAndColor3Values = v3.Dictionary.join(l_rangeIdToBodyPartsToSliderAndColor3Values_0, {
                [v10.rangeId] = v3.Dictionary.join(l_rangeIdToBodyPartsToSliderAndColor3Values_0[v10.rangeId] or {}, {
                    [v10.bodyPartForSkinColoringId] = {
                        color3 = v10.color3,
                        sliderValue = v10.sliderValue
                    }
                })
            })
        });
    end,
    [v7.name] = function(v12, v13)
        return v3.Dictionary.join(v12, {
            selectedBodyPartIndex = v13.selectedBodyPartIndex
        });
    end,
    [v4.name] = function(v14, v15)
        return v3.Dictionary.join(v14, {
            viewSetting = v15.bodyColorViewSetting
        });
    end,
    [v5.name] = function(v16, v17)
        return v3.Dictionary.join(v16, {
            selectedBodyPartColorIds = v17.selectedBodyPartColorIds
        });
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Rodux);
local v2 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetBodyColors);
local v3 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.ReceivedAvatarData);
local v4 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v1.createReducer({
    headColorId = v4.DefaultBodyColorBrickId,
    leftArmColorId = v4.DefaultBodyColorBrickId,
    leftLegColorId = v4.DefaultBodyColorBrickId,
    rightArmColorId = v4.DefaultBodyColorBrickId,
    rightLegColorId = v4.DefaultBodyColorBrickId,
    torsoColorId = v4.DefaultBodyColorBrickId
}, {
    [v2.name] = function(_, v7)
        return v7.bodyColors;
    end,
    [v3.name] = function(_, v9)
        return v9.avatarData.bodyColors;
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetBodyPartRangeIds);
local v4 = require(l_CorePackages_0.Cryo);
return v2.createReducer({}, {
    [v3.name] = function(v5, v6)
        return (v4.Dictionary.join(v5, v6.bodyPartRangeIds));
    end
});


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Rodux);
local v4 = require(l_CorePackages_0.Cryo);
return v3.createReducer({
    category = 1,
    subcategory = 1,
    subButton = 1
}, {
    [require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetCategoryAndSubcategory).name] = function(v5, v6)
        return v4.Dictionary.join(v5, {
            category = v6.category or v5.category,
            subcategory = v6.subcategory or 1,
            subButton = 1
        });
    end
});


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Rodux);
local l_Parent_0 = script.Parent;
local v4 = require(l_Parent_0.AvatarType);
local v5 = require(l_Parent_0.AvatarScales);
local v6 = require(l_Parent_0.BodyColors);
local v7 = require(l_Parent_0.BodyPartRangeIds);
local v8 = require(l_Parent_0.BodyColor3s);
local v9 = require(l_Parent_0.OwnedItemIdsBySubtype);
local v10 = require(l_Parent_0.EquippedAssets);
local v11 = require(l_Parent_0.OutfitOrAsset);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v2.combineReducers({
    AvatarType = v4,
    AvatarScales = v5,
    BodyColors = v6,
    BodyColor3s = v8,
    BodyPartRangeIds = v7,
    OwnedItemIdsBySubtype = v9,
    EquippedAssets = v10,
    OutfitOrAsset = v11
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Rodux);
local v2 = require(l_Modules_0.AvatarExperience.Common.ReducerUtils);
local v3 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetDefaultBodyColorRanges);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return (v1.createReducer({}, {
    [v3.name] = function(_, v6)
        return (v2.convertDefaultBodyColorRanges(v6.defaultBodyColorRanges));
    end
}));


return (require(game:GetService("CorePackages").Rodux).createReducer({}, {
    [require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.AvatarEditor.Actions.SetDefaultBodyColors).name] = function(_, v1)
        return v1.defaultBodyColors;
    end
}));


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_CorePackages_0.Cryo);
local v4 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.ToggleEquipAsset);
local v5 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.EquipOutfit);
local v6 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.UnequipOutfit);
local v7 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.ReceivedAvatarData);
local v8 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v9 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local v10 = require(l_Modules_0.AvatarExperience.LayeredClothingSort.LayeredClothingSortUtils);
local v11 = require(l_Modules_0.AvatarExperience.Common.Models.AssetMetadata);
local v12 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.RemoveLayeredClothing);
local v13 = require(l_Modules_0.AvatarExperience.LayeredClothingSort.Actions.SetOrder);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local function _(v15, v16)
    if not v15 or not v15[v16] then
        return false;
    else
        return true;
    end;
end;
local function v20(v18, v19)
    return v3.Dictionary.join(v18, v19);
end;
return v2.createReducer(nil, {
    [v7.name] = function(v21, v22)
        local l_assets_0 = v22.avatarData.assets;
        if l_assets_0 == nil then
            return v21;
        else
            v21 = {};
            for _, v25 in l_assets_0, nil, nil do
                local v26 = tostring(v25.assetType.id);
                local v27 = tostring(v25.id);
                local v28 = v21[v26] or {};
                v28[v27] = v11.fromMetadata(v25.meta, v26);
                v21[v26] = v28;
            end;
            return v21;
        end;
    end,
    [v4.name] = function(v29, v30)
        v29 = v29 or {};
        if v30.assetTypeId == v8.AssetTypeIdStrings.EmoteAnimation then
            return v29;
        else
            local v31 = v29[v30.assetTypeId];
            if not (not not v31 and (v31[v30.assetId] and true or false)) then
                v31 = v11.getDefaultMetadata(v30.assetTypeId);
                if not v30.overrideOrder then
                    if v31.isLayered then
                        local v32 = v10.getSortedEquippedLCIfNoDefault(v29);
                        if v32 then
                            local v33, _ = v10.getTableAndOrderAfterEquippingIntoSort(v32, {
                                id = v30.assetId,
                                typeId = v30.assetTypeId
                            });
                            for v35, v36 in v33, nil, nil do
                                if v36.id ~= v30.assetId then
                                    v29 = v3.Dictionary.join(v29, {
                                        [v36.typeId] = v3.Dictionary.join(v29[v36.typeId], {
                                            [v36.id] = v3.Dictionary.join(v29[v36.typeId][v36.id], {
                                                order = #v33 - v35
                                            })
                                        })
                                    });
                                else
                                    v31.order = #v33 - v35;
                                end;
                            end;
                        end;
                    end;
                else
                    v31.order = v30.overrideOrder;
                end;
                local v37 = {
                    [v30.assetId] = v31
                };
                local v38 = v29[v30.assetTypeId] or {};
                if v30.assetTypeId == v8.AssetTypeIdStrings.Hat then
                    if v9.MaxHats <= #v3.Dictionary.keys(v38) then
                        return v29;
                    else
                        return v3.Dictionary.join(v29, {
                            [v30.assetTypeId] = v3.Dictionary.join(v38, v37)
                        });
                    end;
                else
                    local v39 = v8.AssetTypeToAssetCategory[v30.assetTypeId];
                    if v39 then
                        for _, v41 in v8.AssetCategoryToAssetTypes[v39], nil, nil do
                            if not (not v29[v41] or not next(v29[v41])) then
                                v29 = v3.Dictionary.join(v29, {
                                    [v41] = {}
                                });
                            end;
                        end;
                    end;
                    if v30.assetTypeId == v8.AssetTypeIdStrings.Head then
                        for v42, _ in v8.DynamicHeadAssetTypes, nil, nil do
                            v29 = v3.Dictionary.join(v29, {
                                [v42] = {}
                            });
                        end;
                    end;
                    if v30.assetTypeId == v8.AssetTypeIdStrings.DynamicHead then
                        v29 = v3.Dictionary.join(v29, {
                            [v8.AssetTypeIdStrings.Head] = {}
                        });
                    end;
                    return v3.Dictionary.join(v29, {
                        [v30.assetTypeId] = v37
                    });
                end;
            else
                return v3.Dictionary.join(v29, {
                    [v30.assetTypeId] = v3.Dictionary.join(v29[v30.assetTypeId] or {}, {
                        [v30.assetId] = v3.None
                    })
                });
            end;
        end;
    end,
    [v5.name] = function(v44, v45)
        v44 = v44 or {};
        if not v45.fullReset then
            return v20(v44, v45.assets);
        else
            return v45.assets;
        end;
    end,
    [v6.name] = function(v46, v47)
        v46 = v46 or {};
        for v48, v49 in v47.assetTypeIdToAssetIdToAssetMetadataModel, nil, nil do
            for v50, _ in v49, nil, nil do
                v46 = v3.Dictionary.join(v46, {
                    [v48] = v3.Dictionary.join(v46[v48], {
                        [v50] = v3.None
                    })
                });
            end;
        end;
        return v46;
    end,
    [v12.name] = function(v52, v53)
        v52 = v52 or {};
        local v54 = false;
        local v55 = {};
        for v56, v57 in pairs(v52) do
            local v58 = {};
            local v59 = false;
            for v60, v61 in v57, nil, nil do
                if not (v61.isLayered and (not (v56 == v8.AssetTypeIdStrings.HairAccessory) or v53.hasLayeredHair)) then
                    v58[v60] = v61;
                else
                    v59 = true;
                end;
            end;
            if not v59 then
                v55[v56] = v57;
            else
                v54 = true;
                v55[v56] = v58;
            end;
        end;
        if not v54 then
            return v52;
        else
            return v55;
        end;
    end,
    [v13.name] = function(v62, v63)
        for v64, v65 in v63.assetIdToOrderAndAssetTypeId, nil, nil do
            local l_assetTypeId_0 = v65.assetTypeId;
            local l_order_0 = v65.order;
            local v68 = v62[l_assetTypeId_0];
            v62 = v3.Dictionary.join(v62, {
                [l_assetTypeId_0] = v3.Dictionary.join(v68, {
                    [v64] = v3.Dictionary.join(v68[v64], {
                        order = l_order_0
                    })
                })
            });
        end;
        return v62;
    end
});


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Cryo);
local v4 = require(l_CorePackages_0.Rodux);
local v5 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v6 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.ReceivedAvatarData);
local v7 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetSelectedEmoteSlot);
local v8 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.ToggleEquipAsset);
local v9 = {
    slotInfo = {},
    selectedSlot = 1
};
local function v15(v10)
    local v11 = {};
    for _, v13 in v10, nil, nil do
        local l_position_0 = v13.position;
        v11[l_position_0] = {
            assetId = tostring(v13.assetId),
            position = l_position_0
        };
    end;
    return v11;
end;
local function _(v16, v17, v18)
    return v3.Dictionary.join(v16, {
        [v17] = v18
    });
end;
local function _(v20, v21)
    return v3.Dictionary.join(v20, {
        [v21] = v3.None
    });
end;
return v4.createReducer(v9, {
    [v6.name] = function(v23, v24)
        return v3.Dictionary.join(v23, {
            slotInfo = v15(v24.avatarData.emotes or {})
        });
    end,
    [v8.name] = function(v25, v26)
        if v26.assetTypeId ~= v5.AssetTypeIdStrings.EmoteAnimation then
            return v25;
        else
            local v27 = v25.slotInfo[v25.selectedSlot];
            local v28 = {
                assetId = v26.assetId,
                position = v25.selectedSlot
            };
            local _ = nil;
            return v3.Dictionary.join(v25, {
                slotInfo = if not v27 or v27.assetId ~= v28.assetId then v3.Dictionary.join(v25.slotInfo, {
                    [v25.selectedSlot] = v28
                }) else v3.Dictionary.join(v25.slotInfo, {
                    [v25.selectedSlot] = v3.None
                })
            });
        end;
    end,
    [v7.name] = function(v30, v31)
        return v3.Dictionary.join(v30, {
            selectedSlot = v31.selectedSlot
        });
    end
});


return (require(game:GetService("CorePackages").Rodux).createReducer({}, {
    [require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.AvatarEditor.Actions.SetExtendedBodyColors).name] = function(_, v1)
        return v1.extendedBodyColors;
    end
}));


return require(game:GetService("CorePackages").Rodux).createReducer(false, {
    [require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.AvatarEditor.Actions.ReceivedAvatarData).name] = function(_, _)
        return true;
    end
});


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Cryo);
local v4 = require(l_CorePackages_0.Rodux);
local v5 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v6 = require(l_Modules_0.AvatarExperience.Common.Actions.AddNewAssetNotification);
local v7 = require(l_Modules_0.AvatarExperience.Common.Actions.RemoveNewAssetNotification);
local v8 = require(l_Modules_0.AvatarExperience.Common.Actions.AddNewOutfitNotification);
local v9 = require(l_Modules_0.AvatarExperience.Common.Actions.RemoveNewOutfitNotification);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v4.createReducer({}, {
    [v6.name] = function(v11, v12)
        return v3.Dictionary.join(v11, {
            [v12.assetTypeId] = true
        });
    end,
    [v7.name] = function(v13, v14)
        return v3.Dictionary.join(v13, {
            [v14.assetTypeId] = false
        });
    end,
    [v8.name] = function(v15, v16)
        if v16.outfitType == v5.OutfitTypes.DynamicHead then
            return v3.Dictionary.join(v15, {
                [v5.NewDHOutfitNotificationKey] = true
            });
        else
            return v3.Dictionary.join(v15, {
                [v5.NewOutfitNotificationKey] = true
            });
        end;
    end,
    [v9.name] = function(v17, v18)
        if v18.outfitType == v5.OutfitTypes.DynamicHead then
            return v3.Dictionary.join(v17, {
                [v5.NewDHOutfitNotificationKey] = false
            });
        else
            return v3.Dictionary.join(v17, {
                [v5.NewOutfitNotificationKey] = false
            });
        end;
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_CorePackages_0.Cryo);
local v4 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetOutfitInfo);
local v5 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.RevokeOutfit);
local v6 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.UpdateOutfit);
local v7 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.OutfitRenamed);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v2.createReducer({}, {
    [v4.name] = function(v9, v10)
        return v3.Dictionary.join(v9, {
            [tostring(v10.outfit.outfitId)] = v10.outfit
        });
    end,
    [v5.name] = function(v11, v12)
        return v3.Dictionary.join(v11, {
            [tostring(v12.outfitId)] = v3.None
        });
    end,
    [v6.name] = function(v13, v14)
        return v3.Dictionary.join(v13, {
            [tostring(v14.outfitId)] = v3.None
        });
    end,
    [v7.name] = function(v15, v16)
        local v17 = v15[v16.outfitId];
        if v17 then
            return v3.Dictionary.join(v15, {
                [v16.outfitId] = v3.Dictionary.join(v17, {
                    name = v16.name
                })
            });
        else
            return v15;
        end;
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_CorePackages_0.Cryo);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v2.createReducer({}, {
    [require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetOutfitOrAsset).name] = function(v5, v6)
        local v7 = v5 or {};
        local l_itemType_0 = v6.itemType;
        local v9 = {};
        for _, v11 in v6.ids, nil, nil do
            v9[v11] = l_itemType_0;
        end;
        return v3.Dictionary.join(v7, v9);
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_CorePackages_0.Cryo);
local v4 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetOwnedItemIdsBySubtype);
local v5 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.GrantAsset);
local v6 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.RevokeAsset);
local v7 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.GrantOutfit);
local v8 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.GrantEditableOutfit);
local v9 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.GrantPurchasedOutfit);
local v10 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.GrantOutfitByType);
local v11 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.RevokeOutfit);
local v12 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.UpdateOutfit);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local v14 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local v15 = require(l_Modules_0.AvatarExperience.AvatarEditor.GetAvatarEditorStructure);
local function _()
    return v15().AssetTypeToSearchUuids;
end;
return v2.createReducer({}, {
    [v4.name] = function(v17, v18)
        local v19 = {};
        local v20 = not not v17[v18.itemSubType] and v17[v18.itemSubType] or {};
        for _, v22 in v20, nil, nil do
            v19[v22] = v22;
        end;
        for _, v24 in v18.itemIds, nil, nil do
            if not v19[v24] then
                v20[#v20 + 1] = v24;
                v19[v24] = v24;
            end;
        end;
        return v3.Dictionary.join(v17, {
            [v18.itemSubType] = v20
        });
    end,
    [v5.name] = function(v25, v26)
        local v27 = {};
        local v28 = tostring(v26.assetTypeId);
        local v29 = tostring(v26.assetId);
        local v30 = v15().AssetTypeToSearchUuids[v28];
        if v30 then
            for _, v32 in v30, nil, nil do
                local v33 = not not v25[v32] and v25[v32] or {};
                local v34 = {
                    v29
                };
                local v35 = false;
                for v36, v37 in v33, nil, nil do
                    if v37 == v29 then
                        v35 = true;
                        break;
                    else
                        v34[v36 + 1] = v37;
                    end;
                end;
                if not v35 then
                    v27[v32] = v34;
                end;
            end;
            if not next(v27) then
                return v25;
            else
                return v3.Dictionary.join(v25, v27);
            end;
        else
            return v25;
        end;
    end,
    [v6.name] = function(v38, v39)
        local v40 = {};
        local v41 = tostring(v39.assetTypeId);
        local v42 = tostring(v39.assetId);
        local v43 = v15().AssetTypeToSearchUuids[v41];
        if v43 then
            for _, v45 in v43, nil, nil do
                local v46 = not not v38[v45] and v38[v45] or {};
                local v47 = v3.List.removeValue(v46, v42);
                if #v46 ~= #v47 then
                    v40[v45] = v47;
                end;
            end;
            if not next(v40) then
                return v38;
            else
                return v3.Dictionary.join(v38, v40);
            end;
        else
            return v38;
        end;
    end,
    [v10.name] = function(v48, v49)
        local v50 = tostring(v49.outfitId);
        local l_outfitTypeId_0 = v49.outfitTypeId;
        local v52 = v48[l_outfitTypeId_0] or {};
        local v53 = {
            v50
        };
        for _, v55 in v52, nil, nil do
            if v55 == v50 then
                return v48;
            else
                table.insert(v53, v55);
            end;
        end;
        return v3.Dictionary.join(v48, {
            [l_outfitTypeId_0] = v53
        });
    end,
    [v7.name] = function(v56, v57)
        local v58 = tostring(v57.outfitId);
        local v59 = v56[v14.CharacterKey] or {};
        local v60 = {
            v58
        };
        for v61, v62 in v59, nil, nil do
            if v62 == v58 then
                return v56;
            else
                v60[v61 + 1] = v62;
            end;
        end;
        return v3.Dictionary.join(v56, {
            [v14.CharacterKey] = v60
        });
    end,
    [v8.name] = function(v63, v64)
        local v65 = tostring(v64.outfitId);
        local v66 = v63[v14.EditableCharacterKey] or {};
        local v67 = {
            v65
        };
        for v68, v69 in v66, nil, nil do
            if v69 == v65 then
                return v63;
            else
                v67[v68 + 1] = v69;
            end;
        end;
        return v3.Dictionary.join(v63, {
            [v14.EditableCharacterKey] = v67
        });
    end,
    [v9.name] = function(v70, v71)
        local v72 = tostring(v71.outfitId);
        local v73 = v70[v14.PurchasedCharacterKey] or {};
        local v74 = {
            v72
        };
        for v75, v76 in v73, nil, nil do
            if v76 == v72 then
                return v70;
            else
                v74[v75 + 1] = v76;
            end;
        end;
        return v3.Dictionary.join(v70, {
            [v14.PurchasedCharacterKey] = v74
        });
    end,
    [v12.name] = function(v77, v78)
        local v79 = tostring(v78.outfitId);
        return v3.Dictionary.join(v77, {
            [v14.CharacterKey] = v3.List.join({
                v79
            }, v3.List.removeValue(v77[v14.CharacterKey] or {}, v79)),
            [v14.EditableCharacterKey] = v3.List.join({
                v79
            }, v3.List.removeValue(v77[v14.EditableCharacterKey] or {}, v79))
        });
    end,
    [v11.name] = function(v80, v81)
        local v82 = tostring(v81.outfitId);
        return v3.Dictionary.join(v80, {
            [v14.CharacterKey] = v3.List.removeValue(v80[v14.CharacterKey] or {}, v82),
            [v14.EditableCharacterKey] = v3.List.removeValue(v80[v14.EditableCharacterKey] or {}, v82)
        });
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_CorePackages_0.Cryo);
return v2.createReducer({}, {
    [require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetPageFinished).name] = function(v4, v5)
        return v3.Dictionary.join(v4, {
            [v5.assetTypeId] = v5.isFinished
        });
    end
});


return require(game:GetService("CorePackages").Rodux).createReducer(false, {
    [require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.AvatarEditor.Actions.SetPageLoaded).name] = function(_, v1)
        return v1.value;
    end
});


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_CorePackages_0.Rodux);
local v4 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
return v3.createReducer({}, {
    [require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetRecommendedItemsV2).name] = function(v5, v6)
        v4.isType(v6.itemTypeId, "string", "itemTypeId must be a string.");
        v4.isType(v6.items, "table", "items data must be a table.");
        local l_itemTypeId_0 = v6.itemTypeId;
        local l_items_0 = v6.items;
        local v9 = {};
        for _, v11 in l_items_0, nil, nil do
            local l_id_0 = v11.id;
            if l_id_0 then
                v9[#v9 + 1] = tostring(l_id_0);
            end;
        end;
        return v2.Dictionary.join(v5, {
            [l_itemTypeId_0] = v9
        });
    end
});


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Cryo);
local v4 = require(l_CorePackages_0.Rodux);
local _ = require(l_Modules_0.AvatarExperience.Catalog.Models.SortResults);
return v4.createReducer({}, {
    [require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.AppendUserInventoryRecommendations).name] = function(v6, v7)
        local v8 = v6[v7.searchUuid];
        if v8 and not v7.forceUpdate then
            return v3.Dictionary.join(v6, {
                [v7.searchUuid] = {
                    items = v3.List.join(v8.items, v7.sortResults.items),
                    initialStorageTime = v8.initialStorageTime,
                    nextPageCursor = v7.sortResults.nextPageCursor,
                    previousPageCursor = v7.sortResults.previousPageCursor,
                    keyword = v7.sortResults.keyword
                }
            });
        else
            return v3.Dictionary.join(v6, {
                [v7.searchUuid] = v3.Dictionary.join(v7.sortResults, {
                    initialStorageTime = tick()
                })
            });
        end;
    end
});


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Rodux);
local v4 = require(l_CorePackages_0.Cryo);
return v3.createReducer({}, {
    [require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetUserInventoryRecommendationsFetchStatus).name] = function(v5, v6)
        return v4.Dictionary.join(v5, {
            [v6.searchUuid] = v6.status
        });
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local l_PerformFetch_0 = require(l_CorePackages_0.Workspace.Packages.Http).PerformFetch;
local l_RetrievalStatus_0 = require(l_CorePackages_0.Workspace.Packages.Http).Enum.RetrievalStatus;
local v4 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local v5 = require(l_Modules_0.AvatarExperience.Common.Constants);
return function(v6)
    if l_PerformFetch_0.GetStatus(v6, v5.OutfitsKey .. v4.EditableCharacterKey) == l_RetrievalStatus_0.Fetching then
        return false;
    else
        local v7 = v6.AvatarExperience.AvatarEditor.PageFinished[v4.CharacterKey];
        local v8 = v6.AvatarExperience.AvatarEditor.PageFinished[v4.EditableCharacterKey];
        if not v7 then
            if not v8 then
                local v9 = v6.AvatarExperience.AvatarEditor.Character.OwnedItemIdsBySubtype[v4.EditableCharacterKey];
                if v9 and v4.MaxPreloadEditableCharacters < #v9 then
                    return false;
                else
                    return true;
                end;
            else
                return false;
            end;
        else
            return false;
        end;
    end;
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_PerformFetch_0 = require(game:GetService("CorePackages").Workspace.Packages.Http).PerformFetch;
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_Modules_0.AvatarExperience.AvatarEditor.Utils);
local v4 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v5 = require(l_Modules_0.LuaApp.Enum.RetrievalStatus);
local v6 = require(l_Modules_0.AvatarExperience.Common.Utils);
local _ = require(l_Modules_0.AvatarExperience.Common.AvatarExperienceState);
return function(v8)
    local v9 = v6.getAvatarEditorCategoryInfoFromState(v8).RenderOutfitItemTiles == true;
    local v10 = v3.selectAssetTypeKey(v8);
    local l_Failed_0 = v5.Failed;
    if v10 then
        if not v9 then
            l_Failed_0 = l_PerformFetch_0.GetStatus(v8, v4.UserInventoryKey .. v10);
        else
            return (l_PerformFetch_0.GetStatus(v8, v4.OutfitsKey .. v10));
        end;
    end;
    return l_Failed_0;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_memoize_0 = require(game:GetService("CorePackages").Workspace.Packages.AppCommonLib).memoize;
local v2 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local v3 = require(l_Modules_0.AvatarExperience.AvatarEditor.Utils);
local _ = require(l_Modules_0.AvatarExperience.AvatarEditor.Reducers.Character);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local function v17(v6, v7, v8)
    local l_AvatarType_0 = v8.AvatarType;
    local l_BodyColors_0 = v8.BodyColors;
    local l_BodyColor3s_0 = v8.BodyColor3s;
    local l_EquippedAssets_0 = v8.EquippedAssets;
    local l_AvatarScales_0 = v8.AvatarScales;
    for _, v15 in v6, nil, nil do
        local v16 = v7[tostring(v15)];
        if not (not v16 or not v3.isWearingOutfitNoState(v16, l_AvatarType_0, l_BodyColors_0, l_BodyColor3s_0, l_EquippedAssets_0, l_AvatarScales_0)) then
            return v15;
        end;
    end;
    return nil;
end;
local v22 = l_memoize_0(function(v18, v19, v20, v21)
    return v17(v19, v21, v20) or v17(v18, v21, v20);
end);
return function(v23)
    local l_OwnedItemIdsBySubtype_0 = v23.AvatarExperience.AvatarEditor.Character.OwnedItemIdsBySubtype;
    return v22(l_OwnedItemIdsBySubtype_0[v2.PurchasedCharacterKey] or {}, l_OwnedItemIdsBySubtype_0[v2.EditableCharacterKey] or {}, v23.AvatarExperience.AvatarEditor.Character, v23.AvatarExperience.AvatarEditor.OutfitInfos);
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.AvatarExperience.AvatarEditor.Utils);
local _ = require(l_Modules_0.AvatarExperience.Common.Reducers.AvatarExperience);
return function(v3, v4)
    return v1.getColor3ForRangeIdAndBodyPartIndex(v4, v3.AvatarEditor.BodyColorPickerSettings.selectedBodyPartIndex, v3.AvatarEditor.BodyColorPickerSettings.rangeIdToBodyPartsToSliderAndColor3Values, v3.AvatarEditor.DefaultBodyColorRanges);
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.AvatarExperience.AvatarEditor.Utils);
local _ = require(l_Modules_0.AvatarExperience.Common.Reducers.AvatarExperience);
return function(v3, v4)
    return v1.getSliderValueForRangeIdAndBodyPartIndex(v4, v3.AvatarEditor.BodyColorPickerSettings.selectedBodyPartIndex, v3.AvatarEditor.BodyColorPickerSettings.rangeIdToBodyPartsToSliderAndColor3Values);
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.Common.Utils);
return function(v1)
    local l_OwnedItemIdsBySubtype_0 = v1.AvatarExperience.AvatarEditor.Character.OwnedItemIdsBySubtype;
    local v3 = v0.getAvatarEditorCategoryInfoFromState(v1);
    local v4 = if not v3.SearchUuid then v3.Name else v3.SearchUuid;
    local v5 = v0.getRecommendedKey(v3);
    local v6 = false;
    if (l_OwnedItemIdsBySubtype_0 ~= nil and v4 ~= nil) and l_OwnedItemIdsBySubtype_0[v4] ~= nil then
        v6 = #l_OwnedItemIdsBySubtype_0[v4] > 0;
    end;
    return (not not v3 and not v3.RenderItemTiles or v6) or #(v1.AvatarExperience.AvatarEditor.RecommendedItems[v5] or {}) > 0;
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Cryo);
local l_memoize_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).memoize;
local v5 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v6 = require(l_Modules_0.AvatarExperience.AvatarEditor.Utils);
local v7 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local v8 = require(l_Modules_0.AvatarExperience.Common.Utils);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local _ = require(l_Modules_0.AvatarExperience.Common.CategoryTypes);
local function v25(v11, v12, v13, v14, v15, v16, v17, v18, v19, v20)
    local v21 = v19.slotInfo[v19.selectedSlot];
    local v22 = v12.RenderOutfitItemTiles == true;
    if v12.PageType == v5.PageType.Emotes then
        if not v21 then
            return false;
        else
            return v21.assetId == v11;
        end;
    elseif v13 then
        if v12.Sort and v20[v11] == v7.OutfitOrAsset.Outfit then
            v22 = true;
        end;
        if not v22 or not v18[v11] then
            for _, v24 in v13, nil, nil do
                if v24[v11] then
                    return true;
                end;
            end;
            return false;
        else
            return v6.isWearingOutfitNoState(v18[v11], v17, v14, v15, v13, v16);
        end;
    else
        return false;
    end;
end;
local v50 = l_memoize_0(function(v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36)
    local v37 = {};
    local v38 = false;
    if v26 then
        local v39 = v28[v26];
        if not (v26 ~= v7.EditableCharacterKey) or v26 == v7.PurchasedCharacterKey then
            v39 = v3.List.join(v28[v7.PurchasedCharacterKey] or {}, v28[v7.EditableCharacterKey] or {});
        end;
        if v39 then
            for _, v41 in v39, nil, nil do
                local v42 = v25(v41, v27, v29, v30, v31, v32, v33, v34, v35, v36);
                v37[v41] = v42;
                if v42 then
                    v38 = v42;
                end;
            end;
            if v27.Sort then
                local v43 = v27.AssetTypeIdStrings or {};
                for _, v45 in v43, nil, nil do
                    for v46, v47 in v29, nil, nil do
                        for v48, _ in v47, nil, nil do
                            if v45 == v46 then
                                v37[v48] = true;
                                v38 = true;
                            end;
                        end;
                    end;
                end;
            end;
            return v37, v38;
        else
            return v37, v38;
        end;
    else
        return v37, v38;
    end;
end);
return function(v51, v52)
    return v50(v52, v8.getAvatarEditorCategoryInfoFromState(v51), v51.AvatarExperience.AvatarEditor.Character.OwnedItemIdsBySubtype, v51.AvatarExperience.AvatarEditor.Character.EquippedAssets, v51.AvatarExperience.AvatarEditor.Character.BodyColors, v51.AvatarExperience.AvatarEditor.Character.BodyColor3s, v51.AvatarExperience.AvatarEditor.Character.AvatarScales, v51.AvatarExperience.AvatarEditor.Character.AvatarType, v51.AvatarExperience.AvatarEditor.OutfitInfos, v51.AvatarExperience.AvatarEditor.EquippedEmotes, v51.AvatarExperience.AvatarEditor.Character.OutfitOrAsset);
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.AvatarExperience.AvatarEditor.Utils);
local v2 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local _ = require(l_Modules_0.AvatarExperience.Common.AvatarExperienceState);
return function(v4)
    local l_AvatarExperience_0 = v4.AvatarExperience;
    local l_bodyPartForSkinColoringIds_0 = v2.BodyPartButtonData[l_AvatarExperience_0.AvatarEditor.BodyColorPickerSettings.selectedBodyPartIndex].bodyPartForSkinColoringIds;
    if not (l_bodyPartForSkinColoringIds_0 ~= nil) or #l_bodyPartForSkinColoringIds_0 == 0 then
        return nil;
    else
        local v7 = v1.getRangeIdSharedByBodyParts(l_bodyPartForSkinColoringIds_0, l_AvatarExperience_0.AvatarEditor.Character.BodyPartRangeIds);
        if v7 == nil then
            return nil;
        elseif v1.getColor3SharedByBodyParts(l_bodyPartForSkinColoringIds_0, l_AvatarExperience_0.AvatarEditor.Character.BodyColor3s) == nil then
            return nil;
        else
            return v7;
        end;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.LuaApp.Enum.RetrievalStatus);
local _ = require(l_Modules_0.AvatarExperience.Common.AvatarExperienceState);
return function(v3, v4)
    if v4 then
        assert(v4, "searchUuid is non-nil. Silence type checker.");
        local v5 = v3.AvatarExperience.AvatarEditor.UserInventoryRecommendationsFetchStatus[v4];
        if v5 == nil then
            v5 = v1.NotStarted;
        end;
        return v5;
    else
        return v1.NotStarted;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Symbol);
local v2 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v3 = {};
local v4 = v1.named("AvatarEditorServiceThunkTag");
v3.middleware = function(v5)
    return function(v6, v7)
        return function(v8)
            if typeof(v8) == "table" and v8[v4] == true then
                return v8(v7, v5);
            else
                return v6(v8);
            end;
        end;
    end;
end;
v3.new = function(v9, v10)
    v2.isNonEmptyString(v9, "name");
    v2.isType(v10, "function", "onInvoke");
    return (setmetatable({
        [v4] = true,
        type = v9
    }, {
        __call = function(_, ...)
            return v10(...);
        end
    }));
end;
v3.test = function(v12, v13, v14)
    local l_assert_0 = v2.assert;
    local v16 = false;
    if type(v12) == "table" then
        v16 = v12[v4] == true;
    end;
    l_assert_0(v16, "'thunk' must be a valid AvatarEditorServiceThunk");
    return v12(v13, v14);
end;
return v3;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_GuiService_0 = game:GetService("GuiService");
local l_PerformFetch_0 = require(l_CorePackages_0.Workspace.Packages.Http).PerformFetch;
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v5 = require(l_Modules_0.LuaApp.mutedError);
local v6 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v7 = require(l_CorePackages_0.Promise);
local v8 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local v9 = require(l_Modules_0.AvatarExperience.Common.Utils);
local v10 = require(l_Modules_0.LuaApp.Actions.SetCurrentToastMessage);
local v11 = require(l_Modules_0.LuaApp.Enum.ToastType);
local v12 = require(l_Modules_0.AvatarExperience.AvatarEditor.Utils);
local v13 = require(l_Modules_0.AvatarExperience.Common.RoduxUtils);
local v14 = require(l_Modules_0.AvatarExperience.AvatarEditor.Thunks.GrantOutfit);
local v15 = require(l_Modules_0.AvatarExperience.Flags.FFlagXBoxCreateCostumeEnabled);
local v16 = require(l_Modules_0.AvatarExperience.Flags.FFlagShowCreateCostumeXBoxSignalR);
local v17 = game:DefineFastFlag("XBoxCreateCostumeRetry", false);
local v18 = require(l_Modules_0.AvatarExperience.Flags.GetFFlagAvatarEditorServiceCreateOutfitSupportsGears);
local v19 = l_GuiService_0:IsTenFootInterface();
local v20 = require(l_CorePackages_0.Cryo);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local v22 = require(l_Modules_0.AvatarExperience.Common.Analytics.reportAvatarEventCounterNoAnalyticsArgument);
local v23 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v24 = require(l_Modules_0.AvatarExperience.Flags.GetFFlagEnableAvatarEditorServiceAPIErrorLogging);
local v25 = {
    toastMessage = "Feature.Avatar.Message.InvalidName",
    isLocalized = false,
    toastType = v11.InformationMessage
};
local v26 = {
    toastMessage = "Feature.Avatar.Message.ReachedMaxOutfits",
    isLocalized = false,
    toastType = v11.InformationMessage
};
local v27 = {
    toastMessage = "Feature.Avatar.Message.UnknownErrorCreatingOutfit",
    isLocalized = false,
    toastType = v11.InformationMessage
};
return function(v28, v29, v30, v31, v32, v33)
    v6.isType(v28, "function", "CreateOutfit thunk expects networkImpl to be a function");
    v6.isTypeOrNil(v29, "string", "CreateOutfit thunk expects name to be a string or nil");
    v6.isType(v30, "table", "CreateOutfit thunk expects avatarEditorAnalytics to be a table");
    v6.isTypeOrNil(v31, "function", "CreateOutfit thunk expects checkIsMounted to be a function or nil");
    v6.isTypeOrNil(v32, "function", "CreateOutfit thunk expects onComplete to be a callback or nil");
    v6.isTypeOrNil(v33, "Instance", "CreateOutfit thunk expects altHumanoidDescription to be an Instance or nil");
    if not (not v15 and not v16) and v29 == nil then
        v29 = "";
    end;
    return v13.convertAvatarEditorServiceThunk("CreateOutfit", function(v34, v35)
        return l_PerformFetch_0.Single(v8.CreateOutfitKey, function(v36)
            local v37 = v36:getState();
            local v38 = Enum.HumanoidRigType[v37.AvatarExperience.AvatarEditor.Character.AvatarType];
            local v39 = {};
            local v40 = 0;
            if not (not v15 or not v19) then
                v39 = v37.AvatarExperience.AvatarEditor.Character.OwnedItemIdsBySubtype[v8.EditableCharacterKey] or {};
            end;
            local v41 = nil;
            v41 = if v33 ~= nil then v33 else v12.getHumanoidDescriptionFromState(v37.AvatarExperience);
            if v18() then
                v40 = v12.getGearAssetIdFromState(v37.AvatarExperience);
            end;
            return v7.new(function(v42, v43)
                local v44 = if not v18() then v35:NoPromptCreateOutfit(v41, v38, v29, 0) else v35:NoPromptCreateOutfit(v41, v38, v29, v40);
                while not v44 do
                    v35.PromptCreateOutfitCompleted:Wait();
                    v44 = v35:NoPromptCreateOutfit(v41, v38, v29, 0);
                    if v24() then
                        v22(v23.Counter.AvatarEditorServiceErrors.NoPromptCreateOutfit);
                    end;
                end;
                local v45, v46 = v35.PromptCreateOutfitCompleted:Wait();
                if v45 == Enum.AvatarPromptResult.Success then
                    if not (not v15 or not v19) then
                        if not v17 then
                            local v47 = v9.tableToCamelCaseKeys((v35:GetOutfits():GetCurrentPage()));
                            if v20.isEmpty(v39) and v20.isEmpty(v47) or v39[1] == tostring(v47[1].id) then
                                v5("[Avatar Editor] Updated outfits does not have a new outfit id");
                                if v24() then
                                    v22(v23.Counter.AvatarEditorServiceErrors.GetOutfits);
                                end;
                            end;
                            v36:dispatch(v14(v28, (tostring(v47[1].id))));
                        else
                            v12.ExponentialRepeat(v31, function()
                                local v48 = v9.tableToCamelCaseKeys((v35:GetOutfits():GetCurrentPage()));
                                if not v20.isEmpty(v39) and next(v48) or v39[1] ~= tostring(v48[1].id) then
                                    v36:dispatch(v14(v28, (tostring(v48[1].id))));
                                    return true;
                                else
                                    return false;
                                end;
                            end);
                        end;
                    end;
                    v30.outfitCreated(v29);
                    v42();
                    if v32 ~= nil then
                        v32(true);
                        return ;
                    end;
                else
                    if v46 == Enum.CreateOutfitFailure.InvalidName then
                        v36:dispatch(v10(v25));
                    elseif v46 == Enum.CreateOutfitFailure.OutfitLimitReached then
                        v36:dispatch(v10(v26));
                    elseif v46 == Enum.CreateOutfitFailure.Other then
                        v36:dispatch(v10(v27));
                    end;
                    if v24() then
                        v22(v23.Counter.AvatarEditorServiceErrors.CreateOutfit);
                    end;
                    v43();
                    if v32 ~= nil then
                        v32(false);
                    end;
                end;
            end);
        end)(v34):catch(function(_)
        end);
    end);
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_PerformFetch_0 = require(l_CorePackages_0.Workspace.Packages.Http).PerformFetch;
local v3 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v4 = require(l_CorePackages_0.Promise);
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v6 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local v7 = require(l_Modules_0.LuaApp.Actions.SetCurrentToastMessage);
local v8 = require(l_Modules_0.LuaApp.Enum.ToastType);
local v9 = require(l_Modules_0.AvatarExperience.AvatarEditor.Utils);
local v10 = require(l_Modules_0.AvatarExperience.Common.RoduxUtils);
local v11 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.RevokeOutfit);
local v12 = {
    toastMessage = "Feature.Avatar.Message.FailedDeleteCostume",
    isLocalized = false,
    toastType = v8.InformationMessage
};
local function _(v13)
    return v6.DeleteOutfitsKey .. v13;
end;
return function(v15)
    v3.isType(v15, "string", "DeleteOutfit thunk expects id to be a string");
    return v10.convertAvatarEditorServiceThunk("DeleteOutfit", function(v16, v17)
        return l_PerformFetch_0.Single(v6.DeleteOutfitsKey .. v15, function(v18)
            return v4.new(function(v19, v20)
                if v9.doAESCallAndAwaitResult(v17, v17.NoPromptDeleteOutfit, v17.PromptDeleteOutfitCompleted, v15) == Enum.AvatarPromptResult.Success then
                    v18:dispatch(v11(v15));
                    v19();
                    return ;
                else
                    v18:dispatch(v7(v12));
                    v20();
                    return ;
                end;
            end);
        end)(v16);
    end);
end;