local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_RunService_0 = game:GetService("RunService");
local l_Packages_0 = l_Parent_0.Packages;
local v3 = require(l_Packages_0.Framework);
local v4 = require(l_Packages_0.Roact);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v7 = require(l_Parent_0.Src.Util.Constants);
local l_Pane_0 = v3.UI.Pane;
local v9 = v4.Component:extend("LoadingBar");
v9.init = function(v10, _)
    v10:setState({
        progress = 0,
        time = 0
    });
end;
v9.loadUntil = function(v12, v13)
    while v12.state.progress < v13 do
        local v14 = l_RunService_0.RenderStepped:Wait();
        if v12.isMounted then
            local v15 = v12.state.time + v14;
            v12:setState({
                time = v15,
                progress = v15 / v12.props.loadingTime
            });
        else
            break;
        end;
    end;
end;
v9.didMount = function(v16)
    v16.isMounted = true;
    spawn(function()
        v16:loadUntil(v16.props.holdPercent);
        while v16.isMounted and v16.props.onFinish == nil do
            l_RunService_0.RenderStepped:Wait();
        end;
        v16:loadUntil(1);
        v16:loadUntil(1.5);
        if v16.isMounted then
            v16.props.onFinish();
        end;
    end);
end;
v9.willUnmount = function(v17)
    v17.isMounted = false;
end;
v9.render = function(v18)
    local l_props_0 = v18.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local v21 = math.min(math.max(v18.state.progress, 0), 1);
    return v4.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = l_props_0.Size,
        Position = l_props_0.Position
    }, {
        LoadingTitle = v4.createElement("TextLabel", {
            BackgroundTransparency = 1,
            Font = v7.FONT,
            Position = UDim2.new(0, 0, 0, -30),
            Size = UDim2.new(1, 0, 0, 20),
            Text = l_props_0.loadingText .. " ( " .. math.floor(v21 * 100 + 0.5) .. "% )",
            TextColor3 = l_Stylizer_0.loading.text,
            TextSize = v7.FONT_SIZE_MEDIUM,
            TextXAlignment = Enum.TextXAlignment.Center,
            TextYAlignment = Enum.TextYAlignment.Center
        }),
        LoadingBackgroundBar = v4.createElement(l_Pane_0, {
            Style = "BorderBox"
        }, {
            LoadingBar = v4.createElement(l_Pane_0, {
                Style = "Box",
                BackgroundColor = l_Stylizer_0.loading.bar,
                Size = UDim2.new(v21, 0, 1, 0)
            })
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v9));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v4 = require(l_Parent_0.Src.Components.ConvertToPackageWindow.AssetThumbnailPreview);
local v5 = require(l_Parent_0.Src.Util.LayoutOrderIterator);
local v6 = v1.PureComponent:extend("PreviewArea");
v6.render = function(v7)
    local l_props_0 = v7.props;
    return v1.createElement("Frame", {
        Size = UDim2.new(0, l_props_0.TotalWidth, 1, 0),
        BackgroundTransparency = 0,
        BackgroundColor3 = l_props_0.Stylizer.previewArea.backgroundColor,
        BorderSizePixel = 0,
        LayoutOrder = l_props_0.LayoutOrder
    }, {
        Padding = v1.createElement("UIPadding", {
            PaddingTop = UDim.new(0, 24),
            PaddingBottom = UDim.new(0, 5),
            PaddingLeft = UDim.new(0, 5),
            PaddingRight = UDim.new(0, 5)
        }),
        UIListLayout = v1.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            SortOrder = Enum.SortOrder.LayoutOrder,
            Padding = UDim.new(0, 20)
        }),
        AssetThumbnailPreview = v1.createElement(v4, {
            Size = UDim2.new(0, 150, 0, 150),
            ShowTitle = false,
            LayoutOrder = v5.new():getNextOrder()
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v6));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Framework);
local v3 = require(l_Packages_0.Roact);
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_ScrollingFrame_0 = v2.UI.ScrollingFrame;
local l_Util_0 = l_Parent_0.Src.Util;
local v8 = require(l_Util_0.LayoutOrderIterator);
local v9 = require(l_Util_0.Constants);
local l_ConvertToPackageWindow_0 = l_Parent_0.Src.Components.ConvertToPackageWindow;
local v11 = require(l_ConvertToPackageWindow_0.ConfigTextField);
local v12 = require(l_ConvertToPackageWindow_0.ConfigAccess);
local v13 = require(l_ConvertToPackageWindow_0.ConfigComment);
local v14 = v3.PureComponent:extend("PublishAsset");
v14.init = function(v15, _)
    v15.state = {};
    v15.baseFrameRef = v3.createRef();
end;
v14.render = function(v17)
    local l_props_0 = v17.props;
    local l_Localization_0 = l_props_0.Localization;
    local l_Size_0 = l_props_0.Size;
    local l_LayoutOrder_0 = l_props_0.LayoutOrder;
    local l_name_0 = l_props_0.name;
    local l_description_0 = l_props_0.description;
    local l_owner_0 = l_props_0.owner;
    local l_allowComment_0 = l_props_0.allowComment;
    local l_commentOn_0 = l_props_0.commentOn;
    local l_onNameChange_0 = l_props_0.onNameChange;
    local l_onDescChange_0 = l_props_0.onDescChange;
    local l_onOwnerSelected_0 = l_props_0.onOwnerSelected;
    local l_toggleComment_0 = l_props_0.toggleComment;
    local v31 = v8.new();
    return v3.createElement(l_ScrollingFrame_0, {
        AutomaticCanvasSize = Enum.AutomaticSize.Y,
        LayoutOrder = l_LayoutOrder_0,
        Size = l_Size_0,
        [v3.Ref] = v17.baseFrameRef
    }, {
        Padding = v3.createElement("UIPadding", {
            PaddingTop = UDim.new(0, 24),
            PaddingBottom = UDim.new(0, 24),
            PaddingLeft = UDim.new(0, 24),
            PaddingRight = UDim.new(0, 24)
        }),
        UIListLayout = v3.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            SortOrder = Enum.SortOrder.LayoutOrder,
            Padding = UDim.new(0, 5),
            [v3.Change.AbsoluteContentSize] = function(v32)
                if v17.baseFrameRef.current then
                    v17.baseFrameRef.current.CanvasSize = UDim2.new(l_Size_0.X.Scale, l_Size_0.X.Offset, 0, v32.AbsoluteContentSize.y + 48);
                    return ;
                else
                    return ;
                end;
            end
        }),
        Title = v3.createElement(v11, {
            Title = l_Localization_0:getText("General", "Title"),
            TotalHeight = 100,
            MaxCount = v9.NAME_CHARACTER_LIMIT,
            TextChangeCallBack = l_onNameChange_0,
            TextContent = l_name_0,
            LayoutOrder = v31:getNextOrder()
        }),
        Description = v3.createElement(v11, {
            Title = l_Localization_0:getText("General", "Description"),
            TotalHeight = 320,
            MaxCount = v9.DESCRIPTION_CHARACTER_LIMIT,
            TextChangeCallBack = l_onDescChange_0,
            TextContent = l_description_0,
            LayoutOrder = v31:getNextOrder()
        }),
        Ownership = v3.createElement(v12, {
            Title = l_Localization_0:getText("General", "Ownership"),
            owner = l_owner_0,
            TotalHeight = 70,
            onDropDownSelect = l_onOwnerSelected_0,
            LayoutOrder = v31:getNextOrder()
        }),
        Comment = v3.createElement(v13, {
            Title = l_Localization_0:getText("General", "Comments"),
            TotalHeight = 80,
            CommentEnabled = l_allowComment_0,
            CommentOn = l_commentOn_0,
            ToggleCallback = l_toggleComment_0,
            LayoutOrder = v31:getNextOrder()
        })
    });
end;
return (l_withContext_0({
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer
})(v14));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Roact);
local v3 = require(l_Packages_0.RoactRodux);
local l_Components_0 = l_Parent_0.Src.Components;
local v5 = require(l_Components_0.ConvertToPackageWindow.AssetConfig);
local v6 = require(l_Components_0.ConvertToPackageWindow.AssetUpload);
local v7 = require(l_Components_0.ConvertToPackageWindow.AssetUploadResult);
local v8 = require(l_Parent_0.Src.Util.Constants);
local function _(v9)
    return v9 == v8.SCREENS.CONFIGURE_ASSET;
end;
local function _(v11)
    return v11 == v8.SCREENS.UPLOADING_ASSET;
end;
local function _(v13)
    return v13 == v8.SCREENS.UPLOAD_ASSET_RESULT;
end;
local v15 = v2.PureComponent:extend("ScreenSelect");
v15.render = function(v16)
    local l_props_0 = v16.props;
    local l_currentScreen_0 = l_props_0.currentScreen;
    local v19 = UDim2.new(1, 0, 1, 0);
    local l_onClose_0 = l_props_0.onClose;
    local l_instances_0 = l_props_0.instances;
    return v2.createElement("Frame", {
        Size = v19,
        BackgroundTransparency = 1
    }, {
        AssetConfig = l_currentScreen_0 == v8.SCREENS.CONFIGURE_ASSET and v2.createElement(v5, {
            Size = v19,
            assetName = l_props_0.assetName,
            onClose = l_onClose_0,
            pluginGui = l_props_0.pluginGui,
            instances = l_instances_0
        }),
        AssetUpload = l_currentScreen_0 == v8.SCREENS.UPLOADING_ASSET and v2.createElement(v6, {
            Size = v19,
            onClose = l_onClose_0,
            instances = l_instances_0
        }),
        AssetUploadResult = l_currentScreen_0 == v8.SCREENS.UPLOAD_ASSET_RESULT and v2.createElement(v7, {
            Size = v19,
            onClose = l_onClose_0,
            instances = l_instances_0
        })
    });
end;
return v3.connect(function(v22, _)
    return {
        currentScreen = (v22 or {}).AssetConfigReducer.currentScreen
    };
end)(v15);


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Roact);
local v3 = require(l_Packages_0.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_GetTextSize_0 = v3.Util.GetTextSize;
local v7 = require(l_Parent_0.Src.Util.Constants);
local l_UI_0 = v3.UI;
local l_Button_0 = l_UI_0.Button;
local l_Dialog_0 = l_UI_0.Dialog;
local v11 = v2.PureComponent:extend("MessageBox");
v11.init = function(v12, _)
    v12.isDead = false;
    v12.onEnabledChanged = function(v14)
        if not v12.isDead then
            if not (v14.Enabled or not v12.props.onClose) then
                v12.props.onClose();
            end;
            return ;
        else
            return ;
        end;
    end;
    v12.onAncestryChanged = function(_, _, v17)
        if not v12.isDead then
            if not (v17 or not v12.props.onClose) then
                v12.props.onClose();
            end;
            return ;
        else
            return ;
        end;
    end;
end;
v11.willUnmount = function(v18)
    v18.isDead = true;
end;
v11.render = function(v19)
    local l_props_0 = v19.props;
    local l_Localization_0 = l_props_0.Localization;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local v23 = l_props_0.Title or "";
    local v24 = l_props_0.Text or "";
    local v25 = l_props_0.InformativeText or "";
    local v26 = l_props_0.Icon or "";
    local v27 = l_props_0.mockTesting or "";
    local v28 = #v25 ~= 0;
    local v29 = v26 ~= "";
    local l_FONT_0 = v7.FONT;
    local l_FONT_SIZE_MEDIUM_0 = v7.FONT_SIZE_MEDIUM;
    local l_FONT_1 = v7.FONT;
    local l_FONT_SIZE_SMALL_0 = v7.FONT_SIZE_SMALL;
    local l_messageBox_0 = l_Stylizer_0.messageBox;
    local v35 = l_props_0.buttons or {};
    if #v35 == 0 then
        v35 = {
            {
                Text = l_Localization_0:getText("General", "OK"),
                action = "ok"
            }
        };
    end;
    local l_MESSAGE_BOX_BUTTON_WIDTH_0 = v7.MESSAGE_BOX_BUTTON_WIDTH;
    local v37 = {
        UIListLayout = v2.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            FillDirection = Enum.FillDirection.Horizontal,
            Padding = UDim.new(0, 15)
        })
    };
    for v38, v39 in ipairs(v35) do
        v37[v38] = v2.createElement(l_Button_0, {
            OnClick = v39.OnClick,
            Size = UDim2.new(0, l_MESSAGE_BOX_BUTTON_WIDTH_0, 1, 0),
            Style = "Round",
            Text = v39.Text
        });
    end;
    local v40 = math.max(math.min(l_GetTextSize_0(v24, l_FONT_SIZE_MEDIUM_0, l_FONT_0, Vector2.new(0, 0)).X, 424), (math.min(l_GetTextSize_0(v25, l_FONT_SIZE_SMALL_0, l_FONT_1, Vector2.new(0, 0)).X, 192)));
    local v41 = not v29 and 0 or 32;
    local v42 = not v29 and 0 or 20;
    local v43 = v41 + v42;
    local v44 = math.max(math.max(#v35 * l_MESSAGE_BOX_BUTTON_WIDTH_0 + (#v35 - 1) * 15, v43 + v40), 120);
    local v45 = v44 - v43;
    local v46 = l_GetTextSize_0(v24, l_FONT_SIZE_MEDIUM_0, l_FONT_0, Vector2.new(v45, 1000));
    local v47 = l_GetTextSize_0(v25, l_FONT_SIZE_SMALL_0, l_FONT_1, Vector2.new(v45, 1000));
    local l_Y_0 = v46.Y;
    local l_Y_1 = v47.Y;
    local v50 = math.max(v41, l_Y_0 + (not not v28 and 8 + l_Y_1 or 0));
    local v51 = (12 + v44) + 12;
    local v52 = (((20 + v50) + 20) + 30) + 12;
    if v27 ~= "" then
        return nil;
    else
        return v2.createElement(l_Dialog_0, {
            Title = v23,
            Modal = true,
            Resizable = false,
            Size = Vector2.new(v51, v52),
            MinSize = Vector2.new(v51, v52),
            Enabled = true,
            OnClose = l_props_0.onClose,
            ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
            [v2.Change.Enabled] = v19.onEnabledChanged,
            [v2.Event.AncestryChanged] = v19.onAncestryChanged
        }, {
            Background = v2.createElement("Frame", {
                Position = UDim2.new(0, 0, 0, 0),
                Size = UDim2.new(1, 0, 1, 0),
                BackgroundColor3 = l_messageBox_0.backgroundColor
            }, {
                UIPadding = v2.createElement("UIPadding", {
                    PaddingBottom = UDim.new(0, 12),
                    PaddingLeft = UDim.new(0, 12),
                    PaddingRight = UDim.new(0, 12),
                    PaddingTop = UDim.new(0, 20)
                }),
                UIListLayout = v2.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    HorizontalAlignment = Enum.HorizontalAlignment.Center,
                    VerticalAlignment = Enum.VerticalAlignment.Top,
                    Padding = UDim.new(0, 20)
                }),
                Information = v2.createElement("Frame", {
                    Size = UDim2.new(1, 0, 0, v50),
                    BackgroundTransparency = 1,
                    LayoutOrder = 1
                }, {
                    UIListLayout = v2.createElement("UIListLayout", {
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        HorizontalAlignment = Enum.HorizontalAlignment.Center,
                        VerticalAlignment = Enum.VerticalAlignment.Top,
                        Padding = UDim.new(0, v42),
                        FillDirection = Enum.FillDirection.Horizontal
                    }),
                    Icon = v2.createElement("ImageLabel", {
                        Size = UDim2.new(0, v41, 0, v41),
                        BackgroundTransparency = 1,
                        LayoutOrder = 0,
                        Image = v26
                    }),
                    Texts = v2.createElement("Frame", {
                        LayoutOrder = 1,
                        Size = UDim2.new(1, -v43, 1, 0),
                        BackgroundTransparency = 1
                    }, {
                        UIListLayout = v2.createElement("UIListLayout", {
                            SortOrder = Enum.SortOrder.LayoutOrder,
                            HorizontalAlignment = Enum.HorizontalAlignment.Center,
                            VerticalAlignment = Enum.VerticalAlignment.Top,
                            Padding = UDim.new(0, 8),
                            FillDirection = Enum.FillDirection.Vertical
                        }),
                        TextLabel = v2.createElement("TextLabel", {
                            LayoutOrder = 0,
                            Size = UDim2.new(1, 0, 0, l_Y_0),
                            BackgroundTransparency = 1,
                            Text = v24,
                            Font = l_FONT_0,
                            TextSize = l_FONT_SIZE_MEDIUM_0,
                            TextColor3 = l_messageBox_0.textColor,
                            TextXAlignment = Enum.TextXAlignment.Center,
                            TextYAlignment = Enum.TextYAlignment.Top,
                            TextWrapped = true
                        }),
                        InformativeLabel = v28 and v2.createElement("TextLabel", {
                            LayoutOrder = 1,
                            Size = UDim2.new(1, 0, 0, l_Y_1),
                            BackgroundTransparency = 1,
                            Text = v25,
                            Font = l_FONT_1,
                            TextSize = l_FONT_SIZE_SMALL_0,
                            TextColor3 = l_messageBox_0.informativeTextColor,
                            TextXAlignment = Enum.TextXAlignment.Center,
                            TextYAlignment = Enum.TextYAlignment.Top,
                            TextWrapped = true
                        })
                    })
                }),
                Buttons = v2.createElement("Frame", {
                    Size = UDim2.new(1, 0, 0, 30),
                    BackgroundTransparency = 1,
                    LayoutOrder = 2
                }, v37)
            })
        });
    end;
end;
return (l_withContext_0({
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer
})(v11));


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Roact);
local l_ContextServices_0 = require(l_Packages_0.Framework).ContextServices;
local v4 = require(l_Parent_0.Src.ContextServices.NetworkContext);
local v5 = v2.PureComponent:extend("ServiceWrapper");
v5.init = function(v6, _)
    assert(v6.props[v2.Children] ~= nil, "Expected child elements to wrap");
    assert(v6.props.networkInterface ~= nil, "Expected a NetworkInterface object");
    assert(v6.props.localization ~= nil, "Expected a Localization object");
    assert(v6.props.plugin ~= nil, "Expected a plugin object");
    assert(v6.props.mouse ~= nil, "Expected a mouse object");
    assert(v6.props.store ~= nil, "Expected a Rodux Store object");
    assert(v6.props.theme ~= nil, "Expected a PluginTheme object");
    assert(v6.props.focusGui ~= nil, "Expected a FocusGui object");
end;
v5.render = function(v8)
    local l_props_0 = v8.props;
    return l_ContextServices_0.provide({
        l_ContextServices_0.Store.new(l_props_0.store),
        l_ContextServices_0.Focus.new(l_props_0.focusGui),
        l_props_0.theme,
        l_props_0.localization,
        l_ContextServices_0.Plugin.new(l_props_0.plugin),
        v4.new(l_props_0.networkInterface),
        l_ContextServices_0.Mouse.new(l_props_0.mouse)
    }, v8.props[v2.Children]);
end;
return v5;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local l_ContextItem_0 = require(l_Parent_0.Packages.Framework).ContextServices.ContextItem;
local v3 = require(l_Parent_0.Src.Util.Symbol).named("NetworkInterface");
local v4 = v1.PureComponent:extend("NetworkContext");
v4.init = function(v5, v6)
    v5._context[v3] = v6.networkInterface;
end;
v4.render = function(v7)
    return v1.oneChild(v7.props[v1.Children]);
end;
return l_ContextItem_0:createSimple("Network");


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Networking_0 = require(l_Parent_0.DEPRECATED_modules.Http).Networking;
local v2 = require(l_Parent_0.Src.Util.DebugFlags);
local v3 = require(l_Parent_0.Src.Util.Urls);
local v4 = {};
v4.__index = v4;
v4.new = function()
    local v5 = {
        _networkImp = l_Networking_0.new()
    };
    setmetatable(v5, v4);
    return v5;
end;
local function v10(v6, v7, v8, v9)
    if v2.shouldDebugUrls() then
        print(("NetworkInterface:%s()"):format(v6));
        print(("\t%s %s"):format(v7:upper() or "method=nil", v8 or "url=nil"));
        if v9 then
            print(("\t%s"):format((tostring(v9))));
        end;
    end;
end;
v4.jsonEncode = function(v11, v12)
    return v11._networkImp:jsonEncode(v12);
end;
v4.postUploadAsset = function(v13, v14, v15, v16, v17, v18, v19, v20, v21, v22)
    local v23 = v3.constructPostUploadAssetUrl(v14, v15, v16, v17, v18, v19, v20, v21);
    v10("uploadCatalogItem", "POST", v23, v22);
    return v13._networkImp:httpPost(v23, v22);
end;
v4.getMyGroups = function(v24, _)
    local v26 = v3.constructGetMyGroupUrl();
    v10("getMyGroups", "GET", v26);
    return v24._networkImp:httpGetJson(v26);
end;
return v4;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Cryo);
local v3 = require(l_Packages_0.Rodux);
local l_Actions_0 = l_Parent_0.Src.Actions;
return v3.createReducer({
    assetConfigData = {},
    versionHistory = nil,
    changed = {},
    assetId = nil,
    assetName = nil,
    instances = nil,
    clonedInstance = nil,
    assetTypeEnum = nil,
    screenConfigs = {},
    isCatalogItemCreator = false,
    currentScreen = require(l_Parent_0.Src.Util.Constants).SCREENS.CONFIGURE_ASSET,
    totalResults = 0,
    resultsArray = {},
    filteredResultsArray = {}
}, {
    [require(l_Actions_0.SetCurrentScreen).name] = function(v5, v6)
        return v2.Dictionary.join(v5, {
            currentScreen = v6.currentScreen
        });
    end,
    [require(l_Actions_0.SetAssetConfigData).name] = function(v7, v8)
        return v2.Dictionary.join(v7, {
            assetConfigData = v8.assetConfigData
        });
    end,
    [require(l_Actions_0.SetAssetName).name] = function(v9, v10)
        return v2.Dictionary.join(v9, {
            assetName = v10.assetName
        });
    end,
    [require(l_Actions_0.AddChange).name] = function(v11, v12)
        return v2.Dictionary.join(v11, {
            changed = v2.Dictionary.join(v11.changed or {}, {
                [v12.setting] = v12.value
            })
        });
    end,
    [require(l_Actions_0.ClearChange).name] = function(v13, v14)
        return v2.Dictionary.join(v13, {
            changed = v2.Dictionary.join(v13.changed or {}, {
                [v14.setting] = v2.None
            })
        });
    end,
    [require(l_Actions_0.UploadResult).name] = function(v15, v16)
        return v2.Dictionary.join(v15, {
            uploadSucceeded = v16.uploadSucceeded
        });
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Cryo);
local v3 = require(l_Packages_0.Rodux);
local l_Actions_0 = l_Parent_0.Src.Actions;
return v3.createReducer({
    assetGroupData = {},
    groupsArray = {}
}, {
    [require(l_Actions_0.SetMyGroups).name] = function(v5, v6)
        return v2.Dictionary.join(v5, {
            groupsArray = v6.groupsArray
        });
    end,
    [require(l_Actions_0.SetAssetGroupData).name] = function(v7, v8)
        return v2.Dictionary.join(v7, {
            assetGroupData = v8.assetGroupData
        });
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
return (require(l_Parent_0.Packages.Rodux).combineReducers({
    AssetConfigReducer = require(l_Parent_0.Src.Reducers.AssetConfigReducer),
    GroupReducer = require(l_Parent_0.Src.Reducers.GroupReducer),
    NetworkReducer = require(l_Parent_0.Src.Reducers.NetworkReducer)
}));


local l_Style_0 = require(script.Parent.Parent.Parent.Packages.Framework).Style;
local l_StudioTheme_0 = l_Style_0.Themes.StudioTheme;
local l_StyleKey_0 = l_Style_0.StyleKey;
local l_Colors_0 = l_Style_0.Colors;
local v4 = {
    previewArea = {
        backgroundColor = l_StyleKey_0.MainBackground,
        textColor = l_StyleKey_0.MainText,
        selectedColor = l_Colors_0.White
    },
    publishAsset = {
        titleTextColor = l_StyleKey_0.SubText,
        textColor = l_StyleKey_0.MainText,
        tipsTextColor = l_StyleKey_0.TextDisabled,
        showDropdownRibbon = false,
        highlightDropdownSelectedItem = true
    },
    divider = {
        horizontalLineColor = l_StyleKey_0.Border,
        verticalLineColor = l_StyleKey_0.Border
    },
    scrollingFrame = {
        scrollbarBackgroundColor = l_StyleKey_0.ScrollBarBackground,
        scrollbarImageColor = l_StyleKey_0.TextDisabled
    },
    sideTab = {
        backgroundColor = l_StyleKey_0.MainBackground,
        leftBorderColor = l_Colors_0.Blue,
        tabBackground = l_StyleKey_0.Titlebar,
        contentColor = l_StyleKey_0.TitlebarText,
        selectedColor = l_Colors_0.White,
        textColor = l_StyleKey_0.MainText
    }
};
local v5 = {
    previewArea = {
        backgroundColor = l_StyleKey_0.MainBackground,
        textColor = l_StyleKey_0.MainText,
        selectedColor = l_Colors_0.Blue
    },
    publishAsset = {
        titleTextColor = l_StyleKey_0.SubText,
        textColor = l_StyleKey_0.MainText,
        tipsTextColor = l_Colors_0.Blue,
        showDropdownRibbon = true,
        highlightDropdownSelectedItem = false
    },
    divider = {
        horizontalLineColor = l_StyleKey_0.Titlebar,
        verticalLineColor = l_StyleKey_0.Titlebar
    },
    scrollingFrame = {
        scrollbarBackgroundColor = l_Colors_0.Gray_Lightest,
        scrollbarImageColor = l_Colors_0.Gray_Lightest
    },
    sideTab = {
        backgroundColor = l_StyleKey_0.MainBackground,
        leftBorderColor = l_StyleKey_0.Border,
        tabBackground = l_StyleKey_0.Titlebar,
        contentColor = l_StyleKey_0.TitlebarText,
        selectedColor = l_Colors_0.Blue,
        textColor = l_StyleKey_0.MainText
    }
};
local v6 = {
    assetConfig = {
        backgroundColor = l_StyleKey_0.MainBackground,
        textColor = l_StyleKey_0.MainText,
        labelTextColor = l_StyleKey_0.DimmedText,
        separatorColor = l_StyleKey_0.Border,
        errorColor = l_StyleKey_0.ErrorText
    },
    cancelButton = {
        ButtonColor = l_StyleKey_0.Button,
        ButtonColor_Hover = l_StyleKey_0.ButtonHover,
        ButtonColor_Disabled = l_StyleKey_0.ButtonDisabled,
        TextColor = l_StyleKey_0.MainText,
        TextColor_Disabled = l_StyleKey_0.DimmedText,
        BorderColor = l_StyleKey_0.Border
    },
    defaultButton = {
        ButtonColor = l_StyleKey_0.PrimaryMain,
        ButtonColor_Hover = l_StyleKey_0.PrimaryStatesHoverBackground,
        ButtonColor_Disabled = l_StyleKey_0.DialogMainButtonDisabled,
        TextColor = l_StyleKey_0.TextContrast,
        TextColor_Disabled = l_StyleKey_0.TextDisabled,
        BorderColor = l_StyleKey_0.Light
    },
    footer = {
        backgroundColor = l_StyleKey_0.MainBackground,
        borderColor = l_StyleKey_0.Border
    },
    Labels = {
        TitleBarText = l_StyleKey_0.TitlebarText,
        TitleBarBackground = l_StyleKey_0.Titlebar
    },
    loading = {
        text = l_StyleKey_0.MainText,
        backgroundBar = l_StyleKey_0.TextPrimary,
        bar = l_StyleKey_0.CurrentMarker
    },
    messageBox = {
        backgroundColor = l_StyleKey_0.MainBackground,
        textColor = l_StyleKey_0.MainText,
        informativeTextColor = l_StyleKey_0.SubText
    },
    nav = {
        mainButton = {
            background = l_StyleKey_0.DialogMainButton,
            hoverBackground = l_StyleKey_0.DialogMainButtonHover,
            pressBackground = l_StyleKey_0.DialogMainButtonPressed,
            textColor = l_StyleKey_0.DialogMainButtonText
        },
        button = {
            background = l_StyleKey_0.DialogButton,
            hoverBackground = l_StyleKey_0.DialogButtonHover,
            pressBackground = l_StyleKey_0.DialogButtonPressed,
            textColor = l_StyleKey_0.DialogButtonText
        }
    },
    textField = {
        backgroundColor = l_StyleKey_0.MainBackground,
        borderColor = l_StyleKey_0.Border,
        borderHoveredColor = l_StyleKey_0.CurrentMarker,
        borderSelectedColor = l_Colors_0.Blue
    },
    thumbnailPreview = {
        background = l_StyleKey_0.Item,
        border = l_StyleKey_0.Border,
        text = l_StyleKey_0.MainText,
        placeholderColor = l_StyleKey_0.MainText
    },
    typeSelection = {
        background = l_StyleKey_0.TableItem,
        selector = {
            title = l_StyleKey_0.MainText,
            description = l_StyleKey_0.TextDisabled
        },
        footer = {
            background = l_StyleKey_0.MainBackground,
            border = l_StyleKey_0.Border
        }
    },
    typeValidation = {
        background = l_StyleKey_0.TableItem
    },
    uploadResult = {
        text = l_StyleKey_0.MainText,
        successText = l_StyleKey_0.SuccessMain,
        background = l_StyleKey_0.TableItem,
        link = l_StyleKey_0.TextLink
    }
};
return function(v7)
    local _ = nil;
    return ((if not v7 then l_StudioTheme_0.new(v4, v5) else l_StudioTheme_0.mock(v4, v5)):extend(v6));
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Rodux);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local v4 = require(l_Parent_0.Src.Components.ServiceWrapper);
local v5 = require(l_Parent_0.Src.Resources.MakeTheme);
local v6 = require(l_Parent_0.Src.Reducers.MainReducer);
local v7 = require(l_Parent_0.Src.Networking.NetworkInterfaceMock);
local l_Localization_0 = l_ContextServices_0.Localization;
local v9 = v1.Component:extend("MockServiceWrapper");
v9.render = function(v10)
    return v1.createElement(v4, {
        localization = v10.props.localization or l_Localization_0.mock(),
        plugin = v10.props.plugin or {},
        focusGui = v10.props.focusGui or {},
        networkInterface = v10.props.networkInterface or v7.new(),
        store = v2.Store.new(v6, v10.props.storeState, {
            v2.thunkMiddleware
        }),
        theme = v10.props.theme or v5(true)
    }, v10.props[v1.Children]);
end;
return v9;


local l_deepJoin_0 = require(script.Parent.Parent.Parent.Packages.Framework).Util.deepJoin;
local function v1(v2, v3)
    if not (type(v2) == "table") or type(v3) ~= "table" then
        if not v2 then
            v2 = "nil";
        end;
        if not v3 then
            v3 = "nil";
        end;
        error(string.format("Expected to compare two tables, got %s and %s", tostring(v2), (tostring(v3))));
    end;
    local v4 = 0;
    for _, _ in pairs(v3) do
        v4 = v4 + 1;
    end;
    local v7 = 0;
    for v8, v9 in pairs(v2) do
        v7 = v7 + 1;
        local v10 = v3[v8];
        if type(v9) == "table" then
            v1(v9, v10);
        elseif v9 ~= v10 then
            error(string.format("the field \"%s\" no longer matches", v8));
        end;
    end;
    if v7 ~= v4 then
        return error(string.format("Number of keys mismatch : %d vs %d", v7, v4));
    else
        return true;
    end;
end;
return function(v11, v12)
    assert(type(v11) == "function", "Expected a reducer to test");
    assert(type(v12) == "table", "Expected an action to test");
    local v13 = v11(nil, {
        type = "__nil__"
    });
    local v14 = l_deepJoin_0(v13, {});
    assert(v1(v13, v14), "deepJoin mutates fields");
    v11(v13, v12);
    return v1(v13, v14);
end;


local l_Actions_0 = script.Parent.Parent.Parent.Src.Actions;
local v1 = require(l_Actions_0.AddChange);
local v2 = require(l_Actions_0.ClearChange);
return function(v3, v4, v5)
    return function(v6)
        if v4 == v5 then
            v6:dispatch(v2(v3));
            return ;
        else
            v6:dispatch(v1(v3, v5));
            return ;
        end;
    end;
end;


local v0 = require(script.Parent.Parent.Parent.Src.Util.DebugFlags);
local v1 = {
    OwnershipType = {
        FREE = 0,
        MY = 1,
        RECENT = 2,
        GROUP = 3
    },
    AssetType = {
        MODEL = 0,
        DECAL = 1,
        MESH = 2,
        AUDIO = 3,
        PACKAGE = 4,
        PLUGIN = 5,
        HAT = 6,
        TEE_SHIRT = 7,
        SHIRT = 8,
        PANTS = 9,
        HAIR_ACCESSORY = 10,
        FACE_ACCESSORY = 11,
        NECK_ACCESSORY = 12,
        SHOULDER_ACCESSORY = 13,
        FRONT_ACCESSORY = 14,
        BACK_ACCESSORY = 15,
        WAIST_ACCESSORY = 16
    }
};
v1.ToolboxAssetTypeToEngine = {
    [v1.AssetType.MODEL] = Enum.AssetType.Model,
    [v1.AssetType.DECAL] = Enum.AssetType.Decal,
    [v1.AssetType.MESH] = Enum.AssetType.Mesh,
    [v1.AssetType.AUDIO] = Enum.AssetType.Audio,
    [v1.AssetType.PACKAGE] = Enum.AssetType.Package,
    [v1.AssetType.PLUGIN] = Enum.AssetType.Plugin,
    [v1.AssetType.HAT] = Enum.AssetType.Hat,
    [v1.AssetType.TEE_SHIRT] = Enum.AssetType.TShirt,
    [v1.AssetType.SHIRT] = Enum.AssetType.Shirt,
    [v1.AssetType.PANTS] = Enum.AssetType.Pants,
    [v1.AssetType.HAIR_ACCESSORY] = Enum.AssetType.HairAccessory,
    [v1.AssetType.FACE_ACCESSORY] = Enum.AssetType.FaceAccessory,
    [v1.AssetType.NECK_ACCESSORY] = Enum.AssetType.NeckAccessory,
    [v1.AssetType.SHOULDER_ACCESSORY] = Enum.AssetType.ShoulderAccessory,
    [v1.AssetType.FRONT_ACCESSORY] = Enum.AssetType.FrontAccessory,
    [v1.AssetType.BACK_ACCESSORY] = Enum.AssetType.BackAccessory,
    [v1.AssetType.WAIST_ACCESSORY] = Enum.AssetType.WaistAccessory
};
v1.FREE_MODELS = {
    name = "FreeModels",
    category = "FreeModels",
    ownershipType = v1.OwnershipType.FREE,
    assetType = v1.AssetType.MODEL
};
v1.FREE_DECALS = {
    name = "FreeDecals",
    category = "FreeDecals",
    ownershipType = v1.OwnershipType.FREE,
    assetType = v1.AssetType.DECAL
};
v1.FREE_MESHES = {
    name = "FreeMeshes",
    category = "FreeMeshes",
    ownershipType = v1.OwnershipType.FREE,
    assetType = v1.AssetType.MESH
};
v1.FREE_AUDIO = {
    name = "FreeAudio",
    category = "FreeAudio",
    ownershipType = v1.OwnershipType.FREE,
    assetType = v1.AssetType.AUDIO
};
v1.MY_MODELS = {
    name = "MyModels",
    category = "MyModelsExceptPackage",
    ownershipType = v1.OwnershipType.MY,
    assetType = v1.AssetType.MODEL
};
v1.MY_DECALS = {
    name = "MyDecals",
    category = "MyDecals",
    ownershipType = v1.OwnershipType.MY,
    assetType = v1.AssetType.DECAL
};
v1.MY_MESHES = {
    name = "MyMeshes",
    category = "MyMeshes",
    ownershipType = v1.OwnershipType.MY,
    assetType = v1.AssetType.MESH
};
v1.MY_AUDIO = {
    name = "MyAudio",
    category = "MyAudio",
    ownershipType = v1.OwnershipType.MY,
    assetType = v1.AssetType.AUDIO
};
v1.MY_PLUGINS = {
    name = "MyPlugins",
    category = "MyPlugins",
    ownershipType = v1.AssetType.PLUGIN,
    assetType = v1.AssetType.PLUGIN
};
v1.RECENT_MODELS = {
    name = "RecentModels",
    category = "RecentModels",
    ownershipType = v1.OwnershipType.RECENT,
    assetType = v1.AssetType.MODEL
};
v1.RECENT_DECALS = {
    name = "RecentDecals",
    category = "RecentDecals",
    ownershipType = v1.OwnershipType.RECENT,
    assetType = v1.AssetType.DECAL
};
v1.RECENT_MESHES = {
    name = "RecentMeshes",
    category = "RecentMeshes",
    ownershipType = v1.OwnershipType.RECENT,
    assetType = v1.AssetType.MESH
};
v1.RECENT_AUDIO = {
    name = "RecentAudio",
    category = "RecentAudio",
    ownershipType = v1.OwnershipType.RECENT,
    assetType = v1.AssetType.AUDIO
};
v1.GROUP_MODELS = {
    name = "GroupModels",
    category = "GroupModelsExceptPackage",
    ownershipType = v1.OwnershipType.GROUP,
    assetType = v1.AssetType.MODEL
};
v1.GROUP_DECALS = {
    name = "GroupDecals",
    category = "GroupDecals",
    ownershipType = v1.OwnershipType.GROUP,
    assetType = v1.AssetType.DECAL
};
v1.GROUP_MESHES = {
    name = "GroupMeshes",
    category = "GroupMeshes",
    ownershipType = v1.OwnershipType.GROUP,
    assetType = v1.AssetType.MESH
};
v1.GROUP_AUDIO = {
    name = "GroupAudio",
    category = "GroupAudio",
    ownershipType = v1.OwnershipType.GROUP,
    assetType = v1.AssetType.AUDIO
};
v1.MY_PACKAGES = {
    name = "MyPackages",
    category = "MyPackages",
    ownershipType = v1.OwnershipType.MY,
    assetType = v1.AssetType.PACKAGE
};
v1.GROUP_PACKAGES = {
    name = "GroupPackages",
    category = "GroupPackages",
    ownershipType = v1.OwnershipType.GROUP,
    assetType = v1.AssetType.PACKAGE
};
v1.CREATIONS_DEVELOPMENT_SECTION_DIVIDER = {
    name = "CreationsDevelopmentSectionDivider",
    selectable = false
};
v1.CREATIONS_MODELS = {
    name = "CreationsModels",
    assetType = v1.AssetType.MODEL
};
v1.CREATIONS_DECALS = {
    name = "CreationsDecals",
    assetType = v1.AssetType.DECAL
};
v1.CREATIONS_AUDIO = {
    name = "CreationsAudio",
    assetType = v1.AssetType.AUDIO
};
v1.CREATIONS_MESHES = {
    name = "CreationsMeshes",
    assetType = v1.AssetType.MESH
};
v1.CREATIONS_CATALOG_SECTION_DIVIDER = {
    name = "CreationsCatalogSectionDivider",
    selectable = false
};
v1.CREATIONS_HATS = {
    name = "CreationsHats",
    assetType = v1.AssetType.HAT
};
v1.CREATIONS_TEE_SHIRT = {
    name = "CreationsTeeShirts",
    assetType = v1.AssetType.TEE_SHIRT
};
v1.CREATIONS_SHIRT = {
    name = "CreationsShirts",
    assetType = v1.AssetType.SHIRT
};
v1.CREATIONS_PANTS = {
    name = "CreationsPants",
    assetType = v1.AssetType.PANTS
};
v1.CREATIONS_HAIR = {
    name = "CreationsHair",
    assetType = v1.AssetType.HairAccessory
};
v1.CREATIONS_FACE_ACCESSORYS = {
    name = "CreationsFaceAccessorys",
    assetType = v1.AssetType.FaceAccessory
};
v1.CREATIONS_NECK_ACCESSORYS = {
    name = "CreationsNeckAccessorys",
    assetType = v1.AssetType.NeckAccessory
};
v1.CREATIONS_SHOULDER_ACCESSORYS = {
    name = "CreationsShoulderAccessorys",
    assetType = v1.AssetType.ShoulderAccessory
};
v1.CREATIONS_FRONT_ACCESSORYS = {
    name = "CreationsFrontAccessorys",
    assetType = v1.AssetType.FrontAccessory
};
v1.CREATIONS_BACK_ACCESSORYS = {
    name = "CreationsBackAccessorys",
    assetType = v1.AssetType.BackAccessory
};
v1.CREATIONS_WAIST_ACCESSORYS = {
    name = "CreationsWaistAccessorys",
    assetType = v1.AssetType.WaistAccessory
};
v1.MARKETPLACE = {
    v1.FREE_MODELS,
    v1.FREE_DECALS,
    v1.FREE_MESHES,
    v1.FREE_AUDIO
};
v1.INVENTORY = {
    v1.MY_MODELS,
    v1.MY_DECALS,
    v1.MY_MESHES,
    v1.MY_AUDIO,
    v1.MY_PACKAGES
};
v1.INVENTORY_WITH_GROUPS = {
    v1.MY_MODELS,
    v1.MY_DECALS,
    v1.MY_MESHES,
    v1.MY_AUDIO,
    v1.MY_PACKAGES,
    v1.GROUP_MODELS,
    v1.GROUP_DECALS,
    v1.GROUP_MESHES,
    v1.GROUP_AUDIO
};
v1.RECENT = {
    v1.RECENT_MODELS,
    v1.RECENT_DECALS,
    v1.RECENT_MESHES,
    v1.RECENT_AUDIO
};
local v2 = {
    v1.CREATIONS_DEVELOPMENT_SECTION_DIVIDER,
    v1.CREATIONS_MODELS,
    v1.CREATIONS_DECALS,
    v1.CREATIONS_AUDIO,
    v1.CREATIONS_MESHES
};
local v3 = {
    v1.CREATIONS_DEVELOPMENT_SECTION_DIVIDER,
    v1.CREATIONS_MODELS,
    v1.CREATIONS_DECALS,
    v1.CREATIONS_AUDIO,
    v1.CREATIONS_MESHES,
    v1.CREATIONS_CATALOG_SECTION_DIVIDER,
    v1.CREATIONS_HATS
};
v1.MARKETPLACE_KEY = "Marketplace";
v1.INVENTORY_KEY = "Inventory";
v1.RECENT_KEY = "Recent";
v1.CREATIONS_KEY = "Creations";
local v4 = {
    [v1.MARKETPLACE_KEY] = v1.MARKETPLACE,
    [v1.INVENTORY_KEY] = v1.INVENTORY,
    [v1.RECENT_KEY] = v1.RECENT,
    [v1.CREATIONS_KEY] = {
        [1] = v2,
        [2] = v3
    }
};
local function _(v5)
    local l_v5_0 = v5;
    if l_v5_0 then
        l_v5_0 = false;
        if v5 >= 1 then
            l_v5_0 = v5 <= #v1.INVENTORY_WITH_GROUPS;
        end;
    end;
    return l_v5_0;
end;
v1.categoryIsPackage = function(v8)
    local l_v8_0 = v8;
    if l_v8_0 then
        l_v8_0 = false;
        if v8 >= 1 then
            l_v8_0 = v8 <= #v1.INVENTORY_WITH_GROUPS;
        end;
    end;
    if l_v8_0 then
        l_v8_0 = v1.INVENTORY_WITH_GROUPS[v8].assetType == v1.AssetType.PACKAGE;
    end;
    return l_v8_0;
end;
v1.categoryIsFreeAsset = function(v10)
    local l_v10_0 = v10;
    if l_v10_0 then
        l_v10_0 = false;
        if v10 >= 1 then
            l_v10_0 = v10 <= #v1.INVENTORY_WITH_GROUPS;
        end;
    end;
    if l_v10_0 then
        l_v10_0 = v1.INVENTORY_WITH_GROUPS[v10].ownershipType == v1.OwnershipType.FREE;
    end;
    return l_v10_0;
end;
v1.categoryIsGroupAsset = function(v12, v13)
    if v12 == v1.CREATIONS_KEY then
        return false;
    else
        local l_v13_0 = v13;
        if l_v13_0 then
            l_v13_0 = false;
            if v13 >= 1 then
                l_v13_0 = v13 <= #v1.INVENTORY_WITH_GROUPS;
            end;
        end;
        if l_v13_0 then
            l_v13_0 = v1.INVENTORY_WITH_GROUPS[v13].ownershipType == v1.OwnershipType.GROUP;
        end;
        return l_v13_0;
    end;
end;
v1.categoryIsPlugin = function(v15)
    local l_v15_0 = v15;
    if l_v15_0 then
        l_v15_0 = false;
        if v15 >= 1 then
            l_v15_0 = v15 <= #v1.INVENTORY_WITH_GROUPS;
        end;
    end;
    if l_v15_0 then
        l_v15_0 = v1.INVENTORY_WITH_GROUPS[v15].assetType == v1.AssetType.PLUGIN;
    end;
    return l_v15_0;
end;
v1.getCategories = function(v17, v18)
    if v1.CREATIONS_KEY == v17 then
        if not v18 or not v18.isCatalogItemCreator then
            return v4[v17][1];
        else
            return v4[v17][2];
        end;
    else
        return v4[v17];
    end;
end;
v1.getEngineAssetType = function(v19)
    local v20 = v1.ToolboxAssetTypeToEngine[v19];
    if not (v20 or not v0.shouldDebugWarnings()) then
        warn(("Lua toolbox: No engine assetType for category asset type %s"):format((tostring(v19))));
    end;
    return v20;
end;
local function _(v21)
    if v21 == v1.OwnershipType.FREE then
        return "FREE";
    elseif v21 == v1.OwnershipType.MY then
        return "MY";
    elseif v21 == v1.OwnershipType.RECENT then
        return "RECENT";
    elseif v21 == v1.OwnershipType.GROUP then
        return "GROUP";
    else
        return "[unknown]";
    end;
end;
local function _(v23)
    if v23 == v1.AssetType.MODEL then
        return "MODEL";
    elseif v23 == v1.AssetType.DECAL then
        return "DECAL";
    elseif v23 == v1.AssetType.MESH then
        return "MESH";
    elseif v23 == v1.AssetType.AUDIO then
        return "AUDIO";
    elseif v23 == v1.AssetType.PACKAGE then
        return "PACKAGE";
    else
        return "[unknown]";
    end;
end;
v1.categoryToString = function(v25)
    local v26 = "Category(name=\"%s\", category=\"%s\", ownershipType=\"%s\", assetType=\"%s\")";
    local l_name_0 = v25.name;
    local l_category_0 = v25.category;
    local l_ownershipType_0 = v25.ownershipType;
    local v30 = l_ownershipType_0 == v1.OwnershipType.FREE and "FREE" or (l_ownershipType_0 == v1.OwnershipType.MY and "MY" or (l_ownershipType_0 == v1.OwnershipType.RECENT and "RECENT" or (l_ownershipType_0 == v1.OwnershipType.GROUP and "GROUP" or "[unknown]")));
    local l_assetType_0 = v25.assetType;
    return v26:format(l_name_0, l_category_0, v30, l_assetType_0 == v1.AssetType.MODEL and "MODEL" or (l_assetType_0 == v1.AssetType.DECAL and "DECAL" or (l_assetType_0 == v1.AssetType.MESH and "MESH" or (l_assetType_0 == v1.AssetType.AUDIO and "AUDIO" or (l_assetType_0 == v1.AssetType.PACKAGE and "PACKAGE" or "[unknown]")))));
end;
return v1;


return require(script.Parent.Parent.Parent.Src.Util.wrapStrictTable)({
    BLUE_PRIMARY = Color3.fromRGB(0, 162, 255),
    BLUE_DISABLED = Color3.fromRGB(153, 218, 255),
    GRAY_1 = Color3.fromRGB(25, 25, 25),
    GRAY_2 = Color3.fromRGB(117, 117, 117),
    GRAY_3 = Color3.fromRGB(184, 184, 184),
    GRAY_5 = Color3.fromRGB(242, 242, 242),
    GRAY_6 = Color3.fromRGB(245, 245, 245),
    WHITE = Color3.fromRGB(255, 255, 255),
    BLACK = Color3.fromRGB(0, 0, 0),
    HEADER_BACKGROUND_COLOR = Color3.fromRGB(242, 242, 242),
    HEADER_BORDER_COLOR = Color3.fromRGB(184, 184, 184),
    FOOTER_BACKGROUND_COLOR = Color3.fromRGB(227, 227, 227),
    FOOTER_BORDER_COLOR = Color3.fromRGB(184, 184, 184),
    LIGHT_ASSETNAME_TEXT_COLOR = Color3.fromRGB(65, 105, 225),
    DARK_BORDER_COLOR = Color3.fromRGB(34, 34, 34),
    DARK_SCROLL_BAR_BACKGROUND_COLOR = Color3.fromRGB(41, 41, 41),
    DARK_BACKGROUND_COLOR = Color3.fromRGB(53, 53, 53),
    DARK_MAIN_SECTION_COLOR = Color3.fromRGB(46, 46, 46),
    DARK_SCROLL_BAR_COLOR = Color3.fromRGB(56, 56, 56),
    DARK_DISABLED_TEXT_COLOR = Color3.fromRGB(85, 85, 85),
    DARK_DIMMER_TEXT_COLOR = Color3.fromRGB(102, 102, 102),
    DARK_TITLE_COLOR = Color3.fromRGB(170, 170, 170),
    DARK_MAIN_TEXT_COLOR = Color3.fromRGB(204, 204, 204),
    DARK_RIBBON_BAR_ICON_HOVER_COLOR = Color3.fromRGB(37, 37, 37),
    DARK_WIDGET_SELECTED_COLOR = Color3.fromRGB(11, 90, 175),
    DARK_WIDGET_HOVER_COLOR = Color3.fromRGB(66, 66, 66),
    DARK_GREY_BUTTON_DEFAULT_COLOR = Color3.fromRGB(58, 58, 58),
    VOTING_GREEN = Color3.fromRGB(82, 168, 70),
    VOTING_RED = Color3.fromRGB(206, 100, 91)
}, "Colors");


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Src.Util.wrapStrictTable);
local v2 = require(l_Parent_0.Src.Util.convertArrayToTable);
local v3 = require(l_Parent_0.Src.Util.getUserId);
local v4 = {
    FONT = Enum.Font.SourceSans,
    FONT_BOLD = Enum.Font.SourceSansBold,
    FONT_SIZE_SMALL = 14,
    FONT_SIZE_MEDIUM = 16,
    FONT_SIZE_LARGE = 18,
    FONT_SIZE_TITLE = 22,
    FOOTER_HEIGHT = 35,
    MESSAGE_BOX_BUTTON_WIDTH = 100,
    NAME_CHARACTER_LIMIT = 50,
    DESCRIPTION_CHARACTER_LIMIT = 1000,
    TITLE_GUTTER_WIDTH = 180,
    Images = {
        ARROW_DOWN_ICON = "rbxasset://textures/StudioToolbox/ArrowDownIconWhite.png",
        IMAGE_PLACEHOLDER = "rbxasset://textures/StudioConvertToPackagePlugin/placeholder.png",
        TOGGLE_ON_DARK = "rbxasset://textures/RoactStudioWidgets/toggle_on_dark.png",
        TOGGLE_ON_LIGHT = "rbxasset://textures/RoactStudioWidgets/toggle_on_light.png",
        TOGGLE_OFF_DARK = "rbxasset://textures/RoactStudioWidgets/toggle_off_dark.png",
        TOGGLE_OFF_LIGHT = "rbxasset://textures/RoactStudioWidgets/toggle_off_light.png",
        TOGGLE_DISABLE_DARK = "rbxasset://textures/RoactStudioWidgets/toggle_disable_dark.png",
        TOGGLE_DISABLE_LIGHT = "rbxasset://textures/RoactStudioWidgets/toggle_disable_light.png"
    },
    OWNER_TYPES = {
        User = 1,
        Group = 2
    }
};
v4.CREATOR_ENUM_TO_OWNER_TYPE = {
    [Enum.CreatorType.User] = v4.OWNER_TYPES.User,
    [Enum.CreatorType.Group] = v4.OWNER_TYPES.Group
};
v4.SCREENS = v2({
    "CONFIGURE_ASSET",
    "UPLOADING_ASSET",
    "UPLOAD_ASSET_RESULT"
});
v4.getOwnerDropDownContent = function(v5, v6)
    local v7 = {
        {
            creatorId = v3(),
            creatorType = "User",
            Key = 1,
            name = v6:getText("General", "Me"),
            Text = v6:getText("General", "Me")
        }
    };
    local v8 = 2;
    if game.CreatorType == Enum.CreatorType.Group and next(v5) == nil then
        table.insert(v7, {
            name = "",
            Text = "",
            creatorType = "Group",
            creatorId = game.CreatorId,
            Key = v8
        });
        return v7;
    else
        for _, v10 in pairs(v5) do
            table.insert(v7, {
                name = v10.name,
                Text = v10.name,
                creatorType = "Group",
                creatorId = v10.id,
                item = v10,
                Key = v8
            });
            v8 = v8 + 1;
        end;
        return v7;
    end;
end;
return v1(v4, "Constants");


local l_Workspace_0 = game:GetService("Workspace");
local function _()
    return l_Workspace_0:FindFirstChild("ToolboxDebugFlags");
end;
local function _()
    local l_ToolboxDebugFlags_0 = l_Workspace_0:FindFirstChild("ToolboxDebugFlags");
    if not l_ToolboxDebugFlags_0 then
        l_ToolboxDebugFlags_0 = Instance.new("Folder");
        l_ToolboxDebugFlags_0.Name = "ToolboxDebugFlags";
        l_ToolboxDebugFlags_0.Parent = l_Workspace_0;
    end;
    return l_ToolboxDebugFlags_0;
end;
local function _(v4)
    local l_ToolboxDebugFlags_1 = l_Workspace_0:FindFirstChild("ToolboxDebugFlags");
    if l_ToolboxDebugFlags_1 then
        local l_l_ToolboxDebugFlags_1_FirstChild_0 = l_ToolboxDebugFlags_1:FindFirstChild(v4);
        if not l_l_ToolboxDebugFlags_1_FirstChild_0 then
            return false;
        else
            return l_l_ToolboxDebugFlags_1_FirstChild_0.Value;
        end;
    else
        return false;
    end;
end;
return {
    shouldRunTests = function()
        wait(0.3);
        local l_ToolboxDebugFlags_2 = l_Workspace_0:FindFirstChild("ToolboxDebugFlags");
        if l_ToolboxDebugFlags_2 then
            local l_RunToolboxTests_0 = l_ToolboxDebugFlags_2:FindFirstChild("RunToolboxTests");
            if not l_RunToolboxTests_0 then
                return false;
            else
                return l_RunToolboxTests_0.Value;
            end;
        else
            return false;
        end;
    end,
    shouldDisableTooltips = function()
        local l_ToolboxDebugFlags_3 = l_Workspace_0:FindFirstChild("ToolboxDebugFlags");
        if l_ToolboxDebugFlags_3 then
            local l_ToolboxDisableTooltips_0 = l_ToolboxDebugFlags_3:FindFirstChild("ToolboxDisableTooltips");
            if not l_ToolboxDisableTooltips_0 then
                return false;
            else
                return l_ToolboxDisableTooltips_0.Value;
            end;
        else
            return false;
        end;
    end,
    shouldDebugUrls = function()
        local l_ToolboxDebugFlags_4 = l_Workspace_0:FindFirstChild("ToolboxDebugFlags");
        if l_ToolboxDebugFlags_4 then
            local l_ToolboxDebugUrls_0 = l_ToolboxDebugFlags_4:FindFirstChild("ToolboxDebugUrls");
            if not l_ToolboxDebugUrls_0 then
                return false;
            else
                return l_ToolboxDebugUrls_0.Value;
            end;
        else
            return false;
        end;
    end,
    shouldDebugState = function()
        local l_ToolboxDebugFlags_5 = l_Workspace_0:FindFirstChild("ToolboxDebugFlags");
        if l_ToolboxDebugFlags_5 then
            local l_ToolboxDebugState_0 = l_ToolboxDebugFlags_5:FindFirstChild("ToolboxDebugState");
            if not l_ToolboxDebugState_0 then
                return false;
            else
                return l_ToolboxDebugState_0.Value;
            end;
        else
            return false;
        end;
    end,
    shouldDebugWarnings = function()
        local l_ToolboxDebugFlags_6 = l_Workspace_0:FindFirstChild("ToolboxDebugFlags");
        if l_ToolboxDebugFlags_6 then
            local l_ToolboxDebugWarnings_0 = l_ToolboxDebugFlags_6:FindFirstChild("ToolboxDebugWarnings");
            if not l_ToolboxDebugWarnings_0 then
                return false;
            else
                return l_ToolboxDebugWarnings_0.Value;
            end;
        else
            return false;
        end;
    end,
    shouldLogSettings = function()
        local l_ToolboxDebugFlags_7 = l_Workspace_0:FindFirstChild("ToolboxDebugFlags");
        if l_ToolboxDebugFlags_7 then
            local l_ToolboxLogSettings_0 = l_ToolboxDebugFlags_7:FindFirstChild("ToolboxLogSettings");
            if not l_ToolboxLogSettings_0 then
                return false;
            else
                return l_ToolboxLogSettings_0.Value;
            end;
        else
            return false;
        end;
    end,
    shouldUseTestCustomLocale = function()
        local l_ToolboxDebugFlags_8 = l_Workspace_0:FindFirstChild("ToolboxDebugFlags");
        if l_ToolboxDebugFlags_8 then
            local l_ToolboxUseTestCustomLocale_0 = l_ToolboxDebugFlags_8:FindFirstChild("ToolboxUseTestCustomLocale");
            if not l_ToolboxUseTestCustomLocale_0 then
                return false;
            else
                return l_ToolboxUseTestCustomLocale_0.Value;
            end;
        else
            return false;
        end;
    end,
    shouldUseTestRealLocale = function()
        local l_ToolboxDebugFlags_9 = l_Workspace_0:FindFirstChild("ToolboxDebugFlags");
        if l_ToolboxDebugFlags_9 then
            local l_ToolboxUseTestRealLocaleId_0 = l_ToolboxDebugFlags_9:FindFirstChild("ToolboxUseTestRealLocaleId");
            if not l_ToolboxUseTestRealLocaleId_0 then
                return false;
            else
                return l_ToolboxUseTestRealLocaleId_0.Value;
            end;
        else
            return false;
        end;
    end,
    getOrCreateTestCustomLocale = function()
        local l_ToolboxDebugFlags_10 = l_Workspace_0:FindFirstChild("ToolboxDebugFlags");
        if not l_ToolboxDebugFlags_10 then
            l_ToolboxDebugFlags_10 = Instance.new("Folder");
            l_ToolboxDebugFlags_10.Name = "ToolboxDebugFlags";
            l_ToolboxDebugFlags_10.Parent = l_Workspace_0;
        end;
        local l_l_ToolboxDebugFlags_10_0 = l_ToolboxDebugFlags_10;
        l_ToolboxDebugFlags_10 = l_l_ToolboxDebugFlags_10_0:FindFirstChild("ToolboxCustomLocale");
        if not l_ToolboxDebugFlags_10 then
            l_ToolboxDebugFlags_10 = Instance.new("StringValue");
            l_ToolboxDebugFlags_10.Name = "ToolboxCustomLocale";
            l_ToolboxDebugFlags_10.Value = "CustomLocale";
            l_ToolboxDebugFlags_10.Parent = l_l_ToolboxDebugFlags_10_0;
        end;
        return l_ToolboxDebugFlags_10;
    end,
    getOrCreateTestRealLocale = function()
        local l_ToolboxDebugFlags_11 = l_Workspace_0:FindFirstChild("ToolboxDebugFlags");
        if not l_ToolboxDebugFlags_11 then
            l_ToolboxDebugFlags_11 = Instance.new("Folder");
            l_ToolboxDebugFlags_11.Name = "ToolboxDebugFlags";
            l_ToolboxDebugFlags_11.Parent = l_Workspace_0;
        end;
        local l_l_ToolboxDebugFlags_11_0 = l_ToolboxDebugFlags_11;
        l_ToolboxDebugFlags_11 = l_l_ToolboxDebugFlags_11_0:FindFirstChild("ToolboxRealLocale");
        if not l_ToolboxDebugFlags_11 then
            l_ToolboxDebugFlags_11 = Instance.new("StringValue");
            l_ToolboxDebugFlags_11.Name = "ToolboxRealLocale";
            l_ToolboxDebugFlags_11.Value = "en-us";
            l_ToolboxDebugFlags_11.Parent = l_l_ToolboxDebugFlags_11_0;
        end;
        return l_ToolboxDebugFlags_11;
    end
};


return {
    JoinDictionaries = function(...)
        local v0 = {};
        for v1 = 1, select("#", ...) do
            for v2, v3 in pairs((select(v1, ...))) do
                v0[v2] = v3;
            end;
        end;
        return v0;
    end,
    JoinLists = function(...)
        local v4 = {};
        for v5 = 1, select("#", ...) do
            local v6 = select(v5, ...);
            local v7 = #v4;
            for v8 = 1, #v6 do
                v4[v7 + v8] = v6[v8];
            end;
        end;
        return v4;
    end,
    Set = function(v9, v10, v11)
        local v12 = {};
        for v13, v14 in pairs(v9) do
            v12[v13] = v14;
        end;
        v12[v10] = v11;
        return v12;
    end,
    Append = function(v15, ...)
        local v16 = {};
        local v17 = #v15;
        for v18 = 1, v17 do
            v16[v18] = v15[v18];
        end;
        for v19 = 1, select("#", ...) do
            v16[v17 + v19] = select(v19, ...);
        end;
        return v16;
    end,
    RemoveFromDictionary = function(v20, ...)
        local v21 = {};
        for v22, v23 in pairs(v20) do
            local v24 = false;
            for v25 = 1, select("#", ...) do
                if v22 == select(v25, ...) then
                    v24 = true;
                    break;
                end;
            end;
            if not v24 then
                v21[v22] = v23;
            end;
        end;
        return v21;
    end,
    RemoveFromList = function(v26, v27)
        local v28 = {};
        for v29 = 1, #v26 do
            if v29 ~= v27 then
                table.insert(v28, v26[v29]);
            end;
        end;
        return v28;
    end,
    RemoveRangeFromList = function(v30, v31, v32)
        local v33 = {};
        for v34 = 1, #v30 do
            if not (v34 >= v31) or v31 + v32 <= v34 then
                table.insert(v33, v30[v34]);
            end;
        end;
        return v33;
    end,
    RemoveValueFromList = function(v35, v36)
        local v37 = {};
        for v38 = 1, #v35 do
            if v35[v38] ~= v36 then
                table.insert(v37, v35[v38]);
            end;
        end;
        return v37;
    end
};


local v0 = {};
v0.__index = v0;
v0.new = function()
    local v1 = setmetatable({}, v0);
    v1.order = 0;
    return v1;
end;
v0.getNextOrder = function(v2)
    v2.order = v2.order + 1;
    return v2.order;
end;
return v0;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Src.Util.DebugFlags);
local v2 = require(l_Parent_0.Src.Types.Category);
local v6 = {
    getCategory = function(v3, v4)
        local v5 = v3[v4];
        if v5 and v5.category then
            return v5.category;
        else
            if v1.shouldDebugWarnings() then
                warn(("Lua toolbox: No category for category index %s"):format((tostring(v4))));
            end;
            return "";
        end;
    end
};
v6.getCategoryForPageInfo = function(v7)
    return v6.getCategory(v7.categories, v7.categoryIndex);
end;
v6.getSortType = function(v8, v9)
    local v10 = v8[v9];
    if v10 and v10.sort then
        return v10.sort;
    else
        if v1.shouldDebugWarnings() then
            warn(("Lua Toolbox: no sort for sort index %s"):format((tostring(v9))));
        end;
        return "";
    end;
end;
v6.getSortTypeForPageInfo = function(v11)
    return v6.getSortType(v11.sorts, v11.sortIndex);
end;
v6.getGroupId = function(v12, v13)
    if v13 == 0 then
        return 0;
    elseif (v13 >= 1 and #v12 >= v13) and v12[v13].id then
        return v12[v13].id;
    else
        if v1.shouldDebugWarnings() then
            warn(("Lua Toolbox: no group for group index %s"):format((tostring(v13))));
        end;
        return 0;
    end;
end;
v6.getGroupIdForPageInfo = function(v14)
    return v6.getGroupId(v14.groups, v14.groupIndex);
end;
v6.getEngineAssetTypeForPageInfoCategory = function(v15)
    local v16 = v15.categories[v15.categoryIndex];
    if v16 and v16.assetType then
        return v2.getEngineAssetType(v16.assetType);
    else
        if v1.shouldDebugWarnings() then
            warn(("Lua toolbox: No assetType for category index %s"):format((tostring(v15.categoryIndex))));
        end;
        return nil;
    end;
end;
return v6;


return {
    named = function(v0)
        assert(type(v0) == "string", "Symbols must be created using a string name");
        local v1 = newproxy(true);
        local v2 = ("Symbol(%s)"):format(v0);
        getmetatable(v1).__tostring = function()
            return v2;
        end;
        return v1;
    end,
    unnamed = function()
        local v3 = newproxy(true);
        getmetatable(v3).__tostring = function()
            return "Unnamed Symbol";
        end;
        return v3;
    end
};


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.DEPRECATED_modules.Http.Url);
local v2 = require(l_Parent_0.Src.Util.wrapStrictTable);
local v3 = {};
local v4 = v1.BASE_URL .. "headshot-thumbnail/image?";
local _ = v1.DEVELOP_URL .. "/v1/groups/%s";
local v6 = v1.DATA_URL .. "Data/Upload.ashx?";
local v7 = v1.DEVELOP_URL .. "v1/user/groups/canmanage";
v3.constructUserThumbnailUrl = function(v8, v9)
    v9 = v9 or 100;
    return v4 .. v1.makeQueryString({
        userId = v8,
        width = v9,
        height = v9,
        format = "png"
    });
end;
v3.constructPostUploadAssetUrl = function(v10, v11, v12, v13, v14, v15, v16, v17)
    return v6 .. v1.makeQueryString({
        assetid = v10,
        type = tostring(v11),
        name = tostring(v12),
        description = tostring(v13),
        genreTypeId = v14,
        ispublic = not v15 and "False" or "True",
        allowComments = not v16 and "False" or "True",
        groupId = v17 or "",
        isPackage = true
    });
end;
v3.constructGetMyGroupUrl = function()
    return v7;
end;
return v2(v3);


local l_StudioService_0 = game:GetService("StudioService");
return function()
    local v1 = 0;
    pcall(function()
        v1 = l_StudioService_0:GetUserId();
    end);
    return v1;
end;


local v0 = nil;
local v4 = {
    __index = function(v1, v2)
        if not v2 then
            error("key is nil in wrapStrictTable __index");
        end;
        local v3 = v1.__tbl[v2];
        if v3 ~= nil then
            if type(v3) == "table" then
                return v0(v3, v1.__name .. "." .. v2);
            else
                return v3;
            end;
        else
            error(("%q is not a valid key in %s"):format(tostring(v2), (tostring(v1.__name))), 2);
            return ;
        end;
    end
};
v0 = function(v5, v6)
    return (setmetatable({
        __name = v6 or "",
        __tbl = v5
    }, v4));
end;
return v0;


if not game:GetFastFlag("ImprovePluginSpeed_AssetManager") then
    return require(script.Parent.main)(plugin);
else
    return ;
end;


game:DefineFastInt("StudioAssetManagerAssetFetchNumber", 100);
game:DefineFastFlag("EnableAssetManagerGlobalSearchBar", false);
game:DefineFastFlag("EnableAssetManagerSortButton", false);
game:DefineFastFlag("AssetManagerUseEventIngest", false);
game:DefineFastFlag("AssetManagerVideoPreviewFix", false);
game:DefineFastFlag("AssetManagerMigrateAliasesEndpoint2", false);
game:DefineFastFlag("AssetManagerToggleWidgetFix", false);
return nil;


return function(v0, v1)
    if v0 then
        require(script.Parent.commonInit)();
        local l_ImprovePluginSpeed_AssetManager_0 = game:GetFastFlag("ImprovePluginSpeed_AssetManager");
        if not l_ImprovePluginSpeed_AssetManager_0 then
            require(script.Parent.defineLuaFlags);
        end;
        local l_StudioAssetManagerAddRecentlyImportedView_0 = game:GetFastFlag("StudioAssetManagerAddRecentlyImportedView");
        local l_AssetManagerToggleWidgetFix_0 = game:GetFastFlag("AssetManagerToggleWidgetFix");
        local l_AssetManagerService_0 = game:GetService("AssetManagerService");
        local l_BulkImportService_0 = game:GetService("BulkImportService");
        local l_StudioPublishService_0 = game:GetService("StudioPublishService");
        local l_Parent_0 = script.Parent.Parent;
        local v9 = require(l_Parent_0.Packages.Roact);
        local v10 = require(l_Parent_0.Packages.Rodux);
        local v11 = require(l_Parent_0.Packages.Cryo);
        local v12 = require(l_Parent_0.Packages.Framework);
        local v13 = require(l_Parent_0.Packages.InsertAsset);
        local l_ContextServices_0 = v12.ContextServices;
        local v15 = require(l_Parent_0.Src.Components.ServiceWrapper);
        local l_InsertAssetContext_0 = v13.Context.InsertAssetContext;
        local v17 = require(l_Parent_0.Src.Reducers.MainReducer);
        local v18 = require(l_Parent_0.Src.Middleware.MainMiddleware);
        local v19 = require(l_Parent_0.Src.Resources.AnalyticsHandlers);
        local l_SourceStrings_0 = l_Parent_0.Src.Resources.SourceStrings;
        local l_LocalizedStrings_0 = l_Parent_0.Src.Resources.LocalizedStrings;
        local v22 = require(l_Parent_0.Src.Components.MainView);
        local v23 = require(l_Parent_0.Src.Util.AssetManagerUtilities);
        local l_enableAudioImport_0 = v23.enableAudioImport;
        local l_enableVideoImport_0 = v23.enableVideoImport;
        local l_enableBadgesCallout_0 = v23.enableBadgesCallout;
        local v27 = require(l_Parent_0.Src.Actions.SetBulkImporterRunning);
        local v28 = require(l_Parent_0.Src.Actions.SetRecentAssets);
        local v29 = require(l_Parent_0.Src.Actions.SetRecentViewToggled);
        local v30 = require(l_Parent_0.Src.Actions.SetUniverseName);
        local v31 = v10.Store.new(v17, {}, v18);
        local v32 = require(l_Parent_0.Src.Resources.Theme)();
        local v33 = l_ContextServices_0.Analytics.new(v19);
        local v34 = l_ContextServices_0.Localization.new({
            pluginName = "AssetManager",
            stringResourceTable = l_SourceStrings_0,
            translationResourceTable = l_LocalizedStrings_0,
            libraries = {
                [v12.Resources.LOCALIZATION_PROJECT_NAME] = {
                    stringResourceTable = v12.Resources.SourceStrings,
                    translationResourceTable = v12.Resources.LocalizedStrings
                }
            }
        });
        local v35 = nil;
        if l_enableBadgesCallout_0() then
            v35 = require(l_Parent_0.Src.Util.CalloutController).new();
            v35:defineCallout("AssetManagerBadgesDevProductCallout", "", v34:getText("Callout", "BadgesDevProductsDescription"), "");
        end;
        local v36 = nil;
        local v37 = nil;
        local v38 = 1;
        local v39 = {};
        local function v40()
            if not v36 then
                v36 = v9.mount(v9.createElement(v15, {
                    plugin = v0,
                    analytics = v33,
                    focusGui = v37,
                    localization = v34,
                    theme = v32,
                    store = v31,
                    mouse = v0:getMouse(),
                    calloutController = v35,
                    insertAsset = l_InsertAssetContext_0.new(v0, v37)
                }, {
                    MainView = v9.createElement(v22, {})
                }), v37);
                return ;
            else
                warn("Plugin handle already exists");
                return ;
            end;
        end;
        local function _()
            if v36 then
                v9.unmount(v36);
                v36 = nil;
            end;
        end;
        local function v42()
            v37.Enabled = not v37.Enabled;
        end;
        local function v45()
            if not l_ImprovePluginSpeed_AssetManager_0 then
                for _, v44 in ipairs(v39) do
                    v44:disconnect();
                end;
            end;
            if v36 then
                v9.unmount(v36);
                v36 = nil;
            end;
        end;
        local function v46()
            if l_StudioAssetManagerAddRecentlyImportedView_0 then
                v31:dispatch(v28({}));
            end;
            v38 = 1;
        end;
        local function v47()
            if next(v31:getState().AssetManagerReducer.recentAssets) ~= nil then
                v31:dispatch(v29(true));
            end;
        end;
        local v48 = {
            [Enum.AssetType.Image] = "Images/",
            [Enum.AssetType.MeshPart] = "Meshes/",
            [Enum.AssetType.Audio] = "Audio/",
            [Enum.AssetType.Video] = "Video/",
            [Enum.AssetType.Model] = "Models/"
        };
        local function _(v49, v50)
            return not not v48[v49] and string.gsub(v50, v48[v49], "") or v50;
        end;
        local function v56(v52, v53, v54)
            local v55 = v11.Dictionary.join(v31:getState().AssetManagerReducer.recentAssets, {
                [tostring(v54)] = {
                    key = v38,
                    assetType = v52,
                    name = not not v48[v52] and string.gsub(v53, v48[v52], "") or v53,
                    id = v54
                }
            });
            v38 = v38 + 1;
            v31:dispatch(v28(v55));
        end;
        local function v67()
            local function v57()
                v31:dispatch(v27(true));
                if l_StudioAssetManagerAddRecentlyImportedView_0 then
                    v31:dispatch(v28({}));
                end;
                v38 = 1;
            end;
            if not l_ImprovePluginSpeed_AssetManager_0 then
                l_BulkImportService_0.BulkImportStarted:connect(v57);
            else
                v1.signals["BulkImportService.BulkImportStarted"]:Connect(v57);
            end;
            local function v59(_)
                v31:dispatch(v27(false));
                if l_StudioAssetManagerAddRecentlyImportedView_0 and next(v31:getState().AssetManagerReducer.recentAssets) ~= nil then
                    v31:dispatch(v29(true));
                end;
            end;
            if not l_ImprovePluginSpeed_AssetManager_0 then
                l_BulkImportService_0.BulkImportFinished:connect(v59);
            else
                v1.signals["BulkImportService.BulkImportFinished"]:Connect(v59);
            end;
            if l_StudioAssetManagerAddRecentlyImportedView_0 then
                local function v66(v60, v61, v62)
                    local v63 = v31:getState();
                    local v64 = nil;
                    if not (v60 == Enum.AssetType.Image) or not string.find(v61, "Images/") then
                        if not (v60 == Enum.AssetType.MeshPart) or not string.find(v61, "Meshes/") then
                            if not (l_enableAudioImport_0() and v60 == Enum.AssetType.Audio) or not string.find(v61, "Audio/") then
                                if not (l_enableVideoImport_0() and v60 == Enum.AssetType.Video) or not string.find(v61, "Video/") then
                                    if not (not (v60 == Enum.AssetType.Model) or not string.find(v61, "Models/")) then
                                        v64 = string.gsub(v61, "Models/", "");
                                    end;
                                else
                                    v64 = string.gsub(v61, "Video/", "");
                                end;
                            else
                                v64 = string.gsub(v61, "Audio/", "");
                            end;
                        else
                            v64 = string.gsub(v61, "Meshes/", "");
                        end;
                    else
                        v64 = string.gsub(v61, "Images/", "");
                    end;
                    local v65 = v11.Dictionary.join(v63.AssetManagerReducer.recentAssets, {
                        [tostring(v62)] = {
                            key = v38,
                            assetType = v60,
                            name = v64,
                            id = v62
                        }
                    });
                    v38 = v38 + 1;
                    v31:dispatch(v28(v65));
                end;
                if not l_ImprovePluginSpeed_AssetManager_0 then
                    l_BulkImportService_0.AssetImported:connect(v66);
                else
                    v1.signals["BulkImportService.AssetImported"]:Connect(v66);
                    return ;
                end;
            end;
        end;
        (function()
            v0.Name = "AssetManager";
            local v68 = nil;
            v68 = if not l_ImprovePluginSpeed_AssetManager_0 then v0:CreateToolbar("assetManagerToolbar"):CreateButton("assetManagerToolButton", v34:getText("Main", "Tooltip"), "rbxlocaltheme://AssetManager", v34:getText("Main", "ToolbarButton")) else v1.mainButton;
            if not l_AssetManagerToggleWidgetFix_0 then
                if not l_ImprovePluginSpeed_AssetManager_0 then
                    v68.Click:connect(v42);
                    v68.ClickableWhenViewportHidden = true;
                else
                    v1.mainButtonClickedSignal:Connect(v42);
                end;
            end;
            local function v69()
                if not v37.Enabled then
                    if v36 then
                        v9.unmount(v36);
                        v36 = nil;
                    end;
                else
                    v40();
                end;
                v68:SetActive(v37.Enabled);
            end;
            if not l_ImprovePluginSpeed_AssetManager_0 then
                local l_EnableAssetManagerSortButton_0 = game:GetFastFlag("EnableAssetManagerSortButton");
                v37 = v0:CreateDockWidgetPluginGui("AssetManager_PluginGui", (DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Left, false, false, not l_EnableAssetManagerSortButton_0 and 300 or 350, 600, not l_EnableAssetManagerSortButton_0 and 270 or 350, 256)));
                v37.Name = v34:getText("Meta", "PluginName");
                v37.Title = v34:getText("Main", "Title");
                v37.ZIndexBehavior = Enum.ZIndexBehavior.Sibling;
            else
                v37 = v1.mainDockWidget;
            end;
            if l_AssetManagerToggleWidgetFix_0 then
                if not l_ImprovePluginSpeed_AssetManager_0 then
                    v68.Click:connect(v42);
                    v68.ClickableWhenViewportHidden = true;
                else
                    v1.mainButtonClickedSignal:Connect(v42);
                end;
            end;
            v37:GetPropertyChangedSignal("Enabled"):connect(v69);
            if not v37.Enabled then
                if v36 then
                    v9.unmount(v36);
                    v36 = nil;
                end;
            else
                v40();
            end;
            v68:SetActive(v37.Enabled);
            v0.Unloading:Connect(v45);
            v67();
            local function v72(v71)
                v31:dispatch(v30(v71));
            end;
            if not l_ImprovePluginSpeed_AssetManager_0 then
                l_StudioPublishService_0.GameNameUpdated:connect(v72);
            else
                v1.signals["StudioPublishService.GameNameUpdated"]:Connect(v72);
            end;
            if not l_ImprovePluginSpeed_AssetManager_0 then
                local v73 = l_AssetManagerService_0.AssetImportedSignal:Connect(v56);
                local v74 = l_AssetManagerService_0.ImportSessionStarted:Connect(v46);
                local v75 = l_AssetManagerService_0.ImportSessionFinished:Connect(v47);
                table.insert(v39, v73);
                table.insert(v39, v74);
                table.insert(v39, v75);
            else
                v1.signals["AssetManagerService.AssetImportedSignal"]:Connect(v56);
                v1.signals["AssetManagerService.ImportSessionStarted"]:Connect(v46);
                v1.signals["AssetManagerService.ImportSessionFinished"]:Connect(v47);
            end;
        end)();
        return ;
    else
        return ;
    end;
end;


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0, v1)
    assert(type(v0) == "string", string.format("ChangeAssetAlias assetId requires a string, not %s", (type(v0))));
    assert(type(v1) == "string", string.format("ChangeAssetAlias newAlias requires a string, not %s", (type(v1))));
    return {
        assetId = v0,
        newAlias = v1
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0, v1)
    assert(type(v0) == "number", string.format("IncrementAssetFavoriteCount requires assetId to be a number, not %s", (type(v0))));
    assert(type(v1) == "number", string.format("IncrementAssetFavoriteCount requires incrementCount to be a number, not %s", (type(v1))));
    return {
        assetId = v0,
        incrementCount = v1
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0, v1)
    assert(type(v0) == "number", string.format("SetAssetFavoriteCount requires assetId to be a number, not %s", (type(v0))));
    assert(type(v1) == "string", string.format("SetAssetFavoriteCount requires favoriteCount to be a string, not %s", (type(v1))));
    return {
        assetId = v0,
        favoriteCount = v1
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0, v1)
    assert(type(v0) == "number", string.format("SetAssetFavorited requires assetId to be a number, not %s", (type(v0))));
    assert(type(v1) == "boolean", string.format("SetAssetFavorited requires isAssetFavorited to be a boolean, not %s", (type(v1))));
    return {
        assetId = v0,
        isAssetFavorited = v1
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0, v1)
    assert(type(v0) == "number", string.format("SetAssetOwnerName requires assetId to be a string, not %s", (type(v0))));
    assert(type(v1) == "string", string.format("SetAssetOwnerName requires username to be a string, not %s", (type(v1))));
    return {
        assetId = v0,
        username = v1
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0)
    assert(type(v0) == "table", string.format("SetAssetPreviewData requires a table, not %s", (type(v0))));
    return {
        assetPreviewData = v0
    };
end);


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Cryo);
return require(l_Parent_0.Packages.Framework).Util.Action(script.Name, function(v2, v3)
    assert(type(v2) == "table", string.format("SetAssets requires a table, not %s", (type(v2))));
    local l_assets_0 = v2.assets;
    local l_nextPageCursor_0 = v2.nextPageCursor;
    local l_previousPageCursor_0 = v2.previousPageCursor;
    local l_pageNumber_0 = v2.pageNumber;
    assert(type(l_assets_0) == "table", string.format("SetAssets requires a places table, not %s", (type(l_assets_0))));
    if l_nextPageCursor_0 then
        assert(type(l_nextPageCursor_0) == "string", string.format("SetAssets requires a string, not %s", (type(l_nextPageCursor_0))));
    end;
    if l_previousPageCursor_0 then
        assert(type(l_previousPageCursor_0) == "string", string.format("SetAssets requires a string, not %s", (type(l_previousPageCursor_0))));
    end;
    if l_pageNumber_0 then
        assert(type(l_pageNumber_0) == "number", string.format("SetAssets requires a number, not %s", (type(l_pageNumber_0))));
    end;
    if v3 then
        assert(type(v3) == "number", string.format("SetAssets requires index to be a number, not %s", (type(v3))));
    end;
    return {
        assetsTable = {
            assets = l_assets_0,
            nextPageCursor = l_nextPageCursor_0 or v1.None,
            previousPageCursor = l_previousPageCursor_0 or v1.None,
            pageNumber = l_pageNumber_0 or v1.None,
            index = v3 ~= nil and v3 or nil
        }
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0)
    assert(type(v0) == "table", string.format("SetAssetsModerationData requires a table, not %s", (type(v0))));
    return {
        assetsModerationData = v0
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0)
    assert(type(v0) == "boolean", string.format("SetScreen requires a boolean, not %s", (type(v0))));
    return {
        bulkImporterRunning = v0
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0)
    assert(type(v0) == "table", string.format("SetSelectedAssets requires a table, not %s", (type(v0))));
    return {
        editingAssets = v0
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0)
    assert(type(v0) == "boolean", string.format("SetScreen requires a boolean, not %s", (type(v0))));
    return {
        isFetchingAssets = v0
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0)
    assert(typeof(v0) == "table", string.format("SetRecentAssets requires a table, not %s", (type(v0))));
    return {
        recentAssets = v0
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0)
    assert(typeof(v0) == "boolean", string.format("SetRecentViewToggled requires a boolean, not %s", (type(v0))));
    return {
        recentViewToggled = v0
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0, v1)
    assert(type(v0) == "number", string.format("SetRootTreeViewInstance requires assetId to be a number, not %s", (type(v0))));
    assert(typeof(v1) == "Instance", string.format("SetRootTreeViewInstance requires rootTreeViewInstance a String, not %s", (type(v1))));
    return {
        assetId = v0,
        rootTreeViewInstance = v1
    };
end);


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Action_0 = require(l_Parent_0.Packages.Framework).Util.Action;
local v2 = require(l_Parent_0.Src.Util.Screens);
return l_Action_0(script.Name, function(v3)
    assert(typeof(v3) == "table", string.format("SetScreen requires a table, not %s", (typeof(v3))));
    assert(v2[v3.Path] ~= nil, string.format("Invalid SetScreen: %s does not exist", v3.Path));
    return {
        screen = v3
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0)
    assert(type(v0) == "string", string.format("SetSearchTerm requires a string, not %s", (type(v0))));
    return {
        searchTerm = v0
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0)
    assert(type(v0) == "table", string.format("SetSelectedAssets requires a table, not %s", (type(v0))));
    return {
        selectedAssets = v0
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0)
    assert(type(v0) == "number", string.format("SetSelectionIndex requires a number, not %s", (type(v0))));
    return {
        selectionIndex = v0
    };
end);


return require(script.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0)
    assert(type(v0) == "string", string.format("SetUniverseName requires a string, not %s", (type(v0))));
    return {
        universeName = v0
    };
end);


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Action_0 = require(l_Parent_0.Packages.Framework).Util.Action;
local v2 = require(l_Parent_0.Src.Util.View);
return l_Action_0(script.Name, function(v3)
    assert(typeof(v3) == "table", string.format("SetView requires a table, not %s", (typeof(v3))));
    assert(v2[v3.Key] ~= nil, string.format("Invalid SetView: %s does not exist", v3.Key));
    return {
        view = v3
    };
end);