local l_script_FirstAncestor_0 = script:FindFirstAncestor("VerifiedBadges");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local v3 = require(l_Parent_0.UIBlox);
local l_useSelector_0 = require(l_Parent_0.RoactUtils).Hooks.RoactRodux.useSelector;
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local v6 = require(l_script_FirstAncestor_0.constants);
local v7 = UDim.new(0, 24);
local v8 = UDim.new(0, 12);
local function v10(v9)
    return v9.ScreenSize;
end;
return function(v11)
    local v12 = v3.Core.Style.useStyle();
    local v13 = l_useSelector_0(v10);
    local v14 = l_useLocalization_0({
        titleText = "Feature.ProfileBadges.VerifiedBadgeInfoTitle",
        bodyText = "Feature.ProfileBadges.VerifiedBadgeInfo",
        learnMoreText = "Feature.ProfileBadges.VerifiedBadgeInfoLink"
    });
    return v2.createElement(v3.App.Dialog.Modal.PartialPageModal, {
        title = v14.titleText,
        screenSize = v13,
        buttonStackProps = {
            buttons = {
                {
                    buttonType = v3.App.Button.Enum.ButtonType.PrimarySystem,
                    props = {
                        onActivated = v2.useCallback(function()
                            if v11.onConfirm then
                                v11.onConfirm();
                            end;
                        end, {
                            v11
                        }),
                        text = v14.learnMoreText
                    }
                }
            }
        },
        contentPadding = v7,
        onCloseClicked = v2.useCallback(function()
            if v11.onClose then
                v11.onClose();
            end;
        end, {
            v11
        })
    }, {
        Wrapper = v2.createElement("Frame", {
            Size = UDim2.fromScale(1, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1
        }, {
            Layout = v2.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                Padding = v8
            }),
            Padding = v2.createElement("UIPadding", {
                PaddingTop = v8,
                PaddingBottom = v8
            }),
            Icon = v2.createElement(v3.App.Text.StyledTextLabel, {
                layoutOrder = 1,
                text = v6.VERIFIED_EMOJI,
                fontStyle = v12.Font.Title,
                colorStyle = v12.Theme.TextEmphasis,
                automaticSize = Enum.AutomaticSize.XY,
                fluidSizing = false
            }),
            Body = v2.createElement(v3.App.Text.StyledTextLabel, {
                layoutOrder = 2,
                text = v14.bodyText,
                fontStyle = v12.Font.Body,
                colorStyle = v12.Theme.TextMuted,
                size = UDim2.fromScale(1, 0),
                automaticSize = Enum.AutomaticSize.Y,
                fluidSizing = false
            })
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VerifiedBadges");
local v1 = require(l_script_FirstAncestor_0.Parent.Cryo);
local v2 = require(l_script_FirstAncestor_0.Parent.React);
local v3 = require(l_script_FirstAncestor_0.Parent.ReactRoblox);
local v4 = {
    anchorPoint = Vector2.new(),
    position = UDim2.new(),
    color = Color3.fromHex("#fff"),
    font = Enum.Font.Gotham,
    size = UDim2.fromScale(1, 0),
    automaticSize = Enum.AutomaticSize.XY
};
return function(v5)
    local v6 = v1.Dictionary.join(v4, v5);
    if v6.children then
        assert(v2.Children.count(v6.children) <= 1, "EmojiWrapper can only contain one child");
    end;
    if v6.emoji == "" then
        return v6.children;
    else
        local v7, v8 = v2.useState(0);
        local v9, v10 = v2.useState(-1);
        return v2.createElement("Frame", {
            LayoutOrder = v6.layoutOrder,
            AnchorPoint = v6.anchorPoint,
            Position = v6.position,
            Size = v6.size,
            AutomaticSize = v6.automaticSize,
            BackgroundTransparency = 1
        }, {
            Layout = v2.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Horizontal,
                HorizontalAlignment = v6.horizontalAlignment,
                VerticalAlignment = v6.verticalAlignment,
                Padding = UDim.new(0, -v7)
            }),
            ChildrenWrapper = v2.createElement("Frame", {
                AutomaticSize = Enum.AutomaticSize.XY,
                BackgroundTransparency = 1,
                LayoutOrder = 1,
                [v3.Change.AbsoluteSize] = v2.useCallback(function(v11)
                    local l_Y_0 = v11.AbsoluteSize.Y;
                    if l_Y_0 ~= v9 then
                        v10(v7);
                        v8(l_Y_0);
                    end;
                end, {
                    v7,
                    v9
                })
            }, {
                Padding = v2.createElement("UIPadding", {
                    PaddingRight = UDim.new(0, v7)
                }),
                Children = v2.createElement(v2.Fragment, nil, v6.children)
            }),
            Emoji = v2.createElement("TextLabel", {
                LayoutOrder = 2,
                Text = v6.emoji,
                Font = v6.font,
                TextColor3 = v6.color,
                TextSize = v7,
                BackgroundTransparency = 1,
                TextYAlignment = Enum.TextYAlignment.Center,
                TextXAlignment = Enum.TextXAlignment.Center,
                Size = UDim2.fromOffset(v7, v7)
            }, {
                Button = v5.onActivated and v2.createElement("ImageButton", {
                    Size = UDim2.fromScale(1, 1),
                    BackgroundTransparency = 1,
                    [v3.Event.Activated] = v5.onActivated
                })
            })
        });
    end;
end;


local v0 = require(script:FindFirstAncestor("VerifiedBadges").constants);
return function(v1)
    return v1 .. v0.PREMIUM_EMOJI;
end;


local v0 = require(script:FindFirstAncestor("VerifiedBadges").constants);
return function(v1)
    return v1 .. v0.VERIFIED_EMOJI;
end;


return function(v0, v1)
    local v2 = not not v0.GameDetails[v1.universeId] and v0.GameDetails[v1.universeId].creator or nil;
    local v3 = "";
    if not (v2 ~= nil) or v2.id == nil then
        return false;
    else
        v3 = tostring(v2.id);
        if not (not v2 or not v0.VerifiedBadges) then
            if v0.VerifiedBadges.VerifiedUsers and v2.type == Enum.CreatorType.User.Name then
                return v0.VerifiedBadges.VerifiedUsers[tostring(v3)] == true;
            elseif v0.VerifiedBadges.VerifiedGroups and v2.type == Enum.CreatorType.Group.Name then
                return v0.VerifiedBadges.VerifiedGroups[tostring(v3)] == true;
            end;
        end;
        return false;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VerifiedBadges");
local v1 = require(l_script_FirstAncestor_0.Flags.getFFlagOverridePlayerVerifiedBadge);
local v2 = require(l_script_FirstAncestor_0.Flags.getFStringWhitelistVerifiedUserId);
return function(v3)
    if not v1() then
        if tostring(v3.UserId) == v2() then
            return true;
        elseif v3.HasVerifiedBadge ~= nil then
            return v3.HasVerifiedBadge;
        else
            return false;
        end;
    else
        return true;
    end;
end;


return {
    VERIFIED_EMOJI = utf8.char(57344),
    PREMIUM_EMOJI = utf8.char(57345)
};


local l_Parent_0 = script:FindFirstAncestor("VerifiedBadges").Parent;
local v1 = require(l_Parent_0.UsersNetworking);
local v2 = require(l_Parent_0.FriendsNetworking);
local v3 = require(l_Parent_0.RoduxNetworking);
local v4 = require(l_Parent_0.HttpRequest);
local v5 = v3.config({
    keyPath = "VerifiedBadges.NetworkStatus",
    networkImpl = v4.config({
        requestFunction = v4.requestFunctions.RequestInternal,
        maxRetryCount = 0
    })
});
return {
    RoduxNetworking = v5,
    FriendsNetworking = v2.config({
        roduxNetworking = v5
    }),
    UsersNetworking = v1.config({
        roduxNetworking = v5
    })
};


local v0 = require(script.constants);
return {
    EmojiWrapper = require(script.Components.EmojiWrapper),
    AboutVerifiedBadgeModal = require(script.Components.AboutVerifiedBadgeModal),
    installReducer = require(script.installReducer),
    emoji = {
        verified = v0.VERIFIED_EMOJI,
        premium = v0.PREMIUM_EMOJI
    },
    appendVerifiedBadge = require(script.Utils.appendVerifiedBadge),
    appendPremiumBadge = require(script.Utils.appendPremiumBadge),
    isCreatorOfGameVerified = require(script.Utils.isCreatorOfGameVerified),
    isPlayerVerified = require(script.Utils.isPlayerVerified)
};


return {
    name = script.Parent.Name,
    storyRoots = {
        script.Parent.Components
    },
    roact = require(script:FindFirstAncestor("VerifiedBadges").Parent.Dev.RoactCompat)
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VerifiedBadges");
local v1 = require(l_script_FirstAncestor_0.Parent.Rodux);
local v2 = require(l_script_FirstAncestor_0.Parent.Cryo);
return v1.createReducer({}, {
    AddGameDetails = function(v3, v4)
        local v5 = {};
        for _, v7 in pairs(v4.gameDetails) do
            local v8 = tostring(v7.creator.id);
            local l_type_0 = v7.creator.type;
            local l_hasVerifiedBadge_0 = v7.creator.hasVerifiedBadge;
            if l_type_0 == Enum.CreatorType.Group.Name then
                v5[v8] = not not l_hasVerifiedBadge_0 or v2.None;
            end;
        end;
        return v2.Dictionary.join(v3, v5);
    end,
    SetAssetInfoFromCatalogItemAction = function(v11, v12)
        if v12.assetData.creatorType ~= Enum.CreatorType.Group.Name then
            return v11;
        else
            return v2.Dictionary.join(v11, {
                [tostring(v12.assetData.creatorTargetId)] = not not v12.assetData.creatorHasVerifiedBadge or v2.None
            });
        end;
    end
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VerifiedBadges");
local v1 = require(l_script_FirstAncestor_0.Parent.Rodux);
local l_RoduxNetworking_0 = require(l_script_FirstAncestor_0.dependencies).RoduxNetworking;
return function()
    return v1.combineReducers({
        VerifiedUsers = require(script.VerifiedUsers),
        VerifiedGroups = require(script.VerifiedGroups),
        NetworkStatus = l_RoduxNetworking_0.installReducer()
    });
end;


local l_Parent_0 = script.Parent.Parent;
local l_MessageBus_0 = require(l_Parent_0.MessageBus).MessageBus;
local v2 = require(l_Parent_0.t);
local _ = require(script.Parent.VideoProtocolTypes);
local v4 = {
    GET_RECORDING_DURATION_DESCRIPTOR = {
        fid = l_MessageBus_0.getMessageId("Video", "getRecordingDuration"),
        validateParams = v2.table
    }
};
v4.__index = v4;
v4.new = function(v5)
    return (setmetatable({
        messageBus = v5 or l_MessageBus_0
    }, v4));
end;
v4.getRecordingDuration = function(v6)
    return v6.messageBus.call(v6.GET_RECORDING_DURATION_DESCRIPTOR, {});
end;
v4.default = v4.new();
return v4;


local _ = require(game:GetService("CorePackages").Workspace.Packages.MessageBus);
return nil;


local _ = require(script.VideoProtocolTypes);
return require(script.VideoProtocol);


local v0 = require(script:FindFirstAncestor("VirtualEvents").enums);
local v1 = require(script.Parent.sendEventDeferred);
return function(v2)
    v1(v0.AnalyticsEvent.EventDetailsPageVisit, v2);
end;


local v0 = require(script:FindFirstAncestor("VirtualEvents").enums);
local v1 = require(script.Parent.sendEventDeferred);
return function(v2)
    v1(v0.AnalyticsEvent.EventNotificationEnabled, v2);
end;


local v0 = require(script:FindFirstAncestor("VirtualEvents").enums);
local v1 = require(script.Parent.sendEventDeferred);
return function(v2)
    v1(v0.AnalyticsEvent.ShareVirtualEventIconClicked, v2);
end;


local v0 = require(script:FindFirstAncestor("VirtualEvents").enums);
local v1 = require(script.Parent.sendEventDeferred);
return function(v2)
    v1(v0.AnalyticsEvent.VirtualEventImpression, v2);
end;


local v0 = require(script:FindFirstAncestor("VirtualEvents").enums);
local v1 = require(script.Parent.sendEventDeferred);
return function(v2)
    v1(v0.AnalyticsEvent.VirtualEventJoined, v2);
end;


local v0 = require(script:FindFirstAncestor("VirtualEvents").enums);
local v1 = require(script.Parent.sendEventDeferred);
return function(v2)
    v1(v0.AnalyticsEvent.VirtualEventLinkCopied, v2);
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.enums);
local _ = require(l_script_FirstAncestor_0.types);
local v3 = require(script.Parent.sendEventDeferred);
return function(v4)
    v3(v1.AnalyticsEvent.VirtualEventRSVP, v4);
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local l_EventIngestService_0 = game:GetService("EventIngestService");
local l_HttpService_0 = game:GetService("HttpService");
local l_getPlatformTarget_0 = require(l_script_FirstAncestor_0.Parent.Analytics).getPlatformTarget;
local v4 = require(l_script_FirstAncestor_0.logger);
return function(v5, v6)
    v4:debug(string.format("Fired %q with payload %s", v5, l_HttpService_0:JSONEncode(v6)));
    l_EventIngestService_0:SendEventDeferred(l_getPlatformTarget_0(), "virtualEvents", v5, v6);
end;


local _ = require(script:FindFirstAncestor("VirtualEvents").Parent.GraphQLServer);
return function(v1)
    for _, v3 in v1, nil, nil do
        if not (not (v3.assetType == "Image") or not v3.imageId) then
            return ("rbxassetid://%s"):format(v3.imageId);
        end;
    end;
    return nil;
end;


return function(v0)
    local v1 = DateTime.now();
    local _ = nil;
    return ("%s AT %s"):format(v0:FormatLocalTime(v1:ToLocalTime().Year < v0:ToLocalTime().Year and "ll" or "ddd, MMM DD", "en-us"), v0:FormatLocalTime("LT", "en-us")):upper();
end;


return function(v0)
    local v1 = math.abs(v0);
    local v2 = nil;
    v2 = if v1 >= 1000000000 then ("%.0fB"):format((math.floor(v0 / 1000000000))) else if v1 >= 1000000 then if v1 >= 100000000 then ("%.0fM"):format((math.floor(v0 / 1000000))) else ("%.1fM"):format(v0 / 1000000) else if v1 >= 1000 then if v1 >= 100000 then ("%.0fK"):format((math.floor(v0 / 1000))) else ("%.1fK"):format(v0 / 1000) else tostring(v0);
    local v3, v4 = v2:match("(%d+)%.0(%w+)");
    if not (not v3 or not v4) then
        v2 = v3 .. v4;
    end;
    return v2;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local _ = require(l_script_FirstAncestor_0.Parent.GraphQLServer);
local _ = require(l_script_FirstAncestor_0.types);
local v3 = require(l_script_FirstAncestor_0.Common.getVirtualEventDates);
return function(v4, v5)
    local v6 = v3(v4);
    local v7 = v6.startDate.UnixTimestamp - v5.UnixTimestamp;
    local v8 = v6.endDate.UnixTimestamp - v5.UnixTimestamp;
    if v6.startDate.UnixTimestamp <= v5.UnixTimestamp then
        if v5.UnixTimestamp < v6.endDate.UnixTimestamp then
            if v8 <= 14400 then
                return "ElapsedImminent";
            else
                return "Ongoing";
            end;
        else
            return "Elapsed";
        end;
    elseif v7 > 0 and v7 <= 14400 then
        return "UpcomingImminent";
    else
        return "Upcoming";
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local _ = require(l_script_FirstAncestor_0.Parent.GraphQLServer);
local v2 = require(l_script_FirstAncestor_0.constants);
return function(v3)
    local v4 = {};
    if v3 then
        for _, v6 in v3, nil, nil do
            if not (not (v6.assetType == "Image") or not v6.imageId) then
                table.insert(v4, {
                    imageId = ("rbxassetid://%s"):format(v6.imageId),
                    isVideo = false
                });
            end;
        end;
    end;
    if #v4 > 0 then
        return v4;
    else
        return {
            {
                imageId = v2.DEFAULT_EVENT_THUMBNAIL,
                isVideo = false
            }
        };
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local _ = require(l_script_FirstAncestor_0.Parent.ApolloClient);
local l_RetrievalStatus_0 = require(l_script_FirstAncestor_0.Parent.Http).Enum.RetrievalStatus;
return function(v3)
    if not v3.loading then
        if not v3.data then
            if not v3.error then
                return l_RetrievalStatus_0.NotStarted;
            else
                return l_RetrievalStatus_0.Failed;
            end;
        else
            return l_RetrievalStatus_0.Done;
        end;
    else
        return l_RetrievalStatus_0.Fetching;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local _ = require(l_script_FirstAncestor_0.Parent.GraphQLServer);
local v2 = require(l_script_FirstAncestor_0.Common.getVirtualEventDates);
return function(v3, v4)
    local v5 = v2(v3);
    if v4.UnixTimestamp < v5.startDate.UnixTimestamp then
        return math.huge;
    elseif v5.endDate.UnixTimestamp < v4.UnixTimestamp then
        return 0;
    else
        return (v5.endDate.UnixTimestamp - v5.startDate.UnixTimestamp) - (v4.UnixTimestamp - v5.startDate.UnixTimestamp);
    end;
end;


local _ = require(script:FindFirstAncestor("VirtualEvents").Parent.GraphQLServer);
return function(v1)
    return {
        startDate = if not not v1.eventTime and v1.eventTime.startUtc then DateTime.fromIsoDate(v1.eventTime.startUtc) else nil or DateTime.now(),
        endDate = if not not v1.eventTime and v1.eventTime.endUtc then DateTime.fromIsoDate(v1.eventTime.endUtc) else nil or DateTime.now()
    };
end;


return function(v0)
    if v0.title == nil then
        return false;
    elseif v0.imageUrl == nil then
        return false;
    elseif v0.pagePath == nil then
        return false;
    else
        return true;
    end;
end;


local _ = require(script:FindFirstAncestor("VirtualEvents").Parent.GraphQLServer);
return function(v1)
    local v2 = table.clone(v1);
    table.sort(v2, function(v3, v4)
        if ((not v3.eventTime or not v3.eventTime.startUtc) or not v4.eventTime) or not v4.eventTime.startUtc then
            return true;
        else
            return (DateTime.fromIsoDate(v3.eventTime.startUtc) or DateTime.now()).UnixTimestamp < (DateTime.fromIsoDate(v4.eventTime.startUtc) or DateTime.now()).UnixTimestamp;
        end;
    end);
    return v2;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local l_Players_0 = game:GetService("Players");
local _ = require(l_script_FirstAncestor_0.Parent.GraphQLServer);
local v3 = require(l_script_FirstAncestor_0.Parent.React);
local v4 = require(l_script_FirstAncestor_0.Components.AttendanceCount);
local v5 = require(l_script_FirstAncestor_0.Components.FacePile);
local _ = require(l_script_FirstAncestor_0.types);
return function(v7)
    local l_experienceDetails_0 = v7.virtualEvent.experienceDetails;
    local l_rsvpCounters_0 = v7.virtualEvent.rsvpCounters;
    local v13 = v3.useMemo(function()
        local v10 = {};
        if v7.virtualEvent.rsvps then
            for _, v12 in v7.virtualEvent.rsvps, nil, nil do
                if v12.rsvpStatus == "going" then
                    table.insert(v10, (tostring(v12.userId)));
                end;
            end;
        end;
        return v10;
    end, {
        v7.virtualEvent
    });
    if not ((not (v7.eventStatus == "Ongoing") or not l_experienceDetails_0) or l_experienceDetails_0.playing ~= 0) or not (not (v7.eventStatus ~= "Ongoing") or not l_rsvpCounters_0) and l_rsvpCounters_0.going == 0 then
        return nil;
    else
        return v3.createElement("Folder", nil, {
            Layout = v3.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                Padding = UDim.new(0, 8)
            }),
            AttendanceCount = v3.createElement(v4, {
                layoutOrder = 1,
                eventStatus = v7.eventStatus,
                interested = if not not l_rsvpCounters_0 and l_rsvpCounters_0.going then l_rsvpCounters_0.going else 0,
                attending = if not not l_experienceDetails_0 and l_experienceDetails_0.playing then l_experienceDetails_0.playing else 0
            }),
            FacePile = v3.createElement(v5, {
                layoutOrder = 2,
                userIds = v13,
                desiredFirstUserId = if not l_Players_0.LocalPlayer then nil else tostring(l_Players_0.LocalPlayer.UserId)
            })
        });
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.React);
local v2 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local l_useLocalization_0 = require(l_script_FirstAncestor_0.Parent.Localization).Hooks.useLocalization;
local v4 = require(l_script_FirstAncestor_0.Common.formatNumberWithShortUnits);
local _ = require(l_script_FirstAncestor_0.types);
local l_ImageSetLabel_0 = v2.Core.ImageSet.ImageSetLabel;
local l_Images_0 = v2.App.ImageSet.Images;
local l_StyledTextLabel_0 = v2.App.Text.StyledTextLabel;
local l_useStyle_0 = v2.Core.Style.useStyle;
local v10 = l_Images_0["icons/status/games/people-playing_small"];
local v11 = UDim.new(0, 6);
return function(v12)
    local v13 = l_useStyle_0();
    local v14 = l_useLocalization_0({
        interested = "Feature.VirtualEvents.AttendanceBeforeEvent",
        attendingNow = "Feature.VirtualEvents.AttendanceDuringEvent"
    });
    local v15 = v12.eventStatus == "Ongoing";
    return v1.createElement("Frame", {
        LayoutOrder = v12.layoutOrder,
        BackgroundTransparency = 1,
        AutomaticSize = Enum.AutomaticSize.XY
    }, {
        Layout = v1.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Horizontal,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            Padding = v11
        }),
        Icon = v1.createElement(l_ImageSetLabel_0, {
            LayoutOrder = 1,
            Size = UDim2.fromOffset(18, 18),
            Image = v10,
            ImageColor3 = v13.Theme.IconEmphasis.Color,
            BackgroundTransparency = 1
        }),
        Label = v1.createElement(l_StyledTextLabel_0, {
            layoutOrder = 2,
            fontStyle = v13.Font.Header1,
            colorStyle = v13.Theme.TextEmphasis,
            text = ("%s %s"):format(v4(if not v15 then v12.interested else v12.attending), if not v15 then v14.interested else v14.attendingNow)
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.React);
local v2 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local l_useLocalization_0 = require(l_script_FirstAncestor_0.Parent.Localization).Hooks.useLocalization;
local l_ExperienceTileV3_0 = v2.App.Tile.ExperienceTileV3;
local l_ShimmerPanel_0 = v2.App.Loading.ShimmerPanel;
local l_StyledTextLabel_0 = v2.App.Text.StyledTextLabel;
local l_useStyle_0 = v2.Core.Style.useStyle;
local v8 = UDim2.new(0, 150, 0, 210);
return function(v9)
    local v10 = l_useStyle_0();
    return v1.createElement("Frame", {
        AutomaticSize = Enum.AutomaticSize.XY,
        BackgroundTransparency = 1
    }, {
        Layout = v1.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            Padding = UDim.new(0, 32)
        }),
        DescriptionHeader = v1.createElement(l_StyledTextLabel_0, {
            layoutOrder = 0,
            text = l_useLocalization_0({
                header = "Feature.VirtualEvents.DescriptionLabel"
            }).header,
            automaticSize = Enum.AutomaticSize.XY,
            fontStyle = v10.Font.Header1,
            colorStyle = v10.Theme.TextEmphasis
        }),
        Description = if not v9.description then v1.createElement(l_ShimmerPanel_0, {
            Size = UDim2.new(1, 0, 0, v10.Font.BaseSize)
        }) else v1.createElement(l_StyledTextLabel_0, {
            layoutOrder = 1,
            text = v9.description,
            automaticSize = Enum.AutomaticSize.XY,
            fontStyle = v10.Font.Body,
            colorStyle = v10.Theme.TextDefault
        }),
        ExperienceTileWrapper = v1.createElement("Frame", {
            LayoutOrder = 2,
            Size = v8,
            BackgroundTransparency = 1
        }, {
            ExperienceTile = v1.createElement(l_ExperienceTileV3_0, {
                experienceName = v9.experienceName,
                thumbnail = v9.experienceThumbnail,
                onActivated = v9.onExperienceTileActivated,
                styleProps = {
                    overlayColors = {
                        Hover = v10.Theme.BackgroundOnHover
                    }
                }
            })
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.ApolloClient);
local _ = require(l_script_FirstAncestor_0.Parent.GraphQLServer);
local v3 = require(l_script_FirstAncestor_0.Parent.Cryo);
local v4 = require(l_script_FirstAncestor_0.Parent.React);
local v5 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local l_useDeviceType_0 = require(l_script_FirstAncestor_0.Parent.RobloxAppHooks).useDeviceType;
local _ = require(l_script_FirstAncestor_0.Parent.RobloxAppEnums);
local v8 = require(l_script_FirstAncestor_0.Common.getEventTimerStatus);
local v9 = require(l_script_FirstAncestor_0.Common.findFirstImageInMedia);
local v10 = require(l_script_FirstAncestor_0.Common.getGalleryItems);
local v11 = require(l_script_FirstAncestor_0.Hooks.useActionBarProps);
local v12 = require(l_script_FirstAncestor_0.Components.EventTimer);
local v13 = require(l_script_FirstAncestor_0.Components.EventDescription);
local v14 = require(l_script_FirstAncestor_0.Components.EventHostedBy);
local v15 = require(l_script_FirstAncestor_0.Components.Attendance);
local v16 = require(l_script_FirstAncestor_0.requests);
local _ = require(l_script_FirstAncestor_0.types);
local l_getFFlagHorizontalMediaOnEventDetailsPage_0 = require(l_script_FirstAncestor_0.Parent.SharedFlags).getFFlagHorizontalMediaOnEventDetailsPage;
local l_useMutation_0 = v1.useMutation;
local l_DetailsPageTemplate_0 = v5.App.Template.DetailsPage.DetailsPageTemplate;
local l_ContentPosition_0 = v5.App.Template.DetailsPage.Enum.ContentPosition;
local l_MediaGalleryPreview_0 = v5.App.Container.MediaGalleryPreview;
local l_MediaGalleryHorizontal_0 = v5.App.Container.MediaGalleryHorizontal;
local l_ListTable_0 = v5.App.Table.ListTable;
local function v25()
end;
local v26 = {
    onClose = v25,
    onJoinEvent = v25,
    onShare = v25
};
return function(v27)
    local v28 = v3.Dictionary.join(v26, v27);
    local l_media_0 = v27.virtualEvent.media;
    local l_experienceDetails_0 = v27.virtualEvent.experienceDetails;
    local v31 = if not l_media_0 then nil else v9(l_media_0);
    local v32, v33 = v4.useState(0);
    local v34 = l_useDeviceType_0();
    local v35 = v4.useMemo(function()
        return v10(l_media_0);
    end, {
        l_media_0
    });
    local v42 = l_useMutation_0(v16.UPDATE_RSVP_STATUS, {
        variables = {
            virtualEventId = v27.virtualEvent.id
        },
        update = function(_, v37, v38)
            local l_virtualEvent_0 = v38.data.virtualEventRsvp.virtualEvent;
            v37:modify({
                id = v37:identify(l_virtualEvent_0),
                fields = {
                    rsvpCounters = function(_, v41)
                        return v3.Dictionary.join(v41, {
                            going = v41.going + (l_virtualEvent_0.userRsvpStatus == "going" and 1 or -1)
                        });
                    end
                }
            });
        end
    });
    local v43 = v4.useMemo(function()
        return v8(v28.virtualEvent, v28.currentTime);
    end, {
        v28.virtualEvent,
        v28.currentTime
    });
    local v46 = v4.useCallback(function(v44)
        local l_Offset_0 = l_MediaGalleryPreview_0:calcSizesFromWidth(v44.AbsoluteSize.X, 5).contentSize.Y.Offset;
        if l_Offset_0 ~= v32 then
            v33(l_Offset_0);
        end;
    end, {
        v32
    });
    local v49 = v11(v28.virtualEvent, v43, {
        onClose = v28.onClose,
        onJoinEvent = v28.onJoinEvent,
        onShare = v28.onShare,
        onRsvpChanged = v4.useCallback(function()
            local _ = nil;
            v42[1]({
                variables = {
                    rsvpStatus = v28.virtualEvent.userRsvpStatus ~= "going" and "going" or "notGoing"
                }
            }):andThen(function(v48)
                if v28.onRsvpChanged then
                    v28.onRsvpChanged(v48.data.virtualEventRsvp.rsvpStatus, v48.data.virtualEventRsvp.shouldSeeNotificationsUpsellModal);
                end;
            end);
        end, {
            v28.virtualEvent
        })
    });
    return v4.createElement(l_DetailsPageTemplate_0, {
        deviceType = v34,
        titleText = v27.virtualEvent.eventStatus == "moderated" and "[CONTENT MODERATED]" or v28.virtualEvent.title,
        thumbnailImageUrl = v31,
        thumbnailAspectRatio = Vector2.new(16, 9),
        renderInfoContent = function()
            return v4.createElement(v12, {
                virtualEvent = v28.virtualEvent,
                status = v43,
                currentTime = v28.currentTime
            });
        end,
        actionBarProps = if not v4.useMemo(function()
            return v49.button or #v49.icons > 0;
        end, {
            v49
        }) then nil else v49,
        componentList = if v27.virtualEvent.eventStatus ~= "cancelled" and v27.virtualEvent.eventStatus ~= "moderated" then {
            Attendance = if v43 ~= "Elapsed" then {
                portraitLayoutOrder = 1,
                landscapePosition = l_ContentPosition_0.Left,
                landscapeLayoutOrder = 1,
                renderComponent = function()
                    return v4.createElement(v15, {
                        virtualEvent = v28.virtualEvent,
                        eventStatus = v43
                    });
                end
            } else nil,
            MediaGallery = {
                portraitLayoutOrder = 2,
                landscapePosition = l_ContentPosition_0.Right,
                landscapeLayoutOrder = 1,
                renderComponent = function()
                    if not l_getFFlagHorizontalMediaOnEventDetailsPage_0() then
                        return v4.createElement("Frame", {
                            Size = UDim2.new(1, 0, 0, v32),
                            BackgroundTransparency = 1,
                            [v4.Change.AbsoluteSize] = v46
                        }, {
                            Gallery = v4.createElement(l_MediaGalleryPreview_0, {
                                items = v35,
                                numberOfThumbnails = 5
                            })
                        });
                    else
                        return v4.createElement(l_MediaGalleryHorizontal_0, {
                            items = v35
                        });
                    end;
                end
            },
            Description = {
                portraitLayoutOrder = 3,
                landscapePosition = l_ContentPosition_0.Left,
                landscapeLayoutOrder = 2,
                renderComponent = function()
                    return v4.createElement(v13, {
                        description = v28.virtualEvent.description,
                        experienceName = if not l_experienceDetails_0 then nil else l_experienceDetails_0.name,
                        experienceThumbnail = v31,
                        onExperienceTileActivated = v28.onExperienceTileActivated
                    });
                end
            },
            EventInfo = if not v28.virtualEvent.host then nil else {
                portraitLayoutOrder = 4,
                landscapePosition = l_ContentPosition_0.Right,
                landscapeLayoutOrder = 2,
                renderComponent = function()
                    return v4.createElement(l_ListTable_0, {
                        cells = {
                            v4.createElement(v14, {
                                host = v28.virtualEvent.host,
                                onActivated = v28.onHostActivated
                            })
                        }
                    });
                end
            }
        } else {},
        onClose = v28.onClose
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.ApolloClient);
local v2 = require(l_script_FirstAncestor_0.Parent.Cryo);
local v3 = require(l_script_FirstAncestor_0.Parent.React);
local v4 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local l_useLocalization_0 = require(l_script_FirstAncestor_0.Parent.Localization).Hooks.useLocalization;
local v6 = require(l_script_FirstAncestor_0.Components.EventDetailsPage);
local v7 = require(l_script_FirstAncestor_0.requests);
local v8 = require(l_script_FirstAncestor_0.Common.getRetrievalStatusFromApolloQuery);
local l_useQuery_0 = v1.useQuery;
local l_LoadingStateContainer_0 = v4.App.Container.LoadingStateContainer;
local l_RetrievalStatus_0 = v4.App.Loading.Enum.RetrievalStatus;
local l_EmptyState_0 = v4.App.Indicator.EmptyState;
return function(v13)
    local v14 = l_useQuery_0(v7.GET_VIRTUAL_EVENT, {
        variables = {
            virtualEventId = v13.virtualEventId
        }
    });
    local v15 = v8(v14);
    local v16 = l_useLocalization_0({
        notFound = "Feature.VirtualEvents.EventNotFound"
    });
    if v13.mockNetworkStatus then
        v15 = v13.mockNetworkStatus;
    end;
    return v3.createElement(l_LoadingStateContainer_0, {
        dataStatus = l_RetrievalStatus_0.fromRawValue(v15),
        renderOnLoaded = function()
            return v3.createElement(v3.Fragment, nil, {
                EventDetailsPage = v3.createElement(v6, (v2.Dictionary.join(v13, {
                    virtualEvent = v14.data.virtualEvent,
                    virtualEventId = v2.None
                })))
            });
        end,
        renderOnFailed = function()
            return v3.createElement(v3.Fragment, nil, {
                EventNotFound = v3.createElement(l_EmptyState_0, {
                    text = v16.notFound
                })
            });
        end
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.React);
local v2 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local _ = require(l_script_FirstAncestor_0.types);
local l_useStyle_0 = v2.Core.Style.useStyle;
local l_EmojiTextLabel_0 = v2.Core.Text.EmojiTextLabel;
local l_Emoji_0 = v2.App.Emoji.Enum.Emoji;
return function(v7)
    local v8 = l_useStyle_0();
    local v9 = if not v7.host.hasVerifiedBadge then nil else l_Emoji_0.Verified;
    local v10, v11 = v1.useState(0);
    return v1.createElement("Frame", {
        BackgroundTransparency = 1,
        AutomaticSize = Enum.AutomaticSize.XY
    }, {
        Layout = v1.createElement("UIListLayout", {
            Padding = UDim.new(0, 4),
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Horizontal,
            VerticalAlignment = Enum.VerticalAlignment.Center
        }),
        UserImage = v1.createElement("ImageLabel", {
            LayoutOrder = 1,
            BackgroundColor3 = v8.Theme.Badge.Color,
            BackgroundTransparency = v8.Theme.Badge.Transparency,
            Image = string.format("rbxthumb://type=%s&id=%i&w=150&h=150", v7.host.hostType == "group" and "GroupIcon" or "AvatarHeadShot", v7.host.hostId),
            Size = UDim2.fromOffset(v10, v10)
        }, {
            Corner = v1.createElement("UICorner", {
                CornerRadius = UDim.new(1, 0)
            })
        }),
        EmojiName = v1.createElement(l_EmojiTextLabel_0, {
            Text = v7.host.hostName,
            LayoutOrder = 2,
            emoji = v9,
            fontStyle = v8.Font.Header2,
            colorStyle = v8.Theme.TextEmphasis,
            [v1.Change.AbsoluteSize] = v1.useCallback(function(v12)
                v11(v12.TextSize);
            end, {
                v11
            })
        }),
        EmojiToArrowMargin = if not v9 then nil else v1.createElement("Frame", {
            LayoutOrder = 3,
            BackgroundTransparency = 1,
            Size = UDim2.fromOffset(v10 - 4, 0)
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.Cryo);
local v2 = require(l_script_FirstAncestor_0.Parent.React);
local v3 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local l_useLocalization_0 = require(l_script_FirstAncestor_0.Parent.Localization).Hooks.useLocalization;
local v5 = require(l_script_FirstAncestor_0.Components.EventHostName);
local _ = require(l_script_FirstAncestor_0.types);
local l_Cell_0 = v3.App.Table.Cell;
local l_CellHeadDetail_0 = v3.App.Table.CellHeadDetail;
local l_CellTailDescription_0 = v3.App.Table.CellTailDescription;
local l_useStyle_0 = v3.Core.Style.useStyle;
local v11 = {
    size = UDim2.new(1, 0, 0, 52)
};
return function(v12)
    v12 = v1.Dictionary.join(v11, v12);
    local v13 = l_useStyle_0();
    return v2.createElement(l_Cell_0, {
        size = v12.size,
        userInteractionEnabled = true,
        horizontalPadding = 0,
        onActivated = v2.useCallback(function()
            if v12.onActivated then
                v12.onActivated(v12.host);
            end;
        end, {
            v12
        }),
        head = v2.createElement(l_CellHeadDetail_0, {
            labelText = l_useLocalization_0({
                hostedBy = "Feature.VirtualEvents.HostedByLabel"
            }).hostedBy,
            labelTextColor = v13.Theme.TextDefault,
            labelTextFont = v13.Font.Body
        }),
        tail = v2.createElement(l_CellTailDescription_0, {
            text = "",
            renderTextOverride = function()
                return v2.createElement(v5, {
                    host = v12.host
                });
            end,
            showArrow = true
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.React);
local v2 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local l_useSelector_0 = require(l_script_FirstAncestor_0.Parent.RoactUtils).Hooks.RoactRodux.useSelector;
local l_useNavigation_0 = require(l_script_FirstAncestor_0.Parent.RoactUtils).Hooks.useNavigation;
local l_useLocalization_0 = require(l_script_FirstAncestor_0.Parent.Localization).Hooks.useLocalization;
local l_dependencyArray_0 = require(l_script_FirstAncestor_0.Parent.RoactUtils).Hooks.dependencyArray;
local l_useStyle_0 = v2.Core.Style.useStyle;
local l_ButtonType_0 = v2.App.Button.Enum.ButtonType;
local l_PartialPageModal_0 = v2.App.Dialog.Modal.PartialPageModal;
local l_StyledTextLabel_0 = v2.App.Text.StyledTextLabel;
local v11 = UDim.new(0, 24);
local v12 = UDim.new(0, 12);
local function v14(v13)
    return v13.ScreenSize;
end;
return function(v15)
    local v16 = l_useStyle_0();
    local v17 = l_useNavigation_0();
    local v18 = l_useSelector_0(v14);
    local v19 = l_useLocalization_0({
        title = "Feature.VirtualEvents.EnableNotificationsModalTitle",
        body = "Feature.VirtualEvents.EnableNotificationsModalBody",
        notNow = "Feature.VirtualEvents.NotNowButton",
        getNotified = "Feature.VirtualEvents.GetNotifiedButton"
    });
    local v20 = v1.useCallback(function()
        if v15.onClose then
            v15.onClose();
        end;
        v17.goBack();
    end, l_dependencyArray_0(v15.onClose, v17));
    return v1.createElement(l_PartialPageModal_0, {
        position = UDim2.fromScale(0.5, 0.5),
        anchorPoint = Vector2.new(0.5, 0.5),
        title = v19.title,
        screenSize = v18,
        buttonStackProps = {
            buttons = {
                {
                    buttonType = l_ButtonType_0.Secondary,
                    props = {
                        onActivated = v20,
                        text = v19.notNow
                    }
                },
                {
                    buttonType = l_ButtonType_0.PrimarySystem,
                    props = {
                        onActivated = v1.useCallback(function()
                            if v15.onConfirm then
                                v15.onConfirm();
                            end;
                            v20();
                        end, l_dependencyArray_0(v15.onConfirm, v20)),
                        text = v19.getNotified
                    }
                }
            }
        },
        contentPadding = v11,
        onCloseClicked = v20
    }, {
        Wrapper = v1.createElement("Frame", {
            Size = UDim2.fromScale(1, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1
        }, {
            Layout = v1.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                Padding = v12
            }),
            Padding = v1.createElement("UIPadding", {
                PaddingTop = v12 + v12,
                PaddingBottom = v12
            }),
            Body = v1.createElement(l_StyledTextLabel_0, {
                text = v19.body,
                textXAlignment = Enum.TextXAlignment.Center,
                fontStyle = v16.Font.Body,
                colorStyle = v16.Theme.TextMuted,
                size = UDim2.fromScale(1, 0),
                automaticSize = Enum.AutomaticSize.Y,
                fluidSizing = false
            })
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local _ = require(l_script_FirstAncestor_0.Parent.GraphQLServer);
local v2 = require(l_script_FirstAncestor_0.Parent.Cryo);
local v3 = require(l_script_FirstAncestor_0.Parent.React);
local v4 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local l_useLocalization_0 = require(l_script_FirstAncestor_0.Parent.Localization).Hooks.useLocalization;
local l_dependencyArray_0 = require(l_script_FirstAncestor_0.Parent.RoactUtils).Hooks.dependencyArray;
local v7 = require(l_script_FirstAncestor_0.Common.formatDate);
local v8 = require(l_script_FirstAncestor_0.Common.getEventTimerStatus);
local v9 = require(l_script_FirstAncestor_0.Common.getVirtualEventDates);
local v10 = require(l_script_FirstAncestor_0.Hooks.useRefImpression);
local v11 = require(script.Parent.EventRowCounter);
local l_Button_0 = v4.App.Button.Button;
local l_ButtonType_0 = v4.App.Button.Enum.ButtonType;
local l_StyledTextLabel_0 = v4.App.Text.StyledTextLabel;
local l_useStyle_0 = v4.Core.Style.useStyle;
local l_Images_0 = v4.App.ImageSet.Images;
local v17 = l_Images_0["icons/actions/favoriteOn"];
local v18 = l_Images_0["icons/status/games/people-playing_small"];
local v19 = utf8.char(8226);
local v20 = UDim.new(0, 12);
local v21 = UDim.new(0, 4);
local v22 = {
    shouldTruncateText = true,
    maxDescriptionLines = 2
};
return function(v23)
    local v24 = v2.Dictionary.join(v22, v23);
    local v25 = v3.createRef();
    local v26 = v8(v24.virtualEvent, DateTime.now());
    local v27 = l_useStyle_0();
    v10(v25, function()
        if v24.onImpression then
            v24.onImpression();
        end;
    end);
    local v28 = l_useLocalization_0({
        notifyMe = "Feature.VirtualEvents.NotifyMe",
        unfollowEvent = "Feature.VirtualEvents.UnfollowEvent",
        joinEvent = "Feature.VirtualEvents.JoinEvent"
    });
    local v29 = v3.useMemo(function()
        return v9(v24.virtualEvent);
    end, l_dependencyArray_0(v24.virtualEvent));
    local v31 = v3.useCallback(function()
        local v30 = nil;
        v30 = v24.virtualEvent.userRsvpStatus ~= "going" and "going" or "notGoing";
        if v24.onRsvpChanged then
            v24.onRsvpChanged(v30);
        end;
    end, l_dependencyArray_0(v24.onRsvpChanged));
    local v32 = v3.useCallback(function()
        if v24.onJoinEvent then
            v24.onJoinEvent();
        end;
    end, l_dependencyArray_0(v24.onJoinEvent));
    local v33 = v3.useMemo(function()
        if not (v26 ~= "Ongoing") or v26 == "ElapsedImminent" then
            return v3.createElement(l_Button_0, {
                buttonType = l_ButtonType_0.PrimaryContextual,
                layoutOrder = 3,
                text = v28.joinEvent,
                fontStyle = v27.Font.CaptionHeader,
                size = UDim2.new(1, 0, 0, 28),
                onActivated = v32
            });
        elseif v24.virtualEvent.userRsvpStatus ~= "going" then
            return v3.createElement(l_Button_0, {
                buttonType = l_ButtonType_0.PrimarySystem,
                layoutOrder = 3,
                text = v28.notifyMe,
                fontStyle = v27.Font.CaptionHeader,
                size = UDim2.new(1, 0, 0, 28),
                onActivated = v31
            });
        else
            return v3.createElement(l_Button_0, {
                buttonType = l_ButtonType_0.Secondary,
                layoutOrder = 3,
                text = v28.unfollowEvent,
                fontStyle = v27.Font.CaptionHeader,
                size = UDim2.new(1, 0, 0, 28),
                onActivated = v31
            });
        end;
    end, l_dependencyArray_0(v24.virtualEvent, v26, v32, v31));
    local v34 = v27.Font.BaseSize * v27.Font.Header2.RelativeSize;
    local v35 = if not v24.shouldTruncateText then math.huge else ((v24.maxDescriptionLines * v27.Font.BaseSize) * v27.Font.CaptionBody.RelativeSize) * 1.4;
    local l_experienceDetails_0 = v24.virtualEvent.experienceDetails;
    local l_rsvpCounters_0 = v24.virtualEvent.rsvpCounters;
    local v38 = if not not l_rsvpCounters_0 and l_rsvpCounters_0.going then l_rsvpCounters_0.going else 0;
    local v39 = if not not l_experienceDetails_0 and l_experienceDetails_0.playing then l_experienceDetails_0.playing else 0;
    local v40 = true;
    if v26 ~= "Ongoing" then
        v40 = v26 == "ElapsedImminent";
    end;
    return v3.createElement("ImageButton", {
        Size = UDim2.fromScale(1, 0),
        AutoButtonColor = false,
        AutomaticSize = Enum.AutomaticSize.Y,
        BorderSizePixel = 0,
        BackgroundColor3 = v27.Theme.BackgroundUIDefault.Color,
        BackgroundTransparency = v27.Theme.BackgroundUIDefault.Transparency,
        ref = v25,
        [v3.Event.Activated] = v24.onTileActivated
    }, {
        Layout = v3.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            Padding = v20
        }),
        Padding = v3.createElement("UIPadding", {
            PaddingTop = v20,
            PaddingRight = v20,
            PaddingBottom = v20,
            PaddingLeft = v20
        }),
        BorderRadius = v3.createElement("UICorner", {
            CornerRadius = v20
        }),
        BorderColor = v3.createElement("UIStroke", {
            Color = v27.Theme.Divider.Color,
            Transparency = v27.Theme.Divider.Transparency,
            Thickness = 1
        }),
        Header = v3.createElement("Frame", {
            LayoutOrder = 1,
            AutomaticSize = Enum.AutomaticSize.XY,
            BackgroundTransparency = 1
        }, {
            Layout = v3.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                Padding = v21
            }),
            Title = v3.createElement(l_StyledTextLabel_0, {
                layoutOrder = 1,
                text = v24.virtualEvent.title,
                fontStyle = v27.Font.Header2,
                colorStyle = v27.Theme.TextEmphasis,
                automaticSize = if not v24.shouldTruncateText then Enum.AutomaticSize.XY else Enum.AutomaticSize.X,
                size = if not v24.shouldTruncateText then nil else UDim2.fromOffset(0, v34),
                textTruncate = Enum.TextTruncate.AtEnd,
                fluidSizing = not v24.shouldTruncateText and true or false,
                richText = not v24.shouldTruncateText and true or false
            }),
            Info = v3.createElement("Frame", {
                LayoutOrder = 2,
                AutomaticSize = Enum.AutomaticSize.XY,
                BackgroundTransparency = 1
            }, {
                Layout = v3.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    FillDirection = Enum.FillDirection.Horizontal,
                    Padding = v21
                }),
                Date = v3.createElement(l_StyledTextLabel_0, {
                    layoutOrder = 1,
                    text = v7(v29.startDate),
                    automaticSize = Enum.AutomaticSize.XY,
                    fontStyle = v27.Font.CaptionBody,
                    colorStyle = v27.Theme.TextDefault
                }),
                Stats = if not (v38 <= 0) or v39 > 0 then v3.createElement(v3.Fragment, {}, {
                    Separator = v3.createElement(l_StyledTextLabel_0, {
                        layoutOrder = 2,
                        text = v19,
                        automaticSize = Enum.AutomaticSize.XY,
                        fontStyle = v27.Font.CaptionBody,
                        colorStyle = v27.Theme.TextDefault
                    }),
                    InterestedCount = if not v38 or v40 then nil else v3.createElement(v11, {
                        layoutOrder = 3,
                        icon = v17,
                        counter = v38
                    }),
                    PlayCount = if not not v39 and v40 then v3.createElement(v11, {
                        layoutOrder = 4,
                        icon = v18,
                        counter = v39
                    }) else nil
                }) else nil
            })
        }),
        Description = v3.createElement("Frame", {
            LayoutOrder = 2,
            AutomaticSize = Enum.AutomaticSize.XY,
            BackgroundTransparency = 1
        }, {
            SizeConstraint = v3.createElement("UISizeConstraint", {
                MaxSize = Vector2.new(math.huge, v35)
            }),
            Label = v3.createElement(l_StyledTextLabel_0, {
                text = v24.virtualEvent.description,
                automaticSize = Enum.AutomaticSize.XY,
                size = UDim2.fromScale(1, 0),
                fontStyle = v27.Font.CaptionBody,
                colorStyle = v27.Theme.TextDefault,
                textTruncate = Enum.TextTruncate.AtEnd,
                textYAlignment = Enum.TextYAlignment.Top,
                fluidSizing = false,
                richText = false,
                lineHeight = 1.4
            })
        }),
        CallToAction = v33
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.Cryo);
local v2 = require(l_script_FirstAncestor_0.Parent.React);
local v3 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local v4 = require(l_script_FirstAncestor_0.Common.formatNumberWithShortUnits);
local l_StyledTextLabel_0 = v3.App.Text.StyledTextLabel;
local l_ImageSetLabel_0 = v3.Core.ImageSet.ImageSetLabel;
local l_useStyle_0 = v3.Core.Style.useStyle;
local v8 = {
    iconSize = Vector2.new(18, 18),
    padding = UDim.new(0, 4)
};
return function(v9)
    local v10 = v1.Dictionary.join(v8, v9);
    local v11 = l_useStyle_0();
    if v10.counter == 0 then
        return nil;
    else
        return v2.createElement("Frame", {
            LayoutOrder = v10.layoutOrder,
            AutomaticSize = Enum.AutomaticSize.XY,
            BackgroundTransparency = 1
        }, {
            Layout = v2.createElement("UIListLayout", {
                VerticalAlignment = Enum.VerticalAlignment.Center,
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Horizontal,
                Padding = v10.padding
            }),
            Icon = v2.createElement(l_ImageSetLabel_0, {
                LayoutOrder = 1,
                Size = UDim2.fromOffset(v10.iconSize.X, v10.iconSize.Y),
                ScaleType = Enum.ScaleType.Stretch,
                Image = v10.icon,
                BackgroundTransparency = 1,
                ImageColor3 = v11.Theme.TextDefault.Color,
                ImageTransparency = v11.Theme.TextDefault.Transparency
            }),
            Count = v2.createElement(l_StyledTextLabel_0, {
                layoutOrder = 2,
                text = v4(v10.counter),
                automaticSize = Enum.AutomaticSize.XY,
                fontStyle = v11.Font.CaptionBody,
                colorStyle = v11.Theme.TextDefault
            })
        });
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local _ = require(l_script_FirstAncestor_0.Parent.GraphQLServer);
local v2 = require(l_script_FirstAncestor_0.Parent.React);
local v3 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local l_useLocalization_0 = require(l_script_FirstAncestor_0.Parent.Localization).Hooks.useLocalization;
local v5 = require(l_script_FirstAncestor_0.Common.formatDate);
local v6 = require(l_script_FirstAncestor_0.Common.getVirtualEventDates);
local l_StyledTextLabel_0 = v3.App.Text.StyledTextLabel;
local l_useStyle_0 = v3.Core.Style.useStyle;
local v9 = utf8.char(8226);
return function(v10)
    local v11 = l_useStyle_0();
    local v12 = l_useLocalization_0({
        cancelled = "Feature.VirtualEvents.EventCancelledText"
    });
    local v13 = v10.virtualEvent.eventStatus == "cancelled";
    local v14 = v2.useMemo(function()
        return v6(v10.virtualEvent);
    end, {
        v10.virtualEvent
    });
    return v2.createElement(l_StyledTextLabel_0, {
        text = if not v13 then ("%s %s %s"):format(v5(v14.startDate), v9, v5(v14.endDate)) else v12.cancelled,
        automaticSize = Enum.AutomaticSize.XY,
        fontStyle = v11.Font.CaptionHeader,
        colorStyle = if not v13 then v11.Theme.TextMuted else v11.Theme.Alert
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.Cryo);
local v2 = require(l_script_FirstAncestor_0.Parent.React);
local v3 = {
    itemPadding = UDim.new(0, 12),
    numItemsShown = math.huge
};
return function(v4)
    local v5 = v1.Dictionary.join(v3, v4);
    local v8 = v2.useMemo(function()
        local v6 = {};
        for v7 = 1, v5.numItemsShown do
            v6[v7] = v2.createElement("Frame", {
                LayoutOrder = v7,
                Size = UDim2.fromScale(1, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                BackgroundTransparency = 1
            }, {
                Content = v5.items[v7]
            });
        end;
        return v6;
    end, {
        v5.items,
        v5.numItemsShown
    });
    return v2.createElement("Frame", {
        Size = UDim2.fromScale(1, 0),
        AutomaticSize = Enum.AutomaticSize.Y,
        BackgroundTransparency = 1
    }, {
        Layout = v2.createElement("UIListLayout", {
            Padding = v5.itemPadding,
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Vertical
        }),
        Rows = v2.createElement(v2.Fragment, nil, (v2.useMemo(function()
            local v9 = {};
            for v10 = 1, #v8, 2 do
                local v11 = v8[v10];
                local v12 = v8[v10 + 1];
                v9["Row" .. math.ceil(v10 / 2)] = v2.createElement("Frame", {
                    Size = UDim2.fromScale(1, 0),
                    AutomaticSize = Enum.AutomaticSize.Y,
                    BackgroundTransparency = 1,
                    LayoutOrder = v10
                }, {
                    Layout = v2.createElement("UIListLayout", {
                        Padding = v5.itemPadding,
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        FillDirection = Enum.FillDirection.Horizontal,
                        HorizontalAlignment = Enum.HorizontalAlignment.Left
                    }),
                    CellFrame1 = v2.createElement("Frame", {
                        Size = UDim2.new(0.5, -v5.itemPadding.Offset / 2, 0, 0),
                        AutomaticSize = Enum.AutomaticSize.Y,
                        BackgroundTransparency = 1,
                        LayoutOrder = 1
                    }, {
                        Item = v2.createElement(v2.Fragment, nil, v11)
                    }),
                    CellFrame2 = v12 and v2.createElement("Frame", {
                        Size = UDim2.new(0.5, -v5.itemPadding.Offset / 2, 0, 0),
                        AutomaticSize = Enum.AutomaticSize.Y,
                        BackgroundTransparency = 1,
                        LayoutOrder = 2
                    }, {
                        Item = v2.createElement(v2.Fragment, nil, v12)
                    })
                });
            end;
            return v9;
        end, {
            v5.items,
            v8
        })))
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local _ = require(l_script_FirstAncestor_0.Parent.GraphQLServer);
local v2 = require(l_script_FirstAncestor_0.Parent.Cryo);
local v3 = require(l_script_FirstAncestor_0.Parent.React);
local v4 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local l_useLocalization_0 = require(l_script_FirstAncestor_0.Parent.Localization).Hooks.useLocalization;
local v6 = require(l_script_FirstAncestor_0.Parent.RoactAppExperiment);
local v7 = require(script.Parent.PaginatedVerticalList);
local v8 = require(script.Parent.ExposureLogger);
local v9 = require(l_script_FirstAncestor_0.Common.sortEventsByStartDate);
local _ = require(l_script_FirstAncestor_0.types);
local v11 = require(script.Parent.EventRow);
local l_getFFlagRemoveVirtualEventsExperiment_0 = require(l_script_FirstAncestor_0.Parent.SharedFlags).getFFlagRemoveVirtualEventsExperiment;
local l_StyledTextLabel_0 = v4.App.Text.StyledTextLabel;
local l_useStyle_0 = v4.Core.Style.useStyle;
local l_useUserExperiment_0 = v6.useUserExperiment;
local v16 = UDim.new(0, 12);
local v17 = {
    initialEventsShown = 1,
    extraEventsShownOnLoad = 3,
    isDesktopGrid = false
};
return function(v18)
    local v19 = v2.Dictionary.join(v17, v18);
    local v22 = if not l_getFFlagRemoveVirtualEventsExperiment_0() then l_useUserExperiment_0({
        "Ecosystems.EventsOnExperienceDetailsPage"
    }, function(v20)
        local v21 = v20["Ecosystems.EventsOnExperienceDetailsPage"];
        if not v21 then
            return nil;
        else
            return v21.virtualEventsMVPEnabled;
        end;
    end, false) else nil;
    if v19.mockVirtualEventsMVPEnabled ~= nil then
        v22 = v19.mockVirtualEventsMVPEnabled;
    end;
    local v23 = l_useStyle_0();
    local v24 = l_useLocalization_0({
        title = "Feature.VirtualEvents.EventsListTitle"
    });
    local v27 = v3.useCallback(function(v25, v26)
        if v19.onRsvpChanged then
            v19.onRsvpChanged(v25, v26);
        end;
    end, {
        v19.onRsvpChanged
    });
    local v29 = v3.useCallback(function(v28)
        if v19.onJoinEvent then
            v19.onJoinEvent(v28);
        end;
    end, {});
    local v31 = v3.useCallback(function(v30)
        if v19.onTileActivated then
            v19.onTileActivated(v30);
        end;
    end, {});
    local v33 = v3.useCallback(function(v32)
        if v19.onEventImpression then
            v19.onEventImpression(v32);
        end;
    end, {
        v19.onEventImpression
    });
    if #v19.virtualEvents == 0 then
        return nil;
    else
        local v34 = v9(v19.virtualEvents);
        local v35 = {};
        for _, v37 in v34, nil, nil do
            table.insert(v35, (v3.createElement(v11, {
                virtualEvent = v37,
                onRsvpChanged = function(...)
                    v27(v37, ...);
                end,
                onJoinEvent = function()
                    v29(v37);
                end,
                onTileActivated = function()
                    v31(v37);
                end,
                onImpression = function()
                    v33(v37);
                end
            })));
        end;
        if not l_getFFlagRemoveVirtualEventsExperiment_0() then
            return v3.createElement("Frame", {
                LayoutOrder = v19.layoutOrder,
                Size = UDim2.fromScale(1, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                BackgroundTransparency = 1
            }, {
                ExposureLogger = v3.createElement(v8, {
                    exposureLayer = "Ecosystems.EventsOnExperienceDetailsPage"
                }),
                Wrapper = if not v22 then nil else v3.createElement("Frame", {
                    Size = UDim2.fromScale(1, 0),
                    AutomaticSize = Enum.AutomaticSize.Y,
                    BackgroundTransparency = 1
                }, {
                    Layout = v3.createElement("UIListLayout", {
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        Padding = v16
                    }),
                    Title = v3.createElement(l_StyledTextLabel_0, {
                        layoutOrder = 1,
                        text = v24.title,
                        colorStyle = v23.Theme.TextEmphasis,
                        fontStyle = v23.Font.Header1
                    }),
                    PaginatedList = v3.createElement(v7, {
                        layoutOrder = 2,
                        initialItemsShown = v19.initialEventsShown,
                        extraItemsShownOnLoad = v19.extraEventsShownOnLoad,
                        items = v35,
                        isDesktopGrid = v19.isDesktopGrid
                    })
                })
            });
        else
            return v3.createElement("Frame", {
                LayoutOrder = v19.layoutOrder,
                Size = UDim2.fromScale(1, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                BackgroundTransparency = 1
            }, {
                Layout = v3.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    Padding = v16
                }),
                Title = v3.createElement(l_StyledTextLabel_0, {
                    layoutOrder = 1,
                    text = v24.title,
                    colorStyle = v23.Theme.TextEmphasis,
                    fontStyle = v23.Font.Header1
                }),
                PaginatedList = v3.createElement(v7, {
                    layoutOrder = 2,
                    initialItemsShown = v19.initialEventsShown,
                    extraItemsShownOnLoad = v19.extraEventsShownOnLoad,
                    items = v35,
                    isDesktopGrid = v19.isDesktopGrid
                })
            });
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.React);
local v2 = require(l_script_FirstAncestor_0.Parent.RoactAppExperiment);
local v3 = require(l_script_FirstAncestor_0.Hooks.useRefImpression);
local l_useIXPService_0 = v2.useIXPService;
return function(v5)
    local v6 = v1.useRef(nil);
    local v7 = l_useIXPService_0();
    v3(v6, function()
        v7:LogUserLayerExposure(v5.exposureLayer);
        if v5.onExposure then
            v5.onExposure();
        end;
    end);
    return v1.createElement("Frame", {
        Position = UDim2.fromScale(0.5, 0.5),
        Size = UDim2.fromOffset(0, 0),
        BackgroundTransparency = 1,
        ref = v6
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.Cryo);
local v2 = require(l_script_FirstAncestor_0.Parent.React);
local v3 = UDim.new(0, 12);
return function(v4)
    local v5 = {};
    for v8, v9 in (v2.useMemo(function()
        if v4.desiredFirstUserId then
            local v6 = v1.List.find(v4.userIds, v4.desiredFirstUserId);
            if v6 then
                local v7 = table.clone(v4.userIds);
                table.remove(v7, v6);
                table.insert(v7, 1, v4.desiredFirstUserId);
                return v7;
            end;
        end;
        return v4.userIds;
    end, {
        v4.userIds,
        v4.desiredFirstUserId
    })), nil, nil do
        v5[v9] = v2.createElement("ImageLabel", {
            LayoutOrder = v8,
            BackgroundColor3 = Color3.fromRGB(209, 209, 209),
            Image = ("rbxthumb://type=AvatarHeadShot&id=%s&w=100&h=100"):format(v9),
            Size = UDim2.fromOffset(36, 36)
        }, {
            BorderRadius = v2.createElement("UICorner", {
                CornerRadius = UDim.new(0.5, 0)
            })
        });
    end;
    return v2.createElement("Frame", {
        LayoutOrder = v4.layoutOrder,
        BackgroundTransparency = 1,
        AutomaticSize = Enum.AutomaticSize.XY
    }, {
        Layout = v2.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Horizontal,
            Padding = v3
        }),
        Faces = v2.createElement(v2.Fragment, nil, v5)
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.Cryo);
local v2 = require(l_script_FirstAncestor_0.Parent.React);
local v3 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local l_useLocalization_0 = require(l_script_FirstAncestor_0.Parent.Localization).Hooks.useLocalization;
local l_dependencyArray_0 = require(l_script_FirstAncestor_0.Parent.RoactUtils).Hooks.dependencyArray;
local l_Button_0 = v3.App.Button.Button;
local l_ButtonType_0 = v3.App.Button.Enum.ButtonType;
local v8 = require(script.Parent.EventsGridLayout);
local v9 = {
    initialItemsShown = 3,
    extraItemsShownOnLoad = 5,
    itemPadding = UDim.new(0, 12),
    isDesktopGrid = false
};
return function(v10)
    local v11 = v1.Dictionary.join(v9, v10);
    local v12, v13 = v2.useState(0);
    local v14 = v2.useMemo(function()
        return v11.initialItemsShown + v11.extraItemsShownOnLoad * v12;
    end, l_dependencyArray_0(v11.initialItemsShown, v11.extraItemsShownOnLoad, v12));
    local v15 = l_useLocalization_0({
        seeMore = "Feature.VirtualEvents.SeeMore"
    });
    v2.useEffect(function()
        v13(0);
    end, l_dependencyArray_0(v11.initialItemsShown, v11.extraItemsShownOnLoad));
    return v2.createElement("Frame", {
        LayoutOrder = v11.layoutOrder,
        BackgroundTransparency = 1,
        Size = UDim2.fromScale(1, 0),
        AutomaticSize = Enum.AutomaticSize.Y
    }, {
        Layout = v2.createElement("UIListLayout", {
            Padding = v11.itemPadding,
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        MobileListItems = not v11.isDesktopGrid and v2.createElement(v2.Fragment, nil, (v2.useMemo(function()
            local v16 = {};
            for v17 = 1, v14 do
                v16["Item" .. v17] = v2.createElement("Frame", {
                    LayoutOrder = v17,
                    Size = UDim2.fromScale(1, 0),
                    AutomaticSize = Enum.AutomaticSize.Y,
                    BackgroundTransparency = 1
                }, {
                    Content = v11.items[v17]
                });
            end;
            return v16;
        end, {
            v11.items,
            v14
        }))),
        DesktopGridItems = v11.isDesktopGrid and v2.createElement(v8, {
            items = v11.items,
            numItemsShown = v14
        }),
        SeeMore = if v14 < #v11.items then v2.createElement(l_Button_0, {
            buttonType = l_ButtonType_0.Secondary,
            layoutOrder = #v11.items + 1,
            size = UDim2.fromScale(1, 0),
            automaticSize = Enum.AutomaticSize.Y,
            text = v15.seeMore,
            onActivated = v2.useCallback(function()
                v13(function(v18)
                    return v18 + 1;
                end);
                if v11.onSeeMore then
                    v11.onSeeMore();
                end;
            end, l_dependencyArray_0(v11.onSeeMore))
        }) else nil
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.Cryo);
local v2 = require(l_script_FirstAncestor_0.Parent.React);
local l_useStyle_0 = require(l_script_FirstAncestor_0.Parent.UIBlox).Core.Style.useStyle;
return function(v4)
    local l_BaseSize_0 = l_useStyle_0().Font.BaseSize;
    return v2.createElement("TextBox", v1.Dictionary.join({
        AutomaticSize = Enum.AutomaticSize.XY,
        BackgroundTransparency = 1,
        ClearTextOnFocus = false,
        Font = v4.fontStyle.Font,
        TextColor3 = v4.colorStyle.Color,
        TextEditable = false,
        TextTransparency = v4.colorStyle.Transparency,
        TextXAlignment = Enum.TextXAlignment.Left,
        TextYAlignment = Enum.TextYAlignment.Top,
        ClipsDescendants = true
    }, v4, {
        fontStyle = v1.None,
        colorStyle = v1.None
    }), {
        TextSizeConstraint = v2.createElement("UITextSizeConstraint", {
            MaxTextSize = v4.fontStyle.RelativeSize * l_BaseSize_0,
            MinTextSize = v4.fontStyle.RelativeMinSize * l_BaseSize_0
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.React);
local v2 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local l_useNavigation_0 = require(l_script_FirstAncestor_0.Parent.RoactUtils).Hooks.useNavigation;
local l_useSelector_0 = require(l_script_FirstAncestor_0.Parent.RoactUtils).Hooks.RoactRodux.useSelector;
local l_useLocalization_0 = require(l_script_FirstAncestor_0.Parent.Localization).Hooks.useLocalization;
local l_UrlBuilder_0 = require(l_script_FirstAncestor_0.Parent.UrlBuilder).UrlBuilder;
local v7 = require(script.Parent.SelectableTextLabel);
local v8 = UDim.new(0, 24);
local v9 = UDim.new(0, 8);
local v10 = UDim.new(0, 2);
local l_PartialPageModal_0 = v2.App.Dialog.Modal.PartialPageModal;
local l_StyledTextLabel_0 = v2.App.Text.StyledTextLabel;
local l_Button_0 = v2.App.Button.Button;
local l_ButtonType_0 = v2.App.Button.Enum.ButtonType;
local l_useStyle_0 = v2.Core.Style.useStyle;
local function v17(v16)
    return v16.ScreenSize;
end;
return function(v18)
    local v19 = l_useStyle_0();
    local v20 = l_useSelector_0(v17);
    local v21 = l_useNavigation_0();
    local v22 = v1.useMemo(function()
        return l_UrlBuilder_0.virtualevents.appsflyer({
            eventId = v18.virtualEventId
        });
    end, {
        v18.virtualEventId
    });
    local v23 = l_useLocalization_0({
        title = "Feature.VirtualEvents.ShareModalTitle",
        body = "Feature.VirtualEvents.ShareModalBody",
        copyLink = "Feature.VirtualEvents.ShareModalLinkCopy",
        callToAction = "Feature.VirtualEvents.ShareModalCallToAction"
    });
    return v1.createElement(l_PartialPageModal_0, {
        title = v23.title,
        screenSize = v20,
        contentPadding = v8,
        onCloseClicked = v1.useCallback(function()
            v21.goBack();
            if v18.onClose then
                v18.onClose();
            end;
        end, {
            v18,
            v21
        })
    }, {
        Wrapper = v1.createElement("Frame", {
            Size = UDim2.fromScale(1, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1
        }, {
            Layout = v1.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                Padding = v8
            }),
            Padding = v1.createElement("UIPadding", {
                PaddingTop = v8
            }),
            Body = v1.createElement(l_StyledTextLabel_0, {
                layoutOrder = 1,
                text = v23.body,
                fontStyle = v19.Font.Body,
                colorStyle = v19.Theme.TextMuted,
                size = UDim2.fromScale(1, 0),
                automaticSize = Enum.AutomaticSize.Y,
                fluidSizing = false
            }),
            Deeplink = v1.createElement("Frame", {
                LayoutOrder = 2,
                AutomaticSize = Enum.AutomaticSize.XY,
                BackgroundTransparency = 1
            }, {
                Layout = v1.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    FillDirection = Enum.FillDirection.Horizontal,
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    Padding = v8
                }),
                Field = v1.createElement("Frame", {
                    LayoutOrder = 1,
                    Size = UDim2.fromScale(0.8, 0) - UDim2.fromOffset(v8.Offset, 0),
                    AutomaticSize = Enum.AutomaticSize.Y,
                    BackgroundColor3 = v19.Theme.UIMuted.Color
                }, {
                    Corner = v1.createElement("UICorner", {
                        CornerRadius = v10
                    }),
                    Border = v1.createElement("UIStroke", {
                        Color = v19.Theme.UIDefault.Color
                    }),
                    Padding = v1.createElement("UIPadding", {
                        PaddingTop = v9,
                        PaddingRight = v9,
                        PaddingBottom = v9,
                        PaddingLeft = v9
                    }),
                    Label = v1.createElement(v7, {
                        fontStyle = v19.Font.Body,
                        colorStyle = v19.Theme.TextMuted,
                        Size = UDim2.fromScale(1, 0),
                        AutomaticSize = Enum.AutomaticSize.Y,
                        Text = v22
                    })
                }),
                Action = v1.createElement(l_Button_0, {
                    buttonType = l_ButtonType_0.PrimarySystem,
                    layoutOrder = 2,
                    text = v23.copyLink,
                    size = UDim2.new(0.2, 0, 0, 32),
                    onActivated = v1.useCallback(function()
                        if v18.onCopy then
                            v18.onCopy(v22);
                        end;
                    end, {
                        v22
                    })
                })
            })
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local _ = require(l_script_FirstAncestor_0.Parent.GraphQLServer);
local v2 = require(l_script_FirstAncestor_0.Parent.React);
local v3 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local l_useLocalization_0 = require(l_script_FirstAncestor_0.Parent.Localization).Hooks.useLocalization;
local _ = require(l_script_FirstAncestor_0.types);
local l_Images_0 = v3.App.ImageSet.Images;
local l_ButtonType_0 = v3.App.Button.Enum.ButtonType;
return function(v8, v9, v10)
    local v11 = l_useLocalization_0({
        notifyMe = "Feature.VirtualEvents.NotifyMe",
        unfollowEvent = "Feature.VirtualEvents.UnfollowEvent",
        joinEvent = "Feature.VirtualEvents.JoinEvent",
        goHome = "Feature.VirtualEvents.GoHome"
    });
    local v12 = v2.useMemo(function()
        if v8.eventStatus ~= "cancelled" and v8.eventStatus ~= "moderated" then
            if not (v9 ~= "Upcoming") or v9 == "UpcomingImminent" then
                if v8.userRsvpStatus == "going" then
                    return {
                        props = {
                            buttonType = l_ButtonType_0.Secondary,
                            text = v11.unfollowEvent,
                            icon = l_Images_0["icons/actions/favoriteOn"],
                            onActivated = v10.onRsvpChanged
                        }
                    };
                else
                    return {
                        props = {
                            buttonType = l_ButtonType_0.PrimarySystem,
                            text = v11.notifyMe,
                            icon = l_Images_0["icons/actions/favoriteOff"],
                            onActivated = v10.onRsvpChanged
                        }
                    };
                end;
            elseif not (v9 ~= "Ongoing") or v9 == "ElapsedImminent" then
                return {
                    props = {
                        buttonType = l_ButtonType_0.PrimaryContextual,
                        text = v11.joinEvent,
                        onActivated = v10.onJoinEvent
                    }
                };
            else
                return nil;
            end;
        else
            return {
                props = {
                    buttonType = l_ButtonType_0.Secondary,
                    text = v11.goHome,
                    onActivated = v10.onClose
                }
            };
        end;
    end, {
        v8,
        v9,
        v10
    });
    local v13 = v2.useMemo(function()
        if (v8.eventStatus ~= "cancelled" and v8.eventStatus ~= "moderated") and v9 ~= "Elapsed" then
            return {
                props = {
                    anchorPoint = Vector2.new(0.5, 0.5),
                    position = UDim2.fromScale(0.5, 0.5),
                    icon = l_Images_0["icons/actions/share"],
                    userInteractionEnabled = true,
                    onActivated = v10.onShare
                }
            };
        else
            return nil;
        end;
    end, {
        v8,
        v9,
        v10
    });
    return (v2.useMemo(function()
        return {
            button = v12,
            icons = {
                v13
            }
        };
    end, {
        v12,
        v13
    }));
end;


local v0 = require(script:FindFirstAncestor("VirtualEvents").Parent.React);
return function(v1, v2)
    local v3 = v0.useRef(false);
    local v6 = v0.useCallback(function(v4, v5)
        if v4.AbsolutePosition.Y <= v5.AbsoluteSize.Y then
            v3.current = true;
            v2();
        end;
    end, {
        v2
    });
    v0.useEffect(function()
        if not v3.current then
            local l_current_0 = v1.current;
            local v8 = nil;
            if l_current_0 then
                local l_l_current_0_FirstAncestorWhichIsA_0 = l_current_0:FindFirstAncestorWhichIsA("ScreenGui");
                if l_l_current_0_FirstAncestorWhichIsA_0 then
                    v6(l_current_0, l_l_current_0_FirstAncestorWhichIsA_0);
                    v8 = l_current_0:GetPropertyChangedSignal("AbsolutePosition"):Connect(function()
                        if not v3.current then
                            v6(l_current_0, l_l_current_0_FirstAncestorWhichIsA_0);
                            return ;
                        else
                            return ;
                        end;
                    end);
                end;
            end;
            return function()
                if v8 then
                    v8:Disconnect();
                end;
            end;
        else
            return ;
        end;
    end);
end;


return {
    mock = function(v0)
        return {
            id = v0 or -1,
            rootPlaceId = -2,
            name = "Experience name",
            description = "Experience description",
            sourceName = "Source name",
            sourceDescription = "Source description",
            creator = {
                id = -3,
                name = "CreatorName",
                type = "User",
                isRNVAccount = false,
                hasVerifiedBadge = false
            },
            price = 0,
            allowedGearGenres = {},
            allowedGearCategories = {},
            isGenreEnforced = false,
            copyingAllowed = false,
            playing = 0,
            visits = 0,
            maxPlayers = 10,
            created = DateTime.now():ToIsoDate(),
            updated = DateTime.now():ToIsoDate(),
            studioAccessToApisAllowed = false,
            universeAvatarType = "MorphR6",
            genre = "",
            isAllGenre = false,
            isFavoritedByUser = false,
            favoritedCount = 0
        };
    end
};


return {
    mock = function(v0)
        return {
            assetTypeId = -1,
            assetType = "Image",
            imageId = v0 or 123456789,
            videoHash = nil,
            videoTitle = nil,
            approved = true,
            altText = "Alt Text"
        };
    end
};


return {
    AnalyticsEvent = {
        EventDetailsPageVisit = "eventDetailsPageVisit",
        ShareVirtualEventIconClicked = "shareVirtualEventIconClicked",
        VirtualEventJoined = "virtualEventJoined",
        VirtualEventLinkCopied = "virtualEventLinkCopied",
        VirtualEventRSVP = "virtualEventRSVP",
        VirtualEventImpression = "virtualEventImpression",
        EventNotificationEnabled = "eventNotificationEnabled"
    },
    RsvpStatus = {
        None = "none",
        Going = "going",
        MaybeGoing = "maybeGoing",
        NotGoing = "notGoing"
    }
};


local v0 = require(script.enums);
local _ = require(script.types);
return {
    AnalyticsEvent = v0.AnalyticsEvent,
    requests = require(script.requests),
    EventDetailsPageLoader = require(script.Components.EventDetailsPageLoader),
    ShareEventModal = require(script.Components.ShareEventModal),
    EventNotificationsModal = require(script.Components.EventNotificationsModal),
    EventsList = require(script.Components.EventsList),
    installReducer = require(script.installReducer),
    fireEventDetailsPageVisit = require(script.Analytics.fireEventDetailsPageVisit),
    fireShareVirtualEventIconClicked = require(script.Analytics.fireShareVirtualEventIconClicked),
    fireVirtualEventJoined = require(script.Analytics.fireVirtualEventJoined),
    fireVirtualEventLinkCopied = require(script.Analytics.fireVirtualEventLinkCopied),
    fireVirtualEventRSVP = require(script.Analytics.fireVirtualEventRSVP),
    fireEventNotificationEnabled = require(script.Analytics.fireEventNotificationEnabled),
    fireVirtualEventImpression = require(script.Analytics.fireVirtualEventImpression),
    ["jest.config"] = script["jest.config"]
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
return {
    name = l_script_FirstAncestor_0.Name,
    roact = require(l_script_FirstAncestor_0.Parent.RoactCompat),
    storyRoots = {
        l_script_FirstAncestor_0
    }
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.Rodux);
local l_RoduxNetworking_0 = require(l_script_FirstAncestor_0.network).RoduxNetworking;
return function()
    return v1.combineReducers({
        networkStatus = l_RoduxNetworking_0.installReducer(),
        events = require(l_script_FirstAncestor_0.Reducers.events),
        media = require(l_script_FirstAncestor_0.Reducers.media),
        experienceDetails = require(l_script_FirstAncestor_0.Reducers.experienceDetails),
        rsvps = require(l_script_FirstAncestor_0.Reducers.rsvps)
    });
end;


local v0 = require(script:FindFirstAncestor("VirtualEvents").Parent.Dev.JestConfigs);
return {
    displayName = "VirtualEvents",
    testMatch = {
        "**/*.test"
    },
    setupFilesAfterEnv = {
        v0.setupFiles.LogHandler,
        v0.setupFiles.UIBloxInitializer,
        v0.setupFiles.createPromiseRejectionHandler()
    }
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.HttpRequest);
local v2 = require(l_script_FirstAncestor_0.Parent.RoduxNetworking);
local v3 = require(l_script_FirstAncestor_0.Parent.NetworkingVirtualEvents);
local v4 = require(l_script_FirstAncestor_0.Parent.NetworkingGames);
local v5 = require(l_script_FirstAncestor_0.logger);
local v11 = v2.config({
    keyPath = "VirtualEvents.networkStatus",
    networkImpl = v1.config({
        requestFunction = function(v6, v7, v8)
            v5:debug("GET {}", v6);
            return v1.requestFunctions.RequestInternal(v6, v7, v8);
        end,
        postRequestFunction = function(v9, v10)
            v5:debug("{} {} {}", v9.StatusCode, v10.url, v9.Body);
        end,
        maxRetryCount = game:DefineFastInt("VirtualEventsHttpRetryCount", 3)
    })
});
return {
    RoduxNetworking = v11,
    NetworkingVirtualEvents = v3.config({
        roduxNetworking = v11
    }),
    NetworkingGames = v4.config({
        roduxNetworking = v11
    })
};


local l_gql_0 = require(script:FindFirstAncestor("VirtualEvents").Parent.ApolloClient).gql;
return {
    GET_VIRTUAL_EVENT = l_gql_0("\tquery GetVirtualEvent($virtualEventId: ID $virtualEventId) {\n\t\t\tid\n\t\t\ttitle\n\t\t\tdescription\n\t\t\thost {\n\t\t\t\thostId\n\t\t\t\thostType\n\t\t\t\thostName\n\t\t\t\thasVerifiedBadge\n\t\t\t}\n\t\t\tuniverseId\n\t\t\teventStatus\n\t\t\teventTime {\n\t\t\t\tstartUtc\n\t\t\t\tendUtc\n\t\t\t}\n\t\t\tuserRsvpStatus\n\t\t\texperienceDetails {\n\t\t\t\tname\n\t\t\t\tplaying\n\t\t\t}\n\t\t\tmedia {\n\t\t\t\timageId\n\t\t\t\tassetType\n\t\t\t}\n\t\t\trsvpCounters {\n\t\t\t\tgoing\n\t\t\t}\n\t\t\trsvps {\n\t\t\t\tuserId\n\t\t\t\trsvpStatus\n\t\t\t}\n\t\t}\n\t}\n"),
    UPDATE_RSVP_STATUS = l_gql_0("\tmutation UpdateRsvpStatus($virtualEventId: ID RsvpStatus $virtualEventId, rsvpStatus: $rsvpStatus) {\n\t\t\tshouldSeeNotificationsUpsellModal\n\t\t\tvirtualEvent {\n\t\t\t\tid\n\t\t\t\tuserRsvpStatus\n\t\t\t}\n\t\t}\n\t}\n"),
    NEVER_SHOW_NOTIFICATIONS_MODAL_AGAIN = l_gql_0("\tmutation NeverShowNotificationModalAgain {\n\t\tvirtualEvents {\n\t\t\tneverShowNotificationModalAgain\n\t\t}\n\t}\n"),
    ENABLE_PUSH_NOTIFICATIONS = l_gql_0("\tmutation EnablePushNotifications {\n\t\tvirtualEvents {\n\t\t\tenablePushNotifications\n\t\t}\n\t}\n"),
    GET_EVENTS_FOR_EXPERIENCE = l_gql_0("\tquery VirtualEventsForExperience($universeId: ID VirtualEventsByUniverseIdOptions) {\n\t\tvirtualEventsByUniverseId(universeId: $universeId, options: $options) {\n\t\t\tcursor\n\t\t\tvirtualEvents {\n\t\t\t\tid\n\t\t\t\ttitle\n\t\t\t\tuniverseId\n\t\t\t\tdescription\n\t\t\t\teventStatus\n\t\t\t\teventTime {\n\t\t\t\t\tstartUtc\n\t\t\t\t\tendUtc\n\t\t\t\t}\n\t\t\t\tuserRsvpStatus\n\t\t\t\trsvpCounters {\n\t\t\t\t\tgoing\n\t\t\t\t}\n\t\t\t\texperienceDetails {\n\t\t\t\t\tplaying\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n")
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.React);
local v2 = require(l_script_FirstAncestor_0.Parent.ReactRoblox);
local v3 = require(l_script_FirstAncestor_0.withMockProviders);
return function(v4)
    local v5 = v2.createRoot((Instance.new("ScreenGui")));
    local v6 = v3({
        HookTester = v1.createElement(function()
            v4();
            return nil;
        end)
    });
    v2.act(function()
        v5:render(v6);
    end);
end;


local _ = require(script:FindFirstAncestor("VirtualEvents").Parent.NetworkingVirtualEvents);
return {};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VirtualEvents");
local v1 = require(l_script_FirstAncestor_0.Parent.ApolloClient);
local v2 = require(l_script_FirstAncestor_0.Parent.GraphQLServer);
local v3 = require(l_script_FirstAncestor_0.Parent.React);
local v4 = require(l_script_FirstAncestor_0.Parent.Rodux);
local v5 = require(l_script_FirstAncestor_0.Parent.RoactNavigation);
local v6 = require(l_script_FirstAncestor_0.Parent.RoactRodux);
local v7 = require(l_script_FirstAncestor_0.Parent.RobloxAppLocales);
local v8 = require(l_script_FirstAncestor_0.Parent.Localization);
local v9 = require(l_script_FirstAncestor_0.Parent.UIBlox);
local v10 = require(l_script_FirstAncestor_0.installReducer);
local l_MockContentProvider_0 = v9.UnitTestHelpers.MockContentProvider;
local l_AppStyleProvider_0 = v9.App.Style.AppStyleProvider;
local l_Constants_0 = v9.App.Style.Constants;
local l_ContentProvider_0 = v9.App.Context.ContentProvider;
local v15 = v4.combineReducers({
    VirtualEvents = v10()
});
return function(v16, v17)
    local v18 = {
        StoreProvider = v3.createElement(v6.StoreProvider, {
            store = if not v17 then nil else v17.store or v4.Store.new(v15, if not v17 then nil else v17.initialStoreState, {
                v4.thunkMiddleware
            })
        }, {
            ContentProvider = v3.createElement(l_ContentProvider_0.Provider, {
                value = l_MockContentProvider_0.new()
            }, {
                LocalizationProvider = v3.createElement(v8.LocalizationProvider, {
                    localization = v7.Localization.new("en-us")
                }, {
                    StyleProvider = v3.createElement(l_AppStyleProvider_0, {
                        style = {
                            themeName = l_Constants_0.ThemeName.Dark,
                            fontName = l_Constants_0.FontName.Gotham
                        }
                    }, {
                        Children = v3.createElement(v3.Fragment, nil, v16)
                    })
                })
            })
        })
    };
    if v17 then
        if v17.mockResolvers then
            local v19 = v2.GraphQLServer.new({
                mockResolvers = v17.mockResolvers
            });
            v18 = {
                ApolloProvider = v3.createElement(v1.ApolloProvider, {
                    client = v1.ApolloClient.new({
                        cache = v1.InMemoryCache.new({}),
                        link = v1.HttpLink.new({
                            uri = "/api",
                            fetch = function(_, v21)
                                return v19:fetchLocal(v21);
                            end
                        })
                    })
                }, v18)
            };
        end;
        if v17.mockNavigation then
            v18 = {
                NavigationProvider = v3.createElement(v5.Provider, {
                    value = v17.mockNavigation
                }, v18)
            };
        end;
    end;
    return v3.createElement(v3.Fragment, nil, v18);
end;


local l_Url_0 = require(script:FindFirstAncestor("VoiceChat").Parent.Http).Url;
return function(v1, v2, v3)
    assert(type(v3) == "string", "GetShowAgeVerificationOverlay request expects placeId to be a string");
    assert(type(v2) == "string", "GetShowAgeVerificationOverlay request expects universeId to be a string");
    return v1(string.format("%s/v1/settings/verify/show-age-verification-overlay/%s", l_Url_0.VOICE_URL, if v3 ~= "" and v3 ~= nil then v2 .. "?placeId=" .. v3 else v2), "GET");
end;


local l_Parent_0 = script:FindFirstAncestor("VoiceChat").Parent;
local l_AppPage_0 = require(l_Parent_0.RobloxAppEnums).AppPage;
local l_NavigateDown_0 = require(l_Parent_0.NavigationRodux).Thunks.NavigateDown;
return function(v3)
    return function(v4)
        v4:dispatch(l_NavigateDown_0({
            name = l_AppPage_0.AgeVerificationRequired,
            detail = v3
        }));
    end;
end;


local l_Parent_0 = script:FindFirstAncestor("VoiceChat").Parent;
local l_CentralOverlayType_0 = require(l_Parent_0.RobloxAppEnums).CentralOverlayType;
local l_SetCentralOverlay_0 = require(l_Parent_0.CentralOverlay).Actions.SetCentralOverlay;
return function(v3)
    return function(v4)
        v4:dispatch(l_SetCentralOverlay_0(l_CentralOverlayType_0.VerifiedEnableVoice, v3 or {}));
    end;
end;


local l_Url_0 = require(script:FindFirstAncestor("VoiceChat").Parent.Http).Url;
return function(v1)
    return v1(string.format("%s/v1/settings/record-user-seen-upsell-modal", l_Url_0.VOICE_URL), "POST", {
        postBody = "{}"
    });
end;


return require(script:FindFirstAncestor("VoiceChat").Parent.Rodux).makeActionCreator(script.Name, function(v0, v1, v2, v3, v4, v5, v6)
    return {
        universeId = v0,
        isPlaceEnabledForVoice = v1,
        isUniverseEnabledForVoice = v2,
        isVoiceEnabled = v3,
        isUniverseEnabledForAvatarVideo = v5,
        showVoiceOptInOverlay = v4,
        elegibleToSeeVoiceUpsell = v6
    };
end);


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VoiceChat");
local v1 = require(l_script_FirstAncestor_0.AgeVerificationOverlay.SetShowAgeVerificationOverlay);
local v2 = require(l_script_FirstAncestor_0.Parent.Cryo);
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == v1.name then
        v3 = v2.Dictionary.join(v3, v4.universeId ~= nil and {
            [v4.universeId] = {
                universeId = v4.universeId,
                isPlaceEnabledForVoice = v4.isPlaceEnabledForVoice,
                showVoiceOptInOverlay = v4.showVoiceOptInOverlay,
                isUniverseEnabledForVoice = v4.isUniverseEnabledForVoice,
                isVoiceEnabled = v4.isVoiceEnabled,
                isUniverseEnabledForAvatarVideo = v4.isUniverseEnabledForAvatarVideo,
                elegibleToSeeVoiceUpsell = v4.elegibleToSeeVoiceUpsell
            }
        } or {});
    end;
    return v3;
end;


return {
    ApiFetchShowAgeVerificationOverlay = require(script.ApiFetchShowAgeVerificationOverlay),
    ApiPostRecordUserSeenModal = require(script.ApiPostRecordUserSeenModal),
    GetShowAgeVerificationOverlay = require(script.GetShowAgeVerificationOverlay),
    OpenAgeVerificationModal = require(script.OpenAgeVerificationModal),
    OpenCentralOverlayForVerifiedEnableVoice = require(script.OpenCentralOverlayForVerifiedEnableVoice),
    SetShowAgeVerificationOverlay = require(script.SetShowAgeVerificationOverlay),
    ShowAgeVerificationOverlay = require(script.ShowAgeVerificationOverlay)
};


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


game:DefineFastString("VoiceUpsellLayer", "SocialVoice.VoiceUpsell");
return function()
    return game:GetFastString("VoiceUpsellLayer");
end;


return {
    GetFFlagLogExposureForExperienceUpsell = require(script.GetFFlagLogExposureForExperienceUpsell),
    GetFStringVoiceUpsellLayer = require(script.GetFStringVoiceUpsellLayer)
};


local l_Url_0 = require(script:FindFirstAncestor("VoiceChat").Parent.Http).Url;
return function(v1)
    return v1(string.format("%s/v1/settings/user-opt-in", l_Url_0.VOICE_URL), "GET");
end;


return require(script:FindFirstAncestor("VoiceChat").Parent.Rodux).makeActionCreator(script.Name, function(v0)
    return {
        isUserOptIn = v0
    };
end);


local l_script_FirstAncestor_0 = script:FindFirstAncestor("VoiceChat");
local v1 = require(l_script_FirstAncestor_0.OptInStatus.SetVoiceChatOptInStatus);
local v2 = require(l_script_FirstAncestor_0.Parent.Cryo);
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == v1.name then
        v3 = v2.Dictionary.join(v3, {
            isUserOptIn = v4.isUserOptIn
        });
    end;
    return v3;
end;


return {
    ApiFetchVoiceChatOptInStatus = require(script.ApiFetchVoiceChatOptInStatus),
    SetVoiceChatOptInStatus = require(script.SetVoiceChatOptInStatus),
    VoiceChatOptInStatus = require(script.VoiceChatOptInStatus)
};


local l_Url_0 = require(game:GetService("CorePackages").Workspace.Packages.Http).Url;
return function(v1)
    return v1(string.format("%sv1/moderation/informed-of-ban", l_Url_0.VOICE_URL), "GET");
end;


local l_Url_0 = require(game:GetService("CorePackages").Workspace.Packages.Http).Url;
return function(v1)
    return v1(string.format("%s/v1/settings/", l_Url_0.VOICE_URL), "GET");
end;


local l_Url_0 = require(game:GetService("CorePackages").Workspace.Packages.Http).Url;
local l_HttpService_0 = game:GetService("HttpService");
return function(v2, v3)
    assert(type(v3) == "boolean", "PostInformedOfBan request expects informedOfBan to be a boolean");
    return v2(string.format("%sv1/moderation/informed-of-ban", l_Url_0.VOICE_URL), "POST", (l_HttpService_0:JSONEncode({
        informedOfBan = v3
    })));
end;


local l_Url_0 = require(game:GetService("CorePackages").Workspace.Packages.Http).Url;
return function(v1)
    return v1(string.format("%s/v1/settings/record-user-seen-avatar-video-upsell-modal", l_Url_0.VOICE_URL), "POST", {
        postBody = "{}"
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_HttpService_0 = game:GetService("HttpService");
local l_Url_0 = require(l_CorePackages_0.Workspace.Packages.Http).Url;
return function(v3, v4, v5)
    assert(type(v4) == "boolean", "UserOptIn request expects isUserOptIn to be a boolean");
    local v6 = string.format("%sv1/settings/user-opt-in/", l_Url_0.VOICE_URL);
    local v7 = nil;
    if v5 ~= nil then
        assert(type(v5) == "boolean", "UserOptIn request expects isOptedInThroughUpsell to be a boolean");
        v7 = l_HttpService_0:JSONEncode({
            isUserOptIn = v4,
            isOptedInThroughUpsell = v5
        });
    else
        v7 = l_HttpService_0:JSONEncode({
            isUserOptIn = v4
        });
    end;
    return v3(v6, "POST", {
        postBody = v7
    });
end;


return {
    AgeVerificationOverlay = require(script.AgeVerificationOverlay),
    Constants = require(script.Constants),
    OptInStatus = require(script.OptInStatus),
    Flags = require(script.Flags),
    GetInformedOfBan = require(script.Requests.GetInformedOfBan),
    GetUserSettings = require(script.Requests.GetUserSettings),
    PostInformedOfBan = require(script.Requests.PostInformedOfBan),
    PostSeenAvatarVideoModal = require(script.Requests.PostSeenAvatarVideoModal),
    PostUserOptIn = require(script.Requests.PostUserOptIn),
    ["jest.config"] = script["jest.config"]
};


local v0 = require(script.Parent.Parent.Dev.JestConfigs);
return {
    displayName = "VoiceChat",
    setupFilesAfterEnv = {
        v0.setupFiles.LogHandler,
        v0.setupFiles.UIBloxInitializer,
        v0.setupFiles.createPromiseRejectionHandler()
    }
};


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


game:DefineFastFlag("EnableVoiceSignal", false);
return function()
    return game:GetEngineFeature("AvatarChatServiceEnableVoiceEnabled") and game:GetFastFlag("EnableVoiceSignal");
end;


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


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


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


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