UNPKG

matrix-react-sdk

Version:
1,092 lines (1,086 loc) 148 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.labGroupNames = exports.defaultWatchManager = exports.SETTINGS = exports.LabGroup = exports.Features = void 0; var _react = _interopRequireDefault(require("react")); var _matrix = require("matrix-js-sdk/src/matrix"); var _languageHandler = require("../languageHandler"); var _DeviceIsolationModeController = _interopRequireDefault(require("./controllers/DeviceIsolationModeController.ts")); var _NotificationControllers = require("./controllers/NotificationControllers"); var _ThemeController = _interopRequireDefault(require("./controllers/ThemeController")); var _ReloadOnChangeController = _interopRequireDefault(require("./controllers/ReloadOnChangeController")); var _FontSizeController = _interopRequireDefault(require("./controllers/FontSizeController")); var _SystemFontController = _interopRequireDefault(require("./controllers/SystemFontController")); var _SettingLevel = require("./SettingLevel"); var _Keyboard = require("../Keyboard"); var _UIFeatureController = _interopRequireDefault(require("./controllers/UIFeatureController")); var _UIFeature = require("./UIFeature"); var _Layout = require("./enums/Layout"); var _ReducedMotionController = _interopRequireDefault(require("./controllers/ReducedMotionController")); var _IncompatibleController = _interopRequireDefault(require("./controllers/IncompatibleController")); var _ImageSize = require("./enums/ImageSize"); var _spaces = require("../stores/spaces"); var _SdkConfig = _interopRequireDefault(require("../SdkConfig")); var _SlidingSyncController = _interopRequireDefault(require("./controllers/SlidingSyncController")); var _FontWatcher = require("./watchers/FontWatcher"); var _ServerSupportUnstableFeatureController = _interopRequireDefault(require("./controllers/ServerSupportUnstableFeatureController")); var _WatchManager = require("./WatchManager"); var _AnalyticsController = _interopRequireDefault(require("./controllers/AnalyticsController")); var _FallbackIceServerController = _interopRequireDefault(require("./controllers/FallbackIceServerController")); /* Copyright 2024 New Vector Ltd. Copyright 2018-2024 The Matrix.org Foundation C.I.C. Copyright 2017 Travis Ralston SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ const defaultWatchManager = exports.defaultWatchManager = new _WatchManager.WatchManager(); // These are just a bunch of helper arrays to avoid copy/pasting a bunch of times const LEVELS_ROOM_SETTINGS = [_SettingLevel.SettingLevel.DEVICE, _SettingLevel.SettingLevel.ROOM_DEVICE, _SettingLevel.SettingLevel.ROOM_ACCOUNT, _SettingLevel.SettingLevel.ACCOUNT, _SettingLevel.SettingLevel.CONFIG]; const LEVELS_ROOM_OR_ACCOUNT = [_SettingLevel.SettingLevel.ROOM_ACCOUNT, _SettingLevel.SettingLevel.ACCOUNT]; const LEVELS_ROOM_SETTINGS_WITH_ROOM = [_SettingLevel.SettingLevel.DEVICE, _SettingLevel.SettingLevel.ROOM_DEVICE, _SettingLevel.SettingLevel.ROOM_ACCOUNT, _SettingLevel.SettingLevel.ACCOUNT, _SettingLevel.SettingLevel.CONFIG, _SettingLevel.SettingLevel.ROOM]; const LEVELS_ACCOUNT_SETTINGS = [_SettingLevel.SettingLevel.DEVICE, _SettingLevel.SettingLevel.ACCOUNT, _SettingLevel.SettingLevel.CONFIG]; const LEVELS_DEVICE_ONLY_SETTINGS = [_SettingLevel.SettingLevel.DEVICE]; const LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG = [_SettingLevel.SettingLevel.DEVICE, _SettingLevel.SettingLevel.CONFIG]; const LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED = [_SettingLevel.SettingLevel.CONFIG, _SettingLevel.SettingLevel.DEVICE]; const LEVELS_UI_FEATURE = [_SettingLevel.SettingLevel.CONFIG // in future we might have a .well-known level or something ]; let LabGroup = exports.LabGroup = /*#__PURE__*/function (LabGroup) { LabGroup[LabGroup["Messaging"] = 0] = "Messaging"; LabGroup[LabGroup["Profile"] = 1] = "Profile"; LabGroup[LabGroup["Spaces"] = 2] = "Spaces"; LabGroup[LabGroup["Widgets"] = 3] = "Widgets"; LabGroup[LabGroup["Rooms"] = 4] = "Rooms"; LabGroup[LabGroup["Threads"] = 5] = "Threads"; LabGroup[LabGroup["VoiceAndVideo"] = 6] = "VoiceAndVideo"; LabGroup[LabGroup["Moderation"] = 7] = "Moderation"; LabGroup[LabGroup["Analytics"] = 8] = "Analytics"; LabGroup[LabGroup["Themes"] = 9] = "Themes"; LabGroup[LabGroup["Encryption"] = 10] = "Encryption"; LabGroup[LabGroup["Experimental"] = 11] = "Experimental"; LabGroup[LabGroup["Developer"] = 12] = "Developer"; LabGroup[LabGroup["Ui"] = 13] = "Ui"; return LabGroup; }({}); let Features = exports.Features = /*#__PURE__*/function (Features) { Features["VoiceBroadcast"] = "feature_voice_broadcast"; Features["VoiceBroadcastForceSmallChunks"] = "feature_voice_broadcast_force_small_chunks"; Features["NotificationSettings2"] = "feature_notification_settings2"; Features["OidcNativeFlow"] = "feature_oidc_native_flow"; Features["ReleaseAnnouncement"] = "feature_release_announcement"; Features["RustCrypto"] = "feature_rust_crypto"; return Features; }({}); const labGroupNames = exports.labGroupNames = { [LabGroup.Messaging]: (0, _languageHandler._td)("labs|group_messaging"), [LabGroup.Profile]: (0, _languageHandler._td)("labs|group_profile"), [LabGroup.Spaces]: (0, _languageHandler._td)("labs|group_spaces"), [LabGroup.Widgets]: (0, _languageHandler._td)("labs|group_widgets"), [LabGroup.Rooms]: (0, _languageHandler._td)("labs|group_rooms"), [LabGroup.Threads]: (0, _languageHandler._td)("labs|group_threads"), [LabGroup.VoiceAndVideo]: (0, _languageHandler._td)("labs|group_voip"), [LabGroup.Moderation]: (0, _languageHandler._td)("labs|group_moderation"), [LabGroup.Analytics]: (0, _languageHandler._td)("common|analytics"), [LabGroup.Themes]: (0, _languageHandler._td)("labs|group_themes"), [LabGroup.Encryption]: (0, _languageHandler._td)("labs|group_encryption"), [LabGroup.Experimental]: (0, _languageHandler._td)("labs|group_experimental"), [LabGroup.Developer]: (0, _languageHandler._td)("labs|group_developer"), [LabGroup.Ui]: (0, _languageHandler._td)("labs|group_ui") }; // Type using I-identifier for backwards compatibility from before it became a discriminated union const SETTINGS = exports.SETTINGS = { "feature_video_rooms": { isFeature: true, labsGroup: LabGroup.VoiceAndVideo, displayName: (0, _languageHandler._td)("labs|video_rooms"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, default: false, // Reload to ensure that the left panel etc. get remounted controller: new _ReloadOnChangeController.default(), betaInfo: { title: (0, _languageHandler._td)("labs|video_rooms"), caption: () => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("labs|video_rooms_a_new_way_to_chat", { brand: _SdkConfig.default.get().brand })), /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("labs|video_rooms_always_on_voip_channels", { brand: _SdkConfig.default.get().brand }))), faq: () => _SdkConfig.default.get().bug_report_endpoint_url && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h4", null, (0, _languageHandler._t)("labs|video_rooms_faq1_question")), /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("labs|video_rooms_faq1_answer")), /*#__PURE__*/_react.default.createElement("h4", null, (0, _languageHandler._t)("labs|video_rooms_faq2_question")), /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("labs|video_rooms_faq2_answer"))), feedbackLabel: "video-room-feedback", feedbackSubheading: (0, _languageHandler._td)("labs|video_rooms_feedbackSubheading"), image: require("../../res/img/betas/video_rooms.png"), requiresRefresh: true } }, [Features.NotificationSettings2]: { isFeature: true, labsGroup: LabGroup.Experimental, supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, displayName: (0, _languageHandler._td)("labs|notification_settings"), default: false, betaInfo: { title: (0, _languageHandler._td)("labs|notification_settings_beta_title"), caption: () => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("labs|notification_settings_beta_caption", { brand: _SdkConfig.default.get().brand }))) } }, "feature_msc3531_hide_messages_pending_moderation": { isFeature: true, labsGroup: LabGroup.Moderation, // Requires a reload since this setting is cached in EventUtils controller: new _ReloadOnChangeController.default(), displayName: (0, _languageHandler._td)("labs|msc3531_hide_messages_pending_moderation"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, default: false }, "feature_report_to_moderators": { isFeature: true, labsGroup: LabGroup.Moderation, displayName: (0, _languageHandler._td)("labs|report_to_moderators"), description: (0, _languageHandler._td)("labs|report_to_moderators_description"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, default: false }, "feature_latex_maths": { isFeature: true, labsGroup: LabGroup.Messaging, displayName: (0, _languageHandler._td)("labs|latex_maths"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, default: false }, "feature_wysiwyg_composer": { isFeature: true, labsGroup: LabGroup.Messaging, displayName: (0, _languageHandler._td)("labs|wysiwyg_composer"), description: (0, _languageHandler._td)("labs|feature_wysiwyg_composer_description"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, default: false }, "feature_mjolnir": { isFeature: true, labsGroup: LabGroup.Moderation, displayName: (0, _languageHandler._td)("labs|mjolnir"), description: (0, _languageHandler._td)("labs|currently_experimental"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, default: false }, "feature_custom_themes": { isFeature: true, labsGroup: LabGroup.Themes, displayName: (0, _languageHandler._td)("labs|custom_themes"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, default: false }, "feature_exclude_insecure_devices": { isFeature: true, labsGroup: LabGroup.Encryption, controller: new _DeviceIsolationModeController.default(), displayName: (0, _languageHandler._td)("labs|exclude_insecure_devices"), description: (0, _languageHandler._td)("labs|exclude_insecure_devices_description"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, default: false }, "useOnlyCurrentProfiles": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|disable_historical_profile"), default: false }, "mjolnirRooms": { supportedLevels: [_SettingLevel.SettingLevel.ACCOUNT], default: [] }, "mjolnirPersonalRoom": { supportedLevels: [_SettingLevel.SettingLevel.ACCOUNT], default: null }, "feature_html_topic": { isFeature: true, labsGroup: LabGroup.Rooms, supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, displayName: (0, _languageHandler._td)("labs|html_topic"), default: false }, "feature_bridge_state": { isFeature: true, labsGroup: LabGroup.Rooms, supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, displayName: (0, _languageHandler._td)("labs|bridge_state"), default: false }, "feature_jump_to_date": { isFeature: true, labsGroup: LabGroup.Messaging, displayName: (0, _languageHandler._td)("labs|jump_to_date"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, default: false, controller: new _ServerSupportUnstableFeatureController.default("feature_jump_to_date", defaultWatchManager, [["org.matrix.msc3030"], ["org.matrix.msc3030.stable"]], "v1.6", (0, _languageHandler._td)("labs|jump_to_date_msc_support")) }, "RoomList.backgroundImage": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: null }, "sendReadReceipts": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|send_read_receipts"), default: true, controller: new _ServerSupportUnstableFeatureController.default("sendReadReceipts", defaultWatchManager, [["org.matrix.msc2285.stable"]], "v1.4", (0, _languageHandler._td)("settings|send_read_receipts_unsupported"), true) }, "feature_sliding_sync": { isFeature: true, labsGroup: LabGroup.Developer, supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, displayName: (0, _languageHandler._td)("labs|sliding_sync"), description: (0, _languageHandler._td)("labs|sliding_sync_description"), shouldWarn: true, default: false, controller: new _SlidingSyncController.default() }, "feature_sliding_sync_proxy_url": { // This is not a distinct feature, it is a legacy setting for feature_sliding_sync above supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, default: "" }, "feature_element_call_video_rooms": { isFeature: true, labsGroup: LabGroup.VoiceAndVideo, supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, displayName: (0, _languageHandler._td)("labs|element_call_video_rooms"), controller: new _ReloadOnChangeController.default(), default: false }, "feature_group_calls": { isFeature: true, labsGroup: LabGroup.VoiceAndVideo, supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, displayName: (0, _languageHandler._td)("labs|group_calls"), controller: new _ReloadOnChangeController.default(), default: false }, "feature_disable_call_per_sender_encryption": { isFeature: true, labsGroup: LabGroup.VoiceAndVideo, supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, displayName: (0, _languageHandler._td)("labs|feature_disable_call_per_sender_encryption"), default: false }, "feature_allow_screen_share_only_mode": { isFeature: true, labsGroup: LabGroup.VoiceAndVideo, supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, description: (0, _languageHandler._td)("labs|under_active_development"), displayName: (0, _languageHandler._td)("labs|allow_screen_share_only_mode"), controller: new _ReloadOnChangeController.default(), default: false }, "feature_location_share_live": { isFeature: true, labsGroup: LabGroup.Messaging, supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, displayName: (0, _languageHandler._td)("labs|location_share_live"), description: (0, _languageHandler._td)("labs|location_share_live_description"), shouldWarn: true, default: false }, "feature_dynamic_room_predecessors": { isFeature: true, labsGroup: LabGroup.Rooms, supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, displayName: (0, _languageHandler._td)("labs|dynamic_room_predecessors"), description: (0, _languageHandler._td)("labs|dynamic_room_predecessors_description"), shouldWarn: true, default: false }, [Features.VoiceBroadcast]: { isFeature: true, labsGroup: LabGroup.Messaging, supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, displayName: (0, _languageHandler._td)("labs|voice_broadcast"), default: false }, [Features.VoiceBroadcastForceSmallChunks]: { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, displayName: (0, _languageHandler._td)("labs|voice_broadcast_force_small_chunks"), default: false }, [Features.OidcNativeFlow]: { isFeature: true, labsGroup: LabGroup.Developer, supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, displayName: (0, _languageHandler._td)("labs|oidc_native_flow"), description: (0, _languageHandler._td)("labs|oidc_native_flow_description"), default: false }, [Features.RustCrypto]: { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: true }, /** * @deprecated in favor of {@link fontSizeDelta} */ "baseFontSize": { displayName: (0, _languageHandler._td)("settings|appearance|font_size"), supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: "", controller: new _FontSizeController.default() }, "feature_render_reaction_images": { isFeature: true, labsGroup: LabGroup.Messaging, displayName: (0, _languageHandler._td)("labs|render_reaction_images"), description: (0, _languageHandler._td)("labs|render_reaction_images_description"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, default: false }, /** * With the transition to Compound we are moving to a base font size * of 16px. We're taking the opportunity to move away from the `baseFontSize` * setting that had a 5px offset. * @deprecated in favor {@link fontSizeDelta} */ "baseFontSizeV2": { displayName: (0, _languageHandler._td)("settings|appearance|font_size"), supportedLevels: [_SettingLevel.SettingLevel.DEVICE], default: "", controller: new _FontSizeController.default() }, /** * This delta is added to the browser default font size * Moving from `baseFontSizeV2` to `fontSizeDelta` to replace the default 16px to --cpd-font-size-root (browser default font size) + fontSizeDelta */ "fontSizeDelta": { displayName: (0, _languageHandler._td)("settings|appearance|font_size"), supportedLevels: [_SettingLevel.SettingLevel.DEVICE], default: _FontWatcher.FontWatcher.DEFAULT_DELTA, controller: new _FontSizeController.default() }, "useCustomFontSize": { displayName: (0, _languageHandler._td)("settings|appearance|custom_font_size"), supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: false }, "MessageComposerInput.suggestEmoji": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|emoji_autocomplete"), default: true, invertedSettingName: "MessageComposerInput.dontSuggestEmoji" }, "MessageComposerInput.showStickersButton": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|show_stickers_button"), default: true, controller: new _UIFeatureController.default(_UIFeature.UIFeature.Widgets, false) }, "MessageComposerInput.showPollsButton": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|preferences|show_polls_button"), default: true }, "MessageComposerInput.insertTrailingColon": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|insert_trailing_colon_mentions"), default: true }, // TODO: Wire up appropriately to UI (FTUE notifications) "Notifications.alwaysShowBadgeCounts": { supportedLevels: LEVELS_ROOM_OR_ACCOUNT, default: false }, // Used to be a feature, name kept for backwards compat "feature_hidebold": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, displayName: (0, _languageHandler._td)("labs|hidebold"), default: false }, "Notifications.showbold": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, displayName: (0, _languageHandler._td)("settings|showbold"), default: false, invertedSettingName: "feature_hidebold", controller: new _AnalyticsController.default("WebSettingsNotificationsShowBoldToggle") }, "Notifications.tac_only_notifications": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, displayName: (0, _languageHandler._td)("settings|tac_only_notifications"), default: true, controller: new _AnalyticsController.default("WebSettingsNotificationsTACOnlyNotificationsToggle") }, "feature_ask_to_join": { isFeature: true, labsGroup: LabGroup.Rooms, default: false, displayName: (0, _languageHandler._td)("labs|ask_to_join"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true }, "feature_notifications": { isFeature: true, labsGroup: LabGroup.Messaging, displayName: (0, _languageHandler._td)("labs|notifications"), description: (0, _languageHandler._td)("labs|unrealiable_e2e"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, supportedLevelsAreOrdered: true, default: false }, "useCompactLayout": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, displayName: (0, _languageHandler._td)("settings|preferences|compact_modern"), default: false, controller: new _IncompatibleController.default("layout", false, v => v !== _Layout.Layout.Group) }, "showRedactions": { supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM, displayName: (0, _languageHandler._td)("settings|show_redaction_placeholder"), default: true, invertedSettingName: "hideRedactions" }, "showJoinLeaves": { supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM, displayName: (0, _languageHandler._td)("settings|show_join_leave"), default: true, invertedSettingName: "hideJoinLeaves" }, "showAvatarChanges": { supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM, displayName: (0, _languageHandler._td)("settings|show_avatar_changes"), default: true, invertedSettingName: "hideAvatarChanges" }, "showDisplaynameChanges": { supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM, displayName: (0, _languageHandler._td)("settings|show_displayname_changes"), default: true, invertedSettingName: "hideDisplaynameChanges" }, "showReadReceipts": { supportedLevels: LEVELS_ROOM_SETTINGS, displayName: (0, _languageHandler._td)("settings|show_read_receipts"), default: true, invertedSettingName: "hideReadReceipts" }, "showTwelveHourTimestamps": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|use_12_hour_format"), default: false }, "alwaysShowTimestamps": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|always_show_message_timestamps"), default: false }, "userTimezone": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, displayName: (0, _languageHandler._td)("settings|preferences|user_timezone"), default: "" }, "userTimezonePublish": { // This is per-device so you can avoid having devices overwrite each other. supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, displayName: (0, _languageHandler._td)("settings|preferences|publish_timezone"), default: false, controller: new _ServerSupportUnstableFeatureController.default("userTimezonePublish", defaultWatchManager, [[_matrix.UNSTABLE_MSC4133_EXTENDED_PROFILES]], undefined, (0, _languageHandler._td)("labs|extended_profiles_msc_support")) }, "autoplayGifs": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|autoplay_gifs"), default: false }, "autoplayVideo": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|autoplay_videos"), default: false }, "enableSyntaxHighlightLanguageDetection": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|automatic_language_detection_syntax_highlight"), default: false }, "expandCodeByDefault": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|code_block_expand_default"), default: false }, "showCodeLineNumbers": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|code_block_line_numbers"), default: true }, "scrollToBottomOnMessageSent": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|jump_to_bottom_on_send"), default: true }, "Pill.shouldShowPillAvatar": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|preferences|show_avatars_pills"), default: true, invertedSettingName: "Pill.shouldHidePillAvatar" }, "TextualBody.enableBigEmoji": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|big_emoji"), default: true, invertedSettingName: "TextualBody.disableBigEmoji" }, "MessageComposerInput.isRichTextEnabled": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: false }, "MessageComposer.showFormatting": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: false }, "sendTypingNotifications": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|send_typing_notifications"), default: true, invertedSettingName: "dontSendTypingNotifications" }, "showTypingNotifications": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|show_typing_notifications"), default: true }, "ctrlFForSearch": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: _Keyboard.IS_MAC ? (0, _languageHandler._td)("settings|use_command_f_search") : (0, _languageHandler._td)("settings|use_control_f_search"), default: false }, "MessageComposerInput.ctrlEnterToSend": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: _Keyboard.IS_MAC ? (0, _languageHandler._td)("settings|use_command_enter_send_message") : (0, _languageHandler._td)("settings|use_control_enter_send_message"), default: false }, "MessageComposerInput.surroundWith": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|preferences|surround_text"), default: false }, "MessageComposerInput.autoReplaceEmoji": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|replace_plain_emoji"), default: false }, "MessageComposerInput.useMarkdown": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|enable_markdown"), description: () => (0, _languageHandler._t)("settings|enable_markdown_description", {}, { code: sub => /*#__PURE__*/_react.default.createElement("code", null, sub) }), default: true }, "VideoView.flipVideoHorizontally": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|voip|mirror_local_feed"), default: false }, "theme": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: "light", controller: new _ThemeController.default() }, "custom_themes": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: [] }, "use_system_theme": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: true, displayName: (0, _languageHandler._td)("settings|appearance|match_system_theme") }, "useBundledEmojiFont": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: true, displayName: (0, _languageHandler._td)("settings|appearance|bundled_emoji_font"), controller: new _SystemFontController.default() }, "useSystemFont": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: false, displayName: (0, _languageHandler._td)("settings|appearance|custom_font"), controller: new _SystemFontController.default() }, "systemFont": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: "", displayName: (0, _languageHandler._td)("settings|appearance|custom_font_name"), controller: new _SystemFontController.default() }, "webRtcAllowPeerToPeer": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, displayName: (0, _languageHandler._td)("settings|voip|allow_p2p"), description: (0, _languageHandler._td)("settings|voip|allow_p2p_description"), default: true, invertedSettingName: "webRtcForceTURN" }, "webrtc_audiooutput": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: "default" }, "webrtc_audioinput": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: "default" }, "webrtc_videoinput": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: "default" }, "webrtc_audio_autoGainControl": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, displayName: (0, _languageHandler._td)("settings|voip|auto_gain_control"), default: true }, "webrtc_audio_echoCancellation": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, displayName: (0, _languageHandler._td)("settings|voip|echo_cancellation"), default: true }, "webrtc_audio_noiseSuppression": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, displayName: (0, _languageHandler._td)("settings|voip|noise_suppression"), default: true }, "language": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, default: "en" }, "breadcrumb_rooms": { // not really a setting supportedLevels: [_SettingLevel.SettingLevel.ACCOUNT], default: [] }, "recent_emoji": { // not really a setting supportedLevels: [_SettingLevel.SettingLevel.ACCOUNT], default: [] }, "SpotlightSearch.recentSearches": { // not really a setting supportedLevels: [_SettingLevel.SettingLevel.ACCOUNT], default: [] // list of room IDs, most recent first }, "SpotlightSearch.showNsfwPublicRooms": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|show_nsfw_content"), default: false }, "room_directory_servers": { supportedLevels: [_SettingLevel.SettingLevel.ACCOUNT], default: [] }, "integrationProvisioning": { supportedLevels: [_SettingLevel.SettingLevel.ACCOUNT], default: true }, "allowedWidgets": { supportedLevels: [_SettingLevel.SettingLevel.ROOM_ACCOUNT, _SettingLevel.SettingLevel.ROOM_DEVICE], supportedLevelsAreOrdered: true, default: {} // none allowed }, // Legacy, kept around for transitionary purposes "analyticsOptIn": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, default: false }, "pseudonymousAnalyticsOptIn": { supportedLevels: [_SettingLevel.SettingLevel.ACCOUNT], displayName: (0, _languageHandler._td)("settings|security|send_analytics"), default: null }, "deviceClientInformationOptIn": { supportedLevels: [_SettingLevel.SettingLevel.ACCOUNT], displayName: (0, _languageHandler._td)("settings|security|record_session_details"), default: false }, "FTUE.useCaseSelection": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: null }, "Registration.mobileRegistrationHelper": { supportedLevels: [_SettingLevel.SettingLevel.CONFIG], default: false }, "autocompleteDelay": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, default: 200 }, "readMarkerInViewThresholdMs": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, default: 3000 }, "readMarkerOutOfViewThresholdMs": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, default: 30000 }, "blacklistUnverifiedDevices": { // We specifically want to have room-device > device so that users may set a device default // with a per-room override. supportedLevels: [_SettingLevel.SettingLevel.ROOM_DEVICE, _SettingLevel.SettingLevel.DEVICE], supportedLevelsAreOrdered: true, displayName: { "default": (0, _languageHandler._td)("settings|security|strict_encryption"), "room-device": (0, _languageHandler._td)("room_settings|security|strict_encryption") }, default: false, controller: new _UIFeatureController.default(_UIFeature.UIFeature.AdvancedEncryption) }, "urlPreviewsEnabled": { supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM, displayName: { "default": (0, _languageHandler._td)("settings|inline_url_previews_default"), "room-account": (0, _languageHandler._td)("settings|inline_url_previews_room_account"), "room": (0, _languageHandler._td)("settings|inline_url_previews_room") }, default: true, controller: new _UIFeatureController.default(_UIFeature.UIFeature.URLPreviews) }, "urlPreviewsEnabled_e2ee": { supportedLevels: [_SettingLevel.SettingLevel.ROOM_DEVICE], displayName: { "room-account": (0, _languageHandler._td)("settings|inline_url_previews_room_account") }, default: false, controller: new _UIFeatureController.default(_UIFeature.UIFeature.URLPreviews) }, "notificationsEnabled": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: false, controller: new _NotificationControllers.NotificationsEnabledController() }, "deviceNotificationsEnabled": { supportedLevels: [_SettingLevel.SettingLevel.DEVICE], default: true }, "notificationSound": { supportedLevels: LEVELS_ROOM_OR_ACCOUNT, default: false }, "notificationBodyEnabled": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: true, controller: new _NotificationControllers.NotificationBodyEnabledController() }, "audioNotificationsEnabled": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: true }, "enableWidgetScreenshots": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("devtools|widget_screenshots"), default: false }, "promptBeforeInviteUnknownUsers": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|prompt_invite"), default: true }, "widgetOpenIDPermissions": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: { allow: [], deny: [] } }, "breadcrumbs": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|show_breadcrumbs"), default: true }, "FTUE.userOnboardingButton": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|preferences|show_checklist_shortcuts"), default: true }, "showHiddenEventsInTimeline": { displayName: (0, _languageHandler._td)("devtools|show_hidden_events"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: false }, "lowBandwidth": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, displayName: (0, _languageHandler._td)("devtools|low_bandwidth_mode"), description: (0, _languageHandler._td)("devtools|low_bandwidth_mode_description"), default: false, controller: new _ReloadOnChangeController.default(), shouldWarn: true }, "fallbackICEServerAllowed": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, description: (0, _languageHandler._td)("settings|voip|enable_fallback_ice_server_description"), // This is a tri-state value, where `null` means "prompt the user". default: null, controller: new _FallbackIceServerController.default() }, "showImages": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: (0, _languageHandler._td)("settings|image_thumbnails"), default: true }, "RightPanel.phasesGlobal": { supportedLevels: [_SettingLevel.SettingLevel.DEVICE], default: null }, "RightPanel.phases": { supportedLevels: [_SettingLevel.SettingLevel.ROOM_DEVICE], default: null }, "enableEventIndexing": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, displayName: (0, _languageHandler._td)("settings|security|enable_message_search"), default: true }, "crawlerSleepTime": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, displayName: (0, _languageHandler._td)("settings|security|message_search_sleep_time"), default: 3000 }, "showCallButtonsInComposer": { // Dev note: This is no longer "in composer" but is instead "in room header". // TODO: Rename with settings v3 supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, default: true, controller: new _UIFeatureController.default(_UIFeature.UIFeature.Voip) }, "ircDisplayNameWidth": { // We specifically want to have room-device > device so that users may set a device default // with a per-room override. supportedLevels: [_SettingLevel.SettingLevel.ROOM_DEVICE, _SettingLevel.SettingLevel.DEVICE], supportedLevelsAreOrdered: true, default: 80 }, "layout": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: _Layout.Layout.Group }, "Images.size": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: _ImageSize.ImageSize.Normal }, "showChatEffects": { supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM, displayName: (0, _languageHandler._td)("settings|show_chat_effects"), default: true, controller: new _ReducedMotionController.default() }, "Performance.addSendMessageTimingMetadata": { supportedLevels: [_SettingLevel.SettingLevel.CONFIG], default: false }, "Widgets.pinned": { // deprecated supportedLevels: LEVELS_ROOM_OR_ACCOUNT, default: {} }, "Widgets.layout": { supportedLevels: LEVELS_ROOM_OR_ACCOUNT, default: {} }, "Spaces.allRoomsInHome": { displayName: (0, _languageHandler._td)("settings|all_rooms_home"), description: (0, _languageHandler._td)("settings|all_rooms_home_description"), supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: false }, "Spaces.enabledMetaSpaces": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: { [_spaces.MetaSpace.Home]: true } }, "Spaces.showPeopleInSpace": { supportedLevels: [_SettingLevel.SettingLevel.ROOM_ACCOUNT], default: true }, "developerMode": { displayName: (0, _languageHandler._td)("devtools|developer_mode"), supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: false }, "automaticErrorReporting": { displayName: (0, _languageHandler._td)("labs|automatic_debug_logs"), supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: false, controller: new _ReloadOnChangeController.default() }, "automaticDecryptionErrorReporting": { displayName: (0, _languageHandler._td)("labs|automatic_debug_logs_decryption"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: false, controller: new _ReloadOnChangeController.default() }, "automaticKeyBackNotEnabledReporting": { displayName: (0, _languageHandler._td)("labs|automatic_debug_logs_key_backup"), supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, default: false }, "debug_scroll_panel": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: false }, "debug_timeline_panel": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: false }, "debug_registration": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: false }, "debug_animation": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: false }, "debug_legacy_call_handler": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: false }, "audioInputMuted": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: false }, "videoInputMuted": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: false }, "activeCallRoomIds": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: [] }, /** * Enable or disable the release announcement feature */ [Features.ReleaseAnnouncement]: { isFeature: true, labsGroup: LabGroup.Ui, supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, default: true, displayName: (0, _languageHandler._td)("labs|release_announcement") }, /** * Managed by the {@link ReleaseAnnouncementStore} * Store the release announcement data */ "releaseAnnouncementData": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, default: {} }, [_UIFeature.UIFeature.RoomHistorySettings]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.AdvancedEncryption]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.URLPreviews]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.Widgets]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.LocationSharing]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.Voip]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.Feedback]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.Registration]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.PasswordReset]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.Deactivate]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.ShareQRCode]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.ShareSocial]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.IdentityServer]: { supportedLevels: LEVELS_UI_FEATURE, default: true, // Identity server (discovery) settings make no sense if 3PIDs in general are hidden controller: new _UIFeatureController.default(_UIFeature.UIFeature.ThirdPartyID) }, [_UIFeature.UIFeature.ThirdPartyID]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.AdvancedSettings]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.TimelineEnableRelativeDates]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, [_UIFeature.UIFeature.BulkUnverifiedSessionsReminder]: { supportedLevels: LEVELS_UI_FEATURE, default: true }, // Electron-specific settings, they are stored by Electron and set/read over an IPC. // We store them over there are they are necessary to know before the renderer process launches. "Electron.autoLaunch": { supportedLevels: [_SettingLevel.SettingLevel.PLATFORM], displayName: (0, _languageHandler._td)("settings|start_automatically"), default: false }, "Electron.warnBeforeExit": { supportedLevels: [_SettingLevel.SettingLevel.PLATFORM], displayName: (0, _languageHandler._td)("settings|warn_quit"), default: true }, "Electron.alwaysShowMenuBar": { supportedLevels: [_SettingLevel.SettingLevel.PLATFORM], displayName: (0, _languageHandler._td)("settings|preferences|always_show_menu_bar"), default: false }, "Electron.showTrayIcon": { supportedLevels: [_SettingLevel.SettingLevel.PLATFORM], displayName: (0, _languageHandler._td)("settings|preferences|enable_tray_icon"), default: true }, "Electron.enableHardwareAcceleration": { supportedLevels: [_SettingLevel.SettingLevel.PLATFORM], displayName: (0, _languageHandler._td)("settings|preferences|enable_hardware_acceleration"), default: true } }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9tYXRyaXgiLCJfbGFuZ3VhZ2VIYW5kbGVyIiwiX0RldmljZUlzb2xhdGlvbk1vZGVDb250cm9sbGVyIiwiX05vdGlmaWNhdGlvbkNvbnRyb2xsZXJzIiwiX1RoZW1lQ29udHJvbGxlciIsIl9SZWxvYWRPbkNoYW5nZUNvbnRyb2xsZXIiLCJfRm9udFNpemVDb250cm9sbGVyIiwiX1N5c3RlbUZvbnRDb250cm9sbGVyIiwiX1NldHRpbmdMZXZlbCIsIl9LZXlib2FyZCIsIl9VSUZlYXR1cmVDb250cm9sbGVyIiwiX1VJRmVhdHVyZSIsIl9MYXlvdXQiLCJfUmVkdWNlZE1vdGlvbkNvbnRyb2xsZXIiLCJfSW5jb21wYXRpYmxlQ29udHJvbGxlciIsIl9JbWFnZVNpemUiLCJfc3BhY2VzIiwiX1Nka0NvbmZpZyIsIl9TbGlkaW5nU3luY0NvbnRyb2xsZXIiLCJfRm9udFdhdGNoZXIiLCJfU2VydmVyU3VwcG9ydFVuc3RhYmxlRmVhdHVyZUNvbnRyb2xsZXIiLCJfV2F0Y2hNYW5hZ2VyIiwiX0FuYWx5dGljc0NvbnRyb2xsZXIiLCJfRmFsbGJhY2tJY2VTZXJ2ZXJDb250cm9sbGVyIiwiZGVmYXVsdFdhdGNoTWFuYWdlciIsImV4cG9ydHMiLCJXYXRjaE1hbmFnZXIiLCJMRVZFTFNfUk9PTV9TRVRUSU5HUyIsIlNldHRpbmdMZXZlbCIsIkRFVklDRSIsIlJPT01fREVWSUNFIiwiUk9PTV9BQ0NPVU5UIiwiQUNDT1VOVCIsIkNPTkZJRyIsIkxFVkVMU19ST09NX09SX0FDQ09VTlQiLCJMRVZFTFNfUk9PTV9TRVRUSU5HU19XSVRIX1JPT00iLCJST09NIiwiTEVWRUxTX0FDQ09VTlRfU0VUVElOR1MiLCJMRVZFTFNfREVWSUNFX09OTFlfU0VUVElOR1MiLCJMRVZFTFNfREVWSUNFX09OTFlfU0VUVElOR1NfV0lUSF9DT05GSUciLCJMRVZFTFNfREVWSUNFX09OTFlfU0VUVElOR1NfV0lUSF9DT05GSUdfUFJJT1JJVElTRUQiLCJMRVZFTFNfVUlfRkVBVFVSRSIsIkxhYkdyb3VwIiwiRmVhdHVyZXMiLCJsYWJHcm91cE5hbWVzIiwiTWVzc2FnaW5nIiwiX3RkIiwiUHJvZmlsZSIsIlNwYWNlcyIsIldpZGdldHMiLCJSb29tcyIsIlRocmVhZHMiLCJWb2ljZUFuZFZpZGVvIiwiTW9kZXJhdGlvbiIsIkFuYWx5dGljcyIsIlRoZW1lcyIsIkVuY3J5cHRpb24iLCJFeHBlcmltZW50YWwiLCJEZXZlbG9wZXIiLCJVaSIsIlNFVFRJTkdTIiwiaXNGZWF0dXJlIiwibGFic0dyb3VwIiwiZGlzcGxheU5hbWUiLCJzdXBwb3J0ZWRMZXZlbHMiLCJkZWZhdWx0IiwiY29udHJvbGxlciIsIlJlbG9hZE9uQ2hhbmdlQ29udHJvbGxlciIsImJldGFJbmZvIiwidGl0bGUiLCJjYXB0aW9uIiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50IiwiX3QiLCJicmFuZCIsIlNka0NvbmZpZyIsImdldCIsImZhcSIsImJ1Z19yZXBvcnRfZW5kcG9pbnRfdXJsIiwiZmVlZGJhY2tMYWJlbCIsImZlZWRiYWNrU3ViaGVhZGluZyIsImltYWdlIiwicmVxdWlyZXNSZWZyZXNoIiwiTm90aWZpY2F0aW9uU2V0dGluZ3MyIiwic3VwcG9ydGVkTGV2ZWxzQXJlT3JkZXJlZCIsImRlc2NyaXB0aW9uIiwiRGV2aWNlSXNvbGF0aW9uTW9kZUNvbnRyb2xsZXIiLCJTZXJ2ZXJTdXBwb3J0VW5zdGFibGVGZWF0dXJlQ29udHJvbGxlciIsInNob3VsZFdhcm4iLCJTbGlkaW5nU3luY0NvbnRyb2xsZXIiLCJWb2ljZUJyb2FkY2FzdCIsIlZvaWNlQnJvYWRjYXN0Rm9yY2VTbWFsbENodW5rcyIsIk9pZGNOYXRpdmVGbG93IiwiUnVzdENyeXB0byIsIkZvbnRTaXplQ29udHJvbGxlciIsIkZvbnRXYXRjaGVyIiwiREVGQVVMVF9ERUxUQSIsImludmVydGVkU2V0dGluZ05hbWUiLCJVSUZlYXR1cmVDb250cm9sbGVyIiwiVUlGZWF0dXJlIiwiQW5hbHl0aWNzQ29udHJvbGxlciIsIkluY29tcGF0aWJsZUNvbnRyb2xsZXIiLCJ2IiwiTGF5b3V0IiwiR3JvdXAiLCJVTlNUQUJMRV9NU0M0MTMzX0VYVEVOREVEX1BST0ZJTEVTIiwidW5kZWZpbmVkIiwiSVNfTUFDIiwiY29kZSIsInN1YiIsIlRoZW1lQ29udHJvbGxlciIsIlN5c3RlbUZvbnRDb250cm9sbGVyIiwiQWR2YW5jZWRFbmNyeXB0aW9uIiwiVVJMUHJldmlld3MiLCJOb3RpZmljYXRpb25zRW5hYmxlZENvbnRyb2xsZXIiLCJOb3RpZmljYXRpb25Cb2R5RW5hYmxlZENvbnRyb2xsZXIiLCJhbGxvdyIsImRlbnkiLCJGYWxsYmFja0ljZVNlcnZlckNvbnRyb2xsZXIiLCJWb2lwIiwiSW1hZ2VTaXplIiwiTm9ybWFsIiwiUmVkdWNlZE1vdGlvbkNvbnRyb2xsZXIiLCJNZXRhU3BhY2UiLCJIb21lIiwiUmVsZWFzZUFubm91bmNlbWVudCIsIlJvb21IaXN0b3J5U2V0dGluZ3MiLCJMb2NhdGlvblNoYXJpbmciLCJGZWVkYmFjayIsIlJlZ2lzdHJhdGlvbiIsIlBhc3N3b3JkUmVzZXQiLCJEZWFjdGl2YXRlIiwiU2hhcmVRUkNvZGUiLCJTaGFyZVNvY2lhbCIsIklkZW50aXR5U2VydmVyIiwiVGhpcmRQYXJ0eUlEIiwiQWR2YW5jZWRTZXR0aW5ncyIsIlRpbWVsaW5lRW5hYmxlUmVsYXRpdmVEYXRlcyIsIkJ1bGtVbnZlcmlmaWVkU2Vzc2lvbnNSZW1pbmRlciIsIlBMQVRGT1JNIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NldHRpbmdzL1NldHRpbmdzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAxOC0yMDI0IFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5Db3B5cmlnaHQgMjAxNyBUcmF2aXMgUmFsc3RvblxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBVTlNUQUJMRV9NU0M0MTMzX0VYVEVOREVEX1BST0ZJTEVTIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuXG5pbXBvcnQgeyBfdCwgX3RkLCBUcmFuc2xhdGlvbktleSB9IGZyb20gXCIuLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBEZXZpY2VJc29sYXRpb25Nb2RlQ29udHJvbGxlciBmcm9tIFwiLi9jb250cm9sbGVycy9EZXZpY2VJc29sYXRpb25Nb2RlQ29udHJvbGxlci50c1wiO1xuaW1wb3J0IHtcbiAgICBOb3RpZmljYXRpb25Cb2R5RW5hYmxlZENvbnRyb2xsZXIsXG4gICAgTm90aWZpY2F0aW9uc0VuYWJsZWRDb250cm9sbGVyLFxufSBmcm9tIFwiLi9jb250cm9sbGVycy9Ob3RpZmljYXRpb25Db250cm9sbGVyc1wiO1xuaW1wb3J0IFRoZW1lQ29udHJvbGxlciBmcm9tIFwiLi9jb250cm9sbGVycy9UaGVtZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBSZWxvYWRPbkNoYW5nZUNvbnRyb2xsZXIgZnJvbSBcIi4vY29udHJvbGxlcnMvUmVsb2FkT25DaGFuZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgRm9udFNpemVDb250cm9sbGVyIGZyb20gXCIuL2NvbnRyb2xsZXJzL0ZvbnRTaXplQ29udHJvbGxlclwiO1xuaW1wb3J0IFN5c3RlbUZvbnRDb250cm9sbGVyIGZyb20gXCIuL2NvbnRyb2xsZXJzL1N5c3RlbUZvbnRDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBTZXR0aW5nTGV2ZWwgfSBmcm9tIFwiLi9TZXR0aW5nTGV2ZWxcIjtcbmltcG9ydCBTZXR0aW5nQ29udHJvbGxlciBmcm9tIFwiLi9jb250cm9sbGVycy9TZXR0aW5nQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgSVNfTUFDIH0gZnJvbSBcIi4uL0tleWJvYXJkXCI7XG5pbXBvcnQgVUlGZWF0dXJlQ29udHJvbGxlciBmcm9tIFwiLi9jb250cm9sbGVycy9VSUZlYXR1cmVDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBVSUZlYXR1cmUgfSBmcm9tIFwiLi9VSUZlYXR1cmVcIjtcbmltcG9ydCB7IExheW91dCB9IGZyb20gXCIuL2VudW1zL0xheW91dFwiO1xuaW1wb3J0IFJlZHVjZWRNb3Rpb25Db250cm9sbGVyIGZyb20gXCIuL2NvbnRyb2xsZXJzL1JlZHVjZWRNb3Rpb25Db250cm9sbGVyXCI7XG5pbXBvcnQgSW5jb21wYXRpYmxlQ29udHJvbGxlciBmcm9tIFwiLi9jb250cm9sbGVycy9JbmNvbXBhdGlibGVDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBJbWFnZVNpemUgfSBmcm9tIFwiLi9lbnVtcy9JbWFnZVNpemVcIjtcbmltcG9ydCB7IE1ldGFTcGFjZSB9IGZyb20gXCIuLi9zdG9yZXMvc3BhY2VzXCI7XG5pbXBvcnQgU2RrQ29uZmlnIGZyb20gXCIuLi9TZGtDb25maWdcIjtcbmltcG9ydCBTbGlkaW5nU3luY0NvbnRyb2xsZXIgZnJvbSBcIi4vY29udHJvbGxlcnMvU2xpZGluZ1N5bmNDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBGb250V2F0Y2hlciB9IGZyb20gXCIuL3dhdGNoZXJzL0ZvbnRXYXRjaGVyXCI7XG5pbXBvcnQgU2VydmVyU3VwcG9ydFVuc3RhYmxlRmVhdHVyZUNvbnRyb2xsZXIgZnJvbSBcIi4vY29udHJvbGxlcnMvU2VydmVyU3VwcG9ydFVuc3RhYmxlRmVhdHVyZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IFdhdGNoTWFuYWdlciB9IGZyb20gXCIuL1dhdGNoTWF