matrix-react-sdk
Version:
SDK for matrix.org using React
1,092 lines (1,086 loc) • 148 kB
JavaScript
"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