matrix-react-sdk
Version:
SDK for matrix.org using React
104 lines (101 loc) • 18 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _randomstring = require("matrix-js-sdk/src/randomstring");
var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore"));
var _languageHandler = require("../../../languageHandler");
var _ToggleSwitch = _interopRequireDefault(require("./ToggleSwitch"));
var _StyledCheckbox = _interopRequireDefault(require("./StyledCheckbox"));
var _Settings = require("../../../settings/Settings");
/*
Copyright 2024 New Vector Ltd.
Copyright 2019 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.
*/
class SettingsFlag extends _react.default.Component {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "id", `mx_SettingsFlag_${(0, _randomstring.randomString)(12)}`);
(0, _defineProperty2.default)(this, "onSettingChange", () => {
this.setState({
value: this.getSettingValue()
});
});
(0, _defineProperty2.default)(this, "onChange", async checked => {
await this.save(checked);
this.setState({
value: checked
});
this.props.onChange?.(checked);
});
(0, _defineProperty2.default)(this, "checkBoxOnChange", e => {
this.onChange(e.target.checked);
});
(0, _defineProperty2.default)(this, "save", async val => {
await _SettingsStore.default.setValue(this.props.name, this.props.roomId ?? null, this.props.level, val !== undefined ? val : this.state.value);
});
this.state = {
value: this.getSettingValue()
};
}
componentDidMount() {
_Settings.defaultWatchManager.watchSetting(this.props.name, this.props.roomId ?? null, this.onSettingChange);
}
componentWillUnmount() {
_Settings.defaultWatchManager.unwatchSetting(this.onSettingChange);
}
getSettingValue() {
// If a level defined in props is overridden by a level at a high presedence, it gets disabled
// and we should show the overridding value.
if (_SettingsStore.default.settingIsOveriddenAtConfigLevel(this.props.name, this.props.roomId ?? null, this.props.level)) {
return !!_SettingsStore.default.getValue(this.props.name);
}
return !!_SettingsStore.default.getValueAt(this.props.level, this.props.name, this.props.roomId ?? null, this.props.isExplicit);
}
render() {
const disabled = !_SettingsStore.default.canSetValue(this.props.name, this.props.roomId ?? null, this.props.level);
if (disabled && this.props.hideIfCannotSet) return null;
const label = this.props.label ?? _SettingsStore.default.getDisplayName(this.props.name, this.props.level);
const description = _SettingsStore.default.getDescription(this.props.name);
const shouldWarn = _SettingsStore.default.shouldHaveWarning(this.props.name);
if (this.props.useCheckbox) {
return /*#__PURE__*/_react.default.createElement(_StyledCheckbox.default, {
checked: this.state.value,
onChange: this.checkBoxOnChange,
disabled: disabled
}, label);
} else {
return /*#__PURE__*/_react.default.createElement("div", {
className: "mx_SettingsFlag"
}, /*#__PURE__*/_react.default.createElement("label", {
className: "mx_SettingsFlag_label",
htmlFor: this.id
}, /*#__PURE__*/_react.default.createElement("span", {
className: "mx_SettingsFlag_labelText"
}, label), description && /*#__PURE__*/_react.default.createElement("div", {
className: "mx_SettingsFlag_microcopy"
}, shouldWarn ? (0, _languageHandler._t)("settings|warning", {}, {
w: sub => /*#__PURE__*/_react.default.createElement("span", {
className: "mx_SettingsTab_microcopy_warning"
}, sub),
description
}) : description)), /*#__PURE__*/_react.default.createElement(_ToggleSwitch.default, {
id: this.id,
checked: this.state.value,
onChange: this.onChange,
disabled: disabled,
tooltip: disabled ? _SettingsStore.default.disabledMessage(this.props.name) : undefined,
title: label ?? undefined
}));
}
}
}
exports.default = SettingsFlag;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yYW5kb21zdHJpbmciLCJfU2V0dGluZ3NTdG9yZSIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfVG9nZ2xlU3dpdGNoIiwiX1N0eWxlZENoZWNrYm94IiwiX1NldHRpbmdzIiwiU2V0dGluZ3NGbGFnIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJyYW5kb21TdHJpbmciLCJzZXRTdGF0ZSIsInZhbHVlIiwiZ2V0U2V0dGluZ1ZhbHVlIiwiY2hlY2tlZCIsInNhdmUiLCJvbkNoYW5nZSIsImUiLCJ0YXJnZXQiLCJ2YWwiLCJTZXR0aW5nc1N0b3JlIiwic2V0VmFsdWUiLCJuYW1lIiwicm9vbUlkIiwibGV2ZWwiLCJ1bmRlZmluZWQiLCJzdGF0ZSIsImNvbXBvbmVudERpZE1vdW50IiwiZGVmYXVsdFdhdGNoTWFuYWdlciIsIndhdGNoU2V0dGluZyIsIm9uU2V0dGluZ0NoYW5nZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwidW53YXRjaFNldHRpbmciLCJzZXR0aW5nSXNPdmVyaWRkZW5BdENvbmZpZ0xldmVsIiwiZ2V0VmFsdWUiLCJnZXRWYWx1ZUF0IiwiaXNFeHBsaWNpdCIsInJlbmRlciIsImRpc2FibGVkIiwiY2FuU2V0VmFsdWUiLCJoaWRlSWZDYW5ub3RTZXQiLCJsYWJlbCIsImdldERpc3BsYXlOYW1lIiwiZGVzY3JpcHRpb24iLCJnZXREZXNjcmlwdGlvbiIsInNob3VsZFdhcm4iLCJzaG91bGRIYXZlV2FybmluZyIsInVzZUNoZWNrYm94IiwiY3JlYXRlRWxlbWVudCIsImNoZWNrQm94T25DaGFuZ2UiLCJjbGFzc05hbWUiLCJodG1sRm9yIiwiaWQiLCJfdCIsInciLCJzdWIiLCJ0b29sdGlwIiwiZGlzYWJsZWRNZXNzYWdlIiwidGl0bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3MvZWxlbWVudHMvU2V0dGluZ3NGbGFnLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAxOSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuQ29weXJpZ2h0IDIwMTcgVHJhdmlzIFJhbHN0b25cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgcmFuZG9tU3RyaW5nIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL3JhbmRvbXN0cmluZ1wiO1xuXG5pbXBvcnQgU2V0dGluZ3NTdG9yZSBmcm9tIFwiLi4vLi4vLi4vc2V0dGluZ3MvU2V0dGluZ3NTdG9yZVwiO1xuaW1wb3J0IHsgX3QgfSBmcm9tIFwiLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgVG9nZ2xlU3dpdGNoIGZyb20gXCIuL1RvZ2dsZVN3aXRjaFwiO1xuaW1wb3J0IFN0eWxlZENoZWNrYm94IGZyb20gXCIuL1N0eWxlZENoZWNrYm94XCI7XG5pbXBvcnQgeyBTZXR0aW5nTGV2ZWwgfSBmcm9tIFwiLi4vLi4vLi4vc2V0dGluZ3MvU2V0dGluZ0xldmVsXCI7XG5pbXBvcnQgeyBkZWZhdWx0V2F0Y2hNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL3NldHRpbmdzL1NldHRpbmdzXCI7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIC8vIFRoZSBzZXR0aW5nIG11c3QgYmUgYSBib29sZWFuXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGxldmVsOiBTZXR0aW5nTGV2ZWw7XG4gICAgcm9vbUlkPzogc3RyaW5nOyAvLyBmb3IgcGVyLXJvb20gc2V0dGluZ3NcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBpc0V4cGxpY2l0PzogYm9vbGVhbjtcbiAgICAvLyBYWFg6IG9uY2UgZGVzaWduIHJlcGxhY2VzIGFsbCB0b2dnbGVzIG1ha2UgdGhpcyB0aGUgZGVmYXVsdFxuICAgIHVzZUNoZWNrYm94PzogYm9vbGVhbjtcbiAgICBoaWRlSWZDYW5ub3RTZXQ/OiBib29sZWFuO1xuICAgIG9uQ2hhbmdlPyhjaGVja2VkOiBib29sZWFuKTogdm9pZDtcbn1cblxuaW50ZXJmYWNlIElTdGF0ZSB7XG4gICAgdmFsdWU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdzRmxhZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJUHJvcHMsIElTdGF0ZT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWQgPSBgbXhfU2V0dGluZ3NGbGFnXyR7cmFuZG9tU3RyaW5nKDEyKX1gO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBJUHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRTZXR0aW5nVmFsdWUoKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XG4gICAgICAgIGRlZmF1bHRXYXRjaE1hbmFnZXIud2F0Y2hTZXR0aW5nKHRoaXMucHJvcHMubmFtZSwgdGhpcy5wcm9wcy5yb29tSWQgPz8gbnVsbCwgdGhpcy5vblNldHRpbmdDaGFuZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCgpOiB2b2lkIHtcbiAgICAgICAgZGVmYXVsdFdhdGNoTWFuYWdlci51bndhdGNoU2V0dGluZyh0aGlzLm9uU2V0dGluZ0NoYW5nZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZXR0aW5nVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIElmIGEgbGV2ZWwgZGVmaW5lZCBpbiBwcm9wcyBpcyBvdmVycmlkZGVuIGJ5IGEgbGV2ZWwgYXQgYSBoaWdoIHByZXNlZGVuY2UsIGl0IGdldHMgZGlzYWJsZWRcbiAgICAgICAgLy8gYW5kIHdlIHNob3VsZCBzaG93IHRoZSBvdmVycmlkZGluZyB2YWx1ZS5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgU2V0dGluZ3NTdG9yZS5zZXR0aW5nSXNPdmVyaWRkZW5BdENvbmZpZ0xldmVsKHRoaXMucHJvcHMubmFtZSwgdGhpcy5wcm9wcy5yb29tSWQgPz8gbnVsbCwgdGhpcy5wcm9wcy5sZXZlbClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gISFTZXR0aW5nc1N0b3JlLmdldFZhbHVlKHRoaXMucHJvcHMubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICEhU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZUF0KFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5sZXZlbCxcbiAgICAgICAgICAgIHRoaXMucHJvcHMubmFtZSxcbiAgICAgICAgICAgIHRoaXMucHJvcHMucm9vbUlkID8/IG51bGwsXG4gICAgICAgICAgICB0aGlzLnByb3BzLmlzRXhwbGljaXQsXG4gICAgICAgICk7XG4gICAgfVxuICAgIHByaXZhdGUgb25TZXR0aW5nQ2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmdldFNldHRpbmdWYWx1ZSgpLFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZSA9IGFzeW5jIChjaGVja2VkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZShjaGVja2VkKTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiBjaGVja2VkIH0pO1xuICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlPy4oY2hlY2tlZCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgY2hlY2tCb3hPbkNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50Pik6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKGUudGFyZ2V0LmNoZWNrZWQpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNhdmUgPSBhc3luYyAodmFsPzogYm9vbGVhbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBhd2FpdCBTZXR0aW5nc1N0b3JlLnNldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5uYW1lLFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5yb29tSWQgPz8gbnVsbCxcbiAgICAgICAgICAgIHRoaXMucHJvcHMubGV2ZWwsXG4gICAgICAgICAgICB2YWwgIT09IHVuZGVmaW5lZCA/IHZhbCA6IHRoaXMuc3RhdGUudmFsdWUsXG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIHB1YmxpYyByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgICAgICAgY29uc3QgZGlzYWJsZWQgPSAhU2V0dGluZ3NTdG9yZS5jYW5TZXRWYWx1ZSh0aGlzLnByb3BzLm5hbWUsIHRoaXMucHJvcHMucm9vbUlkID8/IG51bGwsIHRoaXMucHJvcHMubGV2ZWwpO1xuXG4gICAgICAgIGlmIChkaXNhYmxlZCAmJiB0aGlzLnByb3BzLmhpZGVJZkNhbm5vdFNldCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLnByb3BzLmxhYmVsID8/IFNldHRpbmdzU3RvcmUuZ2V0RGlzcGxheU5hbWUodGhpcy5wcm9wcy5uYW1lLCB0aGlzLnByb3BzLmxldmVsKTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBTZXR0aW5nc1N0b3JlLmdldERlc2NyaXB0aW9uKHRoaXMucHJvcHMubmFtZSk7XG4gICAgICAgIGNvbnN0IHNob3VsZFdhcm4gPSBTZXR0aW5nc1N0b3JlLnNob3VsZEhhdmVXYXJuaW5nKHRoaXMucHJvcHMubmFtZSk7XG5cbiAgICAgICAgaWYgKHRoaXMucHJvcHMudXNlQ2hlY2tib3gpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94IGNoZWNrZWQ9e3RoaXMuc3RhdGUudmFsdWV9IG9uQ2hhbmdlPXt0aGlzLmNoZWNrQm94T25DaGFuZ2V9IGRpc2FibGVkPXtkaXNhYmxlZH0+XG4gICAgICAgICAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9TZXR0aW5nc0ZsYWdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cIm14X1NldHRpbmdzRmxhZ19sYWJlbFwiIGh0bWxGb3I9e3RoaXMuaWR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXhfU2V0dGluZ3NGbGFnX2xhYmVsVGV4dFwiPntsYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfU2V0dGluZ3NGbGFnX21pY3JvY29weVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2hvdWxkV2FyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic2V0dGluZ3N8d2FybmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogKHN1YikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJteF9TZXR0aW5nc1RhYl9taWNyb2NvcHlfd2FybmluZ1wiPntzdWJ9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZVN3aXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e3RoaXMuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXt0aGlzLnN0YXRlLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPXtkaXNhYmxlZCA/IFNldHRpbmdzU3RvcmUuZGlzYWJsZWRNZXNzYWdlKHRoaXMucHJvcHMubmFtZSkgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17bGFiZWwgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFTQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxjQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxnQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksYUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQU0sU0FBQSxHQUFBTixPQUFBO0FBakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBNkJlLE1BQU1PLFlBQVksU0FBU0MsY0FBSyxDQUFDQyxTQUFTLENBQWlCO0VBRy9EQyxXQUFXQSxDQUFDQyxLQUFhLEVBQUU7SUFDOUIsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFBQyxJQUFBQyxnQkFBQSxDQUFBQyxPQUFBLGNBSEssbUJBQW1CLElBQUFDLDBCQUFZLEVBQUMsRUFBRSxDQUFDLEVBQUU7SUFBQSxJQUFBRixnQkFBQSxDQUFBQyxPQUFBLDJCQWlDakMsTUFBWTtNQUNsQyxJQUFJLENBQUNFLFFBQVEsQ0FBQztRQUNWQyxLQUFLLEVBQUUsSUFBSSxDQUFDQyxlQUFlLENBQUM7TUFDaEMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUFBLElBQUFMLGdCQUFBLENBQUFDLE9BQUEsb0JBRWtCLE1BQU9LLE9BQWdCLElBQW9CO01BQzFELE1BQU0sSUFBSSxDQUFDQyxJQUFJLENBQUNELE9BQU8sQ0FBQztNQUN4QixJQUFJLENBQUNILFFBQVEsQ0FBQztRQUFFQyxLQUFLLEVBQUVFO01BQVEsQ0FBQyxDQUFDO01BQ2pDLElBQUksQ0FBQ1AsS0FBSyxDQUFDUyxRQUFRLEdBQUdGLE9BQU8sQ0FB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Q0lyRCxNQUFBLENBQUFlLE9BQUEsQ0FBQXVDLGFBQUEsQ0FBQy9DLGVBQUEsQ0FBQVEsT0FBYztRQUFDSyxPQUFPLEVBQUUsSUFBSSxDQUFDWSxLQUFLLENBQUNkLEtBQU07UUFBQ0ksUUFBUSxFQUFFLElBQUksQ0FBQ2lDLGdCQUFpQjtRQUFDWCxRQUFRLEVBQUVBO01BQVMsR0FDMUZHLEtBQ1csQ0FBQztJQUV6QixDQUFDLE1BQU07TUFDSCxvQkFDSS9DLE1BQUEsQ0FBQWUsT0FBQSxDQUFBdUMsYUFBQTtRQUFLRSxTQUFTLEVBQUM7TUFBaUIsZ0JBQzVCeEQsTUFBQSxDQUFBZSxPQUFBLENBQUF1QyxhQUFBO1FBQU9FLFNBQVMsRUFBQyx1QkFBdUI7UUFBQ0MsT0FBTyxFQUFFLElBQUksQ0FBQ0M7TUFBRyxnQkFDdEQxRCxNQUFBLENBQUFlLE9BQUEsQ0FBQXVDLGFBQUE7UUFBTUUsU0FBUyxFQUFDO01BQTJCLEdBQUVULEtBQVksQ0FBQyxFQUN6REUsV0FBVyxpQkFDUmpELE1BQUEsQ0FBQWUsT0FBQSxDQUFBdUMsYUFBQTtRQUFLRSxTQUFTLEVBQUM7TUFBMkIsR0FDckNMLFVBQVUsR0FDTCxJQUFBUSxtQkFBRSxFQUNFLGtCQUFrQixFQUNsQixDQUFDLENBQUMsRUFDRjtRQUNJQyxDQUFDLEVBQUdDLEdBQUcsaUJBQ0g3RCxNQUFBLENBQUFlLE9BQUEsQ0FBQXVDLGFBQUE7VUFBTUUsU0FBUyxFQUFDO1FBQWtDLEdBQUVLLEdBQVUsQ0FDakU7UUFDRFo7TUFDSixDQUNKLENBQUMsR0FDREEsV0FDTCxDQUVOLENBQUMsZUFDUmpELE1BQUEsQ0FBQWUsT0FBQSxDQUFBdUMsYUFBQSxDQUFDaEQsYUFBQSxDQUFBUyxPQUFZO1FBQ1QyQyxFQUFFLEVBQUUsSUFBSSxDQUFDQSxFQUFHO1FBQ1p0QyxPQUFPLEVBQUUsSUFBSSxDQUFDWSxLQUFLLENBQUNkLEtBQU07UUFDMUJJLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVM7UUFDeEJzQixRQUFRLEVBQUVBLFFBQVM7UUFDbkJrQixPQUFPLEVBQUVsQixRQUFRLEdBQUdsQixzQkFBYSxDQUFDcUMsZUFBZSxDQUFDLElBQUksQ0FBQ2xELEtBQUssQ0FBQ2UsSUFBSSxDQUFDLEdBQUdHLFNBQVU7UUFDL0VpQyxLQUFLLEVBQUVqQixLQUFLLElBQUloQjtNQUFVLENBQzdCLENBQ0EsQ0FBQztJQUVkO0VBQ0o7QUFDSjtBQUFDa0MsT0FBQSxDQUFBbEQsT0FBQSxHQUFBTixZQUFBIiwiaWdub3JlTGlzdCI6W119