local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_GuiService_0 = game:GetService("GuiService");
local l_RobloxGui_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_Players_0 = game:GetService("Players");
local l_game_EngineFeature_0 = game:GetEngineFeature("RbxAnalyticsServiceExposePlaySessionId");
local l_PlayerGui_0 = l_Players_0.LocalPlayer:FindFirstChildOfClass("PlayerGui");
local v8 = require(l_CorePackages_0.Cryo);
local v9 = require(l_RobloxGui_0.Modules.Common.PerfUtils);
local l_Parent_0 = script.Parent.Parent;
local v11 = require(l_Parent_0.Service);
local v12 = require(l_Parent_0.Unibar.Constants);
local _ = require(l_Parent_0.Service.Types);
local v14 = require(l_Parent_0.Flags.GetFFlagEnableChromePinAnalytics)();
local v15 = require(l_Parent_0.Flags.GetFFlagEnableChromeAnalytics)();
local l_GetFFlagEnableScreenshotUtility_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagEnableScreenshotUtility;
local v17 = require(script.Parent.Tracker);
local v18 = {
    INACTIVE = 0,
    ACTIVE = 1
};
local v19 = {
    NONE = 0,
    STARTED = 1,
    DRAGGED = 2
};
local v20 = {};
v20.__index = v20;
local function v22()
    local v21 = "Unknown";
    if l_PlayerGui_0 then
        v21 = v12.ANALYTICS.SCREEN_ORIENTATION_MAP[l_PlayerGui_0.CurrentScreenOrientation] or tostring(l_PlayerGui_0.CurrentScreenOrientation);
    end;
    return {
        screen_orientation = v21,
        last_input_device = v12.ANALYTICS.INPUT_TYPE_MAP[l_UserInputService_0:GetLastInputType()] or tostring(l_UserInputService_0:GetLastInputType()),
        fps = v9.getFps()
    };
end;
local function v26()
    local v23 = {};
    for _, v25 in (v11:menuList():get()), nil, nil do
        if not (not v25.integration or v25.isDivider) then
            table.insert(v23, v25.integration.id);
        end;
    end;
    return table.concat(v23, ",");
end;
local function _(v27, v28)
    return v27 .. v28;
end;
local function _(v30)
    return v11:integrations()[v30];
end;
local function _(v32)
    if not v11:withinCurrentSubmenu(v32) then
        if not v11:withinCurrentTopLevelMenu(v32) then
            return "unknown";
        else
            return "unibar";
        end;
    else
        return v11:currentSubMenu():get();
    end;
end;
v20.new = function()
    local v34 = setmetatable({
        _target = "client",
        _context = "chrome",
        _defaultProps = {
            screen_width = 0,
            screen_height = 0,
            universeid = tostring(game.GameId),
            placeid = tostring(game.PlaceId),
            sessionid = l_RbxAnalyticsService_0:GetSessionId(),
            is_game_menu_opened = false
        },
        _tracker = v17.new()
    }, v20);
    if l_game_EngineFeature_0 then
        v34._defaultProps.playsessionid = l_RbxAnalyticsService_0:GetPlaySessionId();
    end;
    if v15 then
        v34._observeIntegration = function(v35)
            local v36 = v11:integrations()[v35];
            if not (not v36 or not v36.windowSize) then
                v34._tracker:set("window_size_" .. v35, v36.windowSize:get());
                v36.windowSize:connect(function(v37)
                    if typeof(v37) ~= "UDim2" then
                        return ;
                    else
                        local v38 = v36.windowSize:get();
                        local v39 = v34._tracker:get("window_status_" .. v35);
                        local v40 = "window_size_" .. v35;
                        if v39 == v18.ACTIVE then
                            if v34._tracker:get(v40) then
                                v34:onWindowResize(v35, v38);
                            end;
                            v34._tracker:set(v40, v38);
                        end;
                        return ;
                    end;
                end);
            end;
        end;
        v34._resetWindowTrackers = function(v41)
            v34._tracker:reset("window_dposition_" .. v41);
            v34._tracker:reset("window_position_" .. v41);
            v34._tracker:reset("window_size_" .. v41);
            v34._tracker:reset("window_drag_" .. v41);
            v34._tracker:reset("window_status_" .. v41);
        end;
        v34._defaultWindowTrackers = function(v42)
            v34._resetWindowTrackers(v42);
            v34._tracker:startTime("window_time_" .. v42);
            v34._tracker:set("window_status_" .. v42, v18.ACTIVE);
        end;
        v34._sendEvent = function(v43, v44)
            l_RbxAnalyticsService_0:SendEventDeferred(v34._target, v34._context, v43, (v8.Dictionary.join(v22(), v34._defaultProps, v44 or {})));
        end;
        v34._calculateWindowAbsolutePosition = function(v45, v46)
            return Vector2.new((v45.X.Scale * v34._defaultProps.screen_width + v45.X.Offset) - v46.Width.Offset / 2, (v45.Y.Scale * v34._defaultProps.screen_height + v45.Y.Offset) - v46.Height.Offset / 2);
        end;
        v34._setWindowLastPosition = function(v47, v48)
            v34._tracker:set("window_position_" .. v47, v48);
        end;
        v11:status():connect(function(v49)
            v34:onUnibarToggle(v49);
        end);
        l_GuiService_0.MenuOpened:Connect(function()
            v34._defaultProps.is_game_menu_opened = not v34._defaultProps.is_game_menu_opened;
        end);
        for _, v51 in v11:integrations() do
            v34._observeIntegration(v51.id);
        end;
        v11:onIntegrationRegistered():connect(function(v52)
            v34._observeIntegration(v52);
        end);
        v11:onIntegrationActivated():connect(function(v53)
            v34:onIconActivated(v53);
        end);
        v11:onIntegrationStatusChanged():connect(function(v54, v55)
            local v56 = v11:integrations()[v54];
            if not (not v56 or not v56.components.Window) then
                if v55 == v11.IntegrationStatus.Window then
                    v34:onWindowOpened(v54);
                    return ;
                else
                    v34:onWindowClosed(v54);
                end;
            end;
        end);
        return v34;
    else
        return v34;
    end;
end;
v20.setPin = function(v57, v58, v59, v60)
    if v14 then
        v57._sendEvent(if not v59 then v12.ANALYTICS.PIN_REMOVED else v12.ANALYTICS.PIN_ADDED, {
            integration_id = v58,
            source = if not v11:withinCurrentSubmenu(v58) then v11:withinCurrentTopLevelMenu(v58) and "unibar" or "unknown" else v11:currentSubMenu():get(),
            user_pins = table.concat(v60, ",")
        });
    end;
    return nil;
end;
v20.setScreenSize = function(v61, v62)
    v61._defaultProps.screen_width = v62.X;
    v61._defaultProps.screen_height = v62.Y;
    return nil;
end;
v20.onUnibarToggle = function(v63, v64)
    local v65 = {
        visible_integrations = v26(),
        mru_slots = #v8.Dictionary.keys(v11:mostRecentlyUsed())
    };
    if v64 == v11.MenuStatus.Open then
        v63._tracker:startTime("unibar_time");
        v63._sendEvent(v12.ANALYTICS.UNIBAR_OPENED, v65);
    elseif v64 == v11.MenuStatus.Closed then
        v65.total_open_time = v63._tracker:finishTime("unibar_time");
        v63._sendEvent(v12.ANALYTICS.UNIBAR_CLOSED, v65);
    end;
    return nil;
end;
v20.onIconActivated = function(v66, v67)
    local v68 = v11:integrations()[v67];
    if v68 then
        local v69 = v68.notification:get();
        local v70 = 0;
        if v69.type == "count" then
            v70 = tonumber(v69.value) or 0;
        end;
        v66._sendEvent(v12.ANALYTICS.ICON_ACTIVATED, {
            integration_id = v67,
            source = if not v11:withinCurrentSubmenu(v67) then v11:withinCurrentTopLevelMenu(v67) and "unibar" or "unknown" else v11:currentSubMenu():get(),
            notification_count = v70
        });
    end;
    return nil;
end;
v20.onIconTouchBegan = function(v71, v72)
    v71._tracker:set("icon_drag_" .. v72, v19.STARTED);
    return nil;
end;
v20.onIconDrag = function(v73, v74)
    local v75 = "icon_drag_" .. v74;
    if v73._tracker:get(v75) == v19.STARTED then
        v73._tracker:set(v75, v19.DRAGGED);
        v73._sendEvent(v12.ANALYTICS.ICON_DRAG_START, {
            integration_id = v74,
            source = if not v11:withinCurrentSubmenu(v74) then v11:withinCurrentTopLevelMenu(v74) and "unibar" or "unknown" else v11:currentSubMenu():get()
        });
    end;
    return nil;
end;
v20.onIconTouchEnded = function(v76, v77, v78, v79)
    local v80 = "icon_drag_" .. v77;
    local v81 = v76._tracker:get(v80);
    local v82 = v11:integrations()[v77];
    if not (not v82 or not v82.windowSize) and v81 == v19.DRAGGED then
        v76._tracker:reset(v80);
        v76._setWindowLastPosition(v77, v78);
        local v83 = v82.windowSize:get();
        v76._sendEvent(v12.ANALYTICS.ICON_DRAG_END, {
            integration_id = v77,
            source = if not v11:withinCurrentSubmenu(v77) then v11:withinCurrentTopLevelMenu(v77) and "unibar" or "unknown" else v11:currentSubMenu():get(),
            window_position_x = v78.X,
            window_position_y = v78.Y,
            window_width = v83.Width.Offset,
            window_height = v83.Height.Offset,
            will_reposition = v79
        });
    end;
    return nil;
end;
v20.onWindowOpened = function(v84, v85)
    local v86 = v11:integrations()[v85];
    local v87 = v84._tracker:get("window_status_" .. v85);
    if v86 and v87 ~= v18.ACTIVE then
        v84._defaultWindowTrackers(v85);
        if not (((not (v84._tracker:get("icon_drag_" .. v85) ~= v19.DRAGGED) or v84._tracker:get("window_dposition_" .. v85)) or not v86.windowSize) or not v86.startingWindowPosition) then
            local v88 = v86.windowSize:get();
            if v88 then
                v84:setWindowDefaultPosition(v85, (v84._calculateWindowAbsolutePosition(v86.startingWindowPosition, v88)));
            end;
        end;
        v84._sendEvent(v12.ANALYTICS.WINDOW_OPENED, {
            integration_id = v85
        });
    end;
    return nil;
end;
v20.onWindowClosed = function(v89, v90)
    if v89._tracker:get("window_status_" .. v90) == v18.ACTIVE then
        v89._sendEvent(v12.ANALYTICS.WINDOW_CLOSED, {
            integration_id = v90,
            total_open_time = v89._tracker:finishTime("window_time_" .. v90)
        });
        v89._resetWindowTrackers(v90);
    end;
    return nil;
end;
v20.onWindowTouchBegan = function(v91, v92, _)
    local v94 = v11:integrations()[v92];
    if not (not v94 or not v94.windowSize) then
        v91._tracker:set("window_drag_" .. v92, v19.STARTED);
    end;
    return nil;
end;
v20.onWindowDrag = function(v95, v96, v97)
    local v98 = "window_drag_" .. v96;
    local v99 = v95._tracker:get(v98);
    local v100 = v11:integrations()[v96];
    if not (not v100 or not v100.windowSize) and v99 == v19.STARTED then
        local v101 = v95._tracker:get("window_position_" .. v96);
        if v101 then
            local v102 = Vector2.new(v97.X - v101.X, v97.Y - v101.Y);
            if not (v102.X == 0) or v102.Y ~= 0 then
                v95._tracker:set(v98, v19.DRAGGED);
                local v103 = v100.windowSize:get();
                v95._sendEvent(v12.ANALYTICS.WINDOW_DRAG_START, {
                    integration_id = v96,
                    position_x = v101.X,
                    position_y = v101.Y,
                    width = v103.Width.Offset,
                    height = v103.Height.Offset,
                    is_starting_position = v95._tracker:get("window_dposition_" .. v96) == v101
                });
            end;
        end;
    end;
    return nil;
end;
v20.onWindowTouchEnded = function(v104, v105, v106, v107)
    local v108 = v104._tracker:get("icon_drag_" .. v105);
    local v109 = v11:integrations()[v105];
    if v108 == v19.DRAGGED then
        return v104:onIconTouchEnded(v105, v106, v107);
    else
        local v110 = "window_drag_" .. v105;
        local v111 = v104._tracker:get(v110);
        if not (not v109 or not v109.windowSize) and v111 == v19.DRAGGED then
            local v112 = v109.windowSize:get();
            v104._tracker:reset(v110);
            v104._setWindowLastPosition(v105, v106);
            v104._sendEvent(v12.ANALYTICS.WINDOW_DRAG_END, {
                integration_id = v105,
                position_x = v106.X,
                position_y = v106.Y,
                width = v112.Width.Offset,
                height = v112.Height.Offset,
                will_autoposition = v107
            });
        end;
        return nil;
    end;
end;
v20.setWindowDefaultPosition = function(v113, v114, v115)
    v113._tracker:set("window_dposition_" .. v114, v115);
    v113._setWindowLastPosition(v114, v115);
    return nil;
end;
v20.onWindowResize = function(v116, v117, v118)
    local v119 = v11:integrations()[v117];
    if not (not v119 or not v119.windowSize) then
        local v120 = "window_size_" .. v117;
        local v121 = "window_position_" .. v117;
        local v122 = v116._tracker:get(v120);
        local v123 = v116._tracker:get(v121);
        local v124 = nil;
        if v123 then
            v124 = Vector2.new(v123.X + (v122.Width.Offset - v118.Width.Offset) / 2, v123.Y + (v122.Height.Offset - v118.Height.Offset) / 2);
        end;
        if v124 then
            v116._setWindowLastPosition(v117, v124);
        end;
        v116._tracker:set(v120, v118);
        v116._sendEvent(v12.ANALYTICS.WINDOW_RESIZE, {
            integration_id = v117,
            previous_position_x = not not v123 and v123.X or nil,
            previous_position_y = not not v123 and v123.Y or nil,
            previous_width = not not v122 and v122.Width.Offset or nil,
            previous_height = not not v122 and v122.Height.Offset or nil,
            current_position_x = not not v124 and v124.X or nil,
            current_position_y = not not v124 and v124.Y or nil,
            current_width = v118.Width.Offset,
            current_height = v118.Height.Offset
        });
    end;
    return nil;
end;
v20.onCaptureTaken = function(_, v126, v127, v128)
    if l_GetFFlagEnableScreenshotUtility_0() then
        l_RbxAnalyticsService_0:SendEventDeferred(v126, v128, v127, {
            isUnder13 = if not l_Players_0.LocalPlayer then nil else l_Players_0.LocalPlayer:GetUnder13(),
            pid = tostring(game.PlaceId),
            btn = "CapturesChromeBarUtilityEntrypointActivated"
        });
    end;
    return nil;
end;
v20.default = v20.new();
return v20;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_GuiService_0 = game:GetService("GuiService");
local v2 = require(l_CorePackages_0.Packages.React);
local l_useSelector_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux.useSelector;
local l_Parent_0 = script.Parent.Parent;
local v5 = require(l_Parent_0.Unibar.Constants);
local v6 = require(l_Parent_0.Flags.GetFIntLuaUIOcclusionMetricsReportingPeriodSeconds)();
local l_game_EngineFeature_0 = game:GetEngineFeature("GuiServiceSendUIOcclusionMetricsForQueryRegion");
local function _(v8)
    return v8 + l_GuiService_0:GetGuiInset();
end;
local function _(v10)
    return UDim2.fromOffset(v10.X, v10.Y);
end;
local function _(v12)
    local v13 = v12.position + l_GuiService_0:GetGuiInset();
    local l_l_GuiService_0_0 = l_GuiService_0;
    local v15 = UDim2.fromOffset(v13.X, v13.Y);
    local l_size_0 = v12.size;
    l_l_GuiService_0_0:SendUIOcclusionMetricsForQueryRegion(v15, UDim2.fromOffset(l_size_0.X, l_size_0.Y), "currentSizeTR");
end;
return function()
    if l_game_EngineFeature_0 then
        local v18 = v2.useRef({
            id = v5.UNIBAR_KEEP_OUT_AREA_ID,
            position = Vector2.new(),
            size = Vector2.new()
        });
        local v20 = l_useSelector_0(function(v19)
            return v19.displayOptions.keepOutAreas[v5.UNIBAR_KEEP_OUT_AREA_ID];
        end);
        v2.useEffect(function()
            v18.current = v20;
        end, {
            v20
        });
        v2.useEffect(function()
            local v26 = task.spawn(function()
                while true do
                    if v18.current then
                        local l_current_0 = v18.current;
                        local v22 = l_current_0.position + l_GuiService_0:GetGuiInset();
                        local l_l_GuiService_0_1 = l_GuiService_0;
                        local v24 = UDim2.fromOffset(v22.X, v22.Y);
                        local l_size_1 = l_current_0.size;
                        l_l_GuiService_0_1:SendUIOcclusionMetricsForQueryRegion(v24, UDim2.fromOffset(l_size_1.X, l_size_1.Y), "currentSizeTR");
                    end;
                    task.wait(v6);
                end;
            end);
            return function()
                task.cancel(v26);
            end;
        end, {});
        return ;
    else
        return ;
    end;
end;


local v0 = {};
v0.__index = v0;
v0.new = function()
    return (setmetatable({
        trackers = {}
    }, v0));
end;
v0.toggle = function(v1, v2)
    v1[v2] = not v1[v2];
    return v1[v2];
end;
v0.set = function(v3, v4, v5)
    v3.trackers[v4] = v5;
end;
v0.get = function(v6, v7)
    return v6.trackers[v7];
end;
v0.reset = function(v8, v9)
    v8.trackers[v9] = nil;
end;
v0.startTime = function(v10, v11)
    v10.trackers[v11] = DateTime.now().UnixTimestampMillis;
end;
v0.finishTime = function(v12, v13)
    if not v12.trackers[v13] then
        return 0;
    else
        local v14 = DateTime.now().UnixTimestampMillis - v12.trackers[v13];
        v12.trackers[v13] = 0;
        return v14;
    end;
end;
return v0;


local l_RobloxGui_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_RobloxGui_0.Modules.Common.Hooks.useScreenSize);
local v3 = require(script.ChromeAnalytics);
local v4 = require(l_CorePackages_0.Packages.React);
local v5 = require(script.Parent.Flags.GetFFlagUnibarLuaOcclusionMetrics)();
local v6 = require(script.OcclusionMetricsManager);
return function(_)
    v3.default:setScreenSize((v2()));
    if not v5 then
        return nil;
    else
        return v4.createElement(v6);
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(script.Parent.Parent.IsExperienceMenuABTestEnabled);
local v2 = require(script.Parent.Parent.ExperienceMenuABTestManager);
local v3 = require(script.Parent.Parent.Flags.GetFFlagFixChromeAllowlistWait);
local l_GetFStringInGameMenuChromeForcedUserIds_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFStringInGameMenuChromeForcedUserIds;
local l_GetFIntInGameMenuChromeAllowlistTimeout_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFIntInGameMenuChromeAllowlistTimeout;
game:DefineFastFlag("EnableInGameMenuChrome", false);
local l_Players_0 = game:GetService("Players");
local l_VRService_0 = game:GetService("VRService");
local v8 = require(game:GetService("CoreGui"):WaitForChild("RobloxGui").Modules.TenFootInterface):IsEnabled();
return function()
    if not l_VRService_0.VREnabled then
        local l_LocalPlayer_0 = l_Players_0.LocalPlayer;
        local v10 = tick() + l_GetFIntInGameMenuChromeAllowlistTimeout_0();
        if not v3() then
            while not l_LocalPlayer_0 do
                l_Players_0:GetPropertyChangedSignal("LocalPlayer"):Wait();
                l_LocalPlayer_0 = l_Players_0.LocalPlayer;
            end;
        else
            while not l_LocalPlayer_0 and tick() < v10 do
                l_Players_0:GetPropertyChangedSignal("LocalPlayer"):Wait();
                l_LocalPlayer_0 = l_Players_0.LocalPlayer;
            end;
        end;
        for v11 in l_GetFStringInGameMenuChromeForcedUserIds_0():gmatch("%d+") do
            if l_LocalPlayer_0 and tonumber(v11) == l_LocalPlayer_0.UserId then
                return true;
            end;
        end;
        if not v1() or not v2.default:isChromeEnabled() then
            if not v8 then
                return game:GetFastFlag("EnableInGameMenuChrome");
            else
                return false;
            end;
        else
            return true;
        end;
    else
        return false;
    end;
end;


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


local l_Players_0 = game:GetService("Players");
local l_GetFStringInGameMenuChromeForcedUserIds_0 = require(game:GetService("CorePackages").Workspace.Packages.SharedFlags).GetFStringInGameMenuChromeForcedUserIds;
game:DefineFastFlag("ChromeObservableStateCheck", false);
return function()
    local l_LocalPlayer_0 = l_Players_0.LocalPlayer;
    local v3 = tick() + 5;
    while not l_LocalPlayer_0 and tick() < v3 do
        l_LocalPlayer_0 = l_Players_0.LocalPlayer;
        task.wait();
    end;
    for v4 in l_GetFStringInGameMenuChromeForcedUserIds_0():gmatch("%d+") do
        if l_LocalPlayer_0 and tonumber(v4) == l_LocalPlayer_0.UserId then
            return true;
        end;
    end;
    return game:GetFastFlag("ChromeObservableStateCheck");
end;


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


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


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


local l_Players_0 = game:GetService("Players");
local v1 = require(script.Parent.Parent.Parent.IsExperienceMenuABTestEnabled);
local v2 = require(script.Parent.Parent.Parent.ExperienceMenuABTestManager);
game:DefineFastFlag("EnableChromeDefaultOpen", false);
game:DefineFastString("EnableChromeDefaultOpenForcedUserIds", "");
return function()
    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;
    for v4 in game:GetFastString("EnableChromeDefaultOpenForcedUserIds"):gmatch("%d+") do
        if tonumber(v4) == l_LocalPlayer_0.UserId then
            return true;
        end;
    end;
    if not v1() or not v2.default:shouldDefaultOpen() then
        return game:GetFastFlag("EnableChromeDefaultOpen");
    else
        return true;
    end;
end;


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


local v0 = require(script.Parent.Parent.Parent.IsExperienceMenuABTestEnabled);
local v1 = require(script.Parent.Parent.Parent.ExperienceMenuABTestManager);
game:DefineFastFlag("EnableChromeFTUX", false);
return function()
    if not v0() or not v1.default:shouldShowFTUX() then
        return game:GetFastFlag("EnableChromeFTUX");
    else
        return true;
    end;
end;


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


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Players_0 = game:GetService("Players");
local l_GetFStringInGameMenuChromeForcedUserIds_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFStringInGameMenuChromeForcedUserIds;
local l_GetFIntInGameMenuChromeAllowlistTimeout_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFIntInGameMenuChromeAllowlistTimeout;
game:DefineFastFlag("EnableChromePinIntegrations2", false);
return function()
    local l_LocalPlayer_0 = l_Players_0.LocalPlayer;
    local v5 = tick() + l_GetFIntInGameMenuChromeAllowlistTimeout_0();
    while not l_LocalPlayer_0 and tick() < v5 do
        l_Players_0:GetPropertyChangedSignal("LocalPlayer"):Wait();
        l_LocalPlayer_0 = l_Players_0.LocalPlayer;
    end;
    for v6 in l_GetFStringInGameMenuChromeForcedUserIds_0():gmatch("%d+") do
        if l_LocalPlayer_0 and tonumber(v6) == l_LocalPlayer_0.UserId then
            return true;
        end;
    end;
    return game:GetFastFlag("EnableChromePinIntegrations2");
end;


local l_Players_0 = game:GetService("Players");
local v1 = require(script.Parent.Parent.Parent.IsExperienceMenuABTestEnabled);
local v2 = require(script.Parent.Parent.Parent.ExperienceMenuABTestManager);
game:DefineFastFlag("EnableChromePinnedChat", false);
game:DefineFastString("EnableChromePinnedChatForcedUserIds", "");
return function()
    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;
    for v4 in game:GetFastString("EnableChromePinnedChatForcedUserIds"):gmatch("%d+") do
        if tonumber(v4) == l_LocalPlayer_0.UserId then
            return true;
        end;
    end;
    if not v1() or not v2.default:shouldPinChat() then
        return game:GetFastFlag("EnableChromePinnedChat");
    else
        return true;
    end;
end;


local l_Players_0 = game:GetService("Players");
game:DefineFastFlag("EnableSaveUserPins", false);
return function()
    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 game:GetFastFlag("EnableSaveUserPins");
end;


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


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


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


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


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


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


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Players_0 = game:GetService("Players");
local l_GetFStringInGameMenuChromeForcedUserIds_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFStringInGameMenuChromeForcedUserIds;
local l_GetFIntInGameMenuChromeAllowlistTimeout_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFIntInGameMenuChromeAllowlistTimeout;
game:DefineFastFlag("NewUnibarIA", false);
return function()
    local l_LocalPlayer_0 = l_Players_0.LocalPlayer;
    local v5 = tick() + l_GetFIntInGameMenuChromeAllowlistTimeout_0();
    while not l_LocalPlayer_0 and tick() < v5 do
        l_Players_0:GetPropertyChangedSignal("LocalPlayer"):Wait();
        l_LocalPlayer_0 = l_Players_0.LocalPlayer;
    end;
    for v6 in l_GetFStringInGameMenuChromeForcedUserIds_0():gmatch("%d+") do
        if l_LocalPlayer_0 and tonumber(v6) == l_LocalPlayer_0.UserId then
            return true;
        end;
    end;
    return game:GetFastFlag("NewUnibarIA");
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Players_0 = game:GetService("Players");
local l_GetFStringInGameMenuChromeForcedUserIds_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFStringInGameMenuChromeForcedUserIds;
local l_GetFIntInGameMenuChromeAllowlistTimeout_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFIntInGameMenuChromeAllowlistTimeout;
game:DefineFastFlag("OpenControlsOnMenuOpen2", false);
return function()
    local l_LocalPlayer_0 = l_Players_0.LocalPlayer;
    local v5 = tick() + l_GetFIntInGameMenuChromeAllowlistTimeout_0();
    while not l_LocalPlayer_0 and tick() < v5 do
        l_LocalPlayer_0 = l_Players_0.LocalPlayer;
        task.wait();
    end;
    for v6 in l_GetFStringInGameMenuChromeForcedUserIds_0():gmatch("%d+") do
        if l_LocalPlayer_0 and tonumber(v6) == l_LocalPlayer_0.UserId then
            return true;
        end;
    end;
    return game:GetFastFlag("OpenControlsOnMenuOpen2");
end;


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


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


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


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


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


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


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


game:DefineFastInt("IconSelectionTimeout", 10);
return function()
    return game:GetFastInt("IconSelectionTimeout");
end;


game:DefineFastInt("LuaUIOcclusionMetricsReportingPeriodSeconds", 60);
return function()
    return game:GetFastInt("LuaUIOcclusionMetricsReportingPeriodSeconds");
end;


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


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


local v0 = require(script.Parent.Parent.Service);
local _ = require(script.Parent.Parent.Service.Types);
local v2 = require(script.Parent.useObservableValue);
return function()
    return v2(v0:menuList()) or {};
end;


local v0 = require(script.Parent.Parent.Service);
local v1 = require(script.Parent.useObservableValue);
return function()
    return v1(v0:status());
end;


local v0 = require(script.Parent.Parent.Service);
local _ = require(script.Parent.Parent.Service.Types);
local v2 = require(script.Parent.useObservableValue);
return function()
    return v2(v0:windowList()) or {};
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_StarterGui_0 = game:GetService("StarterGui");
local v2 = require(l_CorePackages_0.Packages.React);
useCoreGuiEnabled = function(v3)
    local v4, v5 = v2.useState(l_StarterGui_0:GetCoreGuiEnabled(v3));
    v2.useEffect(function()
        local v8 = l_StarterGui_0.CoreGuiChangedSignal:Connect(function(v6, v7)
            if v6 == v3 then
                v5(v7);
            end;
        end);
        v5(l_StarterGui_0:GetCoreGuiEnabled(v3));
        return function()
            v8:Disconnect();
        end;
    end, {
        v3
    });
    return v4;
end;
return useCoreGuiEnabled;


local l_Players_0 = game:GetService("Players");
local v1 = require(game:GetService("CorePackages").Packages.React);
useHealthBinding = function()
    local v2, v3 = v1.useBinding(0);
    v1.useEffect(function()
        local v4 = nil;
        local v5 = nil;
        local v6 = nil;
        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;
        local l_l_LocalPlayer_0_0 = l_LocalPlayer_0;
        local function v10()
            local v9 = 0;
            if v4 and v4.MaxHealth > 0 then
                v9 = v4.Health / v4.MaxHealth;
            end;
            v3(v9);
        end;
        local function _()
            if v6 then
                v6:Disconnect();
                v6 = nil;
            end;
            if v5 then
                v5:Disconnect();
                v5 = nil;
            end;
        end;
        local function v12()
            if v6 then
                v6:Disconnect();
                v6 = nil;
            end;
            if v5 then
                v5:Disconnect();
                v5 = nil;
            end;
            local l_Character_0 = l_l_LocalPlayer_0_0.Character;
            if l_Character_0 then
                v4 = l_Character_0:FindFirstChildOfClass("Humanoid");
                if not v4 then
                    v6 = l_Character_0.ChildAdded:Connect(function(v14)
                        if v14:isA("Humanoid") then
                            v12();
                        end;
                    end);
                else
                    v5 = v4.HealthChanged:Connect(v10);
                end;
            end;
            local v15 = 0;
            if v4 and v4.MaxHealth > 0 then
                v15 = v4.Health / v4.MaxHealth;
            end;
            v3(v15);
        end;
        local v16 = l_l_LocalPlayer_0_0.CharacterAdded:Connect(v12);
        local v17 = l_l_LocalPlayer_0_0.CharacterRemoving:Connect(v12);
        v12();
        return function()
            v16:Disconnect();
            v17:Disconnect();
            if v6 then
                v6:Disconnect();
                v6 = nil;
            end;
            if v5 then
                v5:Disconnect();
                v5 = nil;
            end;
        end;
    end, {});
    return v2;
end;
return useHealthBinding;


local v0 = require(game:GetService("CorePackages").Packages.React);
local _ = require(script.Parent.Parent.Service.ChromeUtils);
local v2 = require(script.Parent.Parent.Flags.GetFFlagChromeObservableStateCheck)();
return function(v3, v4)
    if v3 then
        local v5, v6 = v0.useState(v4(v3:get()));
        v0.useEffect(function()
            local v7 = v3:connect(function()
                v6(v4(v3:get()));
            end);
            if v2 then
                local v8 = v4(v3:get());
                if v5 ~= v8 then
                    v6(v8);
                end;
            end;
            return function()
                v7:disconnect();
            end;
        end, {
            v3
        });
        return v5;
    else
        warn("observableValue undefined");
        return nil;
    end;
end;


local v0 = require(game:GetService("CorePackages").Packages.React);
local _ = require(script.Parent.Parent.Service.ChromeUtils);
return function(v2, v3)
    if v2 then
        local v4 = nil;
        v4 = v3 or function(v5)
            return v5;
        end;
        local v6, v7 = v0.useBinding(v4(v2:get()));
        v0.useEffect(function()
            local v8 = v2:connect(function()
                v7(v4(v2:get()));
            end);
            v7(v4(v2:get()));
            return function()
                v8:disconnect();
            end;
        end, {
            v2
        });
        return v6;
    else
        warn("observableValue undefined");
        return v0.useBinding(nil);
    end;
end;


local v0 = require(game:GetService("CorePackages").Packages.React);
local _ = require(script.Parent.Parent.Service.ChromeUtils);
return function(v2)
    local v3, v4 = v0.useState(v2:get());
    v0.useEffect(function()
        local v6 = v2:connect(function(v5)
            v4(v5);
        end);
        if v3 ~= v2:get() then
            v4(v2:get());
        end;
        return function()
            v6:disconnect();
        end;
    end, {
        v2
    });
    return v3;
end;


local v0 = require(game:GetService("CorePackages").Packages.React);
local _ = require(script.Parent.Parent.Service.Types);
return function(v2)
    if not v2 or not v2.notification then
        warn("notification object not found");
        return 0;
    else
        local l_notification_0 = v2.notification;
        local v4, v5 = v0.useState(l_notification_0:get());
        v0.useEffect(function()
            local v6 = v2.notification:connect(function()
                v5(l_notification_0:get());
            end);
            return function()
                v6:disconnect();
            end;
        end, {
            v2.id
        });
        if v4 and v4.type == "count" then
            return v4.value;
        else
            return 0;
        end;
    end;
end;


local v0 = require(game:GetService("CorePackages").Packages.React);
local _ = require(script.Parent.Parent.Service.ChromeUtils);
local v2 = require(script.Parent.Parent.Flags.GetFFlagChromeObservableStateCheck)();
return function(v3)
    if v3 then
        local v4, v5 = v0.useState(v3:get());
        v0.useEffect(function()
            local v6 = v3:connect(function()
                v5(v3:get());
            end);
            if v2 and v4 ~= v3:get() then
                v5(v3:get());
            end;
            return function()
                v6:disconnect();
            end;
        end, {
            v3
        });
        return v4;
    else
        warn("observableValue undefined");
        return nil;
    end;
end;


local v0 = require(game:GetService("CorePackages").Packages.React);
return function(v1, v2, v3, v4, _)
    if not v3 then
        v3 = v2;
    end;
    local v6, v7 = v0.useState(v4 or false);
    local v8, v9 = v0.useState(false);
    local v10 = v0.useRef(v4 or 0);
    local v11 = v0.useRef(false);
    v0.useEffect(function()
        local v12 = tick();
        local v13 = nil;
        local v14 = false;
        local function _(v15, v16, v17)
            if v15 > 0 then
                v13 = task.delay(v15, function()
                    v14 = true;
                    v13 = nil;
                    v10.current = v17;
                    v9(v16);
                end);
                return ;
            else
                if v8 ~= v16 then
                    v14 = true;
                    v9(v16);
                end;
                return ;
            end;
        end;
        if not v6 then
            local v19 = v10.current - v1;
            local l_v1_0 = v1;
            if v19 > 0 then
                local l_delay_0 = task.delay;
                local l_v19_0 = v19;
                local v23 = false;
                v13 = l_delay_0(l_v19_0, function()
                    v14 = true;
                    v13 = nil;
                    v10.current = l_v1_0;
                    v9(v23);
                end);
            elseif v8 ~= false then
                v14 = true;
                v9(false);
            end;
        else
            local v24 = v2 - v10.current;
            local l_v2_0 = v2;
            if v24 > 0 then
                local l_delay_1 = task.delay;
                local l_v24_0 = v24;
                local v28 = true;
                v13 = l_delay_1(l_v24_0, function()
                    v14 = true;
                    v13 = nil;
                    v10.current = l_v2_0;
                    v9(v28);
                end);
            elseif v8 ~= true then
                v14 = true;
                v9(true);
            end;
        end;
        local l_v6_0 = v6;
        return function()
            if not v14 then
                if v13 then
                    task.cancel(v13);
                end;
                if not v11.current then
                    local v30 = tick() - v12;
                    if not l_v6_0 then
                        v30 = v30 * -1;
                    end;
                    v10.current = math.clamp(v10.current + v30, 0, v3);
                end;
            end;
            v11.current = false;
        end;
    end, {
        v6,
        v8,
        v1,
        v2,
        v3
    });
    return v8, (v0.useCallback(function(v31, v32)
        v11.current = v32;
        if v32 then
            if not v31 then
                v10.current = 0;
            else
                v10.current = v3;
            end;
        end;
        v7(v31);
    end, {
        v7
    }));
end;


local v0 = require(game:GetService("CorePackages").Packages.React);
local _ = require(script.Parent.Parent.Service.Types);
return function(v2)
    if not v2 or not v2.windowSize then
        warn("windowSize object not found");
        return UDim2.new();
    else
        local l_windowSize_0 = v2.windowSize;
        local v4, v5 = v0.useState(l_windowSize_0:get());
        v0.useEffect(function()
            local v6 = l_windowSize_0:connect(function()
                v5(l_windowSize_0:get());
            end);
            if v4 ~= l_windowSize_0:get() then
                v5(l_windowSize_0:get());
            end;
            return function()
                v6:disconnect();
            end;
        end, {
            v2.id
        });
        return v4;
    end;
end;


local v0 = require(game:GetService("CorePackages").Packages.React);
return function(v1)
    local v2, v3 = v0.useState(v1:getIsLarge());
    v0.useEffect(function()
        local v4 = v1:connect(function()
            v3(v1:getIsLarge());
        end);
        if v2 ~= v1:getIsLarge() then
            v3(v1:getIsLarge());
        end;
        return function()
            v4:disconnect();
        end;
    end, {
        v1
    });
    return v2;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(game:GetService("CoreGui"):WaitForChild("RobloxGui").Modules.Screenshots.ScreenshotsApp);
local v2 = require(script.Parent.Parent.Parent.Service);
local v3 = require(script.Parent.Parent.Parent.Analytics.ChromeAnalytics);
local v4 = require(script.Parent.Parent.CommonIcon);
local l_GetFFlagEnableScreenshotUtility_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagEnableScreenshotUtility;
local v6 = nil;
local v7 = nil;
if l_GetFFlagEnableScreenshotUtility_0() then
    v6 = v1.createShutterSound();
    v7 = nil;
end;
return not not l_GetFFlagEnableScreenshotUtility_0() and v2:register({
    initialAvailability = v2.AvailabilitySignal.Available,
    id = "screenshot",
    label = "CoreScripts.InGameMenu.Controls.Screenshot",
    hotkeyCodes = v7,
    activated = function(_)
        v3.default:onCaptureTaken("mobile", "buttonClick", "screenshots");
        if v6 then
            v6:Play();
        end;
        v1.takeCapture();
    end,
    components = {
        Icon = function(_)
            return v4("icons/controls/screenshot");
        end
    }
}) or nil;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_TextChatService_0 = game:GetService("TextChatService");
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local l_Chat_0 = game:GetService("Chat");
local l_RunService_0 = game:GetService("RunService");
local l_Players_0 = game:GetService("Players");
local v6 = require(script.Parent.Parent.Service);
local v7 = require(script.Parent.Parent.Service.ChromeUtils);
local v8 = require(script.Parent.Parent.Service.ViewportUtil);
local l_MappedSignal_0 = v7.MappedSignal;
local v10 = require(script.Parent.CommonIcon);
local l_GameSettings_0 = UserSettings().GameSettings;
local l_GuiService_0 = game:GetService("GuiService");
local v13 = require(l_RobloxGui_0.Modules.ChatSelector);
local v14 = require(script.Parent.Parent.Flags.GetFFlagEnableChromePinnedChat)();
local v15 = require(script.Parent.Parent.Flags.GetFFlagNewUnibarIA);
local v16 = 0;
local l_v13_Visibility_0 = v13:GetVisibility();
local v18 = nil;
local v20 = l_MappedSignal_0.new(v13.VisibilityStateChanged, function()
    return l_v13_Visibility_0;
end, function(v19)
    if not l_GuiService_0.MenuIsOpen then
        l_GameSettings_0.ChatVisible = v19;
    end;
    l_v13_Visibility_0 = v19;
    if not ((not v19 or not v16) or not v18.notification) then
        v16 = 0;
        v18.notification:clear();
    end;
end);
v18 = v6:register({
    id = "chat",
    label = "CoreScripts.TopBar.Chat",
    activated = function(_)
        if not l_v13_Visibility_0 then
            v7.dismissRobloxMenuAndRun(function(v22)
                if not v22 then
                    v13:ToggleVisibility();
                elseif not l_v13_Visibility_0 then
                    v13:ToggleVisibility();
                    return ;
                end;
            end);
            return ;
        else
            v13:ToggleVisibility();
            return ;
        end;
    end,
    components = {
        Icon = function(_)
            return v10("icons/menu/chat_off", "icons/menu/chat_on", v20);
        end
    }
});
v18.notification:fireCount(v16);
l_TextChatService_0.MessageReceived:Connect(function()
    if not l_v13_Visibility_0 then
        v16 = v16 + 1;
        v18.notification:fireCount(v16);
    end;
end);
local v24 = 0;
v13.MessagesChanged:connect(function(v25)
    if not l_v13_Visibility_0 then
        v16 = v16 + (v25 - v24);
        v18.notification:fireCount(v16);
    end;
    v24 = v25;
end);
local v26 = nil;
coroutine.wrap(function()
    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;
    local v28 = true;
    if not l_RunService_0:IsStudio() then
        local l_status_0, l_result_0 = pcall(function()
            return l_Chat_0:CanUserChatAsync(not not l_LocalPlayer_0 and l_LocalPlayer_0.UserId or 0);
        end);
        v28 = l_status_0 and l_result_0;
    end;
    if not (not v28 or not v18.availability) then
        v7.setCoreGuiAvailability(v18, Enum.CoreGuiType.Chat, function(v31)
            if not (not v26 or v15) then
                v26:disconnect();
                v26 = nil;
            end;
            if not v31 then
                v18.availability:unavailable();
                return ;
            elseif not v15 then
                v26 = v8.viewport:connect(function(v32)
                    if not v14 or v32.tinyPortrait then
                        v18.availability:available();
                        return ;
                    else
                        v18.availability:pinned();
                        return ;
                    end;
                end, true);
                return ;
            elseif not v14 then
                v18.availability:available();
                return ;
            else
                v18.availability:pinned();
                return ;
            end;
        end);
        local l_ChatVisible_0 = l_GameSettings_0.ChatVisible;
        if v8.isSmallTouchScreen() then
            l_ChatVisible_0 = false;
        end;
        l_v13_Visibility_0 = l_ChatVisible_0;
        v13:SetVisible(l_ChatVisible_0);
    end;
end)();
_simulateChat = function()
    while true do
        task.wait(math.random(1, 15));
        if not l_v13_Visibility_0 then
            v16 = v16 + 1;
            v18.notification:fireCount(v16);
        end;
    end;
end;
return v18;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(l_CorePackages_0.UIBlox);
local l_useStyle_0 = v2.Core.Style.useStyle;
local l_ImageSetLabel_0 = v2.Core.ImageSet.ImageSetLabel;
local l_Images_0 = v2.App.ImageSet.Images;
local v6 = require(script.Parent.Parent.Unibar.Constants);
local _ = require(script.Parent.Parent.Service.ChromeUtils);
local v8 = require(script.Parent.Parent.Hooks.useMappedSignal);
local v9 = UDim2.new(0, v6.ICON_SIZE, 0, v6.ICON_SIZE);
CommonIconComponent = function(v10)
    local v11 = not not v10.activeSignalValue and (v8(v10.activeSignalValue) or false);
    local l_icon_0 = v10.icon;
    if not (not v11 or not v10.iconOn) then
        l_icon_0 = v10.iconOn;
    end;
    if typeof(l_icon_0) == "string" and l_icon_0:sub(1, 11) ~= "rbxasset://" then
        l_icon_0 = l_Images_0[l_icon_0];
    end;
    local v13 = l_useStyle_0();
    return v1.createElement(l_ImageSetLabel_0, {
        BackgroundTransparency = 1,
        Image = l_icon_0,
        Size = v9,
        ImageColor3 = v13.Theme.IconEmphasis.Color,
        ImageTransparency = v13.Theme.IconEmphasis.Transparency
    });
end;
CommonIcon = function(v14, v15, v16)
    return v1.createElement(CommonIconComponent, {
        icon = v14,
        iconOn = v15,
        activeSignalValue = v16
    });
end;
return CommonIcon;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(l_CorePackages_0.UIBlox);
local l_useStyle_0 = v2.Core.Style.useStyle;
local l_ImageSetLabel_0 = v2.Core.ImageSet.ImageSetLabel;
local l_Images_0 = v2.App.ImageSet.Images;
local v6 = require(script.Parent.Parent.Service);
local l_GetFFlagSupportCompactUtility_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagSupportCompactUtility;
CompactUtilityBackButton = function(v8)
    local l_toggleTransition_0 = v8.toggleTransition;
    local v10 = l_useStyle_0();
    local v11 = false;
    if l_GetFFlagSupportCompactUtility_0() then
        v11 = not not v6:getCurrentUtility():get() or false;
    end;
    local l_IconEmphasis_0 = v10.Theme.IconEmphasis;
    return v1.createElement("Frame", {
        Size = UDim2.new(0, 36, 0, 36),
        BorderSizePixel = 0,
        BackgroundColor3 = v10.Theme.BackgroundOnHover.Color,
        BackgroundTransparency = l_toggleTransition_0:map(function(v13)
            return 1 - (1 - v10.Theme.BackgroundOnHover.Transparency) * v13;
        end)
    }, {
        v1.createElement("UICorner", {
            Name = "Corner",
            CornerRadius = UDim.new(1, 0)
        }),
        v1.createElement(l_ImageSetLabel_0, {
            Name = "Arrow",
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = l_toggleTransition_0:map(function(_)
                return UDim2.new(0.5, 0, 0.5, 0);
            end),
            BackgroundTransparency = 1,
            Image = l_Images_0["icons/actions/truncationCollapse_small"],
            Size = l_toggleTransition_0:map(function(v15)
                return UDim2.new(0, 16 * v15, 0, 16 * v15);
            end),
            Visible = v11,
            ImageColor3 = v10.Theme.IconEmphasis.Color,
            ImageTransparency = v10.Theme.IconEmphasis.Transparency,
            Rotation = 270
        }),
        v1.createElement("Frame", {
            Name = "X1",
            Position = l_toggleTransition_0:map(function(_)
                return UDim2.new(0.5, 0, 0.5, 0);
            end),
            AnchorPoint = Vector2.new(0.5, 0.5),
            Size = l_toggleTransition_0:map(function(v17)
                return UDim2.new(0, 16 * (1 - v17), 0, 2);
            end),
            BorderSizePixel = 0,
            BackgroundColor3 = l_IconEmphasis_0.Color,
            BackgroundTransparency = l_IconEmphasis_0.Transparency,
            Rotation = 45
        }),
        (v1.createElement("Frame", {
            Name = "X2",
            Position = l_toggleTransition_0:map(function(_)
                return UDim2.new(0.5, 0, 0.5, 0);
            end),
            AnchorPoint = Vector2.new(0.5, 0.5),
            Size = l_toggleTransition_0:map(function(v19)
                return UDim2.new(0, 16 * (1 - v19), 0, 2);
            end),
            BorderSizePixel = 0,
            BackgroundColor3 = l_IconEmphasis_0.Color,
            BackgroundTransparency = l_IconEmphasis_0.Transparency,
            Rotation = -45
        }))
    });
end;
return v6:register({
    id = "compact_utility_back",
    label = "CoreScripts.TopBar.Back",
    activated = function()
        local v20 = v6:getCurrentUtility():get();
        if v20 then
            v6:toggleCompactUtility(v20);
        end;
    end,
    components = {
        Icon = function(v21)
            return v1.createElement(CompactUtilityBackButton, v21);
        end
    },
    initialAvailability = v6.AvailabilitySignal.Pinned
});


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(script.Parent.Parent.Service);
local v3 = require(script.Parent.CommonIcon);
local v4 = require(script.Parent.Parent.Unibar.Constants);
local v5 = require(script.Parent.Parent.Service.WindowSizeSignal);
local v6 = require(l_CorePackages_0.UIBlox);
local l_Images_0 = v6.App.ImageSet.Images;
local l_IconButton_0 = v6.App.Button.IconButton;
local v9 = l_Images_0["icons/navigation/cycleUp"];
local v10 = false;
local v11 = v5.new(v4.DEFAULT_WIDTH, v4.DEFAULT_HEIGHT);
local v12 = UDim2.new(1, -95, 0, 165);
v2:updateWindowPosition("dummy_window", v12);
return (v2:register({
    initialAvailability = v2.AvailabilitySignal.Unavailable,
    id = "dummy_window",
    label = "CoreScripts.TopBar.Menu",
    draggable = true,
    cachePosition = true,
    startingWindowPosition = v12,
    windowSize = v11,
    components = {
        Icon = function(_)
            return v3("icons/menu/avatar_on");
        end,
        Window = function(_)
            return v1.createElement("Frame", {
                BackgroundTransparency = 0,
                Size = UDim2.new(1, 0, 1, 0)
            }, {
                Corner = v1.createElement("UICorner", {
                    CornerRadius = v4.CORNER_RADIUS
                }),
                SizeIcon = v1.createElement(l_IconButton_0, {
                    icon = v9,
                    iconSize = v4.CLOSE_ICON_SIZE,
                    anchorPoint = Vector2.new(0.5, 1),
                    position = UDim2.new(0.5, 0, 1, 0),
                    backgroundTransparency = 0.5,
                    onActivated = function()
                        if not v10 then
                            v11:requestSize(v4.DEFAULT_WIDTH_LARGE, v4.DEFAULT_HEIGHT_LARGE);
                            v10 = true;
                            return ;
                        else
                            v11:requestSize(v4.DEFAULT_WIDTH, v4.DEFAULT_HEIGHT);
                            v10 = false;
                            return ;
                        end;
                    end
                })
            });
        end
    }
}));


local v0 = require(game:GetService("CorePackages").Packages.React);
local v1 = require(script.Parent.Parent.Service);
local v2 = require(script.Parent.CommonIcon);
local v3 = require(script.Parent.Parent.Unibar.Constants);
return v1:register({
    initialAvailability = v1.AvailabilitySignal.Unavailable,
    id = "dummy_window_2",
    label = "CoreScripts.TopBar.Menu",
    startingWindowPosition = UDim2.new(1, -245, 0, 95),
    components = {
        Icon = function(_)
            return v2("icons/menu/home_on");
        end,
        Window = function(_)
            return v0.createElement("Frame", {
                BackgroundTransparency = 0,
                Size = UDim2.new(1, 0, 1, 0)
            }, {
                Corner = v0.createElement("UICorner", {
                    CornerRadius = v3.CORNER_RADIUS
                })
            });
        end
    }
});


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Packages.React);
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local l_Players_0 = game:GetService("Players");
local v5 = require(l_RobloxGui_0.Modules.VoiceChat.Hooks.useVoiceState);
local v6 = require(l_RobloxGui_0.Modules.InGameChat.BubbleChat.Constants);
if require(l_RobloxGui_0.Modules.Flags.GetFFlagRemoveInGameChatBubbleChatReferences)() then
    v6 = require(l_RobloxGui_0.Modules.VoiceChat.Constants);
end;
local v7 = Color3.new(0.918, 0.2, 0.137);
local v8 = UDim2.new(0, 4, 0, 4);
return function(v9)
    local v10 = v5(not not l_Players_0.LocalPlayer and l_Players_0.LocalPlayer.UserId or 0);
    local v11 = true;
    if v10 ~= v6.VOICE_STATE.INACTIVE then
        v11 = v10 == v6.VOICE_STATE.TALKING;
    end;
    return v2.createElement("Frame", {
        Name = "RedVoiceDot",
        AnchorPoint = Vector2.new(0.5, 0.5),
        Position = v9.position,
        Size = v8,
        BackgroundColor3 = v7,
        Visible = v11
    }, {
        UICorner = v2.createElement("UICorner", {
            CornerRadius = UDim.new(1, 0)
        })
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(script.Parent.Parent.Service);
local v3 = require(script.Parent.Parent.Service.ChromeUtils);
local v4 = require(script.Parent.Parent.Service.LocalStore);
local l_VideoCaptureService_0 = game:GetService("VideoCaptureService");
local l_FaceAnimatorService_0 = game:GetService("FaceAnimatorService");
local l_StarterGui_0 = game:GetService("StarterGui");
local v8 = require(script.Parent.CommonIcon);
local l_MappedSignal_0 = v3.MappedSignal;
local l_SelfieView_0 = script.Parent.Parent.Parent.SelfieView;
local v11 = require(l_SelfieView_0.Flags.GetFFlagSelfieViewEnabled);
local v12 = require(script.Parent.Parent.Flags.GetFFlagTweakedMicPinning);
local v13 = require(script.Parent.Parent.Flags.GetFFlagSelfViewFixes)();
local v14 = require(script.Parent.Parent.Flags.GetFFlagEnableChromeFTUX)();
local v15 = game:DefineFastFlag("FixSelfViewPopin", false);
local l_GetFFlagSelfViewVisibilityFix_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagSelfViewVisibilityFix;
local v17 = require(script.Parent.Parent.Flags.GetFFlagUseSelfieViewFlatIcon);
local v18 = require(l_SelfieView_0);
local v19 = require(l_SelfieView_0.Utils.FaceChatUtils);
local v20 = require(l_SelfieView_0.Utils.SizingUtils);
local l_AvailabilitySignalState_0 = require(script.Parent.Parent.Service.ChromeUtils).AvailabilitySignalState;
local v22 = require(script.Parent.Parent.Service.WindowSizeSignal);
local v23 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).Signal.new();
local v24 = require(script.Parent.Parent.Service.ViewportUtil);
local v25 = v20.getSize(v24.screenSize:get(), false);
local v26 = v22.new(v25.X, v25.Y);
local v27 = require(script.Parent.Parent.Unibar.Constants);
local v28 = UDim2.new(0, v27.ICON_SIZE, 0, v27.ICON_SIZE);
local v29 = require(game:GetService("CoreGui"):WaitForChild("RobloxGui").Modules.SelfView.Analytics).new();
local v30 = UDim2.new(1, -95, 0, 165);
local v31 = l_MappedSignal_0.new(v2:onIntegrationStatusChanged(), function()
    return v2:isWindowOpen("selfie_view");
end);
v2:updateWindowPosition("selfie_view", v30);
local v40 = v2:register({
    id = "selfie_view",
    label = "CoreScripts.TopBar.SelfViewLabel",
    windowSize = v26,
    startingWindowPosition = v30,
    initialAvailability = l_AvailabilitySignalState_0.Unavailable,
    activated = function()
        if v14 then
            v4.storeForLocalPlayer("selfie_view", true);
        end;
        v2:toggleWindow("selfie_view");
    end,
    draggable = true,
    cachePosition = true,
    components = {
        Icon = not v17() and function(_)
            if not l_GetFFlagSelfViewVisibilityFix_0() then
                return (v1.createElement(v18.Icon, {
                    activatedSignal = v23
                }, {}));
            else
                return (v1.createElement(v18.Icon, {
                    activatedSignal = v23,
                    outerContainerFrameName = "selfie_view"
                }, {}));
            end;
        end or function(_)
            return v1.createElement("Frame", {
                Size = v28,
                BackgroundTransparency = 1
            }, {
                v8("icons/controls/selfieOff", "icons/controls/selfie", v31);
                CameraStatusDot = not not v18.useCameraOn() and v1.createElement(v18.CameraStatusDot, {
                    Position = UDim2.fromScale(0.8, 0.7),
                    ZIndex = 2
                }) or nil
            }, {});
        end,
        Window = function(_)
            local v35 = v2:dragConnection("selfie_view");
            local l_createElement_0 = v1.createElement;
            local l_Window_0 = v18.Window;
            local v38 = {
                id = "selfie_view",
                windowSize = v26
            };
            local v39;
            if not v13 then
                v39 = v35 ~= nil;
            else
                v39 = false;
                if v35 ~= nil then
                    v39 = v35.connection ~= nil;
                end;
            end;
            v38.isDraggedOut = v39;
            return l_createElement_0(l_Window_0, v38, {});
        end
    }
});
v24.screenSize:connect(function(v41)
    if not v2:isWindowOpen("selfie_view") then
        local v42 = v20.getSize(v41, v26:getIsLarge());
        v26:requestSize(v42.X, v42.Y);
    end;
end, true);
local function v47()
    if l_StarterGui_0:GetCoreGuiEnabled(Enum.CoreGuiType.SelfView) then
        local v43 = v19.getPermissions();
        local v44 = v43.placeCamEnabled or v43.placeMicEnabled;
        local v45 = v43.userCamEligible or v43.userMicEligible;
        if v44 and v45 then
            local _ = nil;
            if not if not v12() then if v15 then l_FaceAnimatorService_0:IsStarted() and (l_FaceAnimatorService_0.VideoAnimationEnabled or l_FaceAnimatorService_0.AudioAnimationEnabled) else l_FaceAnimatorService_0.VideoAnimationEnabled or l_FaceAnimatorService_0.AudioAnimationEnabled else if not v15 then l_FaceAnimatorService_0.VideoAnimationEnabled else l_FaceAnimatorService_0:IsStarted() and l_FaceAnimatorService_0.VideoAnimationEnabled or v17() then
                v40.availability:available();
                return ;
            else
                v40.availability:pinned();
                return ;
            end;
        else
            v40.availability:unavailable();
            return ;
        end;
    else
        v40.availability:unavailable();
        return ;
    end;
end;
local function _()
    local v48 = v19.getPermissions();
    v29:reportExperienceSettings(true, v48.placeCamEnabled, v48.placeMicEnabled);
    v29:reportUserAccountSettings(v48.userCamEnabled, v48.userMicEnabled);
end;
if not (not v11() or not game:GetEngineFeature("VideoCaptureService")) then
    v47();
    l_VideoCaptureService_0.Started:Connect(v47);
    l_VideoCaptureService_0.Stopped:Connect(v47);
    l_VideoCaptureService_0.DevicesChanged:Connect(v47);
    l_FaceAnimatorService_0:GetPropertyChangedSignal("VideoAnimationEnabled"):Connect(v47);
    l_FaceAnimatorService_0:GetPropertyChangedSignal("AudioAnimationEnabled"):Connect(v47);
    local v50 = v19.getPermissions();
    v29:reportExperienceSettings(true, v50.placeCamEnabled, v50.placeMicEnabled);
    v29:reportUserAccountSettings(v50.userCamEnabled, v50.userMicEnabled);
end;
l_StarterGui_0.CoreGuiChangedSignal:Connect(v47);
return v40;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_RobloxGui_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local l_Players_0 = game:GetService("Players");
local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local v4 = require(l_CorePackages_0.Packages.React);
local l_default_0 = require(l_RobloxGui_0.Modules.VoiceChat.VoiceChatServiceManager).default;
local v6 = require(l_RobloxGui_0.Modules.VoiceChat.Components.VoiceIndicatorFunc);
local v7 = require(l_RobloxGui_0.Modules.Settings.Analytics.VoiceAnalytics);
local v8 = require(l_RobloxGui_0.Modules.Flags.GetFFlagEnableVoiceMuteAnalytics);
local v9 = require(script.Parent.Parent.Flags.GetFFlagEnableChromeFTUX);
local v10 = require(script.Parent.Parent.Flags.GetFFlagTweakedMicPinning);
local v11 = require(script.Parent.Parent.Service);
local v12 = require(script.Parent.RedVoiceDot);
local v13 = require(script.Parent.Parent.Unibar.Constants);
local v14 = UDim2.new(0, v13.ICON_SIZE, 0, v13.ICON_SIZE);
local v15 = require(l_RobloxGui_0.Modules.SelfView.Analytics).new();
local v16 = nil;
if v8() then
    v16 = v7.new(l_RbxAnalyticsService_0, "Chrome.Integrations.ToggleMic");
end;
local v17 = nil;
local function v19(_)
    l_default_0:ToggleMic("ChromeIntegrationsToggleMic");
    v15:setLastCtx("SelfView");
    if v16 then
        v16:onToggleMuteSelf(not l_default_0.localMuted);
    end;
end;
local function v21(_)
    l_default_0:RejoinPreviousChannel();
end;
local function v23(_)
    l_default_0:ShowVoiceChatLoadingMessage();
end;
v17 = v11:register({
    id = "toggle_mic_mute",
    label = "CoreScripts.TopBar.ToggleMic",
    activated = v19,
    components = {
        Icon = function(_)
            return v4.createElement("Frame", {
                Size = v14,
                BackgroundTransparency = 1
            }, {
                v4.createElement(v6, {
                    userId = tostring(l_Players_0.LocalPlayer.UserId),
                    hideOnError = false,
                    iconStyle = "MicLight",
                    selectable = if not v9() then nil else false,
                    size = v14,
                    showConnectingShimmer = true
                }),
                (v4.createElement(v12, {
                    position = UDim2.new(1, -7, 1, -7)
                }))
            });
        end
    }
});
local function v29(_, v26)
    if not (v26 ~= Enum.VoiceChatState.Ended) then
        v17.availability:unavailable();
    elseif not v10() then
        v17.availability:available();
    else
        v17.availability:pinned();
    end;
    local v27 = v26 == Enum.VoiceChatState.Failed;
    local v28 = true;
    if v26 ~= Enum.VoiceChatState.Joining then
        v28 = v26 == Enum.VoiceChatState.JoiningRetry;
    end;
    if not v27 then
        if not v28 then
            v17.activated = v19;
            return ;
        else
            v17.activated = v23;
            return ;
        end;
    else
        v17.activated = v21;
        return ;
    end;
end;
if game:GetEngineFeature("VoiceChatSupported") then
    l_default_0:asyncInit():andThen(function()
        local v30 = l_default_0:getService();
        if v30 then
            v30.StateChanged:Connect(v29);
            l_default_0:SetupParticipantListeners();
            if not v10() then
                v17.availability:available();
            else
                v17.availability:pinned();
                return ;
            end;
        end;
    end):catch(function()
    end);
end;
return v17;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local l_useStyle_0 = require(l_CorePackages_0.UIBlox).Core.Style.useStyle;
local v3 = require(script.Parent.Parent.Service);
local v4 = require(script.Parent.RedVoiceDot);
local v5 = require(script.Parent.Parent.Flags.GetFFlagTweakedMicPinning);
ToggleMenuButton = function(v6)
    local l_toggleTransition_0 = v6.toggleTransition;
    local v8 = l_useStyle_0();
    local l_IconEmphasis_0 = v8.Theme.IconEmphasis;
    return v1.createElement("Frame", {
        Size = UDim2.new(0, 36, 0, 36),
        BorderSizePixel = 0,
        BackgroundColor3 = v8.Theme.BackgroundMuted.Color,
        BackgroundTransparency = v8.Theme.BackgroundMuted.Transparency
    }, {
        v1.createElement("UICorner", {
            Name = "Corner",
            CornerRadius = UDim.new(1, 0)
        }),
        v1.createElement("Frame", {
            Name = "TopLine",
            Position = l_toggleTransition_0:map(function(v10)
                return UDim2.new(0.5, 0, 0.5 - 0.17 * (1 - v10), 0);
            end),
            AnchorPoint = Vector2.new(0.5, 0),
            Size = UDim2.new(0, 16, 0, 2),
            BorderSizePixel = 0,
            BackgroundColor3 = l_IconEmphasis_0.Color,
            BackgroundTransparency = l_IconEmphasis_0.Transparency,
            Rotation = l_toggleTransition_0:map(function(v11)
                return 45 * v11;
            end)
        }),
        v1.createElement("Frame", {
            Name = "CenterLine",
            Position = UDim2.new(0.5, 0, 0.5, 0),
            AnchorPoint = Vector2.new(0.5, 0),
            Size = UDim2.new(0, 16, 0, 2),
            BorderSizePixel = 0,
            BackgroundColor3 = l_IconEmphasis_0.Color,
            BackgroundTransparency = l_toggleTransition_0:map(function(v12)
                return 1 - (1 - l_IconEmphasis_0.Transparency) * (1 - v12);
            end)
        }),
        v1.createElement("Frame", {
            Name = "BottomLine",
            Position = l_toggleTransition_0:map(function(v13)
                return UDim2.new(0.5, 0, 0.5 + 0.17 * (1 - v13), 0);
            end),
            AnchorPoint = Vector2.new(0.5, 0),
            Size = UDim2.new(0, 16, 0, 2),
            BorderSizePixel = 0,
            BackgroundColor3 = l_IconEmphasis_0.Color,
            BackgroundTransparency = l_IconEmphasis_0.Transparency,
            Rotation = l_toggleTransition_0:map(function(v14)
                return -45 * v14;
            end)
        }),
        if not v5() then v1.createElement("Frame", {
            Name = "RedVoiceDotVisibleContiner",
            Visible = l_toggleTransition_0:map(function(v15)
                return v15 < 0.5;
            end),
            Size = UDim2.new(1, 0, 1, 0),
            BorderSizePixel = 0,
            BackgroundTransparency = 1
        }, {
            v1.createElement(v4, {
                position = UDim2.new(1, -7, 1, -7)
            })
        }) else nil
    });
end;
return v3:register({
    id = "chrome_toggle",
    label = "CoreScripts.TopBar.MenuToggle",
    hideNotificationCountWhileOpen = true,
    activated = function()
        v3:toggleOpen();
    end,
    components = {
        Icon = function(v16)
            return ToggleMenuButton(v16);
        end
    },
    notification = v3:totalNotifications(),
    initialAvailability = v3.AvailabilitySignal.Pinned
});


local l_CorePackages_0 = game:GetService("CorePackages");
local l_RobloxGui_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local v2 = require(l_CorePackages_0.Packages.React);
local v3 = require(l_CorePackages_0.UIBlox);
local l_useStyle_0 = v3.Core.Style.useStyle;
local l_ImageSetLabel_0 = v3.Core.ImageSet.ImageSetLabel;
local l_Images_0 = v3.App.ImageSet.Images;
local v7 = require(script.Parent.Parent.Parent.SelfieView);
local l_default_0 = require(l_RobloxGui_0.Modules.VoiceChat.VoiceChatServiceManager).default;
local v9 = require(script.Parent.Parent.Service);
local v10 = require(script.Parent.RedVoiceDot);
local v11 = require(script.Parent.Parent.Unibar.Constants);
local l_GetFFlagSupportCompactUtility_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagSupportCompactUtility;
local v13 = require(script.Parent.Parent.Flags.GetFFlagTweakedMicPinning);
local v14 = require(script.Parent.Parent.Flags.GetFFlagUseNewUnibarIcon);
local v15 = require(script.Parent.Parent.Flags.GetFFlagUsePolishedAnimations);
local v16 = require(script.Parent.Parent.Flags.GetFFlagUseSelfieViewFlatIcon);
local v17 = l_Images_0["icons/actions/overflow"];
local v18 = if not v14() then v11.ICON_SIZE else 32;
local v19 = nil;
ToggleMenuButton = function(v20)
    local l_toggleTransition_0 = v20.toggleTransition;
    local v22 = l_useStyle_0();
    local v23 = false;
    if l_GetFFlagSupportCompactUtility_0() then
        v23 = not not v9:getCurrentUtility():get() or false;
    end;
    local l_IconEmphasis_0 = v22.Theme.IconEmphasis;
    return v2.createElement("Frame", {
        Size = UDim2.new(0, 36, 0, 36),
        BorderSizePixel = 0,
        BackgroundColor3 = v22.Theme.BackgroundOnHover.Color,
        BackgroundTransparency = l_toggleTransition_0:map(function(v25)
            return 1 - (1 - v22.Theme.BackgroundOnHover.Transparency) * v25;
        end)
    }, {
        v2.createElement("UICorner", {
            Name = "Corner",
            CornerRadius = UDim.new(1, 0)
        }),
        v2.createElement(l_ImageSetLabel_0, {
            Name = not v14() and "Cube" or "Overflow",
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.new(0.5, 0, 0.5, 0),
            BackgroundTransparency = 1,
            Image = if not v14() then l_Images_0["icons/menu/AR"] else v17,
            Size = l_toggleTransition_0:map(function(v26)
                v26 = 1 - v26;
                return UDim2.new(0, v18 * v26, 0, v18 * v26);
            end),
            Visible = if not v15() then nil else l_toggleTransition_0:map(function(v27)
                if v27 == 1 then
                    v19 = false;
                end;
                return v19 or v9:status():get() == v9.MenuStatus.Closed;
            end),
            ImageColor3 = v22.Theme.IconEmphasis.Color,
            ImageTransparency = v22.Theme.IconEmphasis.Transparency
        }),
        v2.createElement("Frame", {
            Name = "X1",
            Position = l_toggleTransition_0:map(function(_)
                return UDim2.new(0.5, 0, 0.5, 0);
            end),
            AnchorPoint = if v14() or v15() then Vector2.new(0.5, 0.5) else Vector2.new(0.5, 0),
            Size = l_toggleTransition_0:map(function(v29)
                return UDim2.new(0, 16 * v29, 0, 2);
            end),
            Visible = if not l_GetFFlagSupportCompactUtility_0() then nil else not v23,
            BorderSizePixel = 0,
            BackgroundColor3 = l_IconEmphasis_0.Color,
            BackgroundTransparency = if not v15() then l_IconEmphasis_0.Transparency else l_toggleTransition_0:map(function(v30)
                return 1 - v30;
            end),
            Rotation = 45
        }),
        v2.createElement("Frame", {
            Name = "X2",
            Position = l_toggleTransition_0:map(function(_)
                return UDim2.new(0.5, 0, 0.5, 0);
            end),
            AnchorPoint = if v14() or v15() then Vector2.new(0.5, 0.5) else Vector2.new(0.5, 0),
            Size = l_toggleTransition_0:map(function(v32)
                return UDim2.new(0, 16 * v32, 0, 2);
            end),
            Visible = if not l_GetFFlagSupportCompactUtility_0() then nil else not v23,
            BorderSizePixel = 0,
            BackgroundColor3 = l_IconEmphasis_0.Color,
            BackgroundTransparency = if not v15() then l_IconEmphasis_0.Transparency else l_toggleTransition_0:map(function(v33)
                return 1 - v33;
            end),
            Rotation = -45
        }),
        v2.createElement(l_ImageSetLabel_0, {
            Name = "Arrow",
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = l_toggleTransition_0:map(function(_)
                return UDim2.new(0.5, 0, 0.5, 0);
            end),
            BackgroundTransparency = 1,
            Image = l_Images_0["icons/actions/truncationCollapse_small"],
            Size = l_toggleTransition_0:map(function(v35)
                if v15() then
                    v35 = 1 - v35;
                end;
                return UDim2.new(0, 16 * v35, 0, 16 * v35);
            end),
            Visible = if not v15() then v23 else l_toggleTransition_0:map(function(_)
                return not (v19 or v9:status():get() == v9.MenuStatus.Closed);
            end),
            ImageColor3 = v22.Theme.IconEmphasis.Color,
            ImageTransparency = v22.Theme.IconEmphasis.Transparency,
            Rotation = 270
        }),
        if not v13() then v2.createElement("Frame", {
            Name = "RedVoiceDotVisibleContiner",
            Visible = l_toggleTransition_0:map(function(v37)
                return v37 < 0.5;
            end),
            Size = UDim2.new(1, 0, 1, 0),
            BorderSizePixel = 0,
            BackgroundTransparency = 1
        }, {
            v2.createElement(v10, {
                position = UDim2.new(1, -7, 1, -7)
            })
        }) else nil,
        if not v16() then nil else v2.createElement("Frame", {
            Name = "GreenCameraDotVisibleContiner",
            Visible = l_toggleTransition_0:map(function(v38)
                return v38 < 0.5;
            end),
            Size = UDim2.new(1, 0, 1, 0),
            BorderSizePixel = 0,
            BackgroundTransparency = 1
        }, {
            v7.useCameraOn() and v2.createElement(v7.CameraStatusDot, {
                Position = if v13() or l_default_0.localMuted then UDim2.new(1, -7, 1, -8) else UDim2.new(1, -7, 1, -12),
                ZIndex = 2
            })
        })
    });
end;
return v9:register({
    id = "chrome_toggle",
    label = "CoreScripts.TopBar.MenuToggle",
    hideNotificationCountWhileOpen = true,
    flashNotificationSource = true,
    activated = function()
        if not l_GetFFlagSupportCompactUtility_0() or v15() then
            v9:toggleOpen();
        else
            local v39 = v9:getCurrentUtility():get();
            if not v39 then
                v9:toggleOpen();
            else
                v9:toggleCompactUtility(v39);
            end;
        end;
        v19 = true;
    end,
    components = {
        Icon = function(v40)
            return v2.createElement(ToggleMenuButton, v40);
        end
    },
    notification = v9:totalNotifications(),
    initialAvailability = v9.AvailabilitySignal.Pinned
});


return {
    OverflowMenu = require(script.OverflowMenu),
    Chat = require(script.Chat),
    UnibarMenuToggleButton = require(script.UnibarMenuToggleButtonV2),
    CompactUtilityBackButton = require(script.CompactUtilityBackButton),
    TrustAndSafety = require(script.TrustAndSafety),
    DummyWindow = require(script.DummyWindow),
    DummyWindow2 = require(script.DummyWindow2),
    ToggleMic = require(script.ToggleMic),
    SelfieView = require(script.SelfieView),
    Captures = require(script.CameraUtility.Captures),
    Screenshot = require(script.CameraUtility.Screenshot),
    CameraEntrypoint = require(script.CameraUtility.CameraEntrypoint)
};


game:DefineFastInt("FTUXDelay", 20);
return function()
    return game:GetFastInt("FTUXDelay");
end;


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


local l_CorePackages_0 = game:GetService("CorePackages");
local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local v2 = require(l_CorePackages_0.Cryo);
return {
    displayEvent = function(v3)
        l_RbxAnalyticsService_0:SendEventDeferred("client", "ftuxTooltipClientEvent", "ftuxTooltipDisplayed", v2.Dictionary.join({
            action_type = "displayed"
        }, v3));
    end,
    interactEvent = function(v4)
        l_RbxAnalyticsService_0:SendEventDeferred("client", "ftuxTooltipClientEvent", "ftuxTooltipInteracted", v2.Dictionary.join({
            action_type = "clicked"
        }, v4));
    end,
    dismissEvent = function(v5)
        l_RbxAnalyticsService_0:SendEventDeferred("client", "ftuxTooltipClientEvent", "ftuxTooltipDismissed", v2.Dictionary.join({
            action_type = "dismissed"
        }, v5));
    end,
    autoDismissEvent = function(v6)
        l_RbxAnalyticsService_0:SendEventDeferred("client", "ftuxTooltipClientEvent", "ftuxTooltipAutoDismissed", v2.Dictionary.join({
            action_type = "ignored"
        }, v6));
    end
};


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Packages.React);
local v3 = require(l_CorePackages_0.Packages.UIBlox);
local l_withTooltip_0 = v3.App.Dialog.TooltipV2.withTooltip;
local l_TooltipOrientation_0 = v3.App.Dialog.Enum.TooltipOrientation;
local l_useStyle_0 = v3.Core.Style.useStyle;
local l_StyledTextLabel_0 = v3.App.Text.StyledTextLabel;
local l_Button_0 = v3.App.Button.Button;
local l_ButtonType_0 = v3.App.Button.Enum.ButtonType;
local l_StandardButtonSize_0 = v3.App.Button.Enum.StandardButtonSize;
return (v2.forwardRef(function(v11, v12)
    local l_step_0 = v11.step;
    local l_onboardingStep_0 = v11.onboardingStep;
    local l_maxSteps_0 = v11.maxSteps;
    local l_completeLabel_0 = v11.completeLabel;
    local l_showLabels_0 = v11.showLabels;
    local l_onDismiss_0 = v11.onDismiss;
    local l_onNext_0 = v11.onNext;
    local v20 = l_useStyle_0();
    return l_withTooltip_0({
        minContentWidth = 210,
        ref = v12,
        headerText = l_onboardingStep_0.headerText,
        renderCustomComponents = function(v21)
            return v2.createElement("Frame", {
                Name = "OnboardingTooltipFrame",
                BackgroundTransparency = 1,
                Size = UDim2.new(0, v21, 1, 0),
                AutomaticSize = Enum.AutomaticSize.Y
            }, {
                Layout = v2.createElement("UIListLayout", {
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    FillDirection = Enum.FillDirection.Vertical,
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    Padding = UDim.new(0, 5)
                }),
                Body = v2.createElement(l_StyledTextLabel_0, {
                    layoutOrder = 0,
                    automaticSize = Enum.AutomaticSize.XY,
                    fontStyle = v20.Font.Footer,
                    colorStyle = v20.Theme.TextDefault,
                    text = l_onboardingStep_0.bodyText,
                    textTruncate = Enum.TextTruncate.None,
                    textXAlignment = Enum.TextXAlignment.Left
                }),
                Footer = v2.createElement("Frame", {
                    Size = UDim2.new(1, 0, 0, 0),
                    LayoutOrder = 1,
                    AutomaticSize = Enum.AutomaticSize.Y,
                    BackgroundTransparency = 1
                }, {
                    Label = v2.createElement(l_StyledTextLabel_0, {
                        layoutOrder = 1,
                        fontStyle = v20.Font.Footer,
                        colorStyle = v20.Theme.TextDefault,
                        text = not l_showLabels_0 and "" or tostring(l_step_0) .. " / " .. tostring(l_maxSteps_0),
                        textTruncate = Enum.TextTruncate.AtEnd,
                        textXAlignment = Enum.TextXAlignment.Left,
                        size = UDim2.fromScale(0.5, 1)
                    }),
                    Button = v2.createElement(l_Button_0, {
                        buttonType = l_ButtonType_0.PrimarySystem,
                        standardSize = l_StandardButtonSize_0.XSmall,
                        layoutOrder = 2,
                        onActivated = function()
                            l_onNext_0();
                        end,
                        text = if l_step_0 == l_maxSteps_0 then l_completeLabel_0 else l_onboardingStep_0.buttonText,
                        size = UDim2.new(1, 0, 0, 36),
                        anchorPoint = Vector2.new(1, 0),
                        position = UDim2.new(1, 0, 0, 0)
                    }) or nil
                })
            });
        end,
        onClose = function()
            l_onDismiss_0();
        end,
        backgroundColor = v20.Theme.BackgroundUIDefault.Color,
        backgroundTransparency = v20.Theme.BackgroundUIDefault.Transparency
    }, {
        DisplayOrder = 10,
        active = true,
        guiTarget = l_CoreGui_0,
        preferredOrientation = l_TooltipOrientation_0.Bottom
    }, function(v22)
        return v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 1, 0),
            BackgroundTransparency = 1,
            [v2.Change.AbsoluteSize] = v22,
            [v2.Change.AbsolutePosition] = v22
        });
    end);
end));