local l_CorePackages_0 = game:GetService("CorePackages");
local l_UserInputService_0 = game:GetService("UserInputService");
local v2 = require(l_CorePackages_0.Packages.React);
local v3 = require(l_CorePackages_0.Packages.UIBlox);
local l_useDesignTokens_0 = require(l_CorePackages_0.Workspace.Packages.Style).useDesignTokens;
local l_useLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).Hooks.useLocalization;
local _ = require(script:FindFirstAncestor("TopBar").TokenMappers.MenuNavigationPromptTokenMapper);
local l_Button_0 = v3.App.Button.Button;
local l_ButtonType_0 = v3.App.Button.Enum.ButtonType;
local v9 = {
    ButtonSelect = "CoreScripts.InGameMenu.Label.ViewButton",
    ButtonTouchpad = "CoreScripts.InGameMenu.Label.TouchpadButton",
    ButtonShare = "CoreScripts.InGameMenu.Label.TouchpadButton"
};
local v10 = nil;
local v11 = nil;
local v12 = nil;
local function v18(v13)
    local l_MenuNavigationPrompt_0 = l_useDesignTokens_0().LuaApps.MenuNavigationPrompt;
    local l_Color_0 = l_MenuNavigationPrompt_0.Color;
    local l_Size_0 = l_MenuNavigationPrompt_0.Size;
    local l_Space_0 = l_MenuNavigationPrompt_0.Space;
    return v2.createElement("Frame", {
        BackgroundColor3 = l_Color_0.backgroundUiColor.Color3,
        BackgroundTransparency = l_Color_0.backgroundUiColor.Transparency,
        Visible = v13.Visible,
        AutomaticSize = Enum.AutomaticSize.Y,
        Size = UDim2.fromScale(l_Size_0.promptWidth / l_Size_0.displayWidth, 0),
        Position = v13.Position,
        AnchorPoint = Vector2.new(0.5, 0.5)
    }, {
        Corner = v2.createElement("UICorner", {
            CornerRadius = UDim.new(0, l_MenuNavigationPrompt_0.Radius.cornerRadius)
        }),
        Layout = v2.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            SortOrder = Enum.SortOrder.LayoutOrder,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Center
        }),
        HeaderArea = v2.createElement(v11),
        Separator = v2.createElement("Frame", {
            LayoutOrder = 100,
            Size = UDim2.new(1, -2 * l_Space_0.bodyPadding, 0, 1),
            BackgroundColor3 = l_Color_0.separatorColor.Color3,
            BackgroundTransparency = l_Color_0.separatorColor.Transparency,
            BorderSizePixel = 0
        }),
        Body = v2.createElement(v12),
        UISizeConstraint = v2.createElement("UISizeConstraint", {
            MaxSize = Vector2.new(math.huge, math.huge),
            MinSize = Vector2.new(l_Size_0.imageWidth + 2 * l_Space_0.bodyPadding, 1)
        })
    });
end;
v10 = function()
    local l_MenuNavigationPrompt_1 = l_useDesignTokens_0().LuaApps.MenuNavigationPrompt;
    local l_Typography_0 = l_MenuNavigationPrompt_1.Typography;
    local l_Color_1 = l_MenuNavigationPrompt_1.Color;
    local l_Size_1 = l_MenuNavigationPrompt_1.Size;
    local l_Space_1 = l_MenuNavigationPrompt_1.Space;
    return v2.createElement("Frame", {
        BackgroundTransparency = 1,
        LayoutOrder = 0,
        AutomaticSize = Enum.AutomaticSize.XY
    }, {
        Layout = v2.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            SortOrder = Enum.SortOrder.LayoutOrder,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            Padding = UDim.new(0, l_Space_1.iconPadding)
        }),
        ButtonLabelGroup = v2.createElement("Frame", {
            BackgroundTransparency = 1,
            AutomaticSize = Enum.AutomaticSize.XY,
            LayoutOrder = 0
        }, {
            Layout = v2.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Horizontal,
                SortOrder = Enum.SortOrder.LayoutOrder,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                VerticalAlignment = Enum.VerticalAlignment.Center,
                Padding = UDim.new(0, l_Space_1.iconPadding)
            }),
            Icon = v2.createElement("ImageLabel", {
                LayoutOrder = 0,
                BackgroundTransparency = 1,
                Image = not game:GetEngineFeature("GetImageForKeyCode") and "rbxasset://textures/ui/Controls/DesignSystem/ButtonSelect@2x.png" or l_UserInputService_0:GetImageForKeyCode(Enum.KeyCode.ButtonSelect),
                Size = UDim2.fromOffset(l_Size_1.iconSize, l_Size_1.iconSize)
            }, {
                Padding = v2.createElement("UIPadding", {
                    PaddingTop = UDim.new(0, l_Space_1.iconPadding),
                    PaddingBottom = UDim.new(0, l_Space_1.iconPadding),
                    PaddingRight = UDim.new(0, l_Space_1.iconPadding),
                    PaddingLeft = UDim.new(0, l_Space_1.iconPadding)
                })
            }),
            ControllerButtonLabel = v2.createElement("TextLabel", {
                Text = l_useLocalization_0({
                    ButtonLabelText = v9[l_UserInputService_0:GetStringForKeyCode(Enum.KeyCode.ButtonSelect)] or "CoreScripts.InGameMenu.Label.ViewButton"
                }).ButtonLabelText,
                LayoutOrder = 100,
                BackgroundTransparency = 1,
                Font = l_Typography_0.label.Font,
                TextSize = l_Typography_0.label.FontSize,
                TextColor3 = l_Color_1.textColor.Color3,
                Size = UDim2.fromOffset(0, 0),
                AutomaticSize = Enum.AutomaticSize.XY,
                TextXAlignment = Enum.TextXAlignment.Center,
                TextYAlignment = Enum.TextYAlignment.Center
            })
        }),
        ControllerImage = v2.createElement("ImageLabel", {
            Image = "rbxasset://textures/ui/Gamepad/ControllerSelect@2x.png",
            Size = UDim2.fromScale(1, 1),
            LayoutOrder = 100,
            BackgroundTransparency = 1
        }, {
            UIAspectRatioConstraint = v2.createElement("UIAspectRatioConstraint", {
                AspectRatio = l_Size_1.imageWidth / l_Size_1.imageHeight
            }),
            UISizeConstraint = v2.createElement("UISizeConstraint", {
                MaxSize = Vector2.new(l_Size_1.imageWidth, l_Size_1.imageHeight),
                MinSize = Vector2.new(l_Size_1.imageWidth * 0.5, l_Size_1.imageHeight * 0.5)
            })
        })
    });
end;
v11 = function()
    local l_MenuNavigationPrompt_2 = l_useDesignTokens_0().LuaApps.MenuNavigationPrompt;
    local l_Typography_1 = l_MenuNavigationPrompt_2.Typography;
    local l_Color_2 = l_MenuNavigationPrompt_2.Color;
    local l_Space_2 = l_MenuNavigationPrompt_2.Space;
    return v2.createElement("Frame", {
        AutomaticSize = Enum.AutomaticSize.XY,
        LayoutOrder = 0,
        BackgroundTransparency = 1
    }, {
        Header = v2.createElement("TextLabel", {
            LayoutOrder = 0,
            Text = l_useLocalization_0({
                HeaderText = "CoreScripts.InGameMenu.PageTitle.ToggleMenuNavigation"
            }).HeaderText,
            BackgroundTransparency = 1,
            Font = l_Typography_1.header.Font,
            TextSize = l_Typography_1.header.FontSize,
            TextColor3 = l_Color_2.textColor.Color3,
            Size = UDim2.fromOffset(0, 0),
            AutomaticSize = Enum.AutomaticSize.XY,
            TextXAlignment = Enum.TextXAlignment.Center,
            TextYAlignment = Enum.TextYAlignment.Center
        }),
        Layout = v2.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Horizontal,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            HorizontalAlignment = Enum.HorizontalAlignment.Center
        }),
        Padding = v2.createElement("UIPadding", {
            PaddingTop = UDim.new(0, l_Space_2.titlePadding),
            PaddingBottom = UDim.new(0, l_Space_2.titlePadding),
            PaddingLeft = UDim.new(0, l_Space_2.bodyPadding),
            PaddingRight = UDim.new(0, l_Space_2.bodyPadding)
        })
    });
end;
v12 = function()
    local l_MenuNavigationPrompt_3 = l_useDesignTokens_0().LuaApps.MenuNavigationPrompt;
    local l_Typography_2 = l_MenuNavigationPrompt_3.Typography;
    local l_Color_3 = l_MenuNavigationPrompt_3.Color;
    local l_Size_2 = l_MenuNavigationPrompt_3.Size;
    local l_Space_3 = l_MenuNavigationPrompt_3.Space;
    local v33 = l_useLocalization_0({
        CaptionText = "CoreScripts.InGameMenu.EducationalPopup.MenuNavigationToggleText",
        OkText = "CoreScripts.InGameMenu.Ok"
    });
    return v2.createElement("Frame", {
        LayoutOrder = 200,
        AutomaticSize = Enum.AutomaticSize.XY,
        BackgroundTransparency = 1
    }, {
        Layout = v2.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            SortOrder = Enum.SortOrder.LayoutOrder,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            Padding = UDim.new(0, l_Space_3.bodyPadding)
        }),
        Padding = v2.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, l_Space_3.bodyPadding),
            PaddingRight = UDim.new(0, l_Space_3.bodyPadding),
            PaddingTop = UDim.new(0, l_Space_3.bodyPadding),
            PaddingBottom = UDim.new(0, l_Space_3.bodyPadding)
        }),
        ControllerArea = v2.createElement(v10),
        ImageDescription = v2.createElement("TextLabel", {
            Text = v33.CaptionText,
            LayoutOrder = 100,
            BackgroundTransparency = 1,
            Font = l_Typography_2.caption.Font,
            TextSize = l_Typography_2.caption.FontSize,
            TextColor3 = l_Color_3.textColor.Color3,
            TextWrapped = true,
            LineHeight = l_Typography_2.caption.LineHeight,
            Size = UDim2.new(1, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            TextXAlignment = Enum.TextXAlignment.Left,
            TextYAlignment = Enum.TextYAlignment.Center
        }),
        ConfirmationButton = v2.createElement(l_Button_0, {
            buttonType = l_ButtonType_0.PrimarySystem,
            layoutOrder = 200,
            size = UDim2.new(1, 0, 0, l_Size_2.buttonHeight),
            text = v33.OkText,
            onActivated = function()
            end
        })
    });
end;
return v18;


local l_AppStorageService_0 = game:GetService("AppStorageService");
return {
    getShouldShowMenuNavigationPrompt = function()
        local l_status_0, l_result_0 = pcall(function()
            return l_AppStorageService_0:GetItem("GamepadMenuVirtualCursorPromptShown") == "false";
        end);
        if l_status_0 then
            return l_result_0;
        else
            return false;
        end;
    end,
    setMenuNavigationPromptShown = function()
        pcall(function()
            l_AppStorageService_0:SetItem("GamepadMenuVirtualCursorPromptShown", "true");
        end);
    end
};


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_LocalizationService_0 = game:GetService("LocalizationService");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local v5 = require(l_CorePackages_0.Packages.React);
local l_useExternalEvent_0 = require(l_CorePackages_0.Packages.UIBlox).Core.Hooks.useExternalEvent;
local l_GetTextSize_0 = require(l_CorePackages_0.Workspace.Packages.Style).GetTextSize;
local l_useDesignTokens_0 = require(l_CorePackages_0.Workspace.Packages.Style).useDesignTokens;
local v9 = require(l_RobloxGui_0.Modules.Flags.GetFFlagSwitchInExpTranslationsPackage);
local v10 = nil;
v10 = if not v9() then require(l_CoreGui_0.RobloxGui.Modules.InGameMenu.Localization.Localization) else require(l_CorePackages_0.Workspace.Packages.InExperienceLocales).Localization;
local v11 = require(l_CoreGui_0.RobloxGui.Modules.TopBar.Flags.FFlagLocalizeMenuNavigationToggleDialog);
return function(v12)
    local v13 = l_useDesignTokens_0();
    local l_CaptionHeader_0 = v13.Semantic.Typography.CaptionHeader;
    local l_Space_200_0 = v13.Global.Space_200;
    local l_Space_75_0 = v13.Global.Space_75;
    local l_Medium_0 = v13.Semantic.Radius.Medium;
    local l_Size_300_0 = v13.Global.Size_300;
    local l_Contrast_0 = v13.Semantic.Color.BackgroundUi.Contrast;
    local l_Color3_0 = v13.Semantic.Color.Text.Emphasis.Color3;
    local l_Space_50_0 = v13.Global.Space_50;
    local v22 = if not not v11 and game:GetEngineFeature("GetImageForKeyCode") then l_UserInputService_0:GetImageForKeyCode(Enum.KeyCode.ButtonSelect) else "rbxasset://textures/ui/Controls/DesignSystem/ButtonSelect@2x.png";
    local v23 = nil;
    local v24 = nil;
    if not v11 then
        local v25 = {
            VirtualCursorHintPreIcon = "Some experiences require pressing ",
            VirtualCursorHintPostIcon = " to toggle menu navigation"
        };
        v23 = v25.VirtualCursorHintPreIcon;
        v24 = v25.VirtualCursorHintPostIcon;
    else
        local v26, v27 = v5.useState(l_LocalizationService_0.RobloxLocaleId);
        local l_v27_0 = v27 --[[ copy: 14 -> 17 ]];
        l_useExternalEvent_0(l_LocalizationService_0:GetPropertyChangedSignal("RobloxLocaleId"), function()
            l_v27_0(l_LocalizationService_0.RobloxLocaleId);
        end);
        local l_v26_0 = v26 --[[ copy: 13 -> 18 ]];
        local v36, v37 = v5.useMemo(function()
            local v30 = v10.new(l_v26_0);
            local l_status_0, l_result_0 = pcall(v30.Format, v30, "CoreScripts.InGameMenu.VirtualCursorHintPreIcon");
            local l_status_1, l_result_1 = pcall(v30.Format, v30, "CoreScripts.InGameMenu.VirtualCursorHintPostIcon");
            local v35 = not l_status_0 and "Some experiences require pressing" or l_result_0;
            if not l_status_1 then
                return v35, "to toggle menu navigation";
            else
                return v35, l_result_1;
            end;
        end, {
            v26
        });
        v23 = v36;
        v24 = v37;
    end;
    local v38, v39 = v5.useMemo(function()
        return l_GetTextSize_0(v23, l_CaptionHeader_0.FontSize, l_CaptionHeader_0.Font, Vector2.new(math.huge, math.huge)), (l_GetTextSize_0(v24, l_CaptionHeader_0.FontSize, l_CaptionHeader_0.Font, Vector2.new(math.huge, math.huge)));
    end, {
        l_CaptionHeader_0.FontSize,
        l_CaptionHeader_0.Font,
        v23,
        v24
    });
    return v5.createElement("Frame", {
        BackgroundColor3 = l_Contrast_0.Color3,
        BackgroundTransparency = l_Contrast_0.Transparency,
        AutomaticSize = Enum.AutomaticSize.XY,
        AnchorPoint = Vector2.new(0.5, 0.5),
        Position = v12.Position
    }, {
        Corner = v5.createElement("UICorner", {
            CornerRadius = UDim.new(0, l_Medium_0)
        }),
        Layout = v5.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Horizontal,
            SortOrder = Enum.SortOrder.LayoutOrder,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            Padding = if not v11 then nil else UDim.new(0, l_Space_50_0)
        }),
        LeftText = v5.createElement("TextLabel", {
            Size = UDim2.fromOffset(v38.X, v38.Y),
            Text = v23,
            TextXAlignment = Enum.TextXAlignment.Center,
            TextYAlignment = Enum.TextYAlignment.Center,
            TextColor3 = l_Color3_0,
            Font = l_CaptionHeader_0.Font,
            TextSize = l_CaptionHeader_0.FontSize,
            TextWrapped = false,
            BackgroundTransparency = 1,
            LayoutOrder = 0
        }),
        Icon = v5.createElement("ImageLabel", {
            Size = UDim2.fromOffset(l_Size_300_0, l_Size_300_0),
            BackgroundTransparency = 1,
            LayoutOrder = 100,
            Image = v22
        }),
        RightText = v5.createElement("TextLabel", {
            Size = UDim2.fromOffset(v39.X, v39.Y),
            Text = v24,
            TextXAlignment = Enum.TextXAlignment.Center,
            TextYAlignment = Enum.TextYAlignment.Center,
            TextColor3 = l_Color3_0,
            Font = l_CaptionHeader_0.Font,
            TextSize = l_CaptionHeader_0.FontSize,
            TextWrapped = false,
            BackgroundTransparency = 1,
            LayoutOrder = 200
        }),
        Padding = v5.createElement("UIPadding", {
            PaddingTop = UDim.new(0, l_Space_75_0),
            PaddingBottom = UDim.new(0, l_Space_75_0),
            PaddingLeft = UDim.new(0, l_Space_200_0),
            PaddingRight = UDim.new(0, l_Space_200_0)
        })
    });
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_ContextActionService_0 = game:GetService("ContextActionService");
local l_GuiService_0 = game:GetService("GuiService");
local v4 = require(l_CorePackages_0.Roact);
local v5 = require(l_CorePackages_0.Packages.t);
local v6 = require(l_CorePackages_0.FitFrame);
local l_FitFrameVertical_0 = v6.FitFrameVertical;
local l_FitTextLabel_0 = v6.FitTextLabel;
local v9 = require(l_CorePackages_0.UIBlox);
local l_InteractiveAlert_0 = v9.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v9.App.Button.Enum.ButtonType;
local l_withStyle_0 = v9.Core.Style.withStyle;
local l_Images_0 = v9.App.ImageSet.Images;
local l_ImageSetLabel_0 = v9.Core.ImageSet.ImageSetLabel;
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v16 = require(l_Modules_0.RobloxTranslator);
local v17 = require(l_Modules_0.InGameMenuConstants);
local v18 = l_Images_0["icons/status/alert"];
local v19 = v4.PureComponent:extend("DisconnectedDialog");
v19.validateProps = v5.strictInterface({
    visible = v5.boolean,
    onConfirm = v5.callback,
    screenSize = v5.Vector2,
    guiService = v5.optional(v5.union(v5.instanceOf("GuiService"), v5.table))
});
v19.defaultProps = {
    guiService = l_GuiService_0
};
v19.init = function(v20)
    v20.guiService = v20.props.guiService;
    v20.onConfirmBindingAction = function(_, v22, _)
        if v22 ~= Enum.UserInputState.Begin then
            return Enum.ContextActionResult.Pass;
        else
            v20.props.onConfirm();
            return Enum.ContextActionResult.Sink;
        end;
    end;
end;
v19.render = function(v24)
    return l_withStyle_0(function(v25)
        local l_Theme_0 = v25.Theme;
        local l_Font_0 = v25.Font;
        local v28 = v16:FormatByKey("InGame.ConnectionError.Heading.VRDisconnected");
        local v29 = v16:FormatByKey("InGame.ConnectionError.Message.RestartApp");
        return v4.createElement(v4.Portal, {
            target = l_CoreGui_0
        }, {
            HeadsetDisconnectedDialog = v4.createElement("ScreenGui", {
                DisplayOrder = v17.DisplayOrder.HeadsetDisconnectedDialog,
                IgnoreGuiInset = true,
                OnTopOfCoreBlur = true,
                Enabled = v24.props.visible,
                ZIndexBehavior = Enum.ZIndexBehavior.Sibling
            }, {
                Overlay = v4.createElement("Frame", {
                    Active = true,
                    BackgroundColor3 = l_Theme_0.Overlay.Color,
                    BackgroundTransparency = l_Theme_0.Overlay.Transparency,
                    BorderSizePixel = 0,
                    Size = UDim2.fromScale(1, 1)
                }, {
                    Alert = v4.createElement(l_InteractiveAlert_0, {
                        title = v28,
                        middleContent = function()
                            return v4.createElement(l_FitFrameVertical_0, {
                                BackgroundTransparency = 1,
                                width = UDim.new(1, 0),
                                FillDirection = Enum.FillDirection.Vertical,
                                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                                VerticalAlignment = Enum.VerticalAlignment.Center,
                                contentPadding = UDim.new(0, 24)
                            }, {
                                Icon = v4.createElement(l_ImageSetLabel_0, {
                                    LayoutOrder = 1,
                                    BackgroundTransparency = 1,
                                    Position = UDim2.new(0, 5, 0, 5),
                                    Size = UDim2.fromOffset(40, 40),
                                    Image = v18,
                                    ImageTransparency = 0
                                }),
                                BodyText = v4.createElement(l_FitTextLabel_0, {
                                    LayoutOrder = 2,
                                    BackgroundTransparency = 1,
                                    width = l_FitTextLabel_0.Width.FitToText,
                                    Font = l_Font_0.Body.Font,
                                    Text = v29,
                                    TextSize = l_Font_0.BaseSize * l_Font_0.Body.RelativeSize,
                                    TextColor3 = l_Theme_0.TextDefault.Color
                                })
                            });
                        end,
                        buttonStackInfo = {
                            buttons = {
                                {
                                    buttonType = l_ButtonType_0.PrimarySystem,
                                    props = {
                                        onActivated = v24.props.onConfirm,
                                        text = v16:FormatByKey("InGame.ConnectionError.Action.Restart")
                                    }
                                }
                            }
                        },
                        screenSize = v24.props.screenSize
                    })
                })
            })
        });
    end);
end;
v19.bindActions = function(v30)
    l_ContextActionService_0:BindCoreAction("TopBarGamepadDisableMenuShortcut", function()
    end, false, Enum.KeyCode.ButtonStart, Enum.KeyCode.Escape);
    l_ContextActionService_0:BindCoreAction("TopBarDialogConfirm", v30.onConfirmBindingAction, false, Enum.KeyCode.Return, Enum.KeyCode.ButtonA);
end;
v19.unbindActions = function(_)
    l_ContextActionService_0:UnbindCoreAction("TopBarGamepadDisableMenuShortcut");
    l_ContextActionService_0:UnbindCoreAction("TopBarDialogConfirm");
end;
v19.didMount = function(v32)
    if v32.props.visible then
        v32:bindActions();
        v32.guiService:SetMenuIsOpen(true, "HeadsetDisconnectedDialog");
    end;
end;
v19.didUpdate = function(v33, v34, _)
    if v33.props.visible ~= v34.visible then
        if not v33.props.visible then
            v33:unbindActions();
            v33.guiService:SetMenuIsOpen(false, "HeadsetDisconnectedDialog");
        else
            v33:bindActions();
            v33.guiService:SetMenuIsOpen(true, "HeadsetDisconnectedDialog");
            return ;
        end;
    end;
end;
v19.willUnmount = function(v36)
    v36:unbindActions();
    v36.guiService:SetMenuIsOpen(false, "HeadsetDisconnectedDialog");
end;
return v19;


local l_CorePackages_0 = game:GetService("CorePackages");
local _ = game:GetService("CoreGui");
local l_GuiService_0 = game:GetService("GuiService");
local l_RunService_0 = game:GetService("RunService");
local l_VRService_0 = game:GetService("VRService");
local v5 = require(l_CorePackages_0.Roact);
local v6 = require(l_CorePackages_0.RoactRodux);
local v7 = require(l_CorePackages_0.Packages.t);
local v8 = require(script.Parent.Parent.Parent.Parent.Common.EventConnection);
local l_isSubjectToDesktopPolicies_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).isSubjectToDesktopPolicies;
local v10 = require(script.DisconnectedDialog);
local v11 = v5.PureComponent:extend("HeadsetMenu");
v11.validateProps = v7.strictInterface({
    screenSize = v7.Vector2,
    vrService = v7.optional(v7.union(v7.instanceOf("VRService"), v7.table)),
    guiService = v7.optional(v7.union(v7.instanceOf("GuiService"), v7.table))
});
v11.defaultProps = {
    vrService = l_VRService_0,
    guiService = l_GuiService_0
};
v11.init = function(v12)
    v12.state = {
        vrDeviceAvailable = false,
        shouldShowDisconnectDialog = false
    };
    v12.restartApp = function()
        local l_NotificationTypeList_0 = v12.props.guiService:GetNotificationTypeList();
        if not l_isSubjectToDesktopPolicies_0() then
            l_RunService_0.Heartbeat:Wait();
            game:Shutdown();
        elseif not game:GetEngineFeature("EnableLuaControlsRestartApp") then
            v12.props.guiService:BroadcastNotification("", l_NotificationTypeList_0.NATIVE_EXIT);
        else
            v12.props.guiService:BroadcastNotification("", l_NotificationTypeList_0.RESTART_APP);
        end;
        v12:setState({
            shouldShowDisconnectDialog = false
        });
    end;
end;
v11.render = function(v14)
    return v5.createFragment({
        HeadsetConnection = v5.createElement(v8, {
            event = v14.props.vrService:GetPropertyChangedSignal("VRDeviceAvailable"),
            callback = function()
                v14:setState({
                    vrDeviceAvailable = v14.props.vrService.VRDeviceAvailable
                });
            end
        }, {
            HeadsetDisconnectedDialog = v5.createElement(v10, {
                visible = v14.state.shouldShowDisconnectDialog,
                screenSize = v14.props.screenSize,
                onConfirm = v14.restartApp,
                guiService = v14.props.guiService
            })
        })
    });
end;
v11.didMount = function(v15)
    v15:setState({
        vrDeviceAvailable = v15.props.vrService.VRDeviceAvailable
    });
end;
v11.didUpdate = function(v16, _, v18)
    if not (not (v16.state.vrDeviceAvailable ~= v18.vrDeviceAvailable) or v16.state.vrDeviceAvailable) then
        v16:setState({
            shouldShowDisconnectDialog = true
        });
    end;
end;
return (v6.connect(function(v19)
    return {
        screenSize = v19.displayOptions.screenSize
    };
end)(v11));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local v4 = require(l_CorePackages_0.Packages.t);
local l_Parent_0 = script.Parent.Parent.Parent;
local v6 = require(l_Parent_0.Constants);
local v7 = require(l_CoreGui_0:WaitForChild("RobloxGui").Modules.TenFootInterface);
local v8 = require(l_Parent_0.Flags.GetFFlagEnableChromeBackwardsSignalAPI)();
local v9 = require(l_Parent_0.Actions.SetKeepOutArea);
local v10 = require(l_Parent_0.Actions.RemoveKeepOutArea);
local l_Chrome_0 = l_Parent_0.Parent.Chrome;
local v12 = require(l_Chrome_0.Enabled);
local v13 = if not v12 then nil else require(l_Chrome_0.Service);
local v14 = UDim2.new(0, 80, 0, 6);
local v15 = UDim2.new(0, 220, 0, 16);
local v16 = v2.PureComponent:extend("HealthBar");
v16.validateProps = v4.strictInterface({
    layoutOrder = v4.integer,
    healthEnabled = v4.boolean,
    health = v4.number,
    maxHealth = v4.number,
    setKeepOutArea = v4.callback,
    removeKeepOutArea = v4.callback
});
local function _(v17)
    return (Vector3.new(v17.r, v17.g, v17.b));
end;
local v19 = {};
local l_HealthRedColor_0 = v6.HealthRedColor;
v19[Vector3.new(l_HealthRedColor_0.r, l_HealthRedColor_0.g, l_HealthRedColor_0.b)] = 0.1;
l_HealthRedColor_0 = v6.HealthYellowColor;
v19[Vector3.new(l_HealthRedColor_0.r, l_HealthRedColor_0.g, l_HealthRedColor_0.b)] = 0.5;
l_HealthRedColor_0 = v6.HealthGreenColor;
v19[Vector3.new(l_HealthRedColor_0.r, l_HealthRedColor_0.g, l_HealthRedColor_0.b)] = 0.8;
local l_HealthRedColor_1 = v6.HealthRedColor;
l_HealthRedColor_0 = v6.HealthGreenColor;
local function v30(v22)
    if v22 <= 0.1 then
        return l_HealthRedColor_1;
    elseif v22 >= 0.8 then
        return l_HealthRedColor_0;
    else
        local v23 = Vector3.new(0, 0, 0);
        local v24 = 0;
        for v25, v26 in pairs(v19) do
            local v27 = v22 - v26;
            if v27 == 0 then
                return Color3.new(v25.x, v25.y, v25.z);
            else
                local v28 = 1 / (v27 * v27);
                v23 = v23 + v28 * v25;
                v24 = v24 + v28;
            end;
        end;
        local v29 = v23 / v24;
        return Color3.new(v29.x, v29.y, v29.z);
    end;
end;
v16.init = function(v31)
    v31.rootRef = v2.createRef();
    if v13 then
        v31:setState({
            chromeMenuOpen = v13:status():get() == v13.MenuStatus.Open
        });
    end;
end;
v16.didMount = function(v32)
    if v13 then
        v32.chromeMenuStatusConn = v13:status():connect(function()
            v32:setState({
                chromeMenuOpen = v13:status():get() == v13.MenuStatus.Open
            });
        end);
    end;
end;
v16.onUnmount = function(v33)
    if v33.chromeMenuStatusConn then
        v33.chromeMenuStatusConn:Disconnect();
        v33.chromeMenuStatusConn = nil;
    end;
end;
v16.render = function(v34)
    local v35 = (v34.props.healthEnabled and v34.props.health < v34.props.maxHealth) and not v34.state.chromeMenuOpen;
    local v36 = 1;
    if not v34.props.isDead then
        if v34.props.maxHealth > 0 then
            v36 = v34.props.health / v34.props.maxHealth;
        end;
    else
        v36 = 0;
    end;
    local l_v14_0 = v14;
    if v7:IsEnabled() then
        l_v14_0 = v15;
    end;
    local v38 = 4;
    if v7:IsEnabled() then
        v38 = 0;
    end;
    local v39 = "rbxasset://textures/ui/TopBar/HealthBarBase.png";
    local v40 = "rbxasset://textures/ui/TopBar/HealthBar.png";
    local v41 = Rect.new(3, 3, 4, 4);
    if v7:IsEnabled() then
        v39 = "rbxasset://textures/ui/TopBar/HealthBarBaseTV.png";
        v40 = "rbxasset://textures/ui/TopBar/HealthBarTV.png";
        v41 = Rect.new(8, 8, 9, 9);
    end;
    local function v43(v42)
        if not v35 or not v42 then
            v34.props.removeKeepOutArea(v6.HealthBarKeepOutAreaId);
            return ;
        else
            v34.props.setKeepOutArea(v6.HealthBarKeepOutAreaId, v42.AbsolutePosition, v42.AbsoluteSize);
            return ;
        end;
    end;
    if not (not v8 or not v34.rootRef.current) then
        local l_current_0 = v34.rootRef.current;
        if not v35 or not l_current_0 then
            v34.props.removeKeepOutArea(v6.HealthBarKeepOutAreaId);
        else
            v34.props.setKeepOutArea(v6.HealthBarKeepOutAreaId, l_current_0.AbsolutePosition, l_current_0.AbsoluteSize);
        end;
    end;
    return v2.createElement("Frame", {
        Visible = v35,
        BackgroundTransparency = 1,
        Size = UDim2.new(l_v14_0.X, UDim.new(1, 0)),
        LayoutOrder = v34.props.layoutOrder,
        [v2.Change.AbsoluteSize] = if not v8 then nil else v43,
        [v2.Change.AbsolutePosition] = if not v8 then nil else v43,
        [v2.Ref] = v34.rootRef
    }, {
        Padding = not v12 and v2.createElement("UIPadding", {
            PaddingTop = UDim.new(0, v38)
        }) or nil,
        HealthBar = v2.createElement("ImageLabel", {
            BackgroundTransparency = 1,
            Image = v39,
            ScaleType = Enum.ScaleType.Slice,
            SliceCenter = v41,
            Size = l_v14_0,
            Position = UDim2.fromScale(0, 0.5),
            AnchorPoint = Vector2.new(0, 0.5)
        }, {
            Fill = v2.createElement("ImageLabel", {
                BackgroundTransparency = 1,
                Image = v40,
                ImageColor3 = v30(v36),
                ScaleType = Enum.ScaleType.Slice,
                SliceCenter = v41,
                Size = UDim2.fromScale(v36, 1)
            })
        })
    });
end;
return v3.UNSTABLE_connect2(function(v45)
    return {
        health = v45.health.currentHealth,
        maxHealth = v45.health.maxHealth,
        healthEnabled = v45.coreGuiEnabled[Enum.CoreGuiType.Health]
    };
end, function(v46)
    return {
        setKeepOutArea = function(v47, v48, v49)
            return v46(v9(v47, v48, v49));
        end,
        removeKeepOutArea = function(v50)
            return v46(v10(v50));
        end
    };
end)(v16);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local v4 = require(l_CorePackages_0.Packages.t);
local v5 = require(l_CorePackages_0.Otter);
local v6 = require(l_CoreGui_0:WaitForChild("RobloxGui").Modules.Common.PolicyService);
local v7 = require(script.Parent.Parent.Parent.Constants);
local v8 = {
    frequency = 0.75,
    dampingRatio = 1
};
local v9 = Color3.fromRGB(187, 0, 4);
local v10 = Color3.new(1, 1, 1);
local v11 = v2.PureComponent:extend("HurtOverlay");
v11.validateProps = v4.strictInterface({
    healthEnabled = v4.boolean,
    health = v4.number,
    maxHealth = v4.number,
    isDead = v4.boolean
});
v11.init = function(v12)
    v12.state = {
        isAnimating = false
    };
    local v13, v14 = v2.createBinding(0);
    v12.animationBinding = v13;
    v12.animationBindingUpdate = v14;
    v12.positionBinding = v12.animationBinding:map(function(v15)
        return UDim2.new(-10 * v15, 0, -10 * v15, 0);
    end);
    v12.sizeBinding = v12.animationBinding:map(function(v16)
        return UDim2.new(1 + 19 * v16, 0, 1 + 19 * v16, 0);
    end);
    v12.motor = v5.createSingleMotor(0);
    v12.motor:onStep(function(v17)
        v12.animationBindingUpdate(v17);
    end);
    v12.motor:onComplete(function()
        v12:setState({
            isAnimating = false
        });
    end);
end;
v11.render = function(v18)
    local v19 = v18.props.healthEnabled and v18.state.isAnimating;
    local l_v9_0 = v9;
    if v6:IsSubjectToChinaPolicies() then
        l_v9_0 = v10;
    end;
    return v2.createElement("ImageLabel", {
        Visible = v19,
        BackgroundTransparency = 1,
        Image = "rbxasset://textures/ui/TopBar/WhiteOverlayAsset.png",
        ImageColor3 = l_v9_0,
        Size = v18.sizeBinding,
        Position = v18.positionBinding
    });
end;
v11.didUpdate = function(v21, v22, _)
    if not (not (v21.props.health < v22.health) or v21.props.isDead and v22.isDead) and v7.HealthPercentForOverlay <= (v22.health - v21.props.health) / v21.props.maxHealth then
        v21.motor:setGoal(v5.instant(0));
        v21.motor:step(0);
        v21.motor:setGoal(v5.spring(1, v8));
        v21.motor:start();
        v21:setState({
            isAnimating = true
        });
    end;
end;
return v3.UNSTABLE_connect2(function(v24)
    return {
        health = v24.health.currentHealth,
        maxHealth = v24.health.maxHealth,
        isDead = v24.health.isDead,
        healthEnabled = v24.coreGuiEnabled[Enum.CoreGuiType.Health]
    };
end, nil)(v11);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.Packages.React);
local v4 = require(l_CorePackages_0.Packages.t);
local v5 = require(l_CorePackages_0.UIBlox);
local v6 = require(l_CorePackages_0.Cryo);
local l_ImageSetLabel_0 = v5.Core.ImageSet.ImageSetLabel;
local l_withStyle_0 = v5.Core.Style.withStyle;
local l_Interactable_0 = v5.Core.Control.Interactable;
local l_ControlState_0 = v5.Core.Control.Enum.ControlState;
local l_Images_0 = v5.App.ImageSet.Images;
local v12 = require(l_CorePackages_0.Packages.ReactOtter);
local v13 = require(script.Parent.Parent.Parent.Flags.GetFFlagEnableChromeBackwardsSignalAPI)();
local v14 = require(script.Parent.FlashingDot);
local v15 = require(script.Parent.FlashingDotV2);
local v16 = require(l_CoreGui_0.RobloxGui.Modules.Flags.GetFFlagFlashingDotUseAsyncInit);
local _ = require(l_CoreGui_0.RobloxGui.Modules.Chrome.Enabled)();
local v18 = require(l_CoreGui_0.RobloxGui.Modules.isNewTiltIconEnabled);
local v19 = require(script.Parent.Parent.Parent.Constants);
local v20 = require(script.Parent.Parent.Parent.Flags.GetFFlagChangeTopbarHeightCalculation);
local v21 = v2.PureComponent:extend("IconButton");
local v22 = not v18() and 32 or v19.TopBarHeight - 4;
if v20() then
    v22 = v19.TopBarButtonHeight;
end;
local v23 = l_Images_0["component_assets/circle_17"];
v21.validateProps = v4.strictInterface({
    icon = v4.union(v4.string, v4.table),
    iconSize = v4.integer,
    enableFlashingDot = v4.optional(v4.boolean),
    useIconScaleAnimation = v4.optional(v4.boolean),
    onActivated = v4.callback,
    onHover = v4.optional(v4.callback),
    onHoverEnd = v4.optional(v4.callback)
});
AnimatedScaleIcon = function(v24)
    local v25, v26 = v12.useAnimatedBinding(v24.iconSize);
    v3.useEffect(function()
        v26(v12.spring(v24.iconSize, {
            dampingRatio = 1,
            frequency = 2.857142857142857
        }));
        return function()
        end;
    end, {
        v24.iconSize
    });
    return v2.createElement(l_ImageSetLabel_0, {
        Size = v25:map(function(v27)
            return UDim2.fromOffset(v27, v27);
        end),
        Position = UDim2.fromScale(0.5, 0.5),
        AnchorPoint = Vector2.new(0.5, 0.5),
        BackgroundTransparency = 1,
        Image = v24.icon,
        ImageColor3 = v24.style.Theme.IconEmphasis.Color,
        ImageTransparency = v24.style.Theme.IconEmphasis.Transparency,
        ZIndex = 1
    });
end;
v21.init = function(v28)
    v28:setState({
        controlState = l_ControlState_0.Default
    });
    v28.controlStateUpdated = function(v29, v30)
        if v28.props.onHover and v30 == l_ControlState_0.Hover then
            v28.props.onHover();
        elseif (v28.props.onHoverEnd and v29 == l_ControlState_0.Hover) and v30 ~= l_ControlState_0.Hover then
            v28.props.onHoverEnd();
        end;
        v28:setState({
            controlState = v30
        });
    end;
end;
v21.render = function(v31)
    return l_withStyle_0(function(v32)
        local v33 = {
            Color = Color3.new(1, 1, 1),
            Transparency = 1
        };
        if v31.state.controlState == l_ControlState_0.Pressed then
            v33 = v32.Theme.BackgroundOnPress;
        elseif v31.state.controlState == l_ControlState_0.Hover then
            v33 = v32.Theme.BackgroundOnHover;
        end;
        return v2.createElement(l_Interactable_0, {
            onStateChanged = v31.controlStateUpdated,
            ZIndex = 1,
            BackgroundTransparency = not v18() and 1 or v32.Theme.BackgroundUIContrast.Transparency,
            Position = UDim2.fromScale(0, not v18() and 1 or 0.5),
            AnchorPoint = Vector2.new(0, not v18() and 1 or 0.5),
            Size = UDim2.fromOffset(v22, v22),
            Image = if v18() then nil else "rbxasset://textures/ui/TopBar/iconBase.png",
            BackgroundColor3 = v32.Theme.BackgroundUIContrast.Color,
            [v2.Event.Activated] = v31.props.onActivated,
            [v2.Ref] = v31.props.forwardRef
        }, {
            UICorner = not not v18() and v2.createElement("UICorner", {
                CornerRadius = UDim.new(1, 0)
            }) or nil,
            Icon = not v31.props.useIconScaleAnimation and v2.createElement(l_ImageSetLabel_0, {
                Size = UDim2.fromOffset(v31.props.iconSize, v31.props.iconSize),
                Position = UDim2.fromScale(0.5, 0.5),
                AnchorPoint = Vector2.new(0.5, 0.5),
                BackgroundTransparency = 1,
                Image = v31.props.icon,
                ImageColor3 = v32.Theme.IconEmphasis.Color,
                ImageTransparency = v32.Theme.IconEmphasis.Transparency,
                ZIndex = 1
            }),
            ScalingIcon = v31.props.useIconScaleAnimation and v2.createElement(AnimatedScaleIcon, {
                icon = v31.props.icon,
                iconSize = v31.props.iconSize,
                style = v32
            }),
            FlashingDot = if not v31.props.enableFlashingDot then nil else v2.createElement(if not v16() then v14 else v15),
            StateOverlayRound = not not v18() and v2.createElement("Frame", {
                BackgroundTransparency = v33.Transparency,
                BackgroundColor3 = v33.Color,
                Size = UDim2.fromScale(1, 1),
                ZIndex = 2
            }, {
                UICorner = not not v18() and v2.createElement("UICorner", {
                    CornerRadius = UDim.new(1, 0)
                }) or nil
            }) or nil,
            StateOverlay = not v18() and v2.createElement(l_ImageSetLabel_0, {
                BackgroundTransparency = 1,
                Image = v23,
                ScaleType = Enum.ScaleType.Slice,
                SliceCenter = Rect.new(8, 8, 8, 8),
                ImageColor3 = v33.Color,
                ImageTransparency = v33.Transparency,
                Size = UDim2.fromScale(1, 1),
                ZIndex = 2
            }) or nil
        });
    end);
end;
if not v13 then
    return v21;
else
    return v2.forwardRef(function(v34, v35)
        return v2.createElement(v21, v6.Dictionary.join(v34, {
            forwardRef = v35
        }));
    end);
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local _ = game:GetService("VRService");
local _ = game:GetService("GamepadService");
local _ = game:GetService("GuiService");
local _ = game:GetService("HttpService");
local v6 = require(l_CorePackages_0.Roact);
local _ = require(l_CorePackages_0.RoactRodux);
local v8 = require(l_CorePackages_0.Packages.t);
local v9 = require(l_CorePackages_0.Packages.UIBlox);
local l_withStyle_0 = v9.Core.Style.withStyle;
local l_ImageSetLabel_0 = v9.Core.ImageSet.ImageSetLabel;
local l_Images_0 = v9.App.ImageSet.Images;
local _ = require(l_CorePackages_0.Workspace.Packages.VideoProtocol);
local v14 = settings():WaitForChild("Game Options");
local v15 = v6.PureComponent:extend("MenuIcon");
v15.validateProps = v8.strictInterface({
    layoutOrder = v8.integer
});
local v16 = UDim2.fromOffset(77, 28);
local v17 = UDim2.fromOffset(27, 14);
v15.init = function(v18)
    v18.state = {
        recording = false,
        recordingText = "0:00"
    };
    v18.recordingConnection = v14:GetPropertyChangedSignal("VideoRecording"):Connect(function()
        v18:setState({
            recording = v14.VideoRecording
        });
    end);
    v18.RecordingPillActivated = function()
        l_CoreGui_0:ToggleRecording();
    end;
end;
v15.render = function(v19)
    return l_withStyle_0(function(v20)
        return v6.createFragment({
            Button = v6.createElement("Frame", {
                Visible = v19.state.recording,
                AutomaticSize = Enum.AutomaticSize.XY,
                LayoutOrder = v19.props.layoutOrder,
                BackgroundTransparency = 1,
                Size = UDim2.fromScale(0, 1)
            }, {
                ActualButton = v6.createElement("TextButton", {
                    Text = "",
                    BackgroundTransparency = 0,
                    BackgroundColor3 = v20.Theme.Alert.Color,
                    BorderSizePixel = 0,
                    Size = v16,
                    Position = UDim2.new(0, 0, 1, -30),
                    [v6.Event.Activated] = v19.RecordingPillActivated
                }, {
                    UICorner = v6.createElement("UICorner", {
                        CornerRadius = UDim.new(0, 18)
                    }),
                    Layout = v6.createElement("UIListLayout", {
                        FillDirection = Enum.FillDirection.Horizontal,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        HorizontalAlignment = Enum.HorizontalAlignment.Center,
                        SortOrder = Enum.SortOrder.LayoutOrder
                    }),
                    Image = v6.createElement(l_ImageSetLabel_0, {
                        BackgroundTransparency = 1,
                        Image = l_Images_0["icons/controls/screenrecord"],
                        Size = UDim2.new(0, 28, 0, 28),
                        Position = UDim2.new(0.4, 0, 0.5, 0),
                        AnchorPoint = Vector2.new(0.4, 0.5)
                    }),
                    TextLabel = v6.createElement("TextLabel", {
                        AutomaticSize = Enum.AutomaticSize.XY,
                        BackgroundTransparency = 1,
                        Size = v17,
                        Text = v19.state.recordingText,
                        LayoutOrder = 2,
                        TextColor3 = v20.Theme.TextEmphasis.Color,
                        TextWrapped = true,
                        TextXAlignment = Enum.TextXAlignment.Center,
                        TextYAlignment = Enum.TextYAlignment.Center
                    })
                })
            })
        });
    end);
end;
v15.didUpdate = function(v21, _, _)
    if not v21.state.recording then
        v21.startRecording = false;
    elseif not v21.startRecording then
        v21.startRecording = true;
        local v24 = tick();
        local function v25()
            if v21.state.recording then
                delay(0.2, v25);
            end;
            local v26 = os.date("*t", tick() - v24);
            v21:setState({
                recordingText = ("%d:%02d"):format(v26.min, v26.sec)
            });
        end;
        delay(0.2, v25);
        return ;
    end;
end;
v15.willUnmount = function(v27)
    if v27.recordingConnection then
        v27.recordingConnection:Disconnect();
        v27.recordingConnection = nil;
    end;
end;
return v15;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_VRService_0 = game:GetService("VRService");
local l_GamepadService_0 = game:GetService("GamepadService");
local l_GuiService_0 = game:GetService("GuiService");
local l_HttpService_0 = game:GetService("HttpService");
local v6 = require(l_CorePackages_0.Roact);
local v7 = require(l_CorePackages_0.RoactRodux);
local v8 = require(l_CorePackages_0.Packages.t);
local l_withStyle_0 = require(l_CorePackages_0.Packages.UIBlox).Core.Style.withStyle;
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local _ = require(l_RobloxGui_0.Modules.TenFootInterface);
local _ = require(l_RobloxGui_0.Modules.isNewInGameMenuEnabled);
local _ = require(l_RobloxGui_0.Modules.InGameMenuConstants);
local l_default_0 = require(l_RobloxGui_0.Modules.VoiceChat.VoiceChatServiceManager).default;
local v15 = require(l_RobloxGui_0.Modules.Logger):new(script.Name);
local l_AppFonts_0 = require(l_CorePackages_0.Workspace.Packages.Style).AppFonts;
local l_ExternalEventConnection_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).ExternalEventConnection;
local v18 = v6.PureComponent:extend("MenuIcon");
local v19 = require(l_RobloxGui_0.Modules.Flags.GetFStringVoiceBetaBadgeLearnMore);
local v20 = require(l_RobloxGui_0.Modules.Flags.GetFFlagBetaBadgeLearnMoreLinkFormview);
local l_Parent_0 = script.Parent.Parent.Parent;
local v22 = require(l_Parent_0.Flags.GetFFlagEnableChromeBackwardsSignalAPI)();
local v23 = require(l_Parent_0.Actions.SetKeepOutArea);
local v24 = require(l_Parent_0.Actions.RemoveKeepOutArea);
local v25 = require(l_Parent_0.Constants);
local l_Chrome_0 = l_Parent_0.Parent.Chrome;
local v27 = if not require(l_Chrome_0.Enabled) then nil else require(l_Chrome_0.Service);
v18.validateProps = v8.strictInterface({
    layoutOrder = v8.integer,
    Analytics = v8.table,
    setKeepOutArea = v8.optional(v8.callback),
    removeKeepOutArea = v8.optional(v8.callback)
});
local v28 = {
    FullScreen = 0,
    FormSheet = 2
};
local v29 = UDim2.fromOffset(31, 11);
local v30 = UDim.new(0, 12);
local v31 = UDim2.fromOffset(330, 185);
local v32 = require(l_RobloxGui_0.Modules.RobloxTranslator);
local function v33()
end;
openWebview = function(v34)
    local v35 = l_HttpService_0:JSONEncode({
        title = if not game:GetEngineFeature("SetWebViewTitle") then nil else "Help Center",
        presentationStyle = if not v20() then nil else v28.FormSheet,
        visible = true,
        url = v34
    });
    v15:debug("Opening Webview with payload {}", v35);
    l_GuiService_0:BroadcastNotification(v35, 20);
end;
v18.init = function(v36)
    v36.buttonRef = v6.createRef();
    v36:setState({
        chromeMenuOpen = v27 and v27:status():get() == v27.MenuStatus.Open,
        vrShowMenuIcon = l_VRService_0.VREnabled and l_GamepadService_0.GamepadCursorEnabled,
        voiceChatServiceConnected = false,
        showPopup = false
    });
    if game:GetEngineFeature("VoiceChatSupported") then
        l_default_0:asyncInit():andThen(function()
            v36:setState({
                voiceChatServiceConnected = true
            });
        end):catch(v33);
    end;
    v36.menuIconActivated = function()
        v36:setState({
            showPopup = not v36.state.showPopup
        });
        v36.props.Analytics.EventStream:setRBXEvent("voiceChat", v36.state.showPopup and "closeBetaBadge" or "openBetaBadge");
    end;
    v36.learnMore = function()
        openWebview((v19()));
        v36.props.Analytics.EventStream:setRBXEvent("voiceChat", "clickBetaBadgeLearnMore");
    end;
end;
v18.didMount = function(v37)
    if v27 then
        v37.chromeMenuStatusConn = v27:status():connect(function()
            v37:setState({
                chromeMenuOpen = v27:status():get() == v27.MenuStatus.Open
            });
        end);
    end;
end;
v18.onUnmount = function(v38)
    if v38.chromeMenuStatusConn then
        v38.chromeMenuStatusConn:Disconnect();
        v38.chromeMenuStatusConn = nil;
    end;
end;
v18.render = function(v39)
    local v40 = (not l_VRService_0.VREnabled or v39.state.vrShowMenuIcon) and v39.state.voiceChatServiceConnected;
    if v39.state.chromeMenuOpen then
        v40 = false;
    end;
    local function v42(v41)
        if not v40 or not v41 then
            v39.props.removeKeepOutArea(v25.VoiceBetaBadgeKeepOutAreaId);
            return ;
        else
            v39.props.setKeepOutArea(v25.VoiceBetaBadgeKeepOutAreaId, Vector2.new(v41.AbsolutePosition.X - 2, v41.AbsolutePosition.Y - 2), (Vector2.new(v41.AbsoluteSize.X + 4, v41.AbsoluteSize.Y + 4)));
            return ;
        end;
    end;
    if not (not v22 or not v39.buttonRef.current) then
        v42(v39.buttonRef.current);
    end;
    return l_withStyle_0(function(v43)
        local l_Footer_0 = v43.Font.Footer;
        local l_Font_0 = l_Footer_0.Font;
        local v46 = v43.Font.BaseSize * l_Footer_0.RelativeSize;
        local l_BackgroundUIContrast_0 = v43.Theme.BackgroundUIContrast;
        local l_TextEmphasis_0 = v43.Theme.TextEmphasis;
        return v6.createFragment({
            PopupWrapper = v6.createElement("Frame", {
                Visible = v40 and v39.state.showPopup,
                BackgroundTransparency = 1,
                AutomaticSize = Enum.AutomaticSize.XY,
                LayoutOrder = v39.props.layoutOrder + 1
            }, {
                Popup = v6.createElement("Frame", {
                    Size = v31,
                    Position = UDim2.fromOffset(0, 10),
                    BackgroundTransparency = l_BackgroundUIContrast_0.Transparency,
                    BackgroundColor3 = l_BackgroundUIContrast_0.Color
                }, {
                    Layout = v6.createElement("UIListLayout", {
                        Padding = UDim.new(0, 8),
                        FillDirection = Enum.FillDirection.Vertical,
                        HorizontalAlignment = Enum.HorizontalAlignment.Left,
                        SortOrder = Enum.SortOrder.LayoutOrder
                    }),
                    Popup = v6.createElement("Frame", {
                        AutomaticSize = Enum.AutomaticSize.XY,
                        BackgroundTransparency = 1,
                        LayoutOrder = 0
                    }, {
                        Layout = v6.createElement("UIListLayout", {
                            Padding = UDim.new(0, 0),
                            FillDirection = Enum.FillDirection.Vertical,
                            HorizontalAlignment = Enum.HorizontalAlignment.Left,
                            SortOrder = Enum.SortOrder.LayoutOrder
                        }),
                        Starter = v6.createElement("TextLabel", {
                            Text = v32:FormatByKey("InGame.CommonUI.Badge.Popup.HeaderList"),
                            TextSize = v46,
                            Font = l_Font_0,
                            LayoutOrder = 0,
                            TextXAlignment = Enum.TextXAlignment.Left,
                            TextColor3 = l_TextEmphasis_0.Color,
                            AutomaticSize = Enum.AutomaticSize.XY,
                            BackgroundTransparency = 1
                        }),
                        FirstBullet = v6.createElement("TextLabel", {
                            Text = "\226\128\162 " .. v32:FormatByKey("InGame.CommonUI.Badge.Popup.VoiceChatBullet"),
                            TextSize = v46,
                            Font = l_Font_0,
                            LayoutOrder = 2,
                            TextXAlignment = Enum.TextXAlignment.Left,
                            TextColor3 = l_TextEmphasis_0.Color,
                            AutomaticSize = Enum.AutomaticSize.XY,
                            BackgroundTransparency = 1
                        })
                    }),
                    Text = v6.createElement("TextLabel", {
                        Text = v32:FormatByKey("InGame.CommonUI.Badge.Popup.DisclaimerText2"),
                        TextSize = v46,
                        Font = l_Font_0,
                        LayoutOrder = 0,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        TextColor3 = l_TextEmphasis_0.Color,
                        AutomaticSize = Enum.AutomaticSize.XY,
                        TextWrapped = true,
                        BackgroundTransparency = 1
                    }),
                    LearnMoreLink = v6.createElement("TextButton", {
                        Text = v32:FormatByKey("InGame.CommonUI.Badge.Popup.LearnMoreLink"),
                        TextSize = v46,
                        Font = l_Font_0,
                        LayoutOrder = 1,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        TextColor3 = v43.Theme.TextLink.Color,
                        AutomaticSize = Enum.AutomaticSize.XY,
                        BackgroundTransparency = 1,
                        [v6.Event.Activated] = v39.learnMore
                    }),
                    UICorner = v6.createElement("UICorner", {
                        CornerRadius = UDim.new(0, 8)
                    }),
                    UIPadding = v6.createElement("UIPadding", {
                        PaddingLeft = v30,
                        PaddingRight = v30,
                        PaddingBottom = v30,
                        PaddingTop = v30
                    })
                })
            }),
            Button = v6.createElement("Frame", {
                Visible = v40,
                AutomaticSize = Enum.AutomaticSize.XY,
                LayoutOrder = v39.props.layoutOrder,
                BackgroundTransparency = 1,
                Size = UDim2.fromScale(0, 1),
                [v6.Change.AbsoluteSize] = if not v22 then nil else v42,
                [v6.Change.AbsolutePosition] = if not v22 then nil else v42,
                [v6.Ref] = v39.buttonRef
            }, {
                Layout = v6.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Vertical,
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    SortOrder = Enum.SortOrder.LayoutOrder
                }),
                ActualButton = v6.createElement("Frame", {
                    Visible = v40,
                    BackgroundTransparency = 0,
                    Size = v29,
                    BackgroundColor3 = Color3.fromRGB(238, 206, 83)
                }, {
                    Button = v6.createElement("TextButton", {
                        Text = v32:FormatByKey("InGame.CommonUI.Badge.BadgeText"),
                        Font = l_AppFonts_0.default:getBold(),
                        TextSize = 8,
                        BackgroundTransparency = 1,
                        BorderSizePixel = 0,
                        Size = v29,
                        TextColor3 = l_BackgroundUIContrast_0.Color,
                        [v6.Event.Activated] = v39.menuIconActivated
                    }),
                    UICorner = v6.createElement("UICorner", {
                        CornerRadius = UDim.new(0, 3)
                    }),
                    UIStroke = v6.createElement("UIStroke", {
                        Thickness = 2,
                        Color = l_TextEmphasis_0.Color
                    }),
                    VREnabledListener = l_GamepadService_0 and v6.createElement(l_ExternalEventConnection_0, {
                        event = l_GamepadService_0:GetPropertyChangedSignal("GamepadCursorEnabled"),
                        callback = function()
                            v39:setState({
                                vrShowMenuIcon = l_VRService_0.VREnabled and l_GamepadService_0.GamepadCursorEnabled
                            });
                        end or nil
                    })
                })
            })
        });
    end);
end;
if not v22 then
    return v18;
else
    return v7.UNSTABLE_connect2(nil, function(v49)
        return {
            setKeepOutArea = function(v50, v51, v52)
                return v49(v23(v50, v51, v52));
            end,
            removeKeepOutArea = function(v53)
                return v49(v24(v53));
            end
        };
    end)(v18);
end;


local l_UserInputService_0 = game:GetService("UserInputService");
local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.TenFootInterface);
local v3 = require(l_Parent_0.Chrome.Enabled);
local v4 = require(l_Parent_0.isNewTiltIconEnabled);
local v5 = require(script.Parent.Flags.GetFFlagChangeTopbarHeightCalculation);
local function _()
    local v6 = nil;
    pcall(function()
        v6 = l_UserInputService_0:GetPlatform();
    end);
    if not (v6 ~= Enum.Platform.IOS) or v6 == Enum.Platform.Android then
        return 52;
    else
        return 58;
    end;
end;
local function _()
    if v4() then
        if not v3() then
            return 36;
        else
            local v8 = nil;
            pcall(function()
                v8 = l_UserInputService_0:GetPlatform();
            end);
            if not (v8 ~= Enum.Platform.IOS) or v8 == Enum.Platform.Android then
                return 52;
            else
                return 58;
            end;
        end;
    else
        return 36;
    end;
end;
local v10 = not v3() and 36 or 48;
local v11 = not v3() and 32 or 44;
if v5() then
    if v4() then
        if not v3() then
            v10 = 36;
        else
            local v12 = nil;
            pcall(function()
                v12 = l_UserInputService_0:GetPlatform();
            end);
            if not (v12 ~= Enum.Platform.IOS) or v12 == Enum.Platform.Android then
                v10 = 52;
                --[[ close >= 10 ]]
            else
                v10 = 58;
                --[[ close >= 10 ]]
            end;
        end;
    else
        v10 = 36;
    end;
end;
return {
    TopBarHeight = v10,
    TopBarHeightTenFoot = 72,
    TopBarButtonHeight = v11,
    TopBarButtonPadding = 2,
    TopBarTopMargin = (v10 - v11) - 4,
    MenuIconKeepOutAreaId = "roblox-menu-icon",
    HealthBarKeepOutAreaId = "health-bar",
    MoreMenuKeepOutAreaId = "more-menu",
    ChatIconKeepOutAreaId = "chat-icon",
    BackIconKeepOutAreaId = "back-icon",
    BadgeOver13KeepOutAreaId = "badge-13",
    VoiceBetaBadgeKeepOutAreaId = "badge-voice-beta",
    ScreenSideOffset = 16,
    ScreenSideOffsetTenFoot = 48,
    Padding = 12,
    HealthPercentForOverlay = 0.05,
    HealthRedColor = Color3.fromRGB(255, 28, 0),
    HealthYellowColor = Color3.fromRGB(250, 235, 0),
    HealthGreenColor = Color3.fromRGB(27, 252, 107),
    InputType = {
        MouseAndKeyBoard = "MouseAndKeyboard",
        Touch = "Touch",
        Gamepad = "Gamepad"
    },
    Analytics = {
        EventNameTopBarButtonActivated = "topbar-button-activated",
        ChatButtonName = "chat",
        MoreMenuButtonName = "more-menu",
        InventoryButtonName = "inventory",
        LeaderboardButtonName = "leaderboard",
        EmotesButtonName = "emotes",
        StatusActive = "active",
        StatusInactive = "inactive"
    }
};


return (game:GetEngineFeature("GamepadMenuVirtualCursorPromptKeys") and game:DefineFastFlag("EnableGamepadMenuSelector", false)) and require(script.Parent.FFlagAddMenuNavigationToggleDialog);


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


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


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


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


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


local v0 = require(game:GetService("CorePackages").Rodux);
local l_Actions_0 = script.Parent.Parent.Actions;
return (v0.createReducer({
    canChat = false,
    visible = true,
    lastReadMessages = 0,
    unreadMessages = 0
}, {
    [require(l_Actions_0.UpdateUnreadMessagesBadge).name] = function(v2, v3)
        if not v2.visible then
            return {
                canChat = v2.canChat,
                visible = false,
                lastReadMessages = 0,
                unreadMessages = v3.messages
            };
        else
            return {
                canChat = v2.canChat,
                visible = true,
                lastReadMessages = 0,
                unreadMessages = 0
            };
        end;
    end,
    [require(l_Actions_0.UpdateChatMessages).name] = function(v4, v5)
        if not v4.visible then
            return {
                canChat = v4.canChat,
                visible = false,
                lastReadMessages = v4.lastReadMessages,
                unreadMessages = v5.messages - v4.lastReadMessages
            };
        else
            return {
                canChat = v4.canChat,
                visible = true,
                lastReadMessages = v5.messages,
                unreadMessages = 0
            };
        end;
    end,
    [require(l_Actions_0.UpdateChatVisible).name] = function(v6, v7)
        if not v7.visible then
            return {
                canChat = v6.canChat,
                visible = false,
                lastReadMessages = v6.lastReadMessages,
                unreadMessages = v6.unreadMessages
            };
        else
            return {
                canChat = v6.canChat,
                visible = true,
                lastReadMessages = v6.lastReadMessages + v6.unreadMessages,
                unreadMessages = 0
            };
        end;
    end,
    [require(l_Actions_0.SetCanChat).name] = function(v8, v9)
        return {
            canChat = v9.canChat,
            visible = v8.visible,
            lastReadMessages = v8.lastReadMessages,
            unreadMessages = v8.unreadMessages
        };
    end
}));


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Rodux);
local v2 = require(l_CorePackages_0.Cryo);
return (v1.createReducer({
    [Enum.CoreGuiType.PlayerList] = true,
    [Enum.CoreGuiType.Health] = true,
    [Enum.CoreGuiType.Backpack] = true,
    [Enum.CoreGuiType.Chat] = true,
    [Enum.CoreGuiType.EmotesMenu] = true
}, {
    [require(script.Parent.Parent.Actions.UpdateCoreGuiEnabled).name] = function(v3, v4)
        if v4.coreGuiType == Enum.CoreGuiType.All then
            local v5 = {};
            for v6, _ in pairs(v3) do
                v5[v6] = v4.enabled;
            end;
            return v5;
        else
            return v2.Dictionary.join(v3, {
                [v4.coreGuiType] = v4.enabled
            });
        end;
    end
}));


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Rodux);
local v2 = require(l_CorePackages_0.Cryo);
local l_Parent_0 = script.Parent.Parent;
local l_Actions_0 = l_Parent_0.Actions;
local v5 = require(l_Actions_0.SetMenuOpen);
local v6 = require(l_Actions_0.SetTopBarEnabled);
local v7 = require(l_Actions_0.SetSmallTouchDevice);
local v8 = require(l_Actions_0.SetScreenSize);
local v9 = require(l_Actions_0.SetKeepOutArea);
local v10 = require(l_Actions_0.RemoveKeepOutArea);
local v11 = require(l_Actions_0.SetInputType);
local v12 = require(l_Actions_0.SetInspectMenuOpen);
local v13 = require(l_Actions_0.SetGamepadMenuOpen);
local l_InputType_0 = require(l_Parent_0.Constants).InputType;
local _ = game:GetService("CoreGui"):WaitForChild("RobloxGui");
return (v1.createReducer({
    menuOpen = false,
    inspectMenuOpen = false,
    topbarEnabled = true,
    isSmallTouchDevice = false,
    screenSize = Vector2.new(0, 0),
    inputType = l_InputType_0.MouseAndKeyBoard,
    isGamepadMenuOpen = false,
    keepOutAreas = {}
}, {
    [v5.name] = function(v16, v17)
        local l_isGamepadMenuOpen_0 = v16.isGamepadMenuOpen;
        if not (v16.menuOpen or not v17.menuOpen) then
            l_isGamepadMenuOpen_0 = false;
        end;
        return v2.Dictionary.join(v16, {
            menuOpen = v17.menuOpen,
            isGamepadMenuOpen = l_isGamepadMenuOpen_0
        });
    end,
    [v6.name] = function(v19, v20)
        return v2.Dictionary.join(v19, {
            topbarEnabled = v20.enabled
        });
    end,
    [v7.name] = function(v21, v22)
        return v2.Dictionary.join(v21, {
            isSmallTouchDevice = v22.isSmallTouchDevice
        });
    end,
    [v8.name] = function(v23, v24)
        return v2.Dictionary.join(v23, {
            screenSize = v24.screenSize
        });
    end,
    [v11.name] = function(v25, v26)
        return v2.Dictionary.join(v25, {
            inputType = v26.inputType
        });
    end,
    [v12.name] = function(v27, v28)
        return v2.Dictionary.join(v27, {
            inspectMenuOpen = v28.inspectMenuOpen
        });
    end,
    [v13.name] = function(v29, v30)
        return v2.Dictionary.join(v29, {
            isGamepadMenuOpen = v30.open
        });
    end,
    [v9.name] = function(v31, v32)
        local v33 = table.clone(v31.keepOutAreas);
        v33[v32.id] = {
            size = v32.size,
            position = v32.position
        };
        return v2.Dictionary.join(v31, {
            keepOutAreas = v33
        });
    end,
    [v10.name] = function(v34, v35)
        local v36 = table.clone(v34.keepOutAreas);
        v36[v35.id] = nil;
        return v2.Dictionary.join(v34, {
            keepOutAreas = v36
        });
    end
}));


return require(game:GetService("CorePackages").Rodux).createReducer({
    name = require(game:GetService("CoreGui"):WaitForChild("RobloxGui").Modules.RobloxTranslator):FormatByKey("CoreScripts.TopBar.GameNamePlaceHolder")
}, {
    [require(script.Parent.Parent.Actions.SetGameName).name] = function(_, v1)
        return {
            name = v1.gameName
        };
    end
});


local v0 = require(game:GetService("CorePackages").Rodux);
local l_Actions_0 = script.Parent.Parent.Actions;
return (v0.createReducer({
    isDead = false,
    currentHealth = 100,
    maxHealth = 100
}, {
    [require(l_Actions_0.UpdateHealth).name] = function(v2, v3)
        return {
            isDead = v2.isDead,
            currentHealth = v3.health,
            maxHealth = v3.maxHealth
        };
    end,
    [require(l_Actions_0.SetIsDead).name] = function(v4, v5)
        return {
            isDead = v5.isDead,
            currentHealth = v4.currentHealth,
            maxHealth = v4.maxHealth
        };
    end
}));


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Rodux);
local v2 = require(l_CorePackages_0.Cryo);
local l_Actions_0 = script.Parent.Parent.Actions;
return (v1.createReducer({
    open = false,
    backpackOpen = false,
    leaderboardOpen = false,
    emotesOpen = false,
    emotesEnabled = true
}, {
    [require(l_Actions_0.SetMoreMenuOpen).name] = function(v4, v5)
        return v2.Dictionary.join(v4, {
            open = v5.open
        });
    end,
    [require(l_Actions_0.SetBackpackOpen).name] = function(v6, v7)
        return v2.Dictionary.join(v6, {
            open = false,
            backpackOpen = v7.open
        });
    end,
    [require(l_Actions_0.SetEmotesOpen).name] = function(v8, v9)
        return v2.Dictionary.join(v8, {
            open = false,
            emotesOpen = v9.open
        });
    end,
    [require(l_Actions_0.SetEmotesEnabled).name] = function(v10, v11)
        return v2.Dictionary.join(v10, {
            emotesEnabled = v11.enabled
        });
    end,
    [require(l_Actions_0.SetLeaderboardOpen).name] = function(v12, v13)
        return v2.Dictionary.join(v12, {
            open = false,
            leaderboardOpen = v13.open
        });
    end
}));


local l_Chat_0 = game:GetService("Chat");
local l_RunService_0 = game:GetService("RunService");
local l_Players_0 = game:GetService("Players");
local l_CoreGui_0 = game:GetService("CoreGui");
local v4 = require(script.Parent.Parent.Actions.SetCanChat);
local v5 = require(l_CoreGui_0:WaitForChild("RobloxGui").Modules.ChatSelector);
local l_LocalPlayer_0 = l_Players_0.LocalPlayer;
while not l_LocalPlayer_0 do
    l_Players_0:GetPropertyChangedSignal("LocalPlayer"):Wait();
    l_LocalPlayer_0 = l_Players_0.LocalPlayer;
end;
return function(v7)
    coroutine.wrap(function()
        local v8 = true;
        if not l_RunService_0:IsStudio() then
            local l_status_0, l_result_0 = pcall(function()
                return l_Chat_0:CanUserChatAsync(l_LocalPlayer_0.UserId);
            end);
            v8 = l_status_0 and l_result_0;
        end;
        v7:dispatch(v4(v8));
        if not v8 then
            v5:SetVisible(false);
        end;
    end)();
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_HttpRbxApiService_0 = game:GetService("HttpRbxApiService");
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local v4 = require(l_CorePackages_0.Promise);
local v5 = require(l_RobloxGui_0.Modules.Common.httpRequest)(l_HttpRbxApiService_0);
local v6 = require(script.Parent.Parent.Actions.SetGameName);
local l_GetGameNameAndDescription_0 = require(l_CorePackages_0.Workspace.Packages.GameDetailRodux).GetGameNameAndDescription;
return function(v8)
    if game.GameId == 0 then
        return v4.resolve();
    else
        return l_GetGameNameAndDescription_0(v5, game.GameId):andThen(function(v9)
            v8:dispatch(v6(v9.Name));
            return v9.Name;
        end, function()
            warn("Unable to get game name for Gamepad Menu");
            return v4.reject();
        end);
    end;
end;


local _ = require(game:GetService("CorePackages").Workspace.Packages.Style);
return function(_, v2)
    return {
        Color = {
            backgroundUiColor = v2.Semantic.Color.BackgroundUi.Default,
            separatorColor = v2.Semantic.Color.Common.Divider,
            textColor = v2.Semantic.Color.Text.Emphasis
        },
        Size = {
            displayWidth = 1920,
            promptWidth = 1080,
            imageWidth = 566,
            imageHeight = 324,
            buttonHeight = v2.Global.Size_600,
            iconSize = v2.Global.Size_200
        },
        Space = {
            titlePadding = v2.Global.Space_150,
            bodyPadding = v2.Global.Space_300,
            iconPadding = v2.Global.Space_50
        },
        Radius = {
            cornerRadius = v2.Semantic.Radius.Medium
        },
        Typography = {
            label = v2.Semantic.Typography.Subheader,
            header = v2.Semantic.Typography.Header,
            caption = v2.Semantic.Typography.Body
        }
    };
end;


local v0 = require(game:GetService("CorePackages").PolicyProvider);
local v1 = v0.withGetPolicyImplementation((v0.GetPolicyImplementations.MemStorageService("app-policy")));
local v2 = require(script.Parent.Parent.Flags.GetFFlagAddOver12TopBarBadge);
v1.Mapper = function(v3)
    return {
        getDisplayVoiceBetaBadge = function()
            return v3.DisplayVoiceBetaBadge or false;
        end,
        showBadgeOver12 = function()
            return not not v2() and (v3.ShowBadgeOver12 or false);
        end
    };
end;
return v1;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_GuiService_0 = game:GetService("GuiService");
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local l_IXPService_0 = game:GetService("IXPService");
local l_LocalizationService_0 = game:GetService("LocalizationService");
local l_Localization_0 = require(l_CorePackages_0.Workspace.Packages.InExperienceLocales).Localization;
local l_LocalizationProvider_0 = require(l_CorePackages_0.Workspace.Packages.Localization).LocalizationProvider;
local l_DesignTokenProvider_0 = require(l_CorePackages_0.Workspace.Packages.Style).DesignTokenProvider;
local v9 = require(l_CorePackages_0.Roact);
local v10 = require(l_CorePackages_0.Rodux);
local v11 = require(l_CorePackages_0.RoactRodux);
local l_Constants_0 = require(l_CorePackages_0.UIBlox).App.Style.Constants;
local l_UiModeStyleProvider_0 = require(l_CorePackages_0.Workspace.Packages.Style).UiModeStyleProvider;
local v14 = require(l_RobloxGui_0.Modules.Settings.Utility);
local v15 = require(l_RobloxGui_0.Modules.TenFootInterface);
local v16 = require(l_RobloxGui_0.Modules.isNewInGameMenuEnabled);
local v17 = require(l_RobloxGui_0.Modules.Chrome.Enabled)();
local v18 = require(script.Constants);
local v19 = require(script.TokenMappers.MenuNavigationPromptTokenMapper);
if not (not v17 or v15:IsEnabled()) then
    local l_l_GuiService_0_GuiInset_0, v21 = l_GuiService_0:GetGuiInset();
    l_GuiService_0:SetGlobalGuiInset(l_l_GuiService_0_GuiInset_0.X, v18.TopBarHeight, v21.X, v21.Y);
end;
local v22 = require(script.Components.TopBarApp);
local v23 = require(script.Reducer);
local v24 = require(script.TopBarAppPolicy);
local v25 = require(script.Actions.SetSmallTouchDevice);
local v26 = require(script.Actions.SetInspectMenuOpen);
local v27 = require(script.Actions.SetGamepadMenuOpen);
local v28 = require(script.Actions.UpdateUnreadMessagesBadge);
local v29 = require(script.Thunks.GetCanChat);
local v30 = require(script.Thunks.GetGameName);
local v31 = require(script.registerSetCores);
local v32 = require(script.GlobalConfig);
local v33 = require(l_CorePackages_0.Packages.RoactAppExperiment);
local v34 = require(l_RobloxGui_0.Modules.Flags.GetFFlagEnableTeleportBackButton);
local v35 = require(script.Flags.FFlagAddMenuNavigationToggleDialog);
local v36 = require(script.Flags.FFlagEnableGamepadMenuSelector);
local l_FTUX_0 = l_RobloxGui_0.Modules.FTUX;
local v38 = require(l_FTUX_0.Flags.GetFFlagEnableVRFTUXExperience);
local v39 = require(l_FTUX_0.Flags.GetFFlagDebugEnableVRFTUXExperienceInStudio);
local v40 = require(l_FTUX_0.Enums.PlatformEnum);
local v41 = require(l_FTUX_0.Utility.IsFTUXExperience);
local v42 = require(script.Parent.FTUX);
local l_isRunningInStudio_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).isRunningInStudio;
local v44 = {};
v44.__index = v44;
v44.new = function()
    local v45 = setmetatable({}, v44);
    if v32.propValidation then
        v9.setGlobalConfig({
            propValidation = true
        });
    end;
    if v32.elementTracing then
        v9.setGlobalConfig({
            elementTracing = true
        });
    end;
    if not (v15:IsEnabled() or v17) then
        l_GuiService_0:SetGlobalGuiInset(0, v18.TopBarHeight, 0, 0);
    end;
    v45.store = v10.Store.new(v23, nil, {
        v10.thunkMiddleware
    });
    v31(v45.store);
    v45.store:dispatch(v29);
    v45.store:dispatch(v30);
    if not (not v39() or not l_isRunningInStudio_0()) then
        v42.mountFtuxMenu(v40.QuestVR);
    end;
    if not (not v38() or not v41(v40.QuestVR)) then
        v42.mountFtuxMenu(v40.QuestVR);
    end;
    if v16() then
        require(l_RobloxGui_0.Modules.InGameMenuInit).mountInGameMenu();
    end;
    coroutine.wrap(function()
        v45.store:dispatch(v25(v14:IsSmallTouchScreen()));
    end)();
    local v46 = {
        themeName = l_Constants_0.ThemeName.Dark,
        fontName = l_Constants_0.FontName.Gotham
    };
    local function v48(v47)
        return {
            UiModeStyleProvider = v9.createElement(l_UiModeStyleProvider_0, {
                style = v46
            }, v47)
        };
    end;
    local v49 = v9.createElement(v22);
    if v35 then
        v49 = v9.createElement(l_DesignTokenProvider_0, {
            tokenMappers = {
                MenuNavigationPrompt = if not v36 then nil else v19
            }
        }, {
            TopBarApp = v49
        });
    end;
    v45.root = v9.createElement(v11.StoreProvider, {
        store = v45.store
    }, {
        PolicyProvider = v9.createElement(v24.Provider, {
            policy = {
                v24.Mapper
            }
        }, (v48({
            LocalizationProvider = v9.createElement(l_LocalizationProvider_0, {
                localization = l_Localization_0.new(l_LocalizationService_0.RobloxLocaleId)
            }, {
                ExperimentProvider = v9.createFragment({
                    RoactAppExperimentProvider = not not v34() and v9.createElement(v33.Provider, {
                        value = l_IXPService_0
                    }, {
                        TopBarApp = v49
                    }) or nil,
                    TopBarApp = not v34() and v49 or nil
                })
            })
        })))
    });
    v45.element = v9.mount(v45.root, l_CoreGui_0, "TopBar");
    game:GetService("TextChatService").MessageReceived:Connect(function()
        v45.store:dispatch(v28(1));
    end);
    return v45;
end;
v44.setInspectMenuOpen = function(v50, v51)
    v50.store:dispatch(v26(v51));
end;
v44.setGamepadMenuOpen = function(v52, v53)
    v52.store:dispatch(v27(v53));
end;
return v44.new();


local l_StarterGui_0 = game:GetService("StarterGui");
local v1 = require(script.Parent.Actions.SetTopBarEnabled);
return function(v2)
    l_StarterGui_0:RegisterSetCore("TopbarEnabled", function(v3)
        if type(v3) == "boolean" then
            v2:dispatch(v1(v3));
            return ;
        else
            error("SetCore TopbarEnabled argument must be a boolean", 2);
            return ;
        end;
    end);
    l_StarterGui_0:RegisterGetCore("TopbarEnabled", function()
        return v2:getState().displayOptions.topbarEnabled;
    end);
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_RobloxGui_0.Modules.Tracker.TrackerPrompt);
local v5 = {};
v5.__index = v5;
v5.showPrompt = function(v6, v7)
    if not v6.trackerPrompt then
        v6.trackerPrompt = v3.mount(v3.createElement(v4, {
            promptType = v7
        }), l_CoreGui_0, "RobloxTrackerPromptGui");
        return ;
    else
        v3.update(v6.trackerPrompt, v3.createElement(v4, {
            promptType = v7
        }));
        return ;
    end;
end;
v5.new = function()
    local v8 = {
        trackerPrompt = nil
    };
    setmetatable(v8, v5);
    return v8;
end;
return v5.new();


return {
    None = "None",
    VideoNoPermission = "VideoNoPermission",
    NotAvailable = "NotAvailable",
    FeatureDisabled = "FeatureDisabled",
    LODCameraRecommendDisable = "LODCameraRecommendDisable",
    NoDynamicHeadEquipped = "NoDynamicHeadEquipped",
    VideoUnsupported = "VideoUnsupported",
    UnsupportedDevice = "UnsupportedDevice",
    CameraUnavailable = "CameraUnavailable"
};


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


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


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


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


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


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


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


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


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


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


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


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


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local v2 = require(l_CorePackages_0.UIBlox);
local v3 = require(l_CorePackages_0.Packages.t);
local v4 = require(script.Parent.Parent.Dependencies);
local v5 = require(v4.Divider);
local v6 = require(v4.ThemedTextLabel);
local l_withStyle_0 = v2.Style.withStyle;
local l_ImageSetLabel_0 = v2.Core.ImageSet.ImageSetLabel;
local l_Checkbox_0 = v2.App.InputButton.Checkbox;
local v10 = v1.PureComponent:extend("BlockPlayerItem");
v10.validateProps = v3.strictInterface({
    layoutOrder = v3.optional(v3.number),
    size = v3.UDim2,
    text = v3.string,
    description = v3.string,
    icon = v3.union(v3.string, v3.table),
    iconSize = v3.UDim2,
    isDisabled = v3.optional(v3.boolean),
    isCheckBoxSelected = v3.boolean,
    onCheckBoxActivated = v3.callback
});
v10.defaultProps = {
    isDisabled = false,
    isCheckBoxSelected = false
};
v10.init = function(v11)
    v11.onClicked = function()
        if not (not v11.props.onCheckBoxActivated or v11.props.isDisabled) then
            v11.props.onCheckBoxActivated(not v11.props.isCheckBoxSelected);
        end;
    end;
end;
v10.render = function(v12)
    local l_props_0 = v12.props;
    return l_withStyle_0(function(v14)
        local _ = v14.Theme;
        return v1.createElement("TextButton", {
            BackgroundTransparency = 1,
            LayoutOrder = l_props_0.layoutOrder,
            Size = l_props_0.size,
            AutoButtonColor = false,
            BorderSizePixel = 0,
            Text = "",
            [v1.Event.Activated] = v12.onClicked
        }, {
            BlockIcon = v1.createElement(l_ImageSetLabel_0, {
                AnchorPoint = Vector2.new(0, 0.5),
                BackgroundTransparency = 1,
                Image = l_props_0.icon,
                ImageTransparency = if not l_props_0.isDisabled then nil else 0.5,
                Position = UDim2.new(0, 16, 0.5, 0),
                Size = l_props_0.iconSize
            }),
            CheckBoxFrame = v1.createElement("Frame", {
                AnchorPoint = Vector2.new(1, 0.5),
                BackgroundTransparency = 1,
                Position = UDim2.new(1, -20, 0.5, 0),
                Size = UDim2.fromOffset(24, 24)
            }, {
                CheckBox = v1.createElement(l_Checkbox_0, {
                    size = UDim2.new(1, 0, 1, 0),
                    text = "",
                    isDisabled = l_props_0.isDisabled,
                    onActivated = l_props_0.onCheckBoxActivated,
                    isSelected = l_props_0.isCheckBoxSelected
                })
            }),
            TextFrame = v1.createElement("Frame", {
                AnchorPoint = Vector2.new(0, 0.5),
                BackgroundTransparency = 1,
                Position = UDim2.new(0, 60, 0.5, 0),
                Size = UDim2.new(1, -124, 1, 0)
            }, {
                Layout = v1.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Vertical,
                    HorizontalAlignment = Enum.HorizontalAlignment.Left,
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    Padding = UDim.new(0, 4)
                }),
                Text = v1.createElement(v6, {
                    LayoutOrder = 1,
                    TextTransparency = if not l_props_0.isDisabled then nil else 0.5,
                    AutomaticSize = Enum.AutomaticSize.XY,
                    fontKey = "SubHeader1",
                    themeKey = "TextEmphasis",
                    Text = l_props_0.text,
                    TextTruncate = Enum.TextTruncate.AtEnd,
                    TextXAlignment = Enum.TextXAlignment.Left
                }),
                Description = v1.createElement(v6, {
                    LayoutOrder = 2,
                    TextTransparency = if not l_props_0.isDisabled then nil else 0.5,
                    AutomaticSize = Enum.AutomaticSize.XY,
                    fontKey = "Footer",
                    TextWrapped = true,
                    themeKey = "TextDefault",
                    Text = l_props_0.description,
                    TextXAlignment = Enum.TextXAlignment.Left,
                    LineHeight = 1.25
                })
            }),
            Divider = v1.createElement(v5, {
                Position = UDim2.new(0, 0, 1, 0)
            })
        });
    end);
end;
return v10;


local l_CorePackages_0 = game:GetService("CorePackages");
local _ = require(l_CorePackages_0.Logging);
local v2 = require(l_CorePackages_0.Packages.React);
local _ = require(l_CorePackages_0.RoactRodux);
local _ = require(l_CorePackages_0.Packages.t);
local _ = require(l_CorePackages_0.UIBlox).App.Button.TextButton;
local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.Actions.EndReportFlow);
local _ = require(l_Parent_0.Resources.Constants);
local v9 = require(l_Parent_0.Flags.GetFFlagReportAnythingDebugCanvas);
local v10 = v2.PureComponent:extend("DebugCanvas");
v10.render = function(v11)
    if v9() and v11.props.identifiedAvatars then
        local v12 = {};
        for _, v14 in pairs(v11.props.identifiedAvatars) do
            local l_boundingBox_0 = v14.boundingBox;
            v12[#v12 + 1] = v2.createElement("Frame", {
                Position = UDim2.fromScale(l_boundingBox_0.min.X, l_boundingBox_0.min.Y),
                Size = UDim2.fromScale(l_boundingBox_0.max.X - l_boundingBox_0.min.X, l_boundingBox_0.max.Y - l_boundingBox_0.min.Y),
                BackgroundTransparency = 0.8,
                BackgroundColor3 = Color3.fromRGB(20, 0, 255 * v14.hitRate)
            });
            local v16 = #v14.convexHull;
            for v17, v18 in v14.convexHull, nil, nil do
                v12[#v12 + 1] = v2.createElement("Frame", {
                    Position = UDim2.new(v18.X, -2, v18.Y, -2),
                    Size = UDim2.fromOffset(4, 4),
                    BackgroundTransparency = 0.2,
                    BackgroundColor3 = Color3.fromHSV(v17 / v16, 1, 0.65)
                });
            end;
        end;
        for _, v20 in pairs(v11.props.identifiedAds) do
            local l_boundingBox_1 = v20.boundingBox;
            v12[#v12 + 1] = v2.createElement("Frame", {
                Position = UDim2.fromScale(l_boundingBox_1.min.X, l_boundingBox_1.min.Y),
                Size = UDim2.fromScale(l_boundingBox_1.max.X - l_boundingBox_1.min.X, l_boundingBox_1.max.Y - l_boundingBox_1.min.Y),
                BackgroundTransparency = 0.8,
                BackgroundColor3 = Color3.fromRGB(20, 0, 255)
            });
            for _, v23 in v20.visibleRegions, nil, nil do
                local v24 = #v23.convexHull;
                for v25, v26 in v23.convexHull, nil, nil do
                    v12[#v12 + 1] = v2.createElement("Frame", {
                        Position = UDim2.new(v26.X, -2, v26.Y, -2),
                        Size = UDim2.fromOffset(4, 4),
                        BackgroundTransparency = 0.2,
                        BackgroundColor3 = Color3.fromHSV(v25 / v24, 1, 0.65)
                    });
                end;
            end;
        end;
        return v2.createElement("Frame", {
            BackgroundTransparency = 0.9,
            Size = UDim2.fromScale(1, 1),
            ZIndex = v11.props.ZIndex
        }, v12);
    else
        return v2.createElement("Frame", {
            Size = UDim2.fromScale(0, 0)
        });
    end;
end;
return v10;