local l_Roact_0 = require(game:GetService("CorePackages").InGameMenuDependencies).Roact;
local v1 = l_Roact_0.Component:extend("ExternalEventConnection");
v1.init = function(v2)
    v2.connection = nil;
end;
v1.render = function(v3)
    return l_Roact_0.oneChild(v3.props[l_Roact_0.Children]);
end;
v1.didMount = function(v4)
    v4.connection = v4.props.event:Connect(v4.props.callback);
end;
v1.didUpdate = function(v5, v6)
    if not (v5.props.event == v6.event) or v5.props.callback ~= v6.callback then
        v5.connection:Disconnect();
        v5.connection = v5.props.event:Connect(v5.props.callback);
    end;
end;
v1.willUnmount = function(v7)
    if v7.connection then
        v7.connection:Disconnect();
        v7.connection = nil;
    end;
end;
return v1;


local l_RunService_0 = game:GetService("RunService");
local l_GuiService_0 = game:GetService("GuiService");
local l_RobloxGui_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local l_Parent_0 = script.Parent.Parent;
local v4 = require(l_RobloxGui_0.Modules.Common.GetDefaultQualityLevel);
local v5 = require(l_Parent_0.Utility.SendAnalytics);
local v6 = require(l_Parent_0.Resources.Constants);
return function()
    v5(v6.AnalyticsInGameMenuName, v6.AnalyticsLeaveGameName, {
        confirmed = v6.AnalyticsConfirmedName
    });
    l_GuiService_0.SelectedCoreObject = nil;
    l_RunService_0.RenderStepped:Wait();
    l_RunService_0.RenderStepped:Wait();
    game:Shutdown();
    settings().Rendering.QualityLevel = v4();
end;


return function(v0, v1, v2)
    if not (v0 ~= nil) or v0 == "" then
        return true;
    elseif v2 and string.find(utf8.nfdnormalize(v2):lower(), utf8.nfdnormalize(v0):lower(), 1, true) ~= nil then
        return true;
    else
        return string.find(v1:lower(), v0:lower(), 1, true) ~= nil;
    end;
end;


local function v0(...)
    return select("#", ...), {
        ...
    };
end;
local function v6(v1, ...)
    local v2, v3 = v0(...);
    local v4, v5 = v0(xpcall(function()
        return v1(unpack(v3, 1, v2));
    end, debug.traceback));
    return v4, v5;
end;
local function _(v7, v8, v9)
    return function(...)
        local v10, v11 = v6(v7, ...);
        if not v11[1] then
            v9(unpack(v11, 2, v10));
            return ;
        else
            v8(unpack(v11, 2, v10));
            return ;
        end;
    end;
end;
local function _(v13)
    return next(v13) == nil;
end;
local function _(v15)
    assert(type(v15) == "string", "createSymbol requires `name` to be a string.");
    local v16 = newproxy(true);
    getmetatable(v16).__tostring = function()
        return ("Symbol(%s)"):format(v15);
    end;
    return v16;
end;
assert(true, "createSymbol requires `name` to be a string.");
local v18 = newproxy(true);
local v19 = getmetatable(v18);
local v20 = "PromiseMarker";
local l_v20_0 = v20 --[[ copy: 9 -> 13 ]];
v19.__tostring = function()
    return ("Symbol(%s)"):format(l_v20_0);
end;
local l_v18_0 = v18;
v18 = {
    prototype = {}
};
v18.__index = v18.prototype;
v19 = {};
assert(true, "createSymbol requires `name` to be a string.");
v20 = newproxy(true);
local v23 = getmetatable(v20);
local v24 = "Started";
local l_v24_0 = v24 --[[ copy: 12 -> 14 ]];
v23.__tostring = function()
    return ("Symbol(%s)"):format(l_v24_0);
end;
v19.Started = v20;
assert(true, "createSymbol requires `name` to be a string.");
v20 = newproxy(true);
v23 = getmetatable(v20);
v24 = "Resolved";
local l_v24_1 = v24 --[[ copy: 12 -> 15 ]];
v23.__tostring = function()
    return ("Symbol(%s)"):format(l_v24_1);
end;
v19.Resolved = v20;
assert(true, "createSymbol requires `name` to be a string.");
v20 = newproxy(true);
v23 = getmetatable(v20);
v24 = "Rejected";
v23.__tostring = function()
    return ("Symbol(%s)"):format(v24);
end;
v19.Rejected = v20;
v18.Status = v19;
v18.new = function(v27)
    local v28 = {
        _source = debug.traceback(),
        [l_v18_0] = true,
        _status = v18.Status.Started,
        _values = nil,
        _valuesLength = -1,
        _unhandledRejection = false,
        _queuedResolve = {},
        _queuedReject = {}
    };
    setmetatable(v28, v18);
    local function v29(...)
        v28:_resolve(...);
    end;
    local function v30(...)
        v28:_reject(...);
    end;
    local _, v32 = v6(v27, v29, v30);
    local v33 = v32[1];
    local v34 = v32[2];
    if not v33 and v28._status == v18.Status.Started then
        v30(v34);
    end;
    return v28;
end;
v18.resolve = function(v35)
    return v18.new(function(v36)
        v36(v35);
    end);
end;
v18.reject = function(v37)
    return v18.new(function(_, v39)
        v39(v37);
    end);
end;
v18.all = function(v40)
    if type(v40) ~= "table" then
        error("Please pass a list of promises to Promise.all", 2);
    end;
    if #v40 == 0 then
        return v18.resolve({});
    else
        for v41 = 1, #v40 do
            if not v18.is(v40[v41]) then
                error(("Non-promise value passed into Promise.all at index #%d"):format(v41), 2);
            end;
        end;
        return v18.new(function(v42, v43)
            local v44 = {};
            local v45 = 0;
            local function v47(v46, ...)
                v44[v46] = ...;
                v45 = v45 + 1;
                if v45 == #v40 then
                    v42(v44);
                end;
            end;
            for v48 = 1, #v40 do
                v40[v48]:andThen(function(...)
                    v47(v48, ...);
                end, function(...)
                    v43(...);
                end);
            end;
        end);
    end;
end;
v18.is = function(v49)
    if type(v49) ~= "table" then
        return false;
    else
        return v49[l_v18_0] == true;
    end;
end;
v18.prototype.getStatus = function(v50)
    return v50._status;
end;
v18.prototype.andThen = function(v51, v52, v53)
    v51._unhandledRejection = false;
    return v18.new(function(v54, v55)
        local l_v54_0 = v54;
        if v52 then
            local l_v52_0 = v52;
            local l_l_v52_0_0 = l_v52_0 --[[ copy: 3 -> 5 ]];
            l_v54_0 = function(...)
                local v59, v60 = v6(l_l_v52_0_0, ...);
                if not v60[1] then
                    v55(unpack(v60, 2, v59));
                    return ;
                else
                    v54(unpack(v60, 2, v59));
                    return ;
                end;
            end;
        end;
        local l_v55_0 = v55;
        if v53 then
            local l_v53_0 = v53;
            l_v55_0 = function(...)
                local v63, v64 = v6(l_v53_0, ...);
                if not v64[1] then
                    v55(unpack(v64, 2, v63));
                    return ;
                else
                    v54(unpack(v64, 2, v63));
                    return ;
                end;
            end;
        end;
        if v51._status == v18.Status.Started then
            table.insert(v51._queuedResolve, l_v54_0);
            table.insert(v51._queuedReject, l_v55_0);
            return ;
        elseif v51._status == v18.Status.Resolved then
            l_v54_0(unpack(v51._values, 1, v51._valuesLength));
            return ;
        else
            if v51._status == v18.Status.Rejected then
                l_v55_0(unpack(v51._values, 1, v51._valuesLength));
            end;
            return ;
        end;
    end);
end;
v18.prototype.catch = function(v65, v66)
    return v65:andThen(nil, v66);
end;
v18.prototype.await = function(v67)
    v67._unhandledRejection = false;
    if v67._status == v18.Status.Started then
        local v68 = nil;
        local v69 = nil;
        local l_BindableEvent_0 = Instance.new("BindableEvent");
        v67:andThen(function(...)
            local v71, v72 = v0(...);
            v69 = v71;
            v68 = v72;
            l_BindableEvent_0:Fire(true);
        end, function(...)
            local v73, v74 = v0(...);
            v69 = v73;
            v68 = v74;
            l_BindableEvent_0:Fire(false);
        end);
        local v75 = l_BindableEvent_0.Event:Wait();
        l_BindableEvent_0:Destroy();
        return v75, unpack(v68, 1, v69);
    elseif v67._status == v18.Status.Resolved then
        return true, unpack(v67._values, 1, v67._valuesLength);
    elseif v67._status == v18.Status.Rejected then
        return false, unpack(v67._values, 1, v67._valuesLength);
    else
        error("Promise had an invalid status.");
        return ;
    end;
end;
v18.prototype._unwrap = function(v76)
    if v76._status == v18.Status.Started then
        error("Promise has not resolved or rejected.", 2);
    end;
    return v76._status == v18.Status.Resolved, unpack(v76._values, 1, v76._valuesLength);
end;
v18.prototype._resolve = function(v77, ...)
    if v77._status ~= v18.Status.Started then
        return ;
    elseif not v18.is((...)) then
        v77._status = v18.Status.Resolved;
        local v78, v79 = v0(...);
        v77._valuesLength = v78;
        v77._values = v79;
        for _, v81 in ipairs(v77._queuedResolve) do
            v81(...);
        end;
        return ;
    else
        if select("#", ...) > 1 then
            warn((("When returning a Promise from andThen, extra arguments are " .. "discarded\n\n%s"):format(v77._source)));
        end;
        (...):andThen(function(...)
            v77:_resolve(...);
        end, function(...)
            v77:_reject(...);
        end);
        return ;
    end;
end;
v18.prototype._reject = function(v82, ...)
    if v82._status ~= v18.Status.Started then
        return ;
    else
        v82._status = v18.Status.Rejected;
        local v83, v84 = v0(...);
        v82._valuesLength = v83;
        v82._values = v84;
        if next(v82._queuedReject) == nil then
            v82._unhandledRejection = true;
            v83 = tostring((...));
            spawn(function()
                if v82._unhandledRejection then
                    warn((("Unhandled promise rejection:\n\n%s\n\n%s"):format(v83, v82._source)));
                    return ;
                else
                    return ;
                end;
            end);
            return ;
        else
            for _, v86 in ipairs(v82._queuedReject) do
                v86(...);
            end;
            return ;
        end;
    end;
end;
return v18;


local l_UserInputService_0 = game:GetService("UserInputService");
local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local v2 = require(script.Parent.Parent.Resources.Constants);
local l_InputTypeMap_0 = v2.InputTypeMap;
return function(v4, v5, v6, v7, v8)
    if v8 == nil then
        v8 = l_RbxAnalyticsService_0;
    end;
    local function v11()
        local l_GameSettings_0 = UserSettings().GameSettings;
        local v10 = {};
        if not l_UserInputService_0.TouchEnabled then
            v10.camera_mode_desktop = tostring(l_GameSettings_0.ComputerCameraMovementMode);
        else
            v10.camera_mode_touch = tostring(l_GameSettings_0.TouchCameraMovementMode);
        end;
        if not l_UserInputService_0.TouchEnabled then
            v10.movement_mode_desktop = tostring(l_GameSettings_0.ComputerMovementMode);
        else
            v10.movement_mode_touch = tostring(l_GameSettings_0.TouchMovementMode);
        end;
        if l_UserInputService_0.MouseEnabled then
            v10.shift_lock_enabled = tostring(l_GameSettings_0.ControlMode == Enum.ControlMode.MouseLockSwitch);
        end;
        if not (not l_UserInputService_0.GamepadEnabled or not l_GameSettings_0.IsUsingGamepadCameraSensitivity) then
            v10.camera_sensitivity_gamepad = string.format("%.2f", l_GameSettings_0.GamepadCameraSensitivity);
        end;
        if l_UserInputService_0.MouseEnabled then
            v10.camera_sensitivity_mouse = string.format("%.2f", l_GameSettings_0.MouseSensitivityFirstPerson.X);
        end;
        v10.camera_y_inverted = tostring(l_GameSettings_0.CameraYInverted);
        v10.show_performance_stats = tostring(l_GameSettings_0.PerformanceStatsVisible);
        v10.volume = tostring((math.floor(l_GameSettings_0.MasterVolume * 10 + 0.5)));
        v10.gfx_quality_level = tostring(settings().Rendering.QualityLevel);
        v10.fullscreen_enabled = tostring(l_GameSettings_0:InFullScreen());
        v10.microprofiler_enabled = tostring(l_GameSettings_0.OnScreenProfilerEnabled);
        v10.microprofiler_webserver_enabled = tostring(l_GameSettings_0.MicroProfilerWebServerEnabled);
        return v10;
    end;
    if v7 == true then
        v6 = v11();
        v5 = v2.AnalyticsSettingsChangeName;
        v4 = v2.AnalyticsInGameMenuName;
    end;
    if not v6 then
        v6 = {};
    end;
    v6.universeid = tostring(game.GameId);
    v6.inputDevice = tostring(l_InputTypeMap_0[l_UserInputService_0:GetLastInputType()] or l_UserInputService_0:GetLastInputType());
    v8:SetRBXEventStream(v2.AnalyticsTargetName, v4, v5, v6);
end;


local l_AppStorageService_0 = game:GetService("AppStorageService");
local l_Players_0 = game:GetService("Players");
local l_HttpService_0 = game:GetService("HttpService");
local function _()
    if l_Players_0.LocalPlayer and l_Players_0.LocalPlayer.UserId > 0 then
        return (tostring(l_Players_0.LocalPlayer.UserId));
    else
        return "0";
    end;
end;
local function _(v4)
    return "u_" .. tostring(v4 or "0");
end;
local function v10(v6)
    local l_l_AppStorageService_0_Item_0 = l_AppStorageService_0:GetItem(v6);
    local l_status_0, l_result_0 = pcall(function()
        return l_HttpService_0:JSONDecode(l_l_AppStorageService_0_Item_0);
    end);
    if l_status_0 and type(l_result_0) == "table" then
        return l_result_0;
    else
        return {
            default = l_l_AppStorageService_0_Item_0
        };
    end;
end;
local function _(v11, v12)
    l_AppStorageService_0:SetItem(v11, (l_HttpService_0:JSONEncode(v12)));
end;
local v14 = {};
v14.__index = v14;
v14.new = function(v15)
    if not v15 then
        v15 = if not not l_Players_0.LocalPlayer and l_Players_0.LocalPlayer.UserId > 0 then tostring(l_Players_0.LocalPlayer.UserId) else "0";
    end;
    local v16 = {
        userId = tostring(v15)
    };
    setmetatable(v16, v14);
    return v16;
end;
v14.GetItem = function(v17, v18)
    local v19 = v10(v18);
    local v20 = v19["u_" .. tostring(v17.userId or "0")];
    if v20 == nil then
        v20 = v19.default;
    end;
    return v20;
end;
v14.SetItem = function(v21, v22, v23)
    local v24 = v10(v22);
    v24["u_" .. tostring(v21.userId or "0")] = v23;
    l_AppStorageService_0:SetItem(v22, (l_HttpService_0:JSONEncode(v24)));
end;
v14.Flush = function(_)
    l_AppStorageService_0:Flush();
end;
v14.getItem = v14.GetItem;
v14.setItem = v14.SetItem;
v14.flush = v14.Flush;
return v14;


local l_Rodux_0 = require(game:GetService("CorePackages").InGameMenuDependencies).Rodux;
local l_Parent_0 = script.Parent;
local v2 = require(l_Parent_0.GlobalConfig);
local v3 = require(l_Parent_0.reducer);
return function()
    local v4 = {
        l_Rodux_0.thunkMiddleware
    };
    if v2.logStore then
        table.insert(v4, l_Rodux_0.loggerMiddleware);
    end;
    return l_Rodux_0.Store.new(v3, nil, v4);
end;


local v0 = require(game:GetService("CorePackages").Workspace.Packages.JestConfigs);
return {
    displayName = "InGameMenuJest3",
    testMatch = {
        "**/*.test"
    },
    setupFilesAfterEnv = {
        v0.setupFiles.UIBloxInitializer,
        v0.setupFiles.createPromiseRejectionHandler()
    }
};


local l_Rodux_0 = require(game:GetService("CorePackages").InGameMenuDependencies).Rodux;
local l_Parent_0 = script.Parent.Parent;
return l_Rodux_0.createReducer({
    inspectMenuEnabled = true,
    inputType = require(l_Parent_0.Resources.Constants).InputType.MouseAndKeyboard
}, {
    [require(l_Parent_0.Actions.SetInspectMenuEnabled).name] = function(v2, v3)
        return {
            inspectMenuEnabled = v3.enabled,
            inputType = v2.inputType
        };
    end,
    [require(l_Parent_0.Actions.SetInputType).name] = function(v4, v5)
        return {
            inspectMenuEnabled = v4.inspectMenuEnabled,
            inputType = v5.inputType
        };
    end
});


local v0 = require(game:GetService("CorePackages").InGameMenuDependencies);
local l_Cryo_0 = v0.Cryo;
return v0.Rodux.createReducer({}, {
    [require(script.Parent.Parent.Actions.SetFriendStatus).name] = function(v2, v3)
        return l_Cryo_0.Dictionary.join(v2, {
            [v3.userId] = v3.friendStatus or l_Cryo_0.None
        });
    end
});


local v0 = require(game:GetService("CorePackages").InGameMenuDependencies);
local l_Cryo_0 = v0.Cryo;
return v0.Rodux.createReducer({
    name = "Game",
    description = ""
}, {
    [require(script.Parent.Parent.Actions.SetGameNameAndDescription).name] = function(v2, v3)
        return l_Cryo_0.Dictionary.join(v2, {
            name = v3.gameName,
            description = v3.gameDescription
        });
    end
});


local v0 = require(game:GetService("CorePackages").InGameMenuDependencies);
local l_Cryo_0 = v0.Cryo;
return v0.Rodux.createReducer({}, {
    [require(script.Parent.Parent.Actions.ReceivedUserInviteStatus).name] = function(v2, v3)
        return l_Cryo_0.Dictionary.join(v2, {
            [v3.userId] = v3.inviteStatus
        });
    end
});


local v0 = require(game:GetService("CorePackages").InGameMenuDependencies);
local l_Rodux_0 = v0.Rodux;
local l_Cryo_0 = v0.Cryo;
local l_Parent_0 = script.Parent.Parent;
return l_Rodux_0.createReducer({
    closingApp = false,
    menuIconTooltipOpen = false
}, {
    [require(l_Parent_0.Actions.OpenNativeClosePrompt).name] = function(v4, _)
        return l_Cryo_0.Dictionary.join(v4, {
            closingApp = true
        });
    end,
    [require(l_Parent_0.Actions.CloseNativeClosePrompt).name] = function(v6, _)
        return l_Cryo_0.Dictionary.join(v6, {
            closingApp = false
        });
    end,
    [require(l_Parent_0.Actions.SetMenuIconTooltipOpen).name] = function(v8, v9)
        return l_Cryo_0.Dictionary.join(v8, {
            menuIconTooltipOpen = v9.menuIconTooltipOpen
        });
    end
});


local v0 = require(game:GetService("CorePackages").InGameMenuDependencies);
local l_Rodux_0 = v0.Rodux;
local l_Cryo_0 = v0.Cryo;
local l_Parent_0 = script.Parent.Parent;
return l_Rodux_0.createReducer({
    dialogOpen = false,
    reportSentOpen = false,
    userId = nil,
    userName = nil
}, {
    [require(l_Parent_0.Actions.OpenReportDialog).name] = function(v4, v5)
        return {
            dialogOpen = true,
            reportSentOpen = v4.reportSentOpen,
            userId = v5.userId,
            userName = v5.userName
        };
    end,
    [require(l_Parent_0.Actions.SetCurrentPage).name] = function(v6, _)
        return l_Cryo_0.Dictionary.join(v6, {
            dialogOpen = false
        });
    end,
    [require(l_Parent_0.Actions.CloseReportDialog).name] = function(v8, _)
        return l_Cryo_0.Dictionary.join(v8, {
            dialogOpen = false
        });
    end,
    [require(l_Parent_0.Actions.OpenReportSentDialog).name] = function(v10, _)
        return l_Cryo_0.Dictionary.join(v10, {
            reportSentOpen = true
        });
    end,
    [require(l_Parent_0.Actions.CloseReportSentDialog).name] = function(v12, _)
        return l_Cryo_0.Dictionary.join(v12, {
            reportSentOpen = false
        });
    end
});


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        overlay = v0,
        overlayProps = v1
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        assetId = v0,
        bundleInfo = v1
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        assetId = v0,
        bundleIds = v1
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local _ = require(script.Parent.Parent.Models.CollectibleInstance);
return require(l_CorePackages_0.Rodux).makeActionCreator(script.Name, function(v2, v3)
    return {
        collectibleItemId = v2,
        collectibleItemInstances = v3
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        viewingDetails = v0,
        assetId = v1
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        equippedAssets = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        experienceInfo = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        id = v0,
        isFavorite = v1
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        gamepadEnabled = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        isSubjectToChinaPolicies = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        itemId = v0,
        itemType = v1
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        playerId = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        playerName = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0, v1, v2)
    return {
        tryingOn = v0,
        assetId = v1,
        assetTypeId = v2
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        view = v0
    };
end);


return {
    ShowPlayableAttributionMapper = {
        UnplayableOtherReason = true,
        Playable = true,
        GuestProhibited = true,
        GameUnapproved = false,
        IncorrectConfiguration = false,
        UniverseRootPlaceIsPrivate = false,
        InsufficientPermissionFriendsOnly = true,
        InsufficientPermissionGroupOnly = true,
        DeviceRestricted = true,
        UnderReview = true,
        PurchaseRequired = true,
        AccountRestricted = true,
        TemporarilyUnavailable = true,
        ComplianceBlocked = true,
        ContextualPlayabilityAgeRecommendationParentalControls = true,
        ContextualPlayabilityRegionalAvailability = true,
        ContextualPlayabilityRegionalCompliance = true,
        ContextualPlayabilityUnverifiedSeventeenPlusUser = true
    }
};


local l_Players_0 = game:GetService("Players");
local l_RobloxReplicatedStorage_0 = game:GetService("RobloxReplicatedStorage");
local v2 = require(game:GetService("CorePackages").Packages.Promise);
local v3 = CFrame.new((Vector3.new(0, 150, 0)));
local v4 = game:DefineFastInt("InspectAndBuyClusterCompositionTimeoutMs", 3000);
local v5 = {};
v5.__index = v5;
local function v9(v6)
    local l_l_Players_0_HumanoidModelFromDescription_0 = l_Players_0:CreateHumanoidModelFromDescription(Instance.new("HumanoidDescription"), Enum.HumanoidRigType.R6);
    local l_l_Players_0_HumanoidModelFromDescription_1 = l_Players_0:CreateHumanoidModelFromDescription(Instance.new("HumanoidDescription"), Enum.HumanoidRigType.R15);
    l_l_Players_0_HumanoidModelFromDescription_0.Humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None;
    l_l_Players_0_HumanoidModelFromDescription_1.Humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None;
    l_l_Players_0_HumanoidModelFromDescription_0.HumanoidRootPart.Anchored = true;
    l_l_Players_0_HumanoidModelFromDescription_1.HumanoidRootPart.Anchored = true;
    l_l_Players_0_HumanoidModelFromDescription_0.Parent = l_RobloxReplicatedStorage_0;
    l_l_Players_0_HumanoidModelFromDescription_1.Parent = l_RobloxReplicatedStorage_0;
    l_l_Players_0_HumanoidModelFromDescription_0.HumanoidRootPart.CFrame = CFrame.new(v6);
    l_l_Players_0_HumanoidModelFromDescription_1:SetPrimaryPartCFrame(l_l_Players_0_HumanoidModelFromDescription_0.HumanoidRootPart.CFrame);
    return l_l_Players_0_HumanoidModelFromDescription_0, l_l_Players_0_HumanoidModelFromDescription_1;
end;
v5.new = function(v10, v11, v12, v13)
    local v14 = {};
    setmetatable(v14, v5);
    v14.mockApplyDescription = v13;
    local v15, v16 = v9(v11);
    v14.r6 = v15;
    v14.r15current = v16;
    v14.r15offScreen = v16:Clone();
    v14.r15offScreen.Parent = l_RobloxReplicatedStorage_0;
    v14.avatarType = v12;
    v14.worldModelRef = v10;
    v14.inProgressPromise = nil;
    v14.waitingPromise = nil;
    v14.r6Promise = nil;
    v14.destroyed = false;
    return v14;
end;
v5.setupAnimations = function(v17, v18, v19)
    v18.Parent = v17.r6;
    v19.Parent = v17.r15current;
    v19.Archivable = true;
    local v20 = v19:Clone();
    v20.Parent = v17.r15offScreen;
    v20.Archivable = false;
    v19.Archivable = false;
end;
v5.getCurrentCharacter = function(v21)
    if v21.avatarType == Enum.HumanoidRigType.R15 then
        return v21.r15current;
    else
        return v21.r6;
    end;
end;
v5.isR15 = function(v22)
    return v22.avatarType == Enum.HumanoidRigType.R15;
end;
v5.syncRotation = function(_, v24, v25)
    local _, _, _, v29, v30, v31, v32, v33, v34, v35, v36, v37 = v24.HumanoidRootPart.CFrame:components();
    local l_p_0 = v25.HumanoidRootPart.CFrame.p;
    v25.HumanoidRootPart.CFrame = CFrame.new(l_p_0.X, l_p_0.Y, l_p_0.Z, v29, v30, v31, v32, v33, v34, v35, v36, v37);
end;
local function v48(v39, v40)
    local l_v39_Accessories_0 = v39:GetAccessories(false);
    local l_v40_Accessories_0 = v40:GetAccessories(false);
    if #l_v40_Accessories_0 == 0 then
        return false;
    elseif #l_v39_Accessories_0 ~= #l_v40_Accessories_0 then
        return true;
    else
        local v43 = {};
        for _, v45 in ipairs(l_v39_Accessories_0) do
            v43[v45.AssetId] = true;
        end;
        for _, v47 in ipairs(l_v40_Accessories_0) do
            if not v43[v47.AssetId] then
                return true;
            end;
        end;
        return false;
    end;
end;
local function _(v49)
    return v49:FindFirstChildWhichIsA("WrapLayer", true) ~= nil;
end;
v5._doUpdateR6 = function(v51, v52)
    return v2.new(function(v53, _)
        v51.r6.Parent = v51.worldModelRef:getValue();
        if not v51.mockApplyDescription then
            v51.r6.Humanoid:ApplyDescription(v52);
        else
            v51.mockApplyDescription(v51.r6, v52);
        end;
        v53(v51:getCurrentCharacter());
    end);
end;
v5._doSimpleUpdateR15 = function(v55, v56)
    return v2.new(function(v57, _)
        v55.r15current.Parent = v55.worldModelRef:getValue();
        if not v55.mockApplyDescription then
            v55.r15current.Humanoid:ApplyDescription(v56);
        else
            v55.mockApplyDescription(v55.r15current, v56);
        end;
        v57(v55.r15current);
    end);
end;
v5._updateOffscreenR15 = function(v59, v60)
    return v2.new(function(v61, _)
        v59.r15offScreen.HumanoidRootPart.CFrame = v3;
        v59.r15offScreen.Parent = v59.worldModelRef:getValue();
        if not v59.mockApplyDescription then
            v59.r15offScreen.Humanoid:ApplyDescription(v60);
        else
            v59.mockApplyDescription(v59.r15offScreen, v60);
        end;
        v61(v59.r15offScreen);
    end);
end;
local function v64(v63)
    if not (v63:FindFirstChildWhichIsA("WrapLayer", true) ~= nil) then
        return v2.resolve(false);
    else
        return v2.race({
            v2.fromEvent(v63.Humanoid.ClusterCompositionFinished),
            v2.delay(v4 * 0.001)
        }):andThen(function()
            return true;
        end);
    end;
end;
v5._completeUpdate = function(v65)
    v65.r15offScreen.HumanoidRootPart.CFrame = v65.r15current.HumanoidRootPart.CFrame;
    v65.r15current.HumanoidRootPart.CFrame = v3;
    v65.r15current.Parent = l_RobloxReplicatedStorage_0;
    local l_r15current_0 = v65.r15current;
    local l_r15offScreen_0 = v65.r15offScreen;
    v65.r15offScreen = l_r15current_0;
    v65.r15current = l_r15offScreen_0;
    return v65.r15current;
end;
v5._doUpdateR15 = function(v68, v69)
    if v48(v68.r15current.Humanoid:GetAppliedDescription(), v69) then
        v68.inProgressPromise = v68:_updateOffscreenR15(v69):andThen(v64):andThen(function()
            return v68:_completeUpdate();
        end);
        return v68.inProgressPromise;
    else
        return v68:_doSimpleUpdateR15(v69);
    end;
end;
v5.maybeUpdateCharacter = function(v70, v71)
    if v70.avatarType == Enum.HumanoidRigType.R6 then
        v70.r6Promise = v70:_doUpdateR6(v71);
        return v70.r6Promise;
    elseif v70.inProgressPromise and v70.inProgressPromise:getStatus() == v2.Status.Started then
        local l_waitingPromise_0 = v70.waitingPromise;
        v70.waitingPromise = v70.inProgressPromise:andThen(function()
            return v70:_doUpdateR15(v71);
        end);
        if l_waitingPromise_0 then
            l_waitingPromise_0:cancel();
        end;
        return v70.waitingPromise;
    else
        return v70:_doUpdateR15(v71);
    end;
end;
v5.switchAvatarType = function(v73, v74)
    if v74 == v73.avatarType then
        return v73:getCurrentCharacter();
    else
        v73:_cancelPromises();
        v73.avatarType = v74;
        local v75 = nil;
        local v76 = nil;
        if v74 == Enum.HumanoidRigType.R6 then
            v75 = v73.r6;
            v76 = v73.r15current;
        else
            v75 = v73.r15current;
            v76 = v73.r6;
        end;
        v76.Parent = l_RobloxReplicatedStorage_0;
        v76.Humanoid:UnequipTools();
        v73:syncRotation(v76, v75);
        return v75;
    end;
end;
v5.start = function(_)
end;
local function _(v78)
    if v78 then
        v78:cancel();
    end;
end;
v5._cancelPromises = function(v80)
    local l_inProgressPromise_0 = v80.inProgressPromise;
    if l_inProgressPromise_0 then
        l_inProgressPromise_0:cancel();
    end;
    l_inProgressPromise_0 = v80.waitingPromise;
    if l_inProgressPromise_0 then
        l_inProgressPromise_0:cancel();
    end;
    l_inProgressPromise_0 = v80.r6Promise;
    if l_inProgressPromise_0 then
        l_inProgressPromise_0:cancel();
    end;
    v80.inProgressPromise = nil;
    v80.waitingPromise = nil;
    v80.r6Promise = nil;
end;
v5.stop = function(v82)
    v82.r6.Parent = l_RobloxReplicatedStorage_0;
    v82.r15current.Parent = l_RobloxReplicatedStorage_0;
    v82.r15offScreen.Parent = l_RobloxReplicatedStorage_0;
    v82:_cancelPromises();
end;
v5.onDestroy = function(v83)
    v83:_cancelPromises();
    v83.r6:Destroy();
    v83.r15current:Destroy();
    v83.r15offScreen:Destroy();
end;
return v5;


local l_Color_0 = require(game:GetService("CorePackages").Workspace.Packages.AppCommonLib).Color;
local v1 = {
    Obsidian = l_Color_0.Color3FromHex(1579291),
    Carbon = l_Color_0.Color3FromHex(2040099),
    Slate = l_Color_0.Color3FromHex(2303271),
    Flint = l_Color_0.Color3FromHex(3750717),
    Graphite = l_Color_0.Color3FromHex(6645352),
    Pumice = l_Color_0.Color3FromHex(12435134),
    Black = Color3.fromRGB(0, 0, 0),
    White = Color3.fromRGB(255, 255, 255),
    Gray1 = l_Color_0.Color3FromHex(1644825),
    Gray2 = l_Color_0.Color3FromHex(7697781),
    Gray4 = l_Color_0.Color3FromHex(14935011),
    GrayBackground = l_Color_0.Color3FromHex(14211288),
    Green = l_Color_0.Color3FromHex(45167),
    DisabledGreen = l_Color_0.Color3FromHex(10273956)
};
setmetatable(v1, {
    __newindex = function(_, _, _)
    end,
    __index = function(_, v6)
        error("Colors table has no value: " .. tostring(v6));
    end
});
return v1;


local v0 = require(script.Parent.Colors);
local v1 = require(script.Parent.Parent.TopBar.Constants);
local v2 = {
    ContainerBackgroundTransparency = 0,
    ContainerBackgroundColor = v0.Carbon,
    UseContainerAspectRatio = false,
    ContainerAspectRatio = nil,
    MaxAssetCardsPerRow = 3,
    ContainerSize = UDim2.new(1, 0, 1, -v1.TopBarHeight),
    ContainerAnchorPoint = Vector2.new(0.5, 0),
    ContainerPosition = UDim2.new(0.5, 0, 0, v1.TopBarHeight),
    AvatarHeadShotSize = 48,
    TopSizeY = 90,
    ClipsDescendants = false,
    PlayerViewportSize = UDim2.new(1, 0, 0.41, 0),
    AssetListSize = UDim2.new(1, 0, 0.59, -42),
    AssetListPosition = UDim2.new(0, 0, 0.41, 42),
    CloseButtonPosition = UDim2.new(0, 6, 0, -20),
    DetailsThumbnailFrameSize = UDim2.new(1, 0, 0.4, 0),
    DetailsThumbnailFramePosition = UDim2.new(0, 0, 0, 15),
    DetailsThumbnailAnchorPoint = Vector2.new(0.5, 0.5),
    DetailsThumbnailPosition = UDim2.new(0.5, 0, 0.5, 0),
    DetailsThumbnailARDominantAxis = Enum.DominantAxis.Height,
    DetailsFramePosition = UDim2.new(0, 15, 0.4, 15),
    DetailsFrameSize = UDim2.new(1, -30, 0.6, -30),
    AssetCardMaxSizeX = 108,
    AssetCardMaxSizeY = 157,
    DefaultCameraOffset = CFrame.new(0, 2, -5),
    ToolOffset = CFrame.new(0, 2, -8),
    TryOnPosition = UDim2.new(0, 0, 0, 15),
    TryOnSize = UDim2.new(1, 0, 0.4, 0),
    BorderPaddingSize = 20,
    AssetTextMaxSize = 14
};
setmetatable(v2, {
    __newindex = function(_, _, _)
    end,
    __index = function(_, v7)
        error("CompactView table has no value: " .. tostring(v7));
    end
});
return v2;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Parent_0 = script.Parent.Parent;
local l_Images_0 = require(l_CorePackages_0.UIBlox).App.ImageSet.Images;
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.RoactRodux);
local l_AppFonts_0 = require(l_CorePackages_0.Workspace.Packages.Style).AppFonts;
local v6 = require(l_Parent_0.Colors);
local v7 = require(l_Parent_0.Constants);
local v8 = require(l_Parent_0.Actions.SetDetailsInformation);
local v9 = require(l_Parent_0.getSelectionImageObjectRegular);
local v10 = require(l_Parent_0.Components.InspectAndBuyContext);
local v11 = require(l_Parent_0.Components.LimitedLabel);
local v12 = require(l_Parent_0.UtilityFunctions);
local v13 = require(l_Parent_0.Flags.GetFFlagDisplayCollectiblesIcon);
local v14 = require(l_Parent_0.Flags.GetFFlagIBEnableCollectiblesSystemSupport);
local v15 = require(l_Parent_0.Flags.GetFFlagIBEnableLimitedItemBugFixAndAlignment);
local v16 = v3.Component:extend("AssetCard");
v16.init = function(v17)
    v17.selectedImage = v9();
end;
v16.render = function(v18)
    local l_view_0 = v18.props.view;
    local l_equipped_0 = v18.props.equipped;
    local l_assetInfo_0 = v18.props.assetInfo;
    local l_openDetails_0 = v18.props.openDetails;
    local l_assetCardSizeX_0 = v18.props.assetCardSizeX;
    local v24 = l_Images_0["icons/status/item/limited"];
    local v25 = not not v24 and v24.ImageRectSize / l_Images_0.ImagesResolutionScale or Vector2.new(0, 0);
    return v3.createElement(v10.Consumer, {
        render = function(v26)
            local v27 = v26[l_view_0];
            local v28 = v13() and v12.isCollectibles(l_assetInfo_0);
            local v29 = nil;
            local v30 = nil;
            local v31 = nil;
            if v14() then
                v29 = v12.hasLimitedQuantity(l_assetInfo_0);
                v30 = l_assetInfo_0.isLimitedUnique or l_assetInfo_0.collectibleIsLimited;
                if v15() then
                    v30 = v12.isLimited1Point0_LimitedUnique(l_assetInfo_0) or v12.isLimited2Point0_Or_LimitedCollectible(l_assetInfo_0);
                end;
                v31 = UDim2.new(0, v25.X + if not v30 then v7.LimitedIconFrameSizeXOffset else v7.LimitedIconFrameSizeXOffset * 2, 0, v25.Y + v7.LimitedIconFrameSizeYOffset);
            end;
            return v3.createElement("ImageButton", {
                BackgroundTransparency = 0,
                BorderSizePixel = 0,
                BackgroundColor3 = v6.Gray2,
                Selectable = true,
                SelectionImageObject = v18.selectedImage,
                [v3.Event.Activated] = function()
                    l_openDetails_0(l_assetInfo_0.assetId);
                end
            }, {
                AssetThumbnail = v3.createElement("ImageButton", {
                    Size = UDim2.new(1, 0, 0, l_assetCardSizeX_0),
                    BackgroundTransparency = 0,
                    BorderSizePixel = 0,
                    BackgroundColor3 = v6.Graphite,
                    Selectable = false,
                    AutoButtonColor = false,
                    Image = "rbxthumb://type=Asset&id=" .. l_assetInfo_0.assetId .. "&w=150&h=150",
                    [v3.Event.Activated] = function()
                        l_openDetails_0(l_assetInfo_0.assetId);
                    end
                }),
                AssetNameBackground = v3.createElement("Frame", {
                    Size = UDim2.new(1, 0, 1, -l_assetCardSizeX_0),
                    Position = UDim2.new(0, 0, 0, l_assetCardSizeX_0),
                    BorderSizePixel = 0,
                    BackgroundColor3 = Color3.fromRGB(44, 45, 47)
                }, {
                    AssetName = v3.createElement("TextLabel", {
                        BackgroundTransparency = 1,
                        Size = UDim2.new(1, -10, 1, -10),
                        TextTruncate = Enum.TextTruncate.AtEnd,
                        Position = UDim2.new(0, 5, 0, 5),
                        TextWrapped = true,
                        Text = l_assetInfo_0.name or "",
                        TextXAlignment = Enum.TextXAlignment.Left,
                        TextYAlignment = Enum.TextYAlignment.Center,
                        TextSize = 12,
                        TextScaled = true,
                        Font = l_AppFonts_0.default:getDefault(),
                        TextColor3 = Color3.new(1, 1, 1)
                    }, {
                        UITextSizeConstraint = v3.createElement("UITextSizeConstraint", {
                            MaxTextSize = v27.AssetTextMaxSize
                        })
                    })
                }),
                EquippedFrame = v3.createElement("ImageLabel", {
                    Size = UDim2.new(1, 0, 1, 0),
                    BackgroundTransparency = 1,
                    ZIndex = 2,
                    Visible = l_equipped_0,
                    Image = "rbxasset://textures/ui/InspectMenu/gr-item-selector.png",
                    ImageColor3 = v6.Green,
                    ScaleType = Enum.ScaleType.Slice,
                    SliceCenter = Rect.new(2.5, 2.5, 2.5, 2.5)
                }),
                Corner = v3.createElement("ImageLabel", {
                    Position = UDim2.new(1, -25, 0, 0),
                    Size = UDim2.new(0, 25, 0, 25),
                    BackgroundTransparency = 1,
                    ZIndex = 2,
                    Visible = l_equipped_0,
                    Image = "rbxasset://textures/ui/InspectMenu/gr-item-selector-triangle.png",
                    ImageColor3 = v6.Green
                }),
                LimitedLabel = if not v14() then v28 else v29 and v3.createElement(v11, {
                    frameSize = if not v14() then UDim2.new(0, v25.X + 18, 0, v25.Y + 4) else v31,
                    framePosition = UDim2.new(0, 16, 0, (l_assetCardSizeX_0 - v25.Y) - 20),
                    imageSize = UDim2.new(0, v25.X, 0, v25.Y),
                    imagePosition = UDim2.new(0, 5, 0, 2),
                    textSize = UDim2.new(0, v25.X, 0, v25.Y),
                    textPosition = UDim2.new(0, 5 + v25.X, 0, 2),
                    text = (not v14() or v30) and "#" or nil
                })
            });
        end
    });
end;
return v4.UNSTABLE_connect2(function(v32, v33)
    return {
        view = v32.view,
        equipped = v32.equippedAssets[v33.assetInfo.assetId] == true,
        locale = v32.locale
    };
end, function(v34)
    return {
        openDetails = function(v35)
            v34(v8(true, v35));
        end
    };
end)(v16);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_Players_0 = game:GetService("Players");
local l_Parent_0 = script.Parent.Parent;
local v4 = require(l_CorePackages_0.Roact);
local v5 = require(l_CorePackages_0.RoactRodux);
local l_AppFonts_0 = require(l_CorePackages_0.Workspace.Packages.Style).AppFonts;
local v7 = require(l_Parent_0.Components.DetailsText);
local v8 = require(l_Parent_0.Components.DetailsThumbnail);
local v9 = require(l_Parent_0.Components.DetailsDescription);
local v10 = require(l_Parent_0.Components.DetailsButtons);
local v11 = require(l_Parent_0.Components.TryOnViewport);
local v12 = require(l_Parent_0.Actions.OpenOverlay);
local v13 = require(l_Parent_0.Enums.Overlay);
local v14 = require(l_Parent_0.Thunks.GetAssetBundles);
local v15 = require(l_Parent_0.Thunks.ReportOpenDetailsPage);
local v16 = require(l_Parent_0.Thunks.GetEconomyProductInfo);
local v17 = require(l_Parent_0.Thunks.GetCollectibleResellableInstances);
local v18 = require(l_Parent_0.Colors);
local v19 = require(l_Parent_0.Constants);
local v20 = require(l_Parent_0.UtilityFunctions);
local v21 = require(l_CorePackages_0.tutils);
local v22 = require(l_CoreGui_0.RobloxGui.Modules.RobloxTranslator);
local v23 = require(l_CorePackages_0.UIBlox);
local l_Images_0 = v23.App.ImageSet.Images;
local l_ImageSetLabel_0 = v23.Core.ImageSet.ImageSetLabel;
local l_ItemInfoList_0 = require(l_CorePackages_0.Workspace.Packages.ItemDetails).ItemInfoList;
local v27 = require(l_Parent_0.AttributionConstants);
local v28 = require(l_Parent_0.Flags.FFlagAssetDetailsUseAutomaticCanvasSize);
local v29 = require(l_Parent_0.Flags.FFlagAttributionInInspectAndBuy);
local v30 = require(l_Parent_0.Flags.GetCollectibleItemInInspectAndBuyEnabled);
local v31 = require(l_Parent_0.Components.InspectAndBuyContext);
local v32 = require(l_Parent_0.Flags.GetFFlagDisplayCollectiblesIcon);
local v33 = require(l_Parent_0.Flags.GetFFlagIBEnableLimitedItemBugFixAndAlignment);
local v34 = require(l_Parent_0.Flags.GetFFlagIBEnableNewDataCollectionForCollectibleSystem);
local v35 = require(l_Parent_0.Flags.GetFFlagIBEnableCollectiblePurchaseForUnlimited);
local v36 = require(l_Parent_0.Thunks.GetItemDetails);
local v37 = require(l_Parent_0.Actions.SetAssetFromBundleInfo);
local v38 = require(l_Parent_0.Flags.GetFFlagIBEnableLimitedBundle);
local v39 = require(l_CoreGui_0.RobloxGui.Modules.Settings.Theme);
local l_ControllerBarHeight_0 = require(l_CoreGui_0.RobloxGui.Modules.InGameMenuConstants).ControllerBarHeight;
local v41 = v4.PureComponent:extend("AssetDetails");
v41.setScrollingEnabled = function(v42, v43)
    if v42.state.scrollingEnabled ~= v43 then
        v42:setState({
            scrollingEnabled = v43
        });
    end;
end;
v41.getInfoRowProps = function(v44)
    local v45 = v44.props.assetInfo or {};
    local l_locale_0 = v44.props.locale;
    local v47 = v45.bundlesAssetIsIn and #v45.bundlesAssetIsIn == 1;
    if v34() then
        v47 = v45.parentBundleId ~= nil;
    end;
    local v48 = {
        infoName = v22:FormatByKeyForLocale("Feature.Catalog.Label.Filter.Creator", l_locale_0),
        infoData = v45.creatorName or "",
        hasVerifiedBadge = v45.creatorHasVerifiedBadge,
        LayoutOrder = 1,
        Selectable = if not v29 then nil else false
    };
    local v49 = nil;
    local l_creatingUniverseId_0 = v45.creatingUniverseId;
    if l_creatingUniverseId_0 then
        local v51 = v44.props.creatingExperiences[l_creatingUniverseId_0];
        if not (not v51 or not v27.ShowPlayableAttributionMapper[v51.playabilityStatus]) then
            local l_v51_0 = v51 --[[ copy: 7 -> 11 ]];
            v49 = {
                infoName = v22:FormatByKeyForLocale("Feature.Catalog.Label.Attribution", l_locale_0),
                infoData = v51.name or "",
                onActivate = if not v29 then nil else function()
                    v44.props.openOverlay(v13.AttributionTraversal, l_v51_0);
                end,
                LayoutOrder = 2,
                [v4.Ref] = if not v29 then nil else v44.attributionRef,
                Selectable = not not v29 or nil
            };
        end;
    end;
    local v53 = nil;
    if not v47 then
        local v54 = v19.AssetCategoriesLocalized[v19.AssetTypeIdToCategory[v45.assetTypeId]];
        local v55 = v19.AssetTypeIdToTypeLocalized[v45.assetTypeId];
        if not (not v54 or not v55) then
            v53 = v22:FormatByKeyForLocale(v54, l_locale_0) .. " | " .. v22:FormatByKeyForLocale(v55, l_locale_0);
        end;
    else
        v53 = v22:FormatByKeyForLocale("Feature.Catalog.Label.Bundle", l_locale_0);
    end;
    return {
        v48,
        v49,
        {
            infoName = v22:FormatByKeyForLocale("Feature.Catalog.Label.CategoryType", l_locale_0),
            infoData = v53,
            LayoutOrder = 3,
            Selectable = if not v29 then nil else false
        }
    };
end;
v41.init = function(v56)
    v56.state = {
        scrollingEnabled = true
    };
    if v29 then
        v56.attributionRef = v4.createRef();
    end;
end;
v41.willUpdate = function(v57, v58)
    if not (not (not v34() and v57.props.assetInfo ~= v58.assetInfo) or not v58.assetInfo) then
        local l_getAssetBundles_0 = v57.props.getAssetBundles;
        if not v58.assetInfo.bundlesAssetIsIn then
            l_getAssetBundles_0(v58.assetInfo.assetId);
        end;
    end;
    if v20.isCollectibles(v57.props.assetInfo) then
        local l_collectibleItemId_0 = v57.props.assetInfo.collectibleItemId;
        local l_resellableInstances_0 = v57.props.resellableInstances;
        local l_resellableInstances_1 = v58.resellableInstances;
        if (((l_resellableInstances_0 and l_resellableInstances_0[l_collectibleItemId_0]) and l_resellableInstances_1) and l_resellableInstances_1[l_collectibleItemId_0]) and v21.fieldCount(l_resellableInstances_0[l_collectibleItemId_0]) ~= v21.fieldCount(l_resellableInstances_1[l_collectibleItemId_0]) then
            v57:setState({});
        end;
    end;
    if v38() then
        local v63 = v57.props.assetInfo and v57.props.assetInfo.parentBundleId;
        local l_bundles_0 = v57.props.bundles;
        local l_bundles_1 = v58.bundles;
        if not ((((not v63 or not l_bundles_0) or not l_bundles_0[v63]) or not l_bundles_1) or not l_bundles_1[v63]) and l_bundles_1[v63] ~= l_bundles_0[v63] then
            v57.props.setAssetFromBundleInfo(v57.props.assetInfo.assetId, l_bundles_1[v63]);
        end;
    end;
end;
v41.didUpdate = function(v66, v67)
    local l_reportOpenDetailsPage_0 = v66.props.reportOpenDetailsPage;
    local l_assetInfo_0 = v66.props.assetInfo;
    local l_assetInfo_1 = v67.assetInfo;
    local v71 = false;
    if l_assetInfo_0 ~= l_assetInfo_1 then
        v71 = l_assetInfo_0 and l_assetInfo_0.bundlesAssetIsIn;
    end;
    if v34() then
        v71 = l_assetInfo_0 and l_assetInfo_0 ~= l_assetInfo_1;
    end;
    if v71 then
        local l_getEconomyProductInfo_0 = v66.props.getEconomyProductInfo;
        local l_bundles_2 = v66.props.bundles;
        local v74 = l_assetInfo_0.bundlesAssetIsIn and #l_assetInfo_0.bundlesAssetIsIn == 1;
        if v34() then
            v74 = l_assetInfo_0.parentBundleId ~= nil;
        end;
        local v75 = v74 and v20.getBundleId(l_assetInfo_0);
        local v76 = not not v74 and l_bundles_2[v75].productId or l_assetInfo_0.productId;
        local v77 = v30() and l_assetInfo_0.productType == v19.ProductType.CollectibleItem;
        if not v35() then
            if not ((v74 or v77) or l_assetInfo_0.owned ~= nil) or v74 and l_bundles_2[v75].owned == nil then
                l_getEconomyProductInfo_0(v76, v74, v75);
            end;
        elseif not (v74 or l_assetInfo_0.owned ~= nil) or v74 and l_bundles_2[v75].owned == nil then
            local l_assetId_0 = l_assetInfo_0.assetId;
            local l_Asset_0 = Enum.AvatarItemType.Asset;
            if v74 then
                l_assetId_0 = v75;
                l_Asset_0 = Enum.AvatarItemType.Bundle;
            end;
            v66.props.getItemDetails(l_assetId_0, l_Asset_0);
        end;
    end;
    local v80 = v66.props.detailsInformation.viewingDetails and not v67.detailsInformation.viewingDetails;
    local v81 = (not not l_assetInfo_0 and l_assetInfo_0.bundlesAssetIsIn) and v80 or ((l_assetInfo_1 and not l_assetInfo_1.bundlesAssetIsIn) and l_assetInfo_0) and l_assetInfo_0.bundlesAssetIsIn;
    if v34() then
        v81 = v80;
    end;
    if v81 then
        l_reportOpenDetailsPage_0(l_assetInfo_0);
    end;
end;
v41.render = function(v82)
    local l_view_0 = v82.props.view;
    local l_detailsInformation_0 = v82.props.detailsInformation;
    local v85 = v82.props.assetInfo or {};
    local l_localPlayerModel_0 = v82.props.localPlayerModel;
    local l_scrollingEnabled_0 = v82.state.scrollingEnabled;
    local l_locale_1 = v82.props.locale;
    local v89 = l_Images_0["icons/status/item/owned"];
    local v90 = not not v89 and v89.ImageRectSize / l_Images_0.ImagesResolutionScale or Vector2.new(0, 0);
    return v4.createElement(v31.Consumer, {
        render = function(v91)
            local v92 = v91[l_view_0];
            local v93 = 0;
            local v94 = v32() and v20.isCollectibles(v85);
            local v95 = 0;
            if v94 then
                local l_getCollectibleResellableInstances_0 = v82.props.getCollectibleResellableInstances;
                local l_resellableInstances_2 = v82.props.resellableInstances;
                l_getCollectibleResellableInstances_0(v85.collectibleItemId, l_Players_0.LocalPlayer and l_Players_0.LocalPlayer.UserId);
                v95 = (l_resellableInstances_2 and l_resellableInstances_2[v85.collectibleItemId]) and v21.fieldCount(l_resellableInstances_2[v85.collectibleItemId]);
                if v33() then
                    v95 = v95 or 0;
                end;
            end;
            local l_v94_0 = v94;
            if v33() then
                l_v94_0 = v20.isLimited2Point0_Or_LimitedCollectible(v85);
            end;
            if v82.props.gamepadEnabled then
                v93 = -1 * l_ControllerBarHeight_0;
            end;
            if v39.UIBloxThemeEnabled then
                v93 = v93 + -v39.DefaultCornerRadius.Offset;
            end;
            return v4.createElement("Frame", {
                Position = UDim2.new(0, v92.BorderPaddingSize, 0, 0),
                Size = UDim2.new(1, -(2 * v92.BorderPaddingSize), 1, v93),
                BackgroundTransparency = 0,
                BackgroundColor3 = v18.Carbon,
                BorderSizePixel = 0,
                Visible = if not v34() then l_detailsInformation_0.viewingDetails and v85.bundlesAssetIsIn ~= nil else l_detailsInformation_0.viewingDetails
            }, {
                DetailsButtons = v4.createElement(v10, {
                    localPlayerModel = l_localPlayerModel_0
                }),
                Container = v4.createElement("ScrollingFrame", {
                    BackgroundTransparency = 1,
                    ScrollBarThickness = 0,
                    Size = UDim2.new(1, 0, 1, -55),
                    ScrollingEnabled = l_scrollingEnabled_0,
                    Selectable = false,
                    CanvasSize = if not v28 then nil else UDim2.new(1, 0, 0, 0),
                    AutomaticCanvasSize = if not v28 then nil else Enum.AutomaticSize.Y
                }, {
                    UIListLayout = v4.createElement("UIListLayout", {
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        Padding = UDim.new(0, 10)
                    }),
                    DetailsThumbnail = v4.createElement(v8),
                    TryOnViewport = l_localPlayerModel_0 and v4.createElement(v11, {
                        localPlayerModel = l_localPlayerModel_0,
                        setScrollingEnabled = function(v99)
                            v82:setScrollingEnabled(v99);
                        end
                    }),
                    DetailsText = v4.createElement(v7, {
                        localPlayerModel = l_localPlayerModel_0
                    }),
                    ItemOwnedLabelContainer = l_v94_0 and v4.createElement("Frame", {
                        Size = UDim2.new(1, 0, 0, v90.Y + 20),
                        BorderSizePixel = 0,
                        LayoutOrder = 3,
                        BackgroundColor3 = Color3.fromRGB(57, 59, 61)
                    }, {
                        Corner = v4.createElement("UICorner", {
                            CornerRadius = UDim.new(0, 8)
                        }),
                        OwnedIcon = v4.createElement(l_ImageSetLabel_0, {
                            Size = UDim2.new(0, v90.X, 0, v90.Y),
                            Position = UDim2.new(0, 12, 0, 10),
                            Image = v89,
                            BackgroundTransparency = 1,
                            BorderSizePixel = 0
                        }),
                        ItemOwnedLabel = v4.createElement("TextLabel", {
                            Size = UDim2.new(0, v90.X, 0, v90.Y),
                            Position = UDim2.new(0, v90.X + 60, 0, 10),
                            Text = v22:FormatByKeyForLocale("InGame.InspectMenu.Label.OwnedItems", l_locale_1, {
                                QUANTITY = tostring(v95)
                            }),
                            Font = l_AppFonts_0.default:getDefault(),
                            TextSize = 12,
                            TextColor3 = Color3.new(1, 1, 1),
                            BackgroundTransparency = 1
                        })
                    }),
                    DetailsDescription = v4.createElement(v9),
                    ItemInfoList = v29 and v4.createElement(l_ItemInfoList_0, {
                        rowData = v82:getInfoRowProps(),
                        LayoutOrder = 5
                    })
                })
            });
        end
    });
end;
return v5.UNSTABLE_connect2(function(v100, _)
    return {
        view = v100.view,
        detailsInformation = v100.detailsInformation,
        assetInfo = v100.assets[v100.detailsInformation.assetId],
        bundles = v100.bundles,
        gamepadEnabled = v100.gamepadEnabled,
        locale = v100.locale,
        resellableInstances = v100.collectibleResellableInstances,
        creatingExperiences = v100.creatingExperiences
    };
end, function(v102)
    return {
        getAssetBundles = function(v103)
            v102(v14(v103));
        end,
        getEconomyProductInfo = function(v104, v105, v106)
            v102(v16(v104, v105, v106));
        end,
        reportOpenDetailsPage = function(v107)
            v102(v15(v107));
        end,
        getCollectibleResellableInstances = function(v108, v109)
            v102(v17(v108, v109));
        end,
        openOverlay = if not v29 then nil else function(v110, v111)
            v102(v12(v110, v111));
        end,
        getItemDetails = function(v112, v113)
            v102(v36(v112, v113));
        end,
        setAssetFromBundleInfo = if not v38() then nil else function(v114, v115)
            v102(v37(v114, v115));
        end
    };
end)(v41);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_GuiService_0 = game:GetService("GuiService");
local l_Parent_0 = script.Parent.Parent;
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.Cryo);
local v5 = require(l_CorePackages_0.RoactRodux);
local v6 = require(l_CorePackages_0.UIBlox);
local v7 = require(l_Parent_0.Components.AssetCard);
local v8 = require(l_Parent_0.Components.InspectAndBuyContext);
local l_ShimmerPanel_0 = v6.App.Loading.ShimmerPanel;
local v10 = require(l_Parent_0.Actions.SetAssetFromBundleInfo);
local v11 = v3.PureComponent:extend("AssetList");
local v12 = require(l_Parent_0.Flags.GetFFlagIBEnableNewDataCollectionForCollectibleSystem);
v11.calculateCanvasSize = function(v13, v14, v15, v16)
    local l_current_0 = v13.gridFrameRef.current;
    local l_view_0 = v13.props.view;
    local v19 = nil;
    v19 = v13.props.views[l_view_0];
    if l_current_0 then
        l_current_0.Parent.CanvasSize = UDim2.new(1, 0, 0, math.ceil(v15 / v14) * (v16 + 10) + (v19.TopSizeY + 15));
    end;
end;
v11.init = function(v20)
    local l_view_1 = v20.props.view;
    local v22 = nil;
    v22 = v20.props.views[l_view_1];
    v20.gridFrameRef = v3.createRef();
    v20.state = {
        assetCardSizeX = v22.AssetCardMaxSizeX,
        assetCardSizeY = v22.AssetCardMaxSizeY
    };
end;
v11.render = function(v23)
    local l_view_2 = v23.props.view;
    local v25 = nil;
    v25 = v23.props.views[l_view_2];
    local l_assets_0 = v23.props.assets;
    local l_MaxAssetCardsPerRow_0 = v25.MaxAssetCardsPerRow;
    local l_assetCardSizeX_0 = v23.state.assetCardSizeX;
    local l_assetCardSizeY_0 = v23.state.assetCardSizeY;
    local v30 = {};
    local v31 = 0;
    v30.UIGridLayout = v3.createElement("UIGridLayout", {
        CellPadding = UDim2.new(0, 10, 0, 10),
        CellSize = UDim2.new(0, l_assetCardSizeX_0, 0, l_assetCardSizeY_0),
        SortOrder = Enum.SortOrder.LayoutOrder,
        HorizontalAlignment = Enum.HorizontalAlignment.Left,
        VerticalAlignment = Enum.VerticalAlignment.Top,
        FillDirectionMaxCells = l_MaxAssetCardsPerRow_0
    });
    for _, v33 in pairs(l_assets_0) do
        v31 = v31 + 1;
        v30[v33.assetId] = v3.createElement(v7, {
            assetInfo = v33,
            assetCardSizeX = l_assetCardSizeX_0
        });
    end;
    if v31 == 0 then
        for v34 = 1, 30 do
            v30[v34] = v3.createElement(l_ShimmerPanel_0, {
                Size = UDim2.new(1, 0, 0, l_assetCardSizeX_0)
            });
        end;
    end;
    v23:calculateCanvasSize(l_MaxAssetCardsPerRow_0, v31, l_assetCardSizeY_0);
    return v3.createElement("Frame", {
        Size = UDim2.new(1, -(2 * v25.BorderPaddingSize), 1, 0),
        BackgroundTransparency = 1,
        BorderSizePixel = 0,
        LayoutOrder = 3,
        [v3.Ref] = v23.gridFrameRef,
        [v3.Change.AbsoluteSize] = function(_)
            spawn(function()
                v23:resize();
            end);
        end
    }, v30);
end;
v11.didMount = function(v36)
    v36:resize();
    v36.mounted = true;
end;
v11.updateAssetsFromBundles = function(v37)
    if v12() then
        local l_bundles_0 = v37.props.bundles;
        local l_assetBundles_0 = v37.props.assetBundles;
        local l_assets_1 = v37.props.assets;
        local v41 = v4.Dictionary.keys(l_assets_1);
        if l_bundles_0 and not v4.isEmpty(l_bundles_0) then
            local v42 = 1;
            for _, v44 in pairs(l_bundles_0) do
                local l_assetIds_0 = v44.assetIds;
                for v46 = 1, #l_assetIds_0 do
                    local v47 = tostring(l_assetIds_0[v46]);
                    if table.find(v41, v47) then
                        local v48 = l_assetBundles_0[v47] or {};
                        if not (#v48 ~= 1) or not (not (v42 == 1 and #v48 > 1) or not l_assets_1[v47]) and l_assets_1[v47].parentBundleId == nil then
                            v37.props.dispatchSetAssetFromBundleInfo(v47, v44);
                        end;
                    end;
                end;
                v42 = v42 + 1;
            end;
            return ;
        else
            return ;
        end;
    else
        return ;
    end;
end;
v11.didUpdate = function(v49, v50)
    if v49.props.view ~= v50.view then
        v49:resize();
    end;
    if not (((not v49.mounted or not v49.props.gamepadEnabled) or v49.props.detailsInformation.viewingDetails) or not v49.props.visible) then
        l_GuiService_0.SelectedCoreObject = v49.gridFrameRef.current:FindFirstChildWhichIsA("GuiObject");
    end;
    if v12() and (not (v49.props.assetBundles == v50.assetBundles) or v49.props.bundles ~= v50.bundles) then
        v49:updateAssetsFromBundles();
    end;
end;
v11.willUnmount = function(v51)
    v51.mounted = false;
end;
v11.resize = function(v52)
    local l_current_1 = v52.gridFrameRef.current;
    local l_view_3 = v52.props.view;
    local v55 = nil;
    v55 = v52.props.views[l_view_3];
    if l_current_1 then
        local l_MaxAssetCardsPerRow_1 = v55.MaxAssetCardsPerRow;
        local v57 = math.floor((l_current_1.AbsoluteSize.X - 10 * (l_MaxAssetCardsPerRow_1 - 1)) / l_MaxAssetCardsPerRow_1);
        local v58 = math.min(v57, v55.AssetCardMaxSizeX);
        local v59 = math.min(v57 / 0.68, v55.AssetCardMaxSizeY);
        if not (v52.state.assetCardSizeX == v58) or v52.state.assetCardSizeY ~= v59 then
            v52:setState({
                assetCardSizeX = v58,
                assetCardSizeY = v59
            });
        end;
    end;
end;
local function v62(v60)
    return v3.createElement(v8.Consumer, {
        render = function(v61)
            return v3.createElement(v11, (v4.Dictionary.join(v60, {
                views = v61
            })));
        end
    });
end;
if not v12() then
    return v5.UNSTABLE_connect2(function(v63, _)
        return {
            view = v63.view,
            visible = v63.visible,
            assets = v63.assets,
            detailsInformation = v63.detailsInformation,
            gamepadEnabled = v63.gamepadEnabled
        };
    end)(v62);
else
    return v5.connect(function(v65, _)
        return {
            view = v65.view,
            visible = v65.visible,
            assets = v65.assets,
            bundles = v65.bundles,
            assetBundles = v65.assetBundles,
            detailsInformation = v65.detailsInformation,
            gamepadEnabled = v65.gamepadEnabled
        };
    end, function(v67)
        return {
            dispatchSetAssetFromBundleInfo = function(v68, v69)
                v67(v10(v68, v69));
            end
        };
    end)(v62);
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Packages.UIBlox);
local v3 = require(l_CorePackages_0.Packages.React);
local l_StyledTextLabel_0 = v2.App.Text.StyledTextLabel;
local l_InteractiveAlert_0 = v2.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v2.App.Button.Enum.ButtonType;
local l_ImageSetLabel_0 = v2.Core.ImageSet.ImageSetLabel;
local l_useStyle_0 = v2.Core.Style.useStyle;
local l_useSelector_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux.useSelector;
local l_useDispatch_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux.useDispatch;
local v11 = require(l_CoreGui_0.RobloxGui.Modules.RobloxTranslator);
local v12 = require(l_CoreGui_0.RobloxGui.Modules.Common.Hooks.useScreenSize);
local l_ExperienceService_0 = require(l_CorePackages_0.Workspace.Packages.ExperienceService).ExperienceService;
local v14 = require(script.Parent.Parent.Actions.CloseOverlay);
return function(v15)
    local v16 = l_useDispatch_0();
    local v17 = v12();
    local v18 = l_useStyle_0();
    local v19 = v3.useCallback(function()
        v16(v14());
    end, {
        v16
    });
    local v20 = v3.useCallback(function()
        l_ExperienceService_0:LaunchExperience({
            placeId = v15.rootPlaceId
        });
        v16(v14());
    end, {
        v16,
        v15.rootPlaceId
    });
    local v22 = l_useSelector_0(function(v21)
        return v21.locale;
    end);
    local l_Theme_0 = v18.Theme;
    local l_Font_0 = v18.Font;
    local v25 = v15.name or "";
    return v3.createElement(l_InteractiveAlert_0, {
        title = v11:FormatByKeyForLocale("InGame.InspectMenu.Attribution.GoToExperience", v22),
        middleContent = function()
            return v3.createElement("Frame", {
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Size = UDim2.new(1, 0, 0, 0),
                AutomaticSize = Enum.AutomaticSize.Y
            }, {
                UIListLayout = v3.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Vertical,
                    HorizontalAlignment = Enum.HorizontalAlignment.Center,
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    Padding = UDim.new(0, v18.Tokens.Global.Space_150)
                }),
                ExperienceThumbnailFrame = v3.createElement("Frame", {
                    BackgroundTransparency = 1,
                    Size = UDim2.fromOffset(150, 150),
                    BackgroundColor3 = l_Theme_0.BackgroundContrast.Color,
                    BorderSizePixel = 0,
                    LayoutOrder = 1,
                    ClipsDescendants = true
                }, {
                    ExperienceThumbnail = v3.createElement(l_ImageSetLabel_0, {
                        AnchorPoint = Vector2.new(0.5, 0.5),
                        Position = UDim2.fromScale(0.5, 0.5),
                        Image = string.format("rbxthumb://type=GameIcon&id=%s&w=%d&h=%d", tostring(v15.universeId), 150, 150),
                        Size = UDim2.fromScale(1, 1),
                        BorderSizePixel = 0,
                        BackgroundTransparency = 1
                    }, {
                        RoundCorner = v3.createElement("UICorner", {
                            CornerRadius = UDim.new(0, v18.Tokens.Semantic.Radius.Medium)
                        })
                    })
                }),
                BodyText = v3.createElement(l_StyledTextLabel_0, {
                    text = v11:FormatByKeyForLocale("InGame.InspectMenu.Attribution.GoToDescription", v22, {
                        EXPERIENCE_NAME = v25
                    }),
                    fontStyle = l_Font_0.Body,
                    colorStyle = l_Theme_0.TextDefault,
                    layoutOrder = 2,
                    automaticSize = Enum.AutomaticSize.Y,
                    size = UDim2.fromScale(1, 0),
                    textXAlignment = Enum.TextXAlignment.Center,
                    lineHeight = 1
                })
            });
        end,
        buttonStackInfo = {
            buttons = {
                {
                    props = {
                        onActivated = v19,
                        text = v11:FormatByKeyForLocale("InGame.InspectMenu.Action.Cancel", v22),
                        layoutOrder = 0
                    },
                    isDefaultChild = true
                },
                {
                    buttonType = l_ButtonType_0.PrimaryContextual,
                    props = {
                        onActivated = v20,
                        text = v11:FormatByKeyForLocale("InGame.InspectMenu.Action.Go", v22),
                        layoutOrder = 2
                    },
                    isDefaultChild = false
                }
            }
        },
        isMiddleContentFocusable = false,
        screenSize = v17
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_Parent_0 = script.Parent.Parent;
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.RoactRodux);
local v5 = require(l_Parent_0.Colors);
local v6 = v3.PureComponent:extend("AvatarHeadShot");
local l_Headshot_0 = require(l_CoreGui_0:WaitForChild("RobloxGui"):WaitForChild("Modules").Common.LegacyThumbnailUrls).Headshot;
v6.render = function(v8)
    local l_playerId_0 = v8.props.playerId;
    local v10 = nil;
    if l_playerId_0 and l_playerId_0 ~= "" then
        v10 = l_Headshot_0:format(l_playerId_0, 48, 48);
    end;
    if v10 then
        return v3.createElement("ImageLabel", {
            Size = UDim2.new(0, 48, 0, 48),
            BackgroundColor3 = v5.GrayBackground,
            BorderSizePixel = 0,
            Image = v10,
            LayoutOrder = 1
        }, {
            MaskFrame = v3.createElement("ImageLabel", {
                Size = UDim2.new(1, 0, 1, 0),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Image = "rbxasset://textures/ui/LuaApp/graphic/gr-avatar mask-90x90.png",
                ImageColor3 = v5.Carbon
            })
        });
    else
        return nil;
    end;
end;
return v4.UNSTABLE_connect2(function(v11, _)
    return {
        playerId = v11.playerId
    };
end)(v6);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_TextService_0 = game:GetService("TextService");
local l_GuiService_0 = game:GetService("GuiService");
local l_MarketplaceService_0 = game:GetService("MarketplaceService");
local v4 = require(l_CorePackages_0.Roact);
local v5 = require(l_CorePackages_0.RoactRodux);
local l_AppFonts_0 = require(l_CorePackages_0.Workspace.Packages.Style).AppFonts;
local l_Parent_0 = script.Parent.Parent;
local v8 = require(l_Parent_0.Colors);
local v9 = require(l_Parent_0.Thunks.PromptPurchase);
local v10 = require(l_Parent_0.getSelectionImageObjectRounded);
local v11 = require(l_Parent_0.Flags.FFlagEnableFavoriteButtonForUgc);
local v12 = require(l_Parent_0.Flags.GetFFlagIBEnableLimitedItemBugFixAndAlignment);
local v13 = require(l_Parent_0.Flags.GetFFlagIBFixl20HasQuantityPurchase);
local v14 = require(l_Parent_0.UtilityFunctions);
local v15 = v4.PureComponent:extend("BuyButton");
v15.init = function(v16)
    v16.selectedImage = v10();
    v16.connections = {};
    v16.lastGamepadFocus = nil;
    v16.onPromptPurchaseFinished = function()
        if not (not v16.props.gamepadEnabled or not v16.props.visible) then
            l_GuiService_0.SelectedCoreObject = v16.lastGamepadFocus;
        end;
    end;
end;
v15.render = function(v17)
    local l_itemType_0 = v17.props.itemType;
    local l_itemId_0 = v17.props.itemId;
    local l_showRobuxIcon_0 = v17.props.showRobuxIcon;
    local l_forSale_0 = v17.props.forSale;
    local l_promptPurchase_0 = v17.props.promptPurchase;
    local l_buyText_0 = v17.props.buyText;
    local l_buyButtonRef_0 = v17.props.buyButtonRef;
    local l_collectibleItemId_0 = v17.props.collectibleItemId;
    local l_collectibleLowestAvailableResaleProductId_0 = v17.props.collectibleLowestAvailableResaleProductId;
    local l_collectibleLowestAvailableResaleItemInstanceId_0 = v17.props.collectibleLowestAvailableResaleItemInstanceId;
    local l_collectibleLowestResalePrice_0 = v17.props.collectibleLowestResalePrice;
    local v29 = nil;
    if v13() then
        v29 = v14.isLimited2Point0_Or_LimitedCollectible(v17.props.assetInfo);
    end;
    local v30 = UDim2.new(0, v17:getBuyButtonTextSize(l_buyText_0), 1, 0);
    local l_assetInfo_0 = v17.props.assetInfo;
    local v32 = if not v11 then (not not l_assetInfo_0 and l_assetInfo_0.creatorId or 0) == "1" and -32 or -5 else -32;
    local v33 = 0;
    if not l_forSale_0 then
        v33 = 0.5;
    end;
    return v4.createElement("ImageButton", {
        AnchorPoint = Vector2.new(0.5, 0),
        BackgroundTransparency = 1,
        Size = UDim2.new(0.5, v32, 0, 44),
        Image = "rbxasset://textures/ui/InspectMenu/Button_white.png",
        ImageColor3 = v8.Green,
        SelectionImageObject = v17.selectedImage,
        LayoutOrder = 3,
        ImageTransparency = v33,
        [v4.Ref] = l_buyButtonRef_0,
        [v4.Event.Activated] = function()
            if l_forSale_0 then
                if not (not v17.props.gamepadEnabled or not v17.props.visible) then
                    v17.lastGamepadFocus = l_GuiService_0.SelectedCoreObject;
                    l_GuiService_0.SelectedCoreObject = nil;
                end;
                l_promptPurchase_0(l_itemId_0, l_itemType_0, l_collectibleItemId_0, l_collectibleLowestAvailableResaleProductId_0, l_collectibleLowestAvailableResaleItemInstanceId_0, l_collectibleLowestResalePrice_0, if not v13() then nil else v29);
            end;
        end
    }, {
        UIListLayout = v4.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Horizontal,
            SortOrder = Enum.SortOrder.LayoutOrder,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            HorizontalAlignment = Enum.HorizontalAlignment.Center
        }),
        RobuxIcon = v4.createElement("ImageLabel", {
            BackgroundTransparency = 1,
            Size = UDim2.new(0, 16, 0, 16),
            Image = "rbxasset://textures/ui/common/robux_small.png",
            ImageTransparency = v33,
            ImageColor3 = v8.White,
            LayoutOrder = 1,
            Visible = l_showRobuxIcon_0
        }),
        BuyText = v4.createElement("TextLabel", {
            BackgroundTransparency = 1,
            Size = v30,
            Text = if not v12() then l_buyText_0 else tostring(l_buyText_0),
            Font = l_AppFonts_0.default:getDefault(),
            TextSize = 16,
            TextColor3 = v8.White,
            TextTransparency = v33,
            LayoutOrder = 2,
            TextXAlignment = Enum.TextXAlignment.Center
        })
    });
end;
v15.didMount = function(v34)
    local v35 = l_MarketplaceService_0.PromptPurchaseFinished:Connect(v34.onPromptPurchaseFinished);
    local v36 = l_MarketplaceService_0.PromptBundlePurchaseFinished:Connect(v34.onPromptPurchaseFinished);
    table.insert(v34.connections, v35);
    table.insert(v34.connections, v36);
end;
v15.willUnmount = function(v37)
    for _, v39 in pairs(v37.connections) do
        v39:Disconnect();
    end;
end;
v15.getBuyButtonTextSize = function(v40, v41)
    if not v40.props.buyButtonRef.current then
        return 0;
    else
        local l_l_TextService_0_TextSize_0 = l_TextService_0:GetTextSize(if not v12() then v41 else tostring(v41), 16, l_AppFonts_0.default:getDefault(), Vector2.new(v40.props.buyButtonRef.current.AbsoluteSize.X, 5000));
        v40.props.buyButtonRef.Size = UDim2.new(0, 1, 0, l_l_TextService_0_TextSize_0.Y);
        return l_l_TextService_0_TextSize_0.X > 32 and l_l_TextService_0_TextSize_0.X or 32;
    end;
end;
return v5.UNSTABLE_connect2(function(v43, _)
    return {
        locale = v43.locale,
        view = v43.view,
        assetInfo = v43.assets[v43.detailsInformation.assetId],
        gamepadEnabled = v43.gamepadEnabled,
        visible = v43.visible
    };
end, function(v45)
    return {
        promptPurchase = function(v46, v47, v48, v49, v50, v51, v52)
            v45(v9(v46, v47, v48, v49, v50, v51, if not v13() then nil else v52));
        end
    };
end)(v15);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_GuiService_0 = game:GetService("GuiService");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local l_Parent_0 = script.Parent.Parent;
local v5 = require(l_Parent_0.Actions.SetDetailsInformation);
local v6 = require(l_Parent_0.Actions.SetTryingOnInfo);
local v7 = require(l_Parent_0.Components.InspectAndBuyContext);
local v8 = require(game:GetService("CoreGui").RobloxGui.Modules.Settings.Theme);
local v9 = v2.PureComponent:extend("CloseButton");
v9.render = function(v10)
    local l_view_0 = v10.props.view;
    local l_viewingDetails_0 = v10.props.detailsInformation.viewingDetails;
    local l_closeDetails_0 = v10.props.closeDetails;
    local l_setTryingOnInfo_0 = v10.props.setTryingOnInfo;
    return v2.createElement(v7.Consumer, {
        render = function(v15)
            local v16 = v15[l_view_0];
            local v17 = UDim2.new(0, 0, 0, 0);
            local v18 = 26;
            if v8.UseInspectAndBuyPanel() then
                v18 = 18;
                v17 = UDim2.new(0, v16.BorderPaddingSize, 0, 0);
            end;
            return v2.createElement("ImageButton", {
                Size = UDim2.new(0, v18, 0, v18),
                Position = v16.CloseButtonPosition + v17,
                BackgroundTransparency = 1,
                Selectable = false,
                Image = not l_viewingDetails_0 and "rbxasset://textures/ui/InspectMenu/x.png" or "rbxasset://textures/ui/InspectMenu/caret_tail_left.png",
                ZIndex = 2,
                [v2.Event.Activated] = function()
                    if not l_viewingDetails_0 then
                        l_GuiService_0:CloseInspectMenu();
                        return ;
                    else
                        l_closeDetails_0();
                        l_setTryingOnInfo_0(false, nil);
                        return ;
                    end;
                end
            });
        end
    });
end;
return v3.UNSTABLE_connect2(function(v19, _)
    return {
        view = v19.view,
        detailsInformation = v19.detailsInformation
    };
end, function(v21)
    return {
        closeDetails = function()
            v21(v5(false, nil));
        end,
        setTryingOnInfo = function(v22, v23)
            v21(v6(v22, v23));
        end
    };
end)(v9);


return {
    Favorite = Enum.KeyCode.ButtonX,
    TryOn = Enum.KeyCode.ButtonY
};


local l_CorePackages_0 = game:GetService("CorePackages");
local l_GuiService_0 = game:GetService("GuiService");
local l_Parent_0 = script.Parent.Parent;
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.RoactRodux);
local v5 = require(l_Parent_0.Components.InitialView);
local v6 = require(l_Parent_0.Components.AssetDetails);
local v7 = require(l_Parent_0.Components.CloseButton);
local v8 = require(l_Parent_0.Components.Overlay);
local v9 = require(l_Parent_0.Components.NoInventoryNotice);
local v10 = require(l_Parent_0.Colors);
local v11 = require(l_Parent_0.Constants);
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v13 = require(l_Modules_0.Settings.Theme);
local v14 = require(l_Modules_0.TopBar.Constants);
local l_ScreenSideOffset_0 = v14.ScreenSideOffset;
local v16 = require(l_Parent_0.Components.InspectAndBuyContext);
local v17 = require(l_Parent_0.Flags.FFlagAttributionInInspectAndBuy);
local v18 = v3.PureComponent:extend("Container");
v18.init = function(v19)
    v19.frameRef = v3.createRef();
    v19.lastSavedSelectedCoreGui = nil;
end;
v18.didMount = function(v20)
    local l_gamepadEnabled_0 = v20.props.gamepadEnabled;
    v20.selectedCoreObjectChangedSignal = l_GuiService_0:GetPropertyChangedSignal("SelectedCoreObject"):Connect(function()
        if not (not v20.props.visible or not l_GuiService_0.SelectedCoreObject) then
            v20.lastSavedSelectedCoreGui = l_GuiService_0.SelectedCoreObject;
        end;
    end);
    if l_gamepadEnabled_0 then
        l_GuiService_0:AddSelectionParent("InspectMenu", v20.frameRef.current);
    end;
end;
v18.didUpdate = function(v22, v23)
    local l_visible_0 = v22.props.visible;
    local l_gamepadEnabled_1 = v22.props.gamepadEnabled;
    if (not l_visible_0 or not l_gamepadEnabled_1) or not v22.frameRef.current then
        if not (not (not l_gamepadEnabled_1 and v23.gamepadEnabled) and l_visible_0) then
            l_GuiService_0:RemoveSelectionGroup("InspectMenu");
        end;
    else
        l_GuiService_0:RemoveSelectionGroup("InspectMenu");
        l_GuiService_0:AddSelectionParent("InspectMenu", v22.frameRef.current);
        if v22.lastSavedSelectedCoreGui then
            l_GuiService_0.SelectedCoreObject = v22.lastSavedSelectedCoreGui;
        end;
    end;
    if not (not l_visible_0 or v23.visible) then
        l_GuiService_0.SelectedCoreObject = v22.lastSavedSelectedCoreGui;
    end;
end;
v18.willUnmount = function(v26)
    v26.selectedCoreObjectChangedSignal:disconnect();
    l_GuiService_0:RemoveSelectionGroup("InspectMenu");
    l_GuiService_0.SelectedCoreObject = nil;
end;
v18.render = function(v27)
    local l_view_0 = v27.props.view;
    local l_localPlayerModel_0 = v27.props.localPlayerModel;
    local l_visible_1 = v27.props.visible;
    local v31 = v13.UseInspectAndBuyPanel();
    local v32 = not v13.UIBloxThemeEnabled and 46 or v14.TopBarHeight;
    return v3.createElement(v16.Consumer, {
        render = function(v33)
            local v34 = v33[l_view_0];
            return v3.createElement("ImageButton", {
                Size = UDim2.new(1, not v31 and 0 or l_ScreenSideOffset_0 * -2, 1, if not v31 then v32 else v13.DefaultCornerRadius.Offset),
                Position = UDim2.new(0, not v31 and 0 or l_ScreenSideOffset_0, 0, if not v31 then -v32 else 0),
                BackgroundColor3 = v34.ContainerBackgroundColor,
                BackgroundTransparency = v34.ContainerBackgroundTransparency,
                Visible = l_visible_1,
                Selectable = false,
                AutoButtonColor = false,
                AutoLocalize = false,
                [v3.Event.Activated] = function()
                    if l_view_0 == v11.View.Wide then
                        l_GuiService_0:CloseInspectMenu();
                    end;
                end
            }, {
                UICorner = if not v31 then nil else v3.createElement("UICorner", {
                    CornerRadius = v13.DefaultCornerRadius
                }),
                Overlay = if not v17 then nil else v3.createElement(v8),
                MainContainer = v3.createElement("ImageButton", {
                    AnchorPoint = v34.ContainerAnchorPoint,
                    Size = v34.ContainerSize,
                    Position = v34.ContainerPosition,
                    BackgroundColor3 = v10.Carbon,
                    BorderSizePixel = 0,
                    Active = true,
                    AutoButtonColor = false,
                    Selectable = false,
                    [v3.Ref] = v27.frameRef
                }, {
                    AspectRatioConstraint = v34.UseContainerAspectRatio and v3.createElement("UIAspectRatioConstraint", {
                        AspectRatio = v34.ContainerAspectRatio
                    }),
                    CloseButton = v3.createElement(v7),
                    InitialView = v3.createElement(v5),
                    AssetDetails = v3.createElement(v6, {
                        localPlayerModel = l_localPlayerModel_0
                    }),
                    NoInventoryNotice = v3.createElement(v9)
                })
            });
        end
    });
end;
return v4.UNSTABLE_connect2(function(v35, _)
    return {
        view = v35.view,
        visible = v35.visible,
        gamepadEnabled = v35.gamepadEnabled
    };
end)(v18);