local function _()
    return game:GetService("RunService"):IsStudio();
end;
local v1 = game:GetService("RunService"):IsStudio();
return function(v2, v3, v4)
    local l_v1_0 = v1;
    if v4 ~= nil then
        l_v1_0 = v4;
    end;
    local l_status_0, l_result_0 = pcall(function()
        return v2();
    end);
    if not l_status_0 then
        if not l_v1_0 then
            local v8 = "safeCall failed";
            pcall(function()
                v8 = tostring(l_result_0);
            end);
            warn(v8);
            return v3;
        else
            assert(l_status_0, l_result_0);
            return ;
        end;
    else
        return l_result_0;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Modules");
local v1 = require(l_script_FirstAncestor_0.LuaApp.AppPage);
local v2 = require(l_script_FirstAncestor_0.LuaApp.AppPageProperties);
local function _()
    return {
        {
            name = v1.Home
        }
    };
end;
return function(v4, v5)
    local l_history_0 = v4:getState().Navigation.history;
    local v7 = l_history_0[#l_history_0] or {
        {
            name = v1.Home
        }
    };
    local v8 = {};
    for v9 = 1, #v7 do
        local l_name_0 = v7[v9].name;
        if not (v2[l_name_0] and v2[l_name_0].isPeekView) then
            v8[#v8 + 1] = v7[v9];
        end;
    end;
    v8[#v8 + 1] = v5;
    if #v8 == 0 then
        v8 = {
            {
                name = v1.Home
            }
        };
    end;
    local v11 = {};
    for v12 = 1, #v8 do
        local v13 = {};
        for v14 = 1, v12 do
            v13[#v13 + 1] = v8[v14];
        end;
        v11[#v11 + 1] = v13;
    end;
    return {
        newRoute = v8,
        newHistory = v11
    };
end;


local v0 = newproxy(true);
getmetatable(v0).__tostring = function()
    return "<removed>";
end;
local function v1(v2, v3, v4)
    v4 = v4 or 0;
    if v4 == 10 then
        return nil;
    elseif v3 == nil then
        return v0;
    elseif typeof(v3) ~= "table" then
        return v3;
    else
        local v5 = {};
        if typeof(v2) == "table" then
            for v6, v7 in pairs(v2) do
                if v3[v6] ~= v7 then
                    v5[v6] = v1(v7, v3[v6], v4 + 1);
                end;
            end;
        end;
        for v8, v9 in pairs(v3) do
            if not (typeof(v2) == "table") or v2[v8] == nil then
                v5[v8] = v1(nil, v9, v4 + 1);
            end;
        end;
        if next(v5) then
            return v5;
        else
            return nil;
        end;
    end;
end;
return v1;


local l_VRService_0 = game:GetService("VRService");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local v3 = require(l_CoreGui_0.RobloxGui.Modules:FindFirstChild("LuaApp").ExperienceEventReceiver);
local l_SplashScreenManager_0 = require(l_CorePackages_0.Workspace.Packages.SplashScreenManager).SplashScreenManager;
local l_IntervalPerformanceTracker_0 = require(l_CorePackages_0.Workspace.Packages.IntervalPerformanceTracker).IntervalPerformanceTracker;
local v6 = nil;
local function _()
    if not v6 then
        v6 = l_VRService_0:GetPropertyChangedSignal("VRSessionState"):Connect(function()
            l_VRService_0.QuestDisplayRefreshRate = 72;
        end);
    end;
end;
return function()
    l_SplashScreenManager_0.initialize(36, 7, 36);
    l_IntervalPerformanceTracker_0:startTracking("appLaunchToTargetFPS");
    l_SplashScreenManager_0.addStatusChangeListener(function(v8)
        if v8 then
            l_IntervalPerformanceTracker_0:stopAndLogTracking("appLaunchToTargetFPS");
        end;
    end);
    local v9 = v3.new();
    l_VRService_0.QuestDisplayRefreshRate = 72;
    v9:onLeft(function()
        l_VRService_0.QuestDisplayRefreshRate = 72;
    end);
    if not v6 then
        v6 = l_VRService_0:GetPropertyChangedSignal("VRSessionState"):Connect(function()
            l_VRService_0.QuestDisplayRefreshRate = 72;
        end);
    end;
end;


local function v0(v1, v2, v3, v4, v5)
    v2 = v2 or "";
    assert(v2, "");
    v3 = v3 or 5;
    assert(v3, "");
    local v6 = 20;
    if type(v4) == "function" then
        local v7 = v4(v5);
        if type(v7) == "number" then
            v6 = v7;
        end;
    end;
    if type(v1) == "table" then
        if v3 > 0 and v3 < v5 then
            return "*truncated";
        else
            local v8 = "" .. "{\n";
            local v9 = 0;
            for v10, v11 in pairs(v1) do
                v9 = v9 + 1;
                if v6 > 0 and v6 < v9 then
                    v8 = v8 .. "  " .. v2 .. "*truncated" .. "\n";
                    break;
                else
                    if type(v10) == "string" then
                        v8 = v8 .. "  " .. v2 .. v10 .. " = " .. v0(v11, "  " .. v2, v3, v4, v5 + 1) .. ";\n";
                    end;
                    if type(v10) == "number" then
                        v8 = v8 .. "  " .. v2 .. v0(v11, "  " .. v2, v3, v4, v5 + 1) .. ",\n";
                    end;
                end;
            end;
            return v8 .. v2 .. "}";
        end;
    elseif type(v1) == "string" then
        return "\"" .. v1 .. "\"";
    else
        return (tostring(v1));
    end;
end;
return function(v12, v13, v14, v15)
    return (v0(v12, v13, v14, v15, 1));
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_UserInputService_0 = game:GetService("UserInputService");
local v2 = require(l_Modules_0.LuaApp.AppPage);
local v3 = require(l_Modules_0.LuaApp.Enum.WebViewWindow);
local _ = require(l_Modules_0.LuaApp.Enum.TransitionAnimation);
local _ = require(l_Modules_0.LuaApp.Navigation.NavigationTypes);
local v6 = require(l_Modules_0.LuaApp.Http.Url);
local v7 = require(l_Modules_0.LuaApp.Http.UrlBuilder);
local v8 = require(l_Modules_0.LuaApp.Flags.FFlagLuaSetNotificationDialogMode);
local v9 = require(l_Modules_0.LuaApp.Flags.FFlagLuaSetPurchaseRobuxDialogMode);
local v10 = game:DefineFastFlag("LuaAppWebViewsUseHttps", false);
local function _()
    if v8 then
        local l_Default_0 = v3.Default;
        local l_None_0 = Enum.Platform.None;
        l_None_0 = l_UserInputService_0:GetPlatform();
        if not (l_None_0 ~= Enum.Platform.Windows and l_None_0 ~= Enum.Platform.OSX) or l_None_0 == Enum.Platform.UWP then
            l_Default_0 = v3.Dialog;
        end;
        return l_Default_0;
    else
        return v3.Default;
    end;
end;
local v14 = {
    [v2.None] = {},
    [v2.BuildersClub] = {
        url = ("%spremium/membership"):format(if not v10 then v6.BASE_URL else v6.BASE_URL_SECURE),
        titleKey = "CommonUI.Features.Label.Premium",
        windowType = v3.Default
    },
    [v2.GenericWebPage] = {
        windowType = v3.Default
    },
    [v2.SettingsSubPage] = {
        windowType = v3.Default
    },
    [v2.YouTubePlayer] = {
        windowType = v3.Default
    }
};
local l_PurchaseRobux_0 = v2.PurchaseRobux;
local v16 = {
    url = ("%sUpgrades/Robux.aspx"):format(if not v10 then v6.BASE_URL else v6.BASE_URL_SECURE),
    titleKey = "Feature.BuyRobux.Heading.Banner"
};
local v17;
if not v9 then
    v17 = v3.Default;
elseif v8 then
    local l_Default_1 = v3.Default;
    local l_None_1 = Enum.Platform.None;
    l_None_1 = l_UserInputService_0:GetPlatform();
    if not (l_None_1 ~= Enum.Platform.Windows and l_None_1 ~= Enum.Platform.OSX) or l_None_1 == Enum.Platform.UWP then
        l_Default_1 = v3.Dialog;
    end;
    v17 = l_Default_1;
else
    v17 = v3.Default;
end;
v16.windowType = v17;
v14[l_PurchaseRobux_0] = v16;
l_PurchaseRobux_0 = v2.Payment;
v16 = {
    url = function(v20)
        return ("%supgrades/paymentmethods?ap=%d"):format(if not v10 then v6.BASE_URL else v6.BASE_URL_SECURE, v20);
    end,
    titleKey = "Feature.BuyRobux.Heading.Banner"
};
if v8 then
    local l_Default_2 = v3.Default;
    local l_None_2 = Enum.Platform.None;
    l_None_2 = l_UserInputService_0:GetPlatform();
    if not (l_None_2 ~= Enum.Platform.Windows and l_None_2 ~= Enum.Platform.OSX) or l_None_2 == Enum.Platform.UWP then
        l_Default_2 = v3.Dialog;
    end;
    v17 = l_Default_2;
else
    v17 = v3.Default;
end;
v16.windowType = v17;
v14[l_PurchaseRobux_0] = v16;
l_PurchaseRobux_0 = v2.Notifications;
v16 = {
    url = ("%snotificationstream/embedded"):format(if not v10 then v6.BASE_URL else v6.BASE_URL_SECURE),
    titleKey = "Feature.AccountSettings.Heading.Tab.Notifications"
};
if v8 then
    local l_Default_3 = v3.Default;
    local l_None_3 = Enum.Platform.None;
    l_None_3 = l_UserInputService_0:GetPlatform();
    if not (l_None_3 ~= Enum.Platform.Windows and l_None_3 ~= Enum.Platform.OSX) or l_None_3 == Enum.Platform.UWP then
        l_Default_3 = v3.Dialog;
    end;
    v17 = l_Default_3;
else
    v17 = v3.Default;
end;
v16.windowType = v17;
v14[l_PurchaseRobux_0] = v16;
v14[v2.AddFriends] = {
    url = ("%susers/friends#format(if not v10 then v6.BASE_URL else v6.BASE_URL_SECURE),
    titleKey = "CommonUI.Features.Label.Friends",
    searchParams = {
        searchType = "Players"
    },
    windowType = v3.Default
};
v14[v2.ViewUserProfile] = {
    url = function(v25)
        return v7.user.profile({
            userId = v25
        });
    end,
    titleKey = "CommonUI.Features.Label.Profile",
    windowType = v3.Default
};
v14[v2.ViewProfile] = {
    titleKey = "CommonUI.Features.Label.Profile",
    windowType = v3.Default
};
v14[v2.ViewFriends] = {
    url = v7.static.friends(),
    titleKey = "CommonUI.Features.Label.Friends",
    windowType = v3.Default
};
v14[v2.ReportAbuse] = {
    titleKey = "Feature.GameDetails.Label.ReportAbuse",
    windowType = v3.Default
};
v14[v2.AccountInfo] = {
    windowType = v3.Default
};
v14[v2.ParentVerification] = {
    windowType = v3.Default
};
v14[v2.EmailVerification] = {
    windowType = v3.Default
};
return v14;


local l_AppStorageService_0 = game:GetService("AppStorageService");
local l_RunService_0 = game:GetService("RunService");
local v2 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Enum.LocalStorageKey);
local function _()
    local l_l_AppStorageService_0_Item_0 = l_AppStorageService_0:GetItem(v2.AppInstallationId);
    if l_l_AppStorageService_0_Item_0 and l_l_AppStorageService_0_Item_0 ~= "" then
        return l_l_AppStorageService_0_Item_0;
    else
        return "unknown";
    end;
end;
local function _()
    local l_l_AppStorageService_0_Item_1 = l_AppStorageService_0:GetItem(v2.BrowserTrackerId);
    if l_l_AppStorageService_0_Item_1 and l_l_AppStorageService_0_Item_1 ~= "" then
        return l_l_AppStorageService_0_Item_1;
    else
        return "0";
    end;
end;
return function(v7)
    local v8 = {
        utm_content = v7.utm_content,
        utm_source = v7.utm_source or "UAP",
        utm_app_version = v7.utm_app_version or l_RunService_0:GetRobloxVersion()
    };
    local l_utm_app_id_0 = v7.utm_app_id;
    if not l_utm_app_id_0 then
        local l_l_AppStorageService_0_Item_2 = l_AppStorageService_0:GetItem(v2.AppInstallationId);
        l_utm_app_id_0 = if not not l_l_AppStorageService_0_Item_2 and l_l_AppStorageService_0_Item_2 ~= "" then l_l_AppStorageService_0_Item_2 else "unknown";
    end;
    v8.utm_app_id = l_utm_app_id_0;
    l_utm_app_id_0 = v7.utm_btid;
    if not l_utm_app_id_0 then
        local l_l_AppStorageService_0_Item_3 = l_AppStorageService_0:GetItem(v2.BrowserTrackerId);
        l_utm_app_id_0 = if not not l_l_AppStorageService_0_Item_3 and l_l_AppStorageService_0_Item_3 ~= "" then l_l_AppStorageService_0_Item_3 else "0";
    end;
    v8.utm_btid = l_utm_app_id_0;
    return v8;
end;


local v0 = require(game:GetService("CorePackages").Packages.t);
local v1 = v0.strictInterface({
    model = v0.instanceIsA("Model"),
    cameraFieldOfView = v0.optional(v0.numberConstrained(1, 120)),
    upVector = v0.optional(v0.Vector3),
    lookVector = v0.optional(v0.Vector3),
    bottomOffset = v0.optional(v0.numberMin(0)),
    topOffset = v0.optional(v0.numberMin(0))
});
return function(v2)
    assert(v1(v2));
    local v3 = v2.model:Clone();
    local v4 = v2.cameraFieldOfView or 70;
    local v5 = v2.upVector.Unit or Vector3.fromAxis(Enum.Axis.Y);
    local v6 = v2.lookVector.Unit or Vector3.fromAxis(Enum.Axis.Z);
    local v7 = v5:Cross(v6);
    local v8 = v2.bottomOffset or 0;
    local v9 = v2.topOffset or 0;
    assert(math.abs((v5:Dot(v6))) < 1.0E-5, "upVector and lookVector must be perpendicular");
    local l_PrimaryPart_0 = v3.PrimaryPart;
    local v11 = not not l_PrimaryPart_0 and l_PrimaryPart_0.CFrame.Position or Vector3.new();
    local v12 = CFrame.fromMatrix(Vector3.new(), v7, v5);
    local v13 = Instance.new("Part", v3);
    v13.Size = Vector3.new(0, 0, 0);
    v3.PrimaryPart = v13;
    v13.CFrame = v12 * CFrame.fromMatrix(Vector3.new(), Vector3.fromAxis(Enum.Axis.X), (Vector3.new(0, math.cos((v4 * 3.141592653589793) / 360), (math.sin((v4 * 3.141592653589793) / 360))))) + v11;
    local l_v3_BoundingBox_0, v15 = v3:GetBoundingBox();
    l_v3_BoundingBox_0 = l_v3_BoundingBox_0 + v12 * Vector3.new(0, -v8, 0);
    local v16 = v13.Position - (l_v3_BoundingBox_0:VectorToWorldSpace(Vector3.fromAxis(Enum.Axis.Y)):Dot(v11 - l_v3_BoundingBox_0.Position) + v15.Y / 2) * l_v3_BoundingBox_0.UpVector;
    local l_LookVector_0 = l_v3_BoundingBox_0.LookVector;
    v13.CFrame = v12 * CFrame.fromMatrix(Vector3.new(), Vector3.fromAxis(Enum.Axis.X), (Vector3.new(0, math.cos((v4 * 3.141592653589793) / 360), -math.sin((v4 * 3.141592653589793) / 360)))) + v11;
    local l_v3_BoundingBox_1, v19 = v3:GetBoundingBox();
    l_v3_BoundingBox_1 = l_v3_BoundingBox_1 + v12 * Vector3.new(0, v9, 0);
    local v20 = v13.Position + (l_v3_BoundingBox_1:VectorToWorldSpace(Vector3.fromAxis(Enum.Axis.Y)):Dot(l_v3_BoundingBox_1.Position - v11) + v19.Y / 2) * l_v3_BoundingBox_1.UpVector;
    local l_LookVector_1 = l_v3_BoundingBox_1.LookVector;
    v3:Destroy();
    local v22 = v16 + (l_LookVector_0 * l_LookVector_1:Cross(v20 - v16).Magnitude) / l_LookVector_1:Cross(l_LookVector_0).Magnitude;
    local v23 = (v11 - v22):Dot(v6);
    return {
        distance = v23,
        focusPoint = v22 + v23 * v6
    };
end;


return function(v0)
    local l_history_0 = v0.Navigation.history;
    local v2 = l_history_0[#l_history_0];
    return v2[#v2].name;
end;


local l_UserInputService_0 = game:GetService("UserInputService");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_FormFactor_0 = require(l_CorePackages_0.Workspace.Packages.FormFactor).Enums.FormFactor;
local v4 = require(l_Modules_0.LuaApp.Enum.SystemBarVisibility);
return function(v5)
    local l_None_0 = Enum.Platform.None;
    pcall(function()
        l_None_0 = l_UserInputService_0:GetPlatform();
    end);
    if (not (l_None_0 ~= Enum.Platform.IOS) or l_None_0 == Enum.Platform.Android) and v5.FormFactor == l_FormFactor_0.WIDE then
        return v4.Visible;
    else
        return v4.PolicyDependent;
    end;
end;


local function _(v0)
    if v0 < 513 then
        return 3;
    elseif v0 < 852 then
        return 4;
    elseif v0 < 1012 then
        return 5;
    elseif v0 < 1172 then
        return 6;
    elseif v0 < 1332 then
        return 7;
    else
        return 8;
    end;
end;
local function _()
    return 70;
end;
return function(v3, v4, v5, v6)
    assert(type(v3) == "number", "containerWidth (argument 1) must be a number");
    assert(type(v5) == "number", "cardPadding (argument 2) must be a number");
    assert(type(v6) == "number", "trailingCardFraction (argument 3) must be a number");
    local v7 = v3 + v4;
    local v8 = (v7 < 513 and 3 or (v7 < 852 and 4 or (v7 < 1012 and 5 or (v7 < 1172 and 6 or (v7 < 1332 and 7 or 8))))) + v6;
    v7 = math.floor((v3 - v5 * (math.ceil(v8) - 1)) / v8);
    local v9 = math.floor(v7 + 70);
    if v7 <= 0 then
        return Vector2.new(1, 1), 1;
    else
        return Vector2.new(v7, v9), v8;
    end;
end;


return function(v0, v1)
    local v2 = v1[#v1];
    if v2 then
        for v3 = #v2, 1, -1 do
            if v2[v3].name == v0 then
                return v3;
            end;
        end;
        return ;
    else
        return ;
    end;
end;


local v0 = require(script.Parent.Enum.PurchaseErrors);
local function _(v1, v2)
    return tostring(v1) .. "." .. tostring(v2);
end;
local v4 = {
    [tostring(nil) .. "." .. tostring("PriceChangedView")] = v0.UnknownFailure,
    [tostring("Membership Level Too Low") .. "." .. tostring("TransactionFailureView")] = v0.UnknownFailure,
    [tostring("Purchases are Currently Disabled") .. "." .. tostring("TransactionFailureView")] = v0.PurchaseDisabled,
    [tostring("Item Not For Sale") .. "." .. tostring("TransactionFailureView")] = v0.NotForSale,
    [tostring("Age Restricted Item") .. "." .. tostring("TransactionFailureView")] = v0.Under13,
    [tostring("Item Owned") .. "." .. tostring("TransactionFailureView")] = v0.AlreadyOwn,
    [tostring("Too Many Purchases") .. "." .. tostring("TransactionFailureView")] = v0.TooManyPurchases,
    [tostring("Invalid Parameter") .. "." .. tostring("TransactionFailureView")] = v0.InvalidRequest,
    [tostring("Unauthorized") .. "." .. tostring("TransactionFailureView")] = v0.Unauthorized
};
local function _(v5, v6)
    return v4[tostring(v5) .. "." .. tostring(v6)];
end;
return function(v8)
    local v9 = false;
    if v8 ~= nil then
        v9 = type(v8) == "table";
    end;
    assert(v9, "err must be a valid table");
    local l_title_0 = v8.title;
    v9 = v8.showDivId;
    local l_shortfallPrice_0 = v8.shortfallPrice;
    if ((not (v9 ~= "TransactionFailureView") or v9 == "InsufficientFundsView") and l_shortfallPrice_0 ~= nil) and l_shortfallPrice_0 > 0 then
        return v0.NotEnoughRobux;
    else
        return v4[tostring(l_title_0) .. "." .. tostring(v9)] or v0.UnknownFailure;
    end;
end;


return function(v0, v1)
    local v2 = "--";
    local v3 = if not not v0 and v0 >= 0 then v0 else 0;
    local v4 = if not not v1 and v1 >= 0 then v1 else 0;
    if v3 + v4 > 0 then
        v2 = tostring((math.floor((v3 / (v3 + v4)) * 100 + 0.5))) .. "%";
    end;
    return v2;
end;


local l_GuiService_0 = game:GetService("GuiService");
local l_UserInputService_0 = game:GetService("UserInputService");
return function()
    if _G.__TESTEZ_RUNNING_TEST__ then
        return 0;
    else
        local l_Y_0 = l_UserInputService_0.BottomBarSize.Y;
        return l_Y_0 == 0 and l_GuiService_0:GetSafeZoneOffsets().bottom or l_Y_0;
    end;
end;


local l_UserInputService_0 = game:GetService("UserInputService");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_FormFactor_0 = require(l_CorePackages_0.Workspace.Packages.FormFactor).Enums.FormFactor;
local v4 = require(l_Modules_0.LuaApp.Enum.SystemBarVisibility);
return function(v5)
    local l_None_0 = Enum.Platform.None;
    pcall(function()
        l_None_0 = l_UserInputService_0:GetPlatform();
    end);
    if not (l_None_0 ~= Enum.Platform.IOS) or l_None_0 == Enum.Platform.Android then
        if v5.FormFactor == l_FormFactor_0.WIDE then
            return v4.Visible;
        else
            return v4.Hidden;
        end;
    else
        return v4.PolicyDependent;
    end;
end;


local l_VRService_0 = game:GetService("VRService");
return function()
    local l_l_VRService_0_UserCFrame_0 = l_VRService_0:GetUserCFrame(Enum.UserCFrame.Floor);
    local l_CurrentCamera_0 = workspace.CurrentCamera;
    if not l_CurrentCamera_0 then
        return CFrame.new(0, 0, 0);
    else
        return l_l_VRService_0_UserCFrame_0.Rotation + l_l_VRService_0_UserCFrame_0.Position * l_CurrentCamera_0.HeadScale;
    end;
end;


local v0 = require(script.Parent.Enum.TransitionAnimation);
local v1 = {
    [v0.SlideInFromRight] = "slideInFromRight",
    [v0.SlideInFromBottom] = "slideInFromBottom"
};
return function(v2)
    if not v2 then
        return nil;
    else
        return v1[v2];
    end;
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.ArgCheck);
return function(v1, v2)
    v0.isNotNil(v1, "linking");
    v0.isType(v2, "string", "url");
    v1:openURL(v2);
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Models.User);
local v1 = {
    [v0.PresenceType.IN_GAME] = 3,
    [v0.PresenceType.ONLINE] = 2,
    [v0.PresenceType.IN_STUDIO] = 1,
    [v0.PresenceType.OFFLINE] = 0
};
return function(v2, v3)
    local v4 = v1[v2.presence] or 0;
    local v5 = v1[v3.presence] or 0;
    if v4 == v5 then
        return v2.name:lower() < v3.name:lower();
    else
        return v5 < v4;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.LuaApp.Models.User);
local l_useLastOnlineForSort_0 = require(l_Modules_0.LuaApp.sortFriendsUtilities).useLastOnlineForSort;
local l_getFriendWeight_0 = require(l_Modules_0.LuaApp.sortFriendsUtilities).getFriendWeight;
return function(v4, v5)
    local v6 = l_getFriendWeight_0(v4);
    local v7 = l_getFriendWeight_0(v5);
    if v6 == v7 then
        if not (v4.presence ~= v1.PresenceType.OFFLINE) or not l_useLastOnlineForSort_0(v4.lastOnline, v5.lastOnline) then
            return v4.name:lower() < v5.name:lower();
        else
            return v5.lastOnline < v4.lastOnline;
        end;
    else
        return v7 < v6;
    end;
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Models.User);
local v1 = {
    [v0.PresenceType.IN_GAME] = 3,
    [v0.PresenceType.ONLINE] = 2,
    [v0.PresenceType.IN_STUDIO] = 1,
    [v0.PresenceType.OFFLINE] = 0
};
return {
    useLastOnlineForSort = function(v2, v3)
        local v4 = false;
        if typeof(v2) == "number" then
            v4 = false;
            if typeof(v3) == "number" then
                v4 = v2 ~= v3;
            end;
        end;
        return v4;
    end,
    getFriendWeight = function(v5)
        local v6 = nil;
        if not (not v5 or not v5.presence) then
            v6 = v1[v5.presence];
        end;
        if v6 == nil then
            v6 = v1[v0.PresenceType.OFFLINE];
        end;
        return v6;
    end
};


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.Cryo);
local v5 = require(l_Modules_0.LuaApp.ThemeContext_DEPRECATED);
return function(v6)
    return function(v7)
        return v3.createElement(v5.Consumer, {
            render = function(v8)
                return v3.createElement(v6, v4.Dictionary.join(v7, {
                    appTheme = v8
                }));
            end
        });
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = nil;
local v4 = nil;
local v5 = nil;
local v6 = nil;
local v7 = nil;
local v8 = require(l_CorePackages_0.Packages.Dev.JestGlobals3);
local v9 = require(l_CorePackages_0.Packages.Dev.JestBenchmark);
local v10 = require(l_CorePackages_0.Packages.Dev.TagUtils);
local l_waitUntil_0 = require(l_CorePackages_0.Workspace.Packages.TestUtils).waitUntil;
local v12 = require(l_Modules_0.LuaApp.TestHelpers.toBeVisible);
local v13 = require(l_Modules_0.LuaApp.TestHelpers.MockIXPService);
local v14 = require(l_Modules_0.LuaApp.TestHelpers.createRbxAnalyticsServiceMock);
local v15 = require(l_CorePackages_0.Packages.Dev.RecordPlayback);
local l_expect_0 = v8.expect;
local l_beforeAll_0 = v8.beforeAll;
local l_beforeEach_0 = v8.beforeEach;
local l_afterEach_0 = v8.afterEach;
local l_benchmark_0 = v9.benchmark;
local l_jest_0 = v8.jest;
local v22 = nil;
l_beforeAll_0(function()
    l_expect_0.extend({
        toBeVisible = v12
    });
    v22 = v15.createRecordPlayback({
        instanceParent = l_CoreGui_0.RobloxGui.Modules.HttpArtifacts,
        fileSystemPath = "src/internal/HttpArtifacts/Modules/HttpArtifacts"
    });
end);
local v23 = nil;
l_beforeEach_0(function()
    l_jest_0.resetModules();
    l_jest_0.mock(l_Modules_0.LuaApp.Flags.GetFFlagInjectAnalyticsService, function()
        return function()
            return true;
        end;
    end);
    require(l_CorePackages_0.Packages.UIBlox).init(require(l_CorePackages_0.Workspace.Packages.RobloxAppUIBloxConfig));
    v3 = require(l_CorePackages_0.Packages.React);
    v4 = require(l_CorePackages_0.Packages.ReactRoblox);
    v5 = require(l_CorePackages_0.Packages.LuauPolyfill).Object;
    v6 = require(l_Modules_0.LuaApp.Components.UniversalApp);
    v7 = v4.act;
    v23 = Instance.new("Folder");
    v23.Name = "TestComponent";
    v23.Parent = l_CoreGui_0;
end);
l_afterEach_0(function()
    if v23 then
        v23:Destroy();
    end;
    v23 = nil;
end);
local function v31(v24, v25)
    local v26 = v14();
    v22(v24):ignoreMissingRequests():skipExistenceAssertion():execute(function(v27)
        local v28 = v3.createElement(v6, v5.assign({}, {
            appName = "LuaApp",
            httpService = v27,
            rbxAnalyticsService = v26,
            ixpService = v13.new({}, {}, true)
        }, v25));
        local v29 = v4.createRoot(v23);
        v7(function()
            v29:render(v28);
        end);
        l_expect_0((l_waitUntil_0(function()
            v4.act(function()
                task.wait();
            end);
            local v30 = v10.getUnique("app-screen.home");
            return v30 ~= nil, v30;
        end, 6))).toBeVisible();
        v7(function()
            v29:unmount();
        end);
    end);
end;
l_benchmark_0("Testing-Home-Page-Initial-Mount", function()
    v31("universal-app-load-home-page");
end);


return {
    displayName = "Benchmarks",
    testMatch = {
        "**/*.bench"
    }
};


local l_CorePackages_0 = game:GetService("CorePackages");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_TestEZ_0 = require(l_CorePackages_0.JestGlobals).TestEZ;
local l_TestBootstrap_0 = l_TestEZ_0.TestBootstrap;
local l_TextReporter_0 = l_TestEZ_0.Reporters.TextReporter;
local l_Tests_0 = script.Parent.Tests;
require(l_CorePackages_0.UIBlox).init(require(l_CorePackages_0.Workspace.Packages.RobloxAppUIBloxConfig));
local function _()
    l_TestBootstrap_0:run({
        l_Tests_0
    }, l_TextReporter_0);
end;
return function()
    l_UserInputService_0.InputEnded:connect(function(v7, _)
        if not (((not (v7.UserInputType == Enum.UserInputType.Keyboard) or not l_UserInputService_0:IsKeyDown(Enum.KeyCode.LeftShift)) or not l_UserInputService_0:IsKeyDown(Enum.KeyCode.LeftControl)) or not l_UserInputService_0:IsKeyDown(Enum.KeyCode.LeftAlt)) and v7.KeyCode == Enum.KeyCode.R then
            l_TestBootstrap_0:run({
                l_Tests_0
            }, l_TextReporter_0);
        end;
    end);
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_Modules_0.LuaApp.Constants);
local v4 = require(l_Modules_0.LuaApp.TestHelpers.MockRequest);
local l_GameDetailModel_0 = require(l_CorePackages_0.Workspace.Packages.GameDetailRodux).GameDetails.GameDetailModel;
local l_PlayabilityStatusEnum_0 = require(l_CorePackages_0.Workspace.Packages.PlayabilityRodux).Enums.PlayabilityStatusEnum;
return function(v7, v8)
    local v9 = v2.Dictionary.join({
        gamesDetails = v4.simpleSuccessRequest({
            data = l_GameDetailModel_0.mock(v7, "mock game")
        }),
        voiceShowAgeVerificationOverlay = v4.simpleSuccessRequest({
            showAgeVerificationOverlay = false,
            universePlaceVoiceEnabledSettings = {
                isPlaceEnabledForVoice = true,
                isUniverseEnabledForVoice = true
            }
        }),
        voiceUserOptIn = v4.simpleSuccessRequest({
            isUserOptIn = false
        }),
        gamesMedia = v4.simpleSuccessRequest({
            data = {}
        }),
        gamesThumbnailsList = v4.simpleSuccessRequest({
            {
                universeId = v7,
                thumbnails = {
                    url = "rbxassetid://0"
                }
            }
        }),
        supportedLocales = v4.simpleSuccessRequest({}),
        gamesUserVotes = v4.simpleSuccessRequest({
            canVote = true,
            reasonForNotVoteable = "",
            userVote = false
        }),
        gamesVotes = v4.simpleSuccessRequest({
            upVotes = 10,
            downVotes = 10
        }),
        gamesFavorites = v4.simpleSuccessRequest({
            isFavorited = true
        }),
        followingUniverse = v4.simpleSuccessRequest({
            CanFollow = true,
            IsFollowing = true
        }),
        gamesSocialLinks = v4.simpleSuccessRequest({
            data = {}
        }),
        gameRecommendations = v4.simpleSuccessRequest({
            games = {}
        }),
        gamePassesList = v4.simpleSuccessRequest({
            data = {
                {
                    id = 12345,
                    isOwned = false,
                    name = "2x Money",
                    price = 450
                }
            }
        }),
        gamePasses = v4.simpleSuccessRequest({}),
        badges = v4.simpleSuccessRequest({
            data = {}
        }),
        bigGameIcons = v4.simpleSuccessRequest({}),
        ageRecommendation = v4.simpleSuccessRequest({
            ageRecommendationDetails = {
                summary = {
                    ageRecommendation = {
                        minimumAge = 13
                    }
                }
            }
        }),
        assetTextFilterSettings = v4.simpleSuccessRequest({
            containsStrongLanguage = false
        }),
        playabilityStatus = v4.simpleSuccessRequest({
            data = {
                universeId = v7,
                isPlayable = true,
                playabilityStatus = l_PlayabilityStatusEnum_0.Playable
            }
        }),
        privateServersEnabled = v4.simpleSuccessRequest({
            privateServersEnabled = true
        })
    }, v8);
    return {
        {
            url = "https://games.roblox.com/v1/games?universeIds=" .. v7,
            request = v9.gamesDetails
        },
        {
            url = "https://voice.roblox.com//v1/settings/verify/show-age-verification-overlay/" .. v7,
            request = v9.voiceShowAgeVerificationOverlay
        },
        {
            url = "https://voice.roblox.com//v1/settings/user-opt-in",
            request = v9.voiceUserOptIn
        },
        {
            url = "https://games.roblox.com/v2/games/" .. v7 .. "/media",
            request = v9.gamesMedia
        },
        {
            url = "https://thumbnails.roblox.com/v1/games/multiget/thumbnails?universeIds=" .. v7 .. "&format=Jpeg&size=256x144",
            request = v9.gamesThumbnailsList
        },
        {
            url = "https://locale.roblox.com/v1/locales/user-localization-locus-supported-locales",
            request = v9.supportedLocales
        },
        {
            url = "https://games.roblox.com/v1/games/" .. v7 .. "/votes/user",
            usePatterns = false,
            request = v9.gamesUserVotes
        },
        {
            url = "https://games.roblox.com/v1/games/" .. v7 .. "/votes",
            request = v9.gamesVotes
        },
        {
            url = "https://games.roblox.com/v1/games/" .. v7 .. "/favorites",
            request = v9.gamesFavorites
        },
        {
            url = "https://followings.roblox.com//v1/users//universes/" .. v7 .. "/status",
            request = v9.followingUniverse
        },
        {
            url = "https://games.roblox.com/v1/games/" .. v7 .. "/social-links/list",
            request = v9.gamesSocialLinks
        },
        {
            url = string.format("https://games.roblox.com/v1/games/recommendations/game/%s?maxRows=%s", v7, (tostring(v3.MAX_RECOMMENDED_GAMES_FETCH_COUNT))),
            request = v9.gameRecommendations
        },
        {
            url = "https://games.roblox.com/v1/games/" .. v7 .. "/game-passes",
            request = v9.gamePassesList
        },
        {
            url = "https://thumbnails.roblox.com/v1/game-passes?isCircular=true&format=png&size=150x150&gamePassIds=12345",
            request = v9.gamePasses
        },
        {
            url = "https://badges.roblox.com/v1/universes/" .. v7 .. "/badges",
            request = v9.badges
        },
        {
            url = "https://thumbnails.roblox.com/v1/games/icons?universeIds=" .. v7 .. "&format=png&size=512x512",
            request = v9.bigGameIcons
        },
        {
            url = "https://apis.roblox.com/experience-guidelines-api/experience-guidelines/get-age-recommendation",
            request = v9.ageRecommendation
        },
        {
            url = "https://apis.roblox.com/asset-text-filter-settings/" .. v7,
            request = v9.assetTextFilterSettings
        },
        {
            url = "https://games.roblox.com//v1/games/multiget-playability-status?universeIds=" .. v7,
            request = v9.playabilityStatus
        },
        {
            url = "https://games.roblox.com/v1/private-servers/enabled-in-universe/" .. v7,
            request = v9.privateServersEnabled
        }
    };
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_LuaApp_0 = l_CoreGui_0.RobloxGui.Modules.LuaApp;
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_LuaApp_0.Components.Generic.GridView);
return function(v5, v6)
    local l_windowAbsoluteSize_0 = v6.windowAbsoluteSize;
    local v8 = v3.mount(v3.createElement("ScreenGui", {
        ZIndexBehavior = Enum.ZIndexBehavior.Sibling
    }, {
        ScrollingFrameWithGridView = v3.createElement("ScrollingFrame", {
            Size = UDim2.new(0, l_windowAbsoluteSize_0.X, 0, l_windowAbsoluteSize_0.Y),
            CanvasSize = UDim2.new(0, l_windowAbsoluteSize_0.X, 0, 10 * l_windowAbsoluteSize_0.Y),
            ScrollingDirection = Enum.ScrollingDirection.Y,
            ScrollBarThickness = 0
        }, {
            GridView = v3.createElement(v4, v6)
        })
    }), l_CoreGui_0, "TestRoot");
    local l_status_0, l_result_0 = pcall(function()
        v5("game.CoreGui.TestRoot.ScrollingFrameWithGridView");
    end);
    v3.unmount(v8);
    if not l_status_0 then
        error(l_result_0);
    end;
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_HttpService_0 = game:GetService("HttpService");
local l_LuaApp_0 = l_CoreGui_0.RobloxGui.Modules.LuaApp;
local v4 = require(l_CorePackages_0.Roact);
local v5 = require(l_LuaApp_0.TestHelpers.mockServices);
local v6 = require(l_LuaApp_0.Components.Authentication.LoginView);
local function _(v7, v8, v9)
    return v5(v7, {
        includeThemeProvider = true,
        includeAppPolicyProvider = true,
        includeStoreProvider = true,
        store = v8,
        extraServices = v9
    });
end;
return function(v11, v12, v13)
    local v14 = v4.createElement("ScreenGui", {
        ZIndexBehavior = Enum.ZIndexBehavior.Sibling
    }, {
        LoginView = v5({
            LoginView = v4.createElement(v6)
        }, {
            includeThemeProvider = true,
            includeAppPolicyProvider = true,
            includeStoreProvider = true,
            store = v12,
            extraServices = v13
        })
    });
    local l_Folder_0 = Instance.new("Folder");
    l_Folder_0.Name = l_HttpService_0:GenerateGUID();
    l_Folder_0.Parent = l_CoreGui_0;
    local v16 = v4.mount(v14, l_Folder_0, "TestRoot");
    local l_status_0, l_result_0 = pcall(function()
        v11(l_Folder_0:FindFirstChildOfClass("ScreenGui"):GetChildren()[1]);
    end);
    v4.unmount(v16);
    if not l_status_0 then
        error(l_result_0);
    end;
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_GuiService_0 = game:GetService("GuiService");
local v4 = require(l_CorePackages_0.Roact);
local v5 = require(l_CorePackages_0.Cryo);
local v6 = require(game.CoreGui.RobloxGui.Modules.LuaApp.TestHelpers.mockServices);
local function v7(v8, v9)
    v9 = v9 or "";
    if v8 == nil then
        print(v9 .. "[nil Instance]");
        return ;
    else
        print(v9 .. v8.Name);
        v9 = v9 .. "  ";
        for _, v11 in ipairs(v8:GetChildren()) do
            v7(v11, v9);
        end;
        return ;
    end;
end;
return function(v12, v13, v14, v15, v16, v17)
    v15 = v15 or {};
    local v18 = {
        includeStoreProvider = true,
        includeThemeProvider = true,
        includeDesignTokenProvider = true,
        includeStyleProvider = true,
        includeAppPolicyProvider = true,
        initialStoreState = v14,
        extraServices = v16
    };
    if v17 then
        v18 = v5.Dictionary.join(v18, v17);
    end;
    local v19 = v4.createElement("ScreenGui", {
        ZIndexBehavior = Enum.ZIndexBehavior.Sibling
    }, {
        [tostring(v13)] = v6({
            Root = v4.createElement(v13, v15)
        }, v18)
    });
    local v20 = "Test-" .. l_HttpService_0:GenerateGUID(false);
    local v21 = v4.mount(v19, l_CoreGui_0, v20);
    local v22 = ("game.CoreGui.%s.*"):format(v20);
    if v18.includeFocusControllerProvider then
        v22 = v22 .. ".*";
    end;
    local l_status_0, l_result_0 = pcall(function()
        v12(v22);
    end);
    if not l_status_0 then
        print("Test instance tree:\n");
        v7(l_CoreGui_0:FindFirstChild(v20));
        print();
        local l_SelectedCoreObject_0 = l_GuiService_0.SelectedCoreObject;
        if l_SelectedCoreObject_0 then
            print("SelectedCoreObject: " .. l_SelectedCoreObject_0:GetFullName() .. "\n\n");
        end;
    end;
    v4.unmount(v21);
    if not l_status_0 then
        error(l_result_0);
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Action);
local v2 = require(l_Modules_0.LuaApp.ArgCheck);
return v1(script.Name, function(v3)
    v2.isType(v3, "number", "noticeId");
    return {
        noticeId = v3
    };
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Action);
local v2 = require(l_Modules_0.LuaApp.ArgCheck);
return v1(script.Name, function(v3)
    v2.isType(v3, "table", "agreements");
    return {
        agreedUserAgreements = v3
    };
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Action);
local v2 = require(l_Modules_0.LuaApp.ArgCheck);
return v1(script.Name, function(v3)
    v2.isType(v3, "string", "errMessageKey");
    return {
        errMessageKey = v3
    };
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Action);
local v2 = require(l_Modules_0.LuaApp.ArgCheck);
return v1(script.Name, function(v3)
    v2.isType(v3, "boolean", "loginInProgress");
    return {
        loginInProgress = v3
    };
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Action);
local v2 = require(l_Modules_0.LuaApp.ArgCheck);
return v1(script.Name, function(v3)
    v2.isType(v3, "string", "openId");
    return {
        openId = v3
    };
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Action);
local v2 = require(l_Modules_0.LuaApp.ArgCheck);
return v1(script.Name, function(v3)
    v2.isType(v3, "boolean", "signUpInProgress");
    return {
        signUpInProgress = v3
    };
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Action);
local v2 = require(l_Modules_0.LuaApp.ArgCheck);
return v1(script.Name, function(v3, v4, v5, v6)
    v2.isType(v3, "string", "displayName");
    v2.isType(v4, "string", "voucher");
    v2.isType(v5, "string", "authMethod");
    v2.isType(v6, "string", "channelId");
    return {
        prefilledDisplayName = v3,
        signUpVoucher = v4,
        authMethod = v5,
        channelId = v6
    };
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Action);
local v2 = require(l_Modules_0.LuaApp.ArgCheck);
return v1(script.Name, function(v3)
    v2.isType(v3, "table", "tencentAuthInfo");
    return {
        tencentAuthInfo = v3
    };
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Action);
local v2 = require(l_Modules_0.LuaApp.ArgCheck);
return v1(script.Name, function(v3)
    v2.isType(v3, "number", "SetTencentNoticeBadgeCount: count");
    return {
        count = v3
    };
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Action);
local v2 = require(l_Modules_0.LuaApp.ArgCheck);
return v1(script.Name, function(v3)
    v2.isType(v3, "table", "noticeList");
    return {
        noticeList = v3
    };
end);


return {
    Success = "Luobu-SessionCheck-Success",
    Failure = "Luobu-SessionCheck-Failure",
    Failure401Unauthenticated = "Luobu-SessionCheck-Failure-401-Unauthenticated"
};


return {
    Success = "LuobuAppSignup-Success",
    Failure = "LuobuAppSignup-Failure"
};


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local v4 = require(l_Modules_0.LuaApp.withLocalization);
local v5 = require(l_CorePackages_0.Packages.t);
local l_InteractiveAlert_0 = require(l_CorePackages_0.UIBlox).App.Dialog.Alert.InteractiveAlert;
local v7 = v2.PureComponent:extend("SimpleTextAlertPrompt");
v7.validateProps = v5.strictInterface({
    titleKey = v5.string,
    bodyTextKey = v5.string,
    confirmButtonTextKey = v5.string,
    confirmButtonCallback = v5.callback,
    screenSize = v5.Vector2
});
v7.render = function(v8)
    local l_titleKey_0 = v8.props.titleKey;
    local l_bodyTextKey_0 = v8.props.bodyTextKey;
    local l_confirmButtonTextKey_0 = v8.props.confirmButtonTextKey;
    local l_confirmButtonCallback_0 = v8.props.confirmButtonCallback;
    local l_screenSize_0 = v8.props.screenSize;
    return v4({
        title = l_titleKey_0,
        bodyText = l_bodyTextKey_0,
        confirmButtonText = l_confirmButtonTextKey_0
    })(function(v14)
        return v2.createElement(l_InteractiveAlert_0, {
            title = v14.title,
            bodyText = v14.bodyText,
            buttonStackInfo = {
                buttons = {
                    {
                        props = {
                            onActivated = l_confirmButtonCallback_0,
                            text = v14.confirmButtonText
                        }
                    }
                }
            },
            position = UDim2.fromScale(0.5, 0.5),
            screenSize = l_screenSize_0
        });
    end);
end;
return v3.connect(function(v15)
    return {
        screenSize = v15.ScreenSize
    };
end, function(_)
    return {};
end)(v7);


local l_AppStorageService_0 = game:GetService("AppStorageService");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.RoactRodux);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local l_RoactAppPolicy_0 = require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).RoactAppPolicy;
local l_AppGuiService_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppGuiService;
local v8 = require(l_Modules_0.LuaApp.withLocalization);
local v9 = require(l_CorePackages_0.Packages.t);
local v10 = require(l_Modules_0.LuaApp.AppPage);
local v11 = require(l_CorePackages_0.UIBlox);
local l_withStyle_0 = v11.Style.withStyle;
local l_InteractiveAlert_0 = v11.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v11.App.Button.Enum.ButtonType;
local l_LinkButton_0 = v11.App.Button.LinkButton;
local l_Images_0 = v11.App.ImageSet.Images;
local l_ImageSetLabel_0 = v11.Core.ImageSet.ImageSetLabel;
local v18 = require(l_Modules_0.Luobu.Actions.SetAgreedUserAgreements);
local v19 = require(l_Modules_0.LuaApp.Enum.OverlayType);
local v20 = require(l_Modules_0.LuaApp.Actions.SetCentralOverlay);
local v21 = require(l_Modules_0.LuaApp.Thunks.CloseCentralOverlay);
local v22 = require(l_Modules_0.LuaApp.Thunks.NavigateDown);
local v23 = require(l_Modules_0.LuaApp.Enum.NotificationType);
local v24 = v3.PureComponent:extend("UserAgreementsPrompt");
v24.validateProps = v9.strictInterface({
    agreements = v9.array(v9.strictInterface({
        id = v9.string,
        agreementType = v9.string,
        clientType = v9.string,
        displayUrl = v9.string,
        regulationType = v9.string
    })),
    context = v9.optional(v9.string),
    screenSize = v9.Vector2,
    closePrompt = v9.callback,
    setAgreedUserAgreements = v9.callback,
    navigateDown = v9.callback,
    showSecondPrompt = v9.callback,
    shouldShowCameraPermissionInAgreementsPrompt = v9.boolean,
    guiService = v9.table
});
v24.init = function(v25)
    v25.getLocalizationKeys = function()
        local v26 = {
            title = "Luobu.Authentication.UserAgreementsPrompt.Title",
            bodyTextPart1 = "Luobu.Authentication.UserAgreementsPrompt.BodyText.Part1",
            bodyTextPart2 = "Luobu.Authentication.UserAgreementsPrompt.BodyText.Part2",
            permissionDesc = "Luobu.Authentication.UserAgreementsPrompt.Permissions.Description",
            permissionStorageTitle = "Luobu.Authentication.UserAgreementsPrompt.Permissions.Storage.Title",
            permissionStorageDesc = "Luobu.Authentication.UserAgreementsPrompt.Permissions.Storage.Description",
            permissionNetworkTitle = "Luobu.Authentication.UserAgreementsPrompt.Permissions.Network.Title",
            permissionNetworkDesc = "Luobu.Authentication.UserAgreementsPrompt.Permissions.Network.Description",
            permissionCameraTitle = "Luobu.Authentication.UserAgreementsPrompt.Permissions.Camera.Title",
            permissionCameraDesc = "Luobu.Authentication.UserAgreementsPrompt.Permissions.Camera.Description",
            consentButton = "Luobu.Authentication.UserAgreementsPrompt.Button.Consent",
            dissentButton = "Luobu.Authentication.UserAgreementsPrompt.Button.Dissent"
        };
        for _, v28 in pairs(v25.props.agreements) do
            v26[v28.agreementType] = "Luobu.Authentication.Login.Label.Agreement." .. v28.agreementType;
        end;
        return v26;
    end;
    v25.onConsent = function()
        local l_closePrompt_0 = v25.props.closePrompt;
        local l_agreements_0 = v25.props.agreements;
        local l_setAgreedUserAgreements_0 = v25.props.setAgreedUserAgreements;
        local v32 = {};
        for _, v34 in ipairs(l_agreements_0) do
            table.insert(v32, v34.id);
        end;
        l_setAgreedUserAgreements_0(v32);
        l_AppStorageService_0:SetItem("HasAgreedRequiredPermissions", (tostring(true)));
        l_closePrompt_0();
    end;
    v25.onDissent = function(v35)
        if v25.props.context == v19.UserAgreementsSecondPrompt then
            v25.props.guiService:BroadcastNotification("", v23.NATIVE_EXIT);
            return ;
        else
            v25.props.showSecondPrompt(v25.props.agreements, v35);
            return ;
        end;
    end;
    v25.renderAgreementsListItems = function(v36)
        local l_agreements_1 = v25.props.agreements;
        local l_navigateDown_0 = v25.props.navigateDown;
        local v39 = {
            Layout = v3.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                SortOrder = Enum.SortOrder.LayoutOrder
            })
        };
        local v40 = 1;
        for _, v42 in ipairs(l_agreements_1) do
            local v43 = v36[v42.agreementType] or v42.displayUrl;
            v39[v42.agreementType] = v3.createElement("Frame", {
                LayoutOrder = v40,
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                AutomaticSize = Enum.AutomaticSize.XY
            }, {
                v3.createElement(l_LinkButton_0, {
                    text = "\226\128\162 " .. v43,
                    fontStyle = "CaptionHeader",
                    minPaddingY = 5,
                    onActivated = function()
                        l_navigateDown_0({
                            name = v10.GenericWebPage,
                            detail = v42.displayUrl,
                            extraProps = {
                                title = v43
                            }
                        });
                    end
                })
            });
            v40 = v40 + 1;
        end;
        return v39;
    end;
    v25.renderMiddleContent = function(v44, v45, v46)
        local v47 = l_AppStorageService_0:GetItem("HasAgreedRequiredPermissions") ~= tostring(true);
        local l_shouldShowCameraPermissionInAgreementsPrompt_0 = v25.props.shouldShowCameraPermissionInAgreementsPrompt;
        local l_Theme_0 = v45.Theme;
        local l_Font_0 = v45.Font;
        return v3.createElement("Frame", {
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            Size = UDim2.new(1, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y
        }, {
            Layout = v3.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                SortOrder = Enum.SortOrder.LayoutOrder
            }),
            Agreements = v3.createElement("Frame", {
                LayoutOrder = 1,
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Size = UDim2.new(1, 0, 0, 0),
                AutomaticSize = Enum.AutomaticSize.Y
            }, {
                Layout = v3.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Vertical,
                    HorizontalAlignment = Enum.HorizontalAlignment.Left,
                    SortOrder = Enum.SortOrder.LayoutOrder
                }),
                Prefix = v3.createElement("Frame", {
                    LayoutOrder = 1,
                    BackgroundTransparency = 1,
                    BorderSizePixel = 0,
                    Size = UDim2.new(1, 0, 0, 12)
                }, {
                    PrefixText = v3.createElement("TextLabel", {
                        Size = UDim2.new(1, 0, 1, 0),
                        BackgroundTransparency = 1,
                        Text = v44.bodyTextPart1,
                        Font = l_Font_0.CaptionHeader.Font,
                        TextSize = l_Font_0.BaseSize * l_Font_0.CaptionHeader.RelativeSize,
                        TextColor3 = l_Theme_0.TextDefault.Color,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        TextYAlignment = Enum.TextYAlignment.Center,
                        TextWrapped = true
                    }),
                    Padding = v3.createElement("UIPadding", {
                        PaddingBottom = UDim.new(0, 12)
                    })
                }),
                AgreementsList = v3.createElement("Frame", {
                    LayoutOrder = 2,
                    BackgroundTransparency = 1,
                    BorderSizePixel = 0,
                    AutomaticSize = Enum.AutomaticSize.XY
                }, v46),
                Suffix = v3.createElement("Frame", {
                    LayoutOrder = 3,
                    BackgroundTransparency = 1,
                    BorderSizePixel = 0,
                    Size = UDim2.new(1, 0, 0, 12)
                }, {
                    Padding = v3.createElement("UIPadding", {
                        PaddingTop = UDim.new(0, 12)
                    }),
                    PrefixText = v3.createElement("TextLabel", {
                        Size = UDim2.new(1, 0, 1, 0),
                        BackgroundTransparency = 1,
                        Text = v44.bodyTextPart2,
                        Font = l_Font_0.CaptionHeader.Font,
                        TextSize = l_Font_0.BaseSize * l_Font_0.CaptionHeader.RelativeSize,
                        TextColor3 = l_Theme_0.TextDefault.Color,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        TextYAlignment = Enum.TextYAlignment.Center,
                        TextWrapped = true
                    })
                })
            }),
            Permissions = v47 and v3.createElement("Frame", {
                LayoutOrder = 2,
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Size = UDim2.new(1, 0, 0, 0),
                AutomaticSize = Enum.AutomaticSize.Y
            }, {
                Layout = v3.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Vertical,
                    HorizontalAlignment = Enum.HorizontalAlignment.Left,
                    SortOrder = Enum.SortOrder.LayoutOrder
                }),
                Description = v3.createElement("Frame", {
                    LayoutOrder = 1,
                    BackgroundTransparency = 1,
                    BorderSizePixel = 0,
                    Size = UDim2.new(1, 0, 0, 12),
                    AutomaticSize = Enum.AutomaticSize.Y
                }, {
                    DescriptionText = v3.createElement("TextLabel", {
                        Size = UDim2.new(1, 0, 1, 0),
                        BackgroundTransparency = 1,
                        Text = v44.bodyTextPart1,
                        Font = l_Font_0.CaptionHeader.Font,
                        TextSize = l_Font_0.BaseSize * l_Font_0.CaptionHeader.RelativeSize,
                        TextColor3 = l_Theme_0.TextDefault.Color,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        TextYAlignment = Enum.TextYAlignment.Center,
                        TextWrapped = true
                    }),
                    Padding = v3.createElement("UIPadding", {
                        PaddingBottom = UDim.new(0, 12)
                    })
                }),
                Permissions = v3.createElement("Frame", {
                    LayoutOrder = 2,
                    BackgroundTransparency = 1,
                    BorderSizePixel = 0,
                    Size = UDim2.new(1, 0, 0, 0),
                    AutomaticSize = Enum.AutomaticSize.Y
                }, {
                    Layout = v3.createElement("UIListLayout", {
                        FillDirection = Enum.FillDirection.Vertical,
                        HorizontalAlignment = Enum.HorizontalAlignment.Left,
                        SortOrder = Enum.SortOrder.LayoutOrder
                    }),
                    StoragePermission = v3.createElement("Frame", {
                        LayoutOrder = 1,
                        BackgroundTransparency = 1,
                        BorderSizePixel = 0,
                        Size = UDim2.new(1, 0, 0, 0),
                        AutomaticSize = Enum.AutomaticSize.Y
                    }, {
                        Layout = v3.createElement("UIListLayout", {
                            FillDirection = Enum.FillDirection.Horizontal,
                            HorizontalAlignment = Enum.HorizontalAlignment.Left,
                            SortOrder = Enum.SortOrder.LayoutOrder
                        }),
                        Icon = v3.createElement(l_ImageSetLabel_0, {
                            LayoutOrder = 1,
                            BackgroundTransparency = 1,
                            Image = l_Images_0["icons/menu/memory"],
                            Size = UDim2.new(0, 30, 0, 30),
                            ScaleType = Enum.ScaleType.Stretch
                        }),
                        Content = v3.createElement("Frame", {
                            LayoutOrder = 2,
                            BackgroundTransparency = 1,
                            Size = UDim2.new(1, -30, 0, 36)
                        }, {
                            Layout = v3.createElement("UIListLayout", {
                                FillDirection = Enum.FillDirection.Vertical,
                                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                                SortOrder = Enum.SortOrder.LayoutOrder
                            }),
                            Title = v3.createElement("TextLabel", {
                                Size = UDim2.new(1, 0, 0, 12),
                                BackgroundTransparency = 1,
                                Text = v44.permissionStorageTitle,
                                Font = l_Font_0.CaptionHeader.Font,
                                TextSize = l_Font_0.BaseSize * l_Font_0.CaptionHeader.RelativeSize,
                                TextColor3 = l_Theme_0.TextDefault.Color,
                                TextXAlignment = Enum.TextXAlignment.Left,
                                TextYAlignment = Enum.TextYAlignment.Center,
                                TextWrapped = true
                            }),
                            DescriptionText = v3.createElement("TextLabel", {
                                Size = UDim2.new(1, 0, 0, 24),
                                BackgroundTransparency = 1,
                                Text = v44.permissionStorageDesc,
                                Font = l_Font_0.CaptionBody.Font,
                                TextSize = l_Font_0.BaseSize * l_Font_0.CaptionBody.RelativeSize,
                                TextColor3 = l_Theme_0.TextDefault.Color,
                                TextXAlignment = Enum.TextXAlignment.Left,
                                TextYAlignment = Enum.TextYAlignment.Center,
                                TextWrapped = true
                            }),
                            Padding = v3.createElement("UIPadding", {
                                PaddingBottom = UDim.new(0, 12)
                            })
                        })
                    }),
                    NetworkPermission = v3.createElement("Frame", {
                        LayoutOrder = 2,
                        BackgroundTransparency = 1,
                        BorderSizePixel = 0,
                        Size = UDim2.new(1, 0, 0, 0),
                        AutomaticSize = Enum.AutomaticSize.Y
                    }, {
                        Layout = v3.createElement("UIListLayout", {
                            FillDirection = Enum.FillDirection.Horizontal,
                            HorizontalAlignment = Enum.HorizontalAlignment.Left,
                            SortOrder = Enum.SortOrder.LayoutOrder
                        }),
                        Icon = v3.createElement(l_ImageSetLabel_0, {
                            LayoutOrder = 1,
                            BackgroundTransparency = 1,
                            Image = l_Images_0["icons/menu/mobile"],
                            Size = UDim2.new(0, 30, 0, 30),
                            ScaleType = Enum.ScaleType.Stretch
                        }),
                        Content = v3.createElement("Frame", {
                            LayoutOrder = 2,
                            BackgroundTransparency = 1,
                            Size = UDim2.new(1, -30, 0, 36)
                        }, {
                            Layout = v3.createElement("UIListLayout", {
                                FillDirection = Enum.FillDirection.Vertical,
                                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                                SortOrder = Enum.SortOrder.LayoutOrder
                            }),
                            Title = v3.createElement("TextLabel", {
                                Size = UDim2.new(1, 0, 0, 12),
                                BackgroundTransparency = 1,
                                Text = v44.permissionNetworkTitle,
                                Font = l_Font_0.CaptionHeader.Font,
                                TextSize = l_Font_0.BaseSize * l_Font_0.CaptionHeader.RelativeSize,
                                TextColor3 = l_Theme_0.TextDefault.Color,
                                TextXAlignment = Enum.TextXAlignment.Left,
                                TextYAlignment = Enum.TextYAlignment.Center,
                                TextWrapped = true
                            }),
                            DescriptionText = v3.createElement("TextLabel", {
                                Size = UDim2.new(1, 0, 0, 24),
                                BackgroundTransparency = 1,
                                Text = v44.permissionNetworkDesc,
                                Font = l_Font_0.CaptionBody.Font,
                                TextSize = l_Font_0.BaseSize * l_Font_0.CaptionBody.RelativeSize,
                                TextColor3 = l_Theme_0.TextDefault.Color,
                                TextXAlignment = Enum.TextXAlignment.Left,
                                TextYAlignment = Enum.TextYAlignment.Center,
                                TextWrapped = true
                            }),
                            Padding = l_shouldShowCameraPermissionInAgreementsPrompt_0 and v3.createElement("UIPadding", {
                                PaddingBottom = UDim.new(0, 12)
                            })
                        })
                    }),
                    CameraPermission = l_shouldShowCameraPermissionInAgreementsPrompt_0 and v3.createElement("Frame", {
                        LayoutOrder = 3,
                        BackgroundTransparency = 1,
                        BorderSizePixel = 0,
                        Size = UDim2.new(1, 0, 0, 0),
                        AutomaticSize = Enum.AutomaticSize.Y
                    }, {
                        Layout = v3.createElement("UIListLayout", {
                            FillDirection = Enum.FillDirection.Horizontal,
                            HorizontalAlignment = Enum.HorizontalAlignment.Left,
                            SortOrder = Enum.SortOrder.LayoutOrder
                        }),
                        Icon = v3.createElement(l_ImageSetLabel_0, {
                            LayoutOrder = 1,
                            BackgroundTransparency = 1,
                            Image = l_Images_0["icons/menu/mobile"],
                            Size = UDim2.new(0, 30, 0, 30),
                            ScaleType = Enum.ScaleType.Stretch
                        }),
                        Content = v3.createElement("Frame", {
                            LayoutOrder = 2,
                            BackgroundTransparency = 1,
                            Size = UDim2.new(1, -30, 0, 36)
                        }, {
                            Layout = v3.createElement("UIListLayout", {
                                FillDirection = Enum.FillDirection.Vertical,
                                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                                SortOrder = Enum.SortOrder.LayoutOrder
                            }),
                            Title = v3.createElement("TextLabel", {
                                Size = UDim2.new(1, 0, 0, 12),
                                BackgroundTransparency = 1,
                                Text = v44.permissionCameraTitle,
                                Font = l_Font_0.CaptionHeader.Font,
                                TextSize = l_Font_0.BaseSize * l_Font_0.CaptionHeader.RelativeSize,
                                TextColor3 = l_Theme_0.TextDefault.Color,
                                TextXAlignment = Enum.TextXAlignment.Left,
                                TextYAlignment = Enum.TextYAlignment.Center,
                                TextWrapped = true
                            }),
                            DescriptionText = v3.createElement("TextLabel", {
                                Size = UDim2.new(1, 0, 0, 24),
                                BackgroundTransparency = 1,
                                Text = v44.permissionCameraDesc,
                                Font = l_Font_0.CaptionBody.Font,
                                TextSize = l_Font_0.BaseSize * l_Font_0.CaptionBody.RelativeSize,
                                TextColor3 = l_Theme_0.TextDefault.Color,
                                TextXAlignment = Enum.TextXAlignment.Left,
                                TextYAlignment = Enum.TextYAlignment.Center,
                                TextWrapped = true
                            })
                        })
                    })
                })
            })
        });
    end;
end;
v24.render = function(v51)
    local l_screenSize_0 = v51.props.screenSize;
    return l_withStyle_0(function(v53)
        return v8(v51.getLocalizationKeys())(function(v54)
            local v55 = v51.renderAgreementsListItems(v54);
            return v3.createElement(l_InteractiveAlert_0, {
                title = v54.title,
                middleContent = function()
                    return v51.renderMiddleContent(v54, v53, v55);
                end,
                buttonStackInfo = {
                    buttons = {
                        {
                            props = {
                                onActivated = function()
                                    v51.onDissent(v55);
                                end,
                                text = v54.dissentButton
                            }
                        },
                        {
                            buttonType = l_ButtonType_0.PrimarySystem,
                            props = {
                                onActivated = v51.onConsent,
                                text = v54.consentButton
                            }
                        }
                    }
                },
                position = UDim2.fromScale(0.5, 0.5),
                screenSize = l_screenSize_0
            });
        end);
    end);
end;
return l_RoactServices_0.connect({
    guiService = l_AppGuiService_0
})((l_RoactAppPolicy_0.connect(function(v56, _)
    return {
        shouldShowCameraPermissionInAgreementsPrompt = v56.getShouldShowCameraPermissionInAgreementsPrompt()
    };
end)((v4.connect(function(v58)
    return {
        screenSize = v58.ScreenSize
    };
end, function(v59)
    return {
        closePrompt = function()
            v59(v21());
        end,
        setAgreedUserAgreements = function(v60)
            return v59(v18(v60));
        end,
        navigateDown = function(v61)
            v59(v22(v61));
        end,
        showSecondPrompt = function(v62, v63)
            v59(v20(v19.UserAgreementsSecondPrompt, {
                agreements = v62,
                agreementsListItems = v63
            }));
        end
    };
end)(v24)))));


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local v4 = require(l_Modules_0.LuaApp.withLocalization);
local v5 = require(l_CorePackages_0.Packages.t);
local v6 = require(l_CorePackages_0.UIBlox);
local l_withStyle_0 = v6.Style.withStyle;
local l_InteractiveAlert_0 = v6.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v6.App.Button.Enum.ButtonType;
local v10 = require(l_Modules_0.LuaApp.Enum.OverlayType);
local v11 = require(l_Modules_0.LuaApp.Actions.SetCentralOverlay);
local v12 = v2.PureComponent:extend("UserAgreementsSecondPrompt");
v12.validateProps = v5.strictInterface({
    agreements = v5.array(v5.strictInterface({
        id = v5.string,
        agreementType = v5.string,
        clientType = v5.string,
        displayUrl = v5.string,
        regulationType = v5.string
    })),
    agreementsListItems = v5.table,
    screenSize = v5.Vector2,
    showFirstPrompt = v5.callback
});
v12.init = function(v13)
    v13.onAck = function()
        v13.props.showFirstPrompt(v13.props.agreements);
    end;
    v13.renderMiddleContent = function(v14, v15)
        local l_Theme_0 = v15.Theme;
        local l_Font_0 = v15.Font;
        return v2.createElement("Frame", {
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            Size = UDim2.new(1, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y
        }, {
            Agreements = v2.createElement("Frame", {
                LayoutOrder = 1,
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Size = UDim2.new(1, 0, 0, 0),
                AutomaticSize = Enum.AutomaticSize.Y
            }, {
                Layout = v2.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Vertical,
                    HorizontalAlignment = Enum.HorizontalAlignment.Left,
                    SortOrder = Enum.SortOrder.LayoutOrder
                }),
                Prefix = v2.createElement("Frame", {
                    LayoutOrder = 1,
                    BackgroundTransparency = 1,
                    BorderSizePixel = 0,
                    Size = UDim2.new(1, 0, 0, 12)
                }, {
                    PrefixText = v2.createElement("TextLabel", {
                        Size = UDim2.new(1, 0, 1, 0),
                        BackgroundTransparency = 1,
                        Text = v14.bodyTextPart1,
                        Font = l_Font_0.CaptionHeader.Font,
                        TextSize = l_Font_0.BaseSize * l_Font_0.CaptionHeader.RelativeSize,
                        TextColor3 = l_Theme_0.TextDefault.Color,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        TextYAlignment = Enum.TextYAlignment.Center,
                        TextWrapped = true
                    }),
                    Padding = v2.createElement("UIPadding", {
                        PaddingBottom = UDim.new(0, 12)
                    })
                }),
                AgreementsList = v2.createElement("Frame", {
                    LayoutOrder = 2,
                    BackgroundTransparency = 1,
                    BorderSizePixel = 0,
                    AutomaticSize = Enum.AutomaticSize.XY
                }, v13.props.agreementsListItems),
                Suffix = v2.createElement("Frame", {
                    LayoutOrder = 3,
                    BackgroundTransparency = 1,
                    BorderSizePixel = 0,
                    Size = UDim2.new(1, 0, 0, 12)
                }, {
                    Padding = v2.createElement("UIPadding", {
                        PaddingTop = UDim.new(0, 12)
                    }),
                    PrefixText = v2.createElement("TextLabel", {
                        Size = UDim2.new(1, 0, 1, 0),
                        BackgroundTransparency = 1,
                        Text = v14.bodyTextPart2,
                        Font = l_Font_0.CaptionHeader.Font,
                        TextSize = l_Font_0.BaseSize * l_Font_0.CaptionHeader.RelativeSize,
                        TextColor3 = l_Theme_0.TextDefault.Color,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        TextYAlignment = Enum.TextYAlignment.Center,
                        TextWrapped = true
                    })
                })
            })
        });
    end;
end;
v12.render = function(v18)
    local l_screenSize_0 = v18.props.screenSize;
    return l_withStyle_0(function(v20)
        return v4({
            title = "Luobu.Authentication.UserAgreementsSecondPrompt.Title",
            bodyTextPart1 = "Luobu.Authentication.UserAgreementsSecondPrompt.BodyText.Part1",
            bodyTextPart2 = "Luobu.Authentication.UserAgreementsSecondPrompt.BodyText.Part2",
            buttonText = "Luobu.Authentication.UserAgreementsSecondPrompt.Button.Acknowledge"
        })(function(v21)
            return v2.createElement(l_InteractiveAlert_0, {
                title = v21.title,
                middleContent = function()
                    return v18.renderMiddleContent(v21, v20);
                end,
                buttonStackInfo = {
                    buttons = {
                        {
                            buttonType = l_ButtonType_0.PrimarySystem,
                            props = {
                                onActivated = v18.onAck,
                                text = v21.buttonText
                            }
                        }
                    }
                },
                position = UDim2.fromScale(0.5, 0.5),
                screenSize = l_screenSize_0
            });
        end);
    end);
end;
return (v3.connect(function(v22)
    return {
        screenSize = v22.ScreenSize
    };
end, function(v23)
    return {
        showFirstPrompt = function(v24)
            v23(v11(v10.UserAgreementsPrompt, {
                agreements = v24,
                context = v10.UserAgreementsSecondPrompt
            }));
        end
    };
end)(v12));


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Roact);
local v2 = require(l_Modules_0.Common.RoactRodux);
local v3 = require(l_Modules_0.Luobu.Models.TencentAuthInfoModel);
local v4 = require(l_Modules_0.Luobu.Actions.SetTencentAuthInfo);
local _ = require(l_Modules_0.Luobu.Enum.TencentAuthType);
local v6 = v1.Component:extend("TencentAuthInfoEventReceiver");
v6.init = function(v7)
    v7.connections = {
        v7.props.RobloxEventReceiver:observeEvent("SyncTencentAuthInfo", function(v8, _)
            v7.props.setTencentAuthInfo((v3.fromJsonData(v8)));
        end)
    };
end;
v6.render = function(_)
end;
v6.willUnmount = function(v11)
    for _, v13 in pairs(v11.connections) do
        v13:disconnect();
    end;
end;
return (v2.connect(nil, function(v14)
    return {
        setTencentAuthInfo = function(v15)
            return v14(v4(v15));
        end
    };
end)(v6));


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Roact);
local v2 = require(l_Modules_0.Common.RoactRodux);
local v3 = require(l_Modules_0.Luobu.Models.TencentNoticeModel);
local v4 = require(l_Modules_0.Luobu.Actions.SetTencentNoticeInfo);
local v5 = require(l_Modules_0.Luobu.Actions.SetTencentNoticeBadgeCount);
local v6 = require(l_Modules_0.Luobu.Actions.ReadTencentNoticeId);
local v7 = require(l_Modules_0.LuaApp.Actions.SetCentralOverlay);
local v8 = require(l_Modules_0.LuaApp.Enum.OverlayType);
local v9 = require(l_Modules_0.Luobu.Enum.TencentNoticeSceneType);
local v10 = require(l_Modules_0.Luobu.Enum.TencentNoticeType);
local v11 = require(l_Modules_0.Luobu.Flags.FFlagLuobuCJVMorePageShowTencentNotice);
local v12 = require(l_Modules_0.Luobu.Flags.FFlagLuobuShowTencentNoticePopup);
local v13 = v1.Component:extend("TencentNoticeEventReceiver");
v13.init = function(v14)
    v14.connections = {
        v14.props.RobloxEventReceiver:observeEvent("SyncTencentNoticeInformation", function(v15, v16)
            local v17 = {};
            local v18 = {};
            local v19 = {};
            local v20 = 0;
            for _, v22 in ipairs(v15) do
                local v23 = v3.fromJsonData(v22);
                if v23 ~= nil then
                    table.insert(v19, v23);
                    if v23.hasRead == false then
                        v20 = v20 + 1;
                        if not (v23.type ~= v10.Text) or v23.type == v10.Image then
                            if v23.scene == v9.BeforeLogin then
                                table.insert(v17, v23);
                            elseif v23.scene == v9.AfterLogin then
                                table.insert(v18, v23);
                            end;
                        end;
                    else
                        v14.props.readTencentNoticeId(v23.noticeId);
                    end;
                end;
            end;
            if v12 then
                if v16 == v9.AfterLogin and #v18 > 0 then
                    v14.props.openTencentNoticePopup(v18);
                elseif v16 == v9.BeforeLogin and #v17 > 0 then
                    v14.props.openTencentNoticePopup(v17);
                end;
            end;
            if v11 then
                v14.props.setTencentNoticeInfo(v19);
                if v20 > 0 then
                    v14.props.setTencentNoticeBadgeCount(v20);
                end;
            end;
        end)
    };
end;
v13.render = function(_)
end;
v13.willUnmount = function(v25)
    for _, v27 in pairs(v25.connections) do
        v27:disconnect();
    end;
end;
return (v2.connect(nil, function(v28)
    return {
        openTencentNoticePopup = function(v29)
            return v28(v7(v8.TencentNoticePopup, {
                noticeList = v29
            }));
        end,
        setTencentNoticeInfo = function(v30)
            return v28(v4(v30));
        end,
        readTencentNoticeId = function(v31)
            return v28(v6(v31));
        end,
        setTencentNoticeBadgeCount = function(v32)
            return v28(v5(v32));
        end
    };
end)(v13));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_HttpService_0 = game:GetService("HttpService");
local l_UserInputService_0 = game:GetService("UserInputService");
local v4 = require(l_CorePackages_0.Roact);
local v5 = require(l_CorePackages_0.Packages.t);
local l_AppLinking_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppLinking;
local v7 = require(l_Modules_0.Common.RoactRodux);
local l_AppGuiService_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppGuiService;
local v9 = require(l_Modules_0.LuaApp.Enum.NotificationType);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v11 = require(l_Modules_0.Luobu.Constants);
local v12 = require(l_Modules_0.LuaApp.openExternalBrowser);
local v13 = v4.PureComponent:extend("TencentHelpWrapper");
v13.validateProps = v5.strictInterface({
    guiService = v5.union(v5.Instance, v5.table),
    linking = v5.table,
    openId = v5.string,
    userId = v5.string
});
v13.render = function(v14)
    local l_l_UserInputService_0_Platform_0 = l_UserInputService_0:GetPlatform();
    local v16 = true;
    if l_l_UserInputService_0_Platform_0 ~= Enum.Platform.IOS then
        v16 = l_l_UserInputService_0_Platform_0 == Enum.Platform.Android;
    end;
    if not v16 then
        v12(v14.props.linking, (string.format("%s?sign=%s&uid=%s&c1=%s", "https://www.700chat.com/xv/web/static/chat/index.html", "37ef9b97d27505cf7010cde71be4b531abd89bc57750c3c8ec20dfdeab0d5d2d38342d82206c7c73b17486525a9637055bb161", v14.props.openId, v14.props.userId)));
        return ;
    else
        v14:broadcastNotification();
        return nil;
    end;
end;
v13.broadcastNotification = function(v17)
    v17.props.guiService:BroadcastNotification(l_HttpService_0:JSONEncode({
        type = v11.TENCENT_SMART_HELP_CENTER
    }), v9.SDK_OPEN_URL);
end;
return (v7.connect(function(v18, _)
    return {
        userId = v18.LocalUserId,
        openId = v18.Luobu.MSDKAuth.openId
    };
end)((l_RoactServices_0.connect({
    guiService = l_AppGuiService_0,
    linking = l_AppLinking_0
})(v13))));


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.RoactRodux);
local v2 = require(l_CorePackages_0.Roact);
local l_withStyle_0 = require(l_CorePackages_0.UIBlox).Style.withStyle;
local v4 = require(l_CorePackages_0.Packages.t);
local v5 = v2.PureComponent:extend("NoticeListCell");
v5.validateProps = v4.strictInterface({
    screenWidth = v4.number,
    Size = v4.UDim2,
    Position = v4.UDim2,
    LayoutOrder = v4.number,
    onActivated = v4.callback,
    item = v4.table,
    dateText = v4.string,
    noticeReadStatus = v4.table
});
v5.defaultProps = {
    Size = UDim2.new(1, 0, 1, 0),
    Position = UDim2.new(0, 0, 0, 0),
    LayoutOrder = 1
};
v5.eventDisconnect = function(v6)
    if v6.onAbsolutePositionChanged then
        v6.onAbsolutePositionChanged:disconnect();
        v6.onAbsolutePositionChanged = nil;
    end;
end;
v5.onButtonUp = function(v7)
    if v7.state.buttonPressed then
        v7:setState({
            buttonPressed = false
        });
    end;
    v7:eventDisconnect();
end;
v5.onButtonDown = function(v8)
    if not v8.state.buttonPressed then
        v8:eventDisconnect();
        local l_current_0 = v8.buttonRef.current;
        if l_current_0 then
            v8.onAbsolutePositionChanged = l_current_0:GetPropertyChangedSignal("AbsolutePosition"):connect(function()
                v8:onButtonUp();
            end);
        end;
        v8:setState({
            buttonPressed = true
        });
        return ;
    else
        return ;
    end;
end;
v5.init = function(v10)
    v10.state = {
        buttonPressed = false
    };
    v10.buttonRef = v2.createRef();
    v10.onButtonInputBegan = function(_, v12)
        local v13 = v12.UserInputState == Enum.UserInputState.Begin;
        local v14 = v12.UserInputType == Enum.UserInputType.Touch;
        local v15 = v12.UserInputType == Enum.UserInputType.MouseButton1;
        if not (not v13 or not v14 and not v15) then
            v10:onButtonDown();
        end;
    end;
    v10.onButtonInputEnded = function()
        v10:onButtonUp();
    end;
    v10.onButtonActivated = function()
        v10:onButtonUp();
        local l_onActivated_0 = v10.props.onActivated;
        if l_onActivated_0 then
            l_onActivated_0();
        end;
    end;
end;
local function _(v17)
    if not (v17 ~= nil) or v17 == "" then
        return "";
    else
        return v17:sub(1, (string.find(v17, "\n")));
    end;
end;
v5.render = function(v19)
    local l_buttonPressed_0 = v19.state.buttonPressed;
    local l_screenWidth_0 = v19.props.screenWidth;
    local l_Size_0 = v19.props.Size;
    local l_Position_0 = v19.props.Position;
    local l_LayoutOrder_0 = v19.props.LayoutOrder;
    local l_item_0 = v19.props.item;
    local l_title_0 = l_item_0.title;
    local v27 = l_item_0.hasRead or v19.props.noticeReadStatus[l_item_0.noticeId];
    local v28 = (l_screenWidth_0 - 24) - 12;
    local l_content_0 = v19.props.item.content;
    local v30 = (not (l_content_0 ~= nil) or l_content_0 == "") and "" or l_content_0:sub(1, (string.find(l_content_0, "\n")));
    return l_withStyle_0(function(v31)
        local v32 = not not l_buttonPressed_0 and v31.Theme.BackgroundOnPress or v31.Theme.BackgroundDefault;
        local v33 = not not v27 and v31.Theme.TextDefault or v31.Theme.TextEmphasis;
        return v2.createElement("ImageButton", {
            Size = l_Size_0,
            Position = l_Position_0,
            AutoButtonColor = false,
            LayoutOrder = l_LayoutOrder_0,
            BackgroundColor3 = v32.Color,
            BackgroundTransparency = v32.Transparency,
            BorderSizePixel = 0,
            [v2.Event.InputBegan] = v19.onButtonInputBegan,
            [v2.Event.InputEnded] = v19.onButtonInputEnded,
            [v2.Event.Activated] = v19.onButtonActivated,
            [v2.Ref] = v19.buttonRef
        }, {
            TitleText = v2.createElement("TextLabel", {
                Size = UDim2.new(0.5, 0, 0, 22),
                Position = UDim2.fromOffset(24, 14),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Text = l_title_0,
                Font = v31.Font.Header2.Font,
                TextSize = v31.Font.BaseSize * v31.Font.Header2.RelativeSize,
                TextColor3 = v33.Color,
                TextTruncate = Enum.TextTruncate.AtEnd,
                TextTransparency = v33.Transparency,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Top
            }),
            DescriptionText = v2.createElement("TextLabel", {
                Size = UDim2.fromOffset(v28, 22),
                Position = UDim2.fromOffset(24, 36),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Text = v30,
                Font = v31.Font.CaptionBody.Font,
                TextSize = v31.Font.BaseSize * v31.Font.CaptionBody.RelativeSize,
                TextWrapped = false,
                TextTruncate = Enum.TextTruncate.AtEnd,
                TextColor3 = v33.Color,
                TextTransparency = v33.Transparency,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Top
            }),
            DateLabel = v2.createElement("TextLabel", {
                AnchorPoint = Vector2.new(1, 0),
                Size = UDim2.new(0, 100, 0, 22),
                Position = UDim2.new(1, -12, 0, 14),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Text = v19.props.dateText,
                Font = v31.Font.CaptionBody.Font,
                TextSize = v31.Font.BaseSize * v31.Font.CaptionBody.RelativeSize,
                TextColor3 = v33.Color,
                TextTransparency = v33.Transparency,
                TextXAlignment = Enum.TextXAlignment.Right,
                TextYAlignment = Enum.TextYAlignment.Center
            })
        });
    end);
end;
v5.willUnmount = function(v34)
    v34:eventDisconnect();
end;
return (v1.connect(function(v35)
    return {
        screenWidth = v35.ScreenSize.X,
        noticeReadStatus = v35.Luobu.TencentNoticeReadStatus
    };
end)(v5));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local v4 = require(l_CorePackages_0.UIBlox);
local l_withStyle_0 = v4.Style.withStyle;
local l_FormFactor_0 = require(l_CorePackages_0.Workspace.Packages.FormFactor).Enums.FormFactor;
local _ = require(l_Modules_0.LuaApp.AppPage);
local v8 = require(l_Modules_0.LuaApp.Components.TopBar.TopBar);
local v9 = require(l_Modules_0.Luobu.Components.More.TencentNoticeCenter.TencentNoticeList);
local v10 = require(l_Modules_0.Luobu.Components.More.TencentNoticeCenter.TencentNoticeItemContainer);
local v11 = require(l_Modules_0.LuaApp.Components.More.MorePageScrollingFrame);
local v12 = require(l_CorePackages_0.Packages.t);
local l_withLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).withLocalization;
local l_EmptyState_0 = v4.App.Indicator.EmptyState;
local v15 = v2.PureComponent:extend("TencentNoticeCenterPage");
v15.validateProps = v12.strictInterface({
    formFactor = v12.string,
    noticeList = v12.optional(v12.table)
});
v15.init = function(v16)
    v16.renderItem = function(v17, v18)
        return v2.createElement(v10, {
            item = v17,
            layoutInfo = v18
        });
    end;
end;
v15.render = function(v19)
    return l_withStyle_0(function(v20)
        local _ = nil;
        local l_BackgroundDefault_0 = v20.Theme.BackgroundDefault;
        local v23 = v19.props.formFactor == l_FormFactor_0.WIDE;
        local l_noticeList_0 = v19.props.noticeList;
        return v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 1, 0),
            BorderSizePixel = 0,
            BackgroundColor3 = l_BackgroundDefault_0.Color,
            BackgroundTransparency = l_BackgroundDefault_0.Transparency
        }, {
            TopBar = v2.createElement(v8.Container, {
                leftItem = v8.BackButton,
                rightItems = {
                    v8.BuyRobuxButton,
                    v8.NotificationsButton
                }
            }),
            Content = v2.createElement(v8.PageContent, {}, {
                ContentFrame = if l_noticeList_0 == nil then v2.createElement("Frame", {
                    Position = UDim2.fromScale(0, 0),
                    Size = UDim2.fromScale(1, 1),
                    BackgroundColor3 = l_BackgroundDefault_0.Color
                }, {
                    EmptySection = l_withLocalization_0({
                        emptyText = "CommonUI.Features.Label.MoreEvents"
                    })(function(v25)
                        return v2.createElement(l_EmptyState_0, {
                            text = v25.emptyText,
                            size = UDim2.fromScale(1, 1)
                        });
                    end)
                }) else v2.createElement(v11, {
                    Position = UDim2.fromScale(0, 0),
                    Size = UDim2.fromScale(1, 1)
                }, {
                    Layout = v2.createElement("UIListLayout", {
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        HorizontalAlignment = Enum.HorizontalAlignment.Center
                    }),
                    UIPadding = v2.createElement("UIPadding", {
                        PaddingLeft = UDim.new(0, not v23 and 0 or 60),
                        PaddingRight = UDim.new(0, not v23 and 0 or 60),
                        PaddingTop = UDim.new(0, not v23 and 20 or 40),
                        PaddingBottom = UDim.new(0, not v23 and 20 or 40)
                    }),
                    TencentNoticeCenterList = l_noticeList_0 and v2.createElement(v9, {
                        itemList = l_noticeList_0,
                        renderItem = v19.renderItem
                    })
                })
            })
        });
    end);
end;
return v3.connect(function(v26)
    return {
        formFactor = v26.FormFactor,
        noticeList = v26.Luobu.TencentNotice.noticeList
    };
end)(v15);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local v4 = require(l_CorePackages_0.UIBlox);
local l_withStyle_0 = v4.Style.withStyle;
local l_LoadableImage_0 = v4.App.Loading.LoadableImage;
local _ = require(l_Modules_0.Luobu.Constants);
local _ = require(l_Modules_0.LuaApp.AppPage);
local v9 = require(l_Modules_0.LuaApp.Components.TopBar.TopBar);
local v10 = require(l_Modules_0.LuaApp.Components.More.MorePageScrollingFrame);
local v11 = require(l_Modules_0.LuaApp.Thunks.OpenWebview);
local v12 = require(l_CorePackages_0.Packages.t);
local v13 = require(l_Modules_0.Common.Text);
local l_FormFactor_0 = require(l_CorePackages_0.Workspace.Packages.FormFactor).Enums.FormFactor;
local v15 = require(l_Modules_0.Luobu.Enum.TencentNoticeType);
local v16 = v2.PureComponent:extend("TencentNoticeContentPage");
v16.validateProps = v12.strictInterface({
    notice = v12.table,
    dateText = v12.string,
    screenWidth = v12.number,
    screenHeight = v12.number,
    formFactor = v12.string,
    openNoticeDetail = v12.callback
});
v16.init = function(v17)
    v17.onNoticeClicked = function()
        v17.props.openNoticeDetail(v17.props.notice.noticeUrl, v17.props.notice.title);
    end;
end;
v16.render = function(v18)
    local l_title_0 = v18.props.notice.title;
    local l_dateText_0 = v18.props.dateText;
    local l_screenWidth_0 = v18.props.screenWidth;
    local l_screenHeight_0 = v18.props.screenHeight;
    local v23 = l_screenWidth_0 - 48;
    return l_withStyle_0(function(v24)
        local l_BackgroundUIDefault_0 = v24.Theme.BackgroundUIDefault;
        local l_Font_0 = v24.Font;
        local l_Theme_0 = v24.Theme;
        return v2.createElement("Frame", {
            Size = UDim2.fromOffset(l_screenWidth_0, l_screenHeight_0),
            BorderSizePixel = 0,
            BackgroundColor3 = l_BackgroundUIDefault_0.Color,
            BackgroundTransparency = l_BackgroundUIDefault_0.Transparency
        }, {
            TopBarFrame = v2.createElement(v9.Container, {
                titleText = "",
                leftItem = v9.BackButton
            }),
            PageContent = v2.createElement(v9.PageContent, {}, {
                Scroller = v2.createElement(v10, {
                    Position = UDim2.fromScale(0, 0),
                    Size = UDim2.fromScale(1, 1)
                }, {
                    Title = v2.createElement("TextLabel", {
                        Size = UDim2.new(0.85, 0, 0, 28),
                        Position = UDim2.fromOffset(24, 24),
                        Text = l_title_0,
                        Font = l_Font_0.Header2.Font,
                        TextSize = v24.Font.BaseSize * v24.Font.Header2.RelativeSize,
                        TextColor3 = l_Theme_0.TextEmphasis.Color,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        TextTruncate = Enum.TextTruncate.AtEnd,
                        BackgroundTransparency = 1
                    }),
                    DateLabel = v2.createElement("TextLabel", {
                        Size = UDim2.fromOffset(v23, 14),
                        Position = UDim2.fromOffset(24, 64),
                        Text = l_dateText_0,
                        TextColor3 = l_Theme_0.TextDefault.Color,
                        Font = v24.Font.CaptionBody.Font,
                        TextSize = v24.Font.BaseSize * v24.Font.CaptionBody.RelativeSize,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        BackgroundTransparency = 1
                    }),
                    DividerLine = v2.createElement("Frame", {
                        BorderSizePixel = 0,
                        BackgroundColor3 = l_Theme_0.Divider.Color,
                        BackgroundTransparency = l_Theme_0.Divider.Transparency,
                        Size = UDim2.fromOffset(v23, 1),
                        Position = UDim2.fromOffset(24, 90)
                    }),
                    ContentFrame = v18:renderContent(l_screenWidth_0, v24)
                })
            })
        });
    end);
end;
v16.renderContent = function(v28, v29, v30)
    local l_content_0 = v28.props.notice.content;
    local l_type_0 = v28.props.notice.type;
    local l_portraitPicUrl_0 = v28.props.notice.portraitPicUrl;
    local l_landscapePicUrl_0 = v28.props.notice.landscapePicUrl;
    local l_formFactor_0 = v28.props.formFactor;
    local l_Font_1 = v30.Font.Body.Font;
    local v37 = v30.Font.BaseSize * v30.Font.Body.RelativeSize;
    local l_TextDefault_0 = v30.Theme.TextDefault;
    local l_noticeUrl_0 = v28.props.notice.noticeUrl;
    if l_type_0 == v15.Text then
        local v40 = v29 - 48;
        local v41 = l_content_0 ~= nil;
        local v42 = v13.GetTextHeight(l_content_0, l_Font_1, v37, 10000);
        local l_screenHeight_1 = v28.props.screenHeight;
        return v2.createElement("TextButton", {
            Position = UDim2.fromOffset(24, 115),
            Size = UDim2.fromOffset(v40, v42 < l_screenHeight_1 and l_screenHeight_1 or v42),
            Text = l_content_0,
            Font = l_Font_1,
            TextSize = v37,
            TextXAlignment = Enum.TextXAlignment.Left,
            TextYAlignment = Enum.TextYAlignment.Top,
            TextColor3 = l_TextDefault_0.Color,
            TextWrapped = true,
            BackgroundTransparency = 1,
            [v2.Event.Activated] = v28.onNoticeClicked,
            Active = v41
        });
    elseif l_type_0 == v15.Image then
        local v44 = l_noticeUrl_0 ~= nil;
        local v45 = v29 - 64;
        local v46 = l_formFactor_0 == l_FormFactor_0.WIDE;
        return v2.createElement("TextButton", {
            Size = UDim2.fromOffset(v45, (not v46 and 1.4516 or 0.4074) * v45),
            Position = UDim2.fromOffset(32, 115),
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            Active = v44,
            [v2.Event.Activated] = v28.onNoticeClicked
        }, (v2.createElement(l_LoadableImage_0, {
            Size = UDim2.new(1, 0, 1, 0),
            Image = not not v46 and l_landscapePicUrl_0 or l_portraitPicUrl_0,
            useShimmerAnimationWhileLoading = true,
            showFailedStateWhenLoadingFailed = true
        })));
    else
        warn("Error: TencentNoticeType is incorrect. Please fix or add new type:" .. l_type_0);
        return ;
    end;
end;
return v3.connect(function(v47)
    return {
        formFactor = v47.FormFactor,
        screenWidth = v47.ScreenSize.X,
        screenHeight = v47.ScreenSize.Y
    };
end, function(v48)
    return {
        openNoticeDetail = function(v49, v50)
            v48(v11(v49, v50));
        end
    };
end)(v16);