matrix-react-sdk
Version:
SDK for matrix.org using React
98 lines (95 loc) • 15.5 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 _reactFocusLock = _interopRequireDefault(require("react-focus-lock"));
var _MatrixClientPeg = require("../../../MatrixClientPeg");
var _MatrixClientContext = _interopRequireDefault(require("../../../contexts/MatrixClientContext"));
var _languageHandler = require("../../../languageHandler");
var _AccessibleButton = _interopRequireDefault(require("../elements/AccessibleButton"));
var _KeyboardShortcuts = require("../../../accessibility/KeyboardShortcuts");
var _KeyBindingsManager = require("../../../KeyBindingsManager");
/*
Copyright 2024 New Vector Ltd.
Copyright 2021 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
/**
* Scrollable dialog base from Compound (Web Components).
*/
class ScrollableBaseModal extends _react.default.PureComponent {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "onKeyDown", e => {
const action = (0, _KeyBindingsManager.getKeyBindingsManager)().getAccessibilityAction(e);
switch (action) {
case _KeyboardShortcuts.KeyBindingAction.Escape:
e.stopPropagation();
e.preventDefault();
this.cancel();
break;
}
});
(0, _defineProperty2.default)(this, "onCancel", () => {
this.cancel();
});
(0, _defineProperty2.default)(this, "onSubmit", e => {
e.stopPropagation();
e.preventDefault();
if (!this.state.canSubmit) return; // pretend the submit button was disabled
this.submit();
});
}
get matrixClient() {
// XXX: The contract on MatrixClientContext says it is only available within a LoggedInView subtree,
// given that modals function outside the MatrixChat React tree this simulates that. We don't want to
// use safeGet as it throwing would mean we cannot use modals whilst the user isn't logged in.
// The longer term solution is to move our ModalManager into the React tree to inherit contexts properly.
return _MatrixClientPeg.MatrixClientPeg.get();
}
render() {
return /*#__PURE__*/_react.default.createElement(_MatrixClientContext.default.Provider, {
value: this.matrixClient
}, /*#__PURE__*/_react.default.createElement(_reactFocusLock.default, {
returnFocus: true,
lockProps: {
onKeyDown: this.onKeyDown,
role: "dialog",
["aria-labelledby"]: "mx_CompoundDialog_title",
// Like BaseDialog, we'll just point this at the whole content
["aria-describedby"]: "mx_CompoundDialog_content"
},
className: "mx_CompoundDialog mx_ScrollableBaseDialog"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "mx_CompoundDialog_header"
}, /*#__PURE__*/_react.default.createElement("h1", null, this.state.title)), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
onClick: this.onCancel,
className: "mx_CompoundDialog_cancelButton",
"aria-label": (0, _languageHandler._t)("dialog_close_label")
}), /*#__PURE__*/_react.default.createElement("form", {
onSubmit: this.onSubmit,
className: "mx_CompoundDialog_form"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "mx_CompoundDialog_content"
}, this.renderContent()), /*#__PURE__*/_react.default.createElement("div", {
className: "mx_CompoundDialog_footer"
}, /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
onClick: this.onCancel,
kind: "primary_outline"
}, this.state.cancelLabel ?? (0, _languageHandler._t)("action|cancel")), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
onClick: this.onSubmit,
kind: "primary",
disabled: !this.state.canSubmit,
type: "submit",
element: "button",
className: "mx_Dialog_nonDialogButton"
}, this.state.actionLabel)))));
}
}
exports.default = ScrollableBaseModal;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdEZvY3VzTG9jayIsIl9NYXRyaXhDbGllbnRQZWciLCJfTWF0cml4Q2xpZW50Q29udGV4dCIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfQWNjZXNzaWJsZUJ1dHRvbiIsIl9LZXlib2FyZFNob3J0Y3V0cyIsIl9LZXlCaW5kaW5nc01hbmFnZXIiLCJTY3JvbGxhYmxlQmFzZU1vZGFsIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZhdWx0IiwiZSIsImFjdGlvbiIsImdldEtleUJpbmRpbmdzTWFuYWdlciIsImdldEFjY2Vzc2liaWxpdHlBY3Rpb24iLCJLZXlCaW5kaW5nQWN0aW9uIiwiRXNjYXBlIiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJjYW5jZWwiLCJzdGF0ZSIsImNhblN1Ym1pdCIsInN1Ym1pdCIsIm1hdHJpeENsaWVudCIsIk1hdHJpeENsaWVudFBlZyIsImdldCIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJQcm92aWRlciIsInZhbHVlIiwicmV0dXJuRm9jdXMiLCJsb2NrUHJvcHMiLCJvbktleURvd24iLCJyb2xlIiwiY2xhc3NOYW1lIiwidGl0bGUiLCJvbkNsaWNrIiwib25DYW5jZWwiLCJfdCIsIm9uU3VibWl0IiwicmVuZGVyQ29udGVudCIsImtpbmQiLCJjYW5jZWxMYWJlbCIsImRpc2FibGVkIiwidHlwZSIsImVsZW1lbnQiLCJhY3Rpb25MYWJlbCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9kaWFsb2dzL1Njcm9sbGFibGVCYXNlTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCBSZWFjdCwgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IE1hdHJpeENsaWVudCB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcbmltcG9ydCBGb2N1c0xvY2sgZnJvbSBcInJlYWN0LWZvY3VzLWxvY2tcIjtcblxuaW1wb3J0IHsgTWF0cml4Q2xpZW50UGVnIH0gZnJvbSBcIi4uLy4uLy4uL01hdHJpeENsaWVudFBlZ1wiO1xuaW1wb3J0IE1hdHJpeENsaWVudENvbnRleHQgZnJvbSBcIi4uLy4uLy4uL2NvbnRleHRzL01hdHJpeENsaWVudENvbnRleHRcIjtcbmltcG9ydCB7IF90IH0gZnJvbSBcIi4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IEFjY2Vzc2libGVCdXR0b24gZnJvbSBcIi4uL2VsZW1lbnRzL0FjY2Vzc2libGVCdXR0b25cIjtcbmltcG9ydCB7IEtleUJpbmRpbmdBY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vYWNjZXNzaWJpbGl0eS9LZXlib2FyZFNob3J0Y3V0c1wiO1xuaW1wb3J0IHsgZ2V0S2V5QmluZGluZ3NNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL0tleUJpbmRpbmdzTWFuYWdlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTY3JvbGxhYmxlQmFzZVN0YXRlIHtcbiAgICBjYW5TdWJtaXQ6IGJvb2xlYW47XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBhY3Rpb25MYWJlbDogc3RyaW5nO1xuICAgIGNhbmNlbExhYmVsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNjcm9sbGFibGUgZGlhbG9nIGJhc2UgZnJvbSBDb21wb3VuZCAoV2ViIENvbXBvbmVudHMpLlxuICovXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBTY3JvbGxhYmxlQmFzZU1vZGFsPFxuICAgIFRQcm9wcyBleHRlbmRzIHsgb25GaW5pc2hlZD86ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCB9LFxuICAgIFRTdGF0ZSBleHRlbmRzIElTY3JvbGxhYmxlQmFzZVN0YXRlLFxuPiBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8VFByb3BzLCBUU3RhdGU+IHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvcHM6IFRQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBtYXRyaXhDbGllbnQoKTogTWF0cml4Q2xpZW50IHtcbiAgICAgICAgLy8gWFhYOiBUaGUgY29udHJhY3Qgb24gTWF0cml4Q2xpZW50Q29udGV4dCBzYXlzIGl0IGlzIG9ubHkgYXZhaWxhYmxlIHdpdGhpbiBhIExvZ2dlZEluVmlldyBzdWJ0cmVlLFxuICAgICAgICAvLyBnaXZlbiB0aGF0IG1vZGFscyBmdW5jdGlvbiBvdXRzaWRlIHRoZSBNYXRyaXhDaGF0IFJlYWN0IHRyZWUgdGhpcyBzaW11bGF0ZXMgdGhhdC4gV2UgZG9uJ3Qgd2FudCB0b1xuICAgICAgICAvLyB1c2Ugc2FmZUdldCBhcyBpdCB0aHJvd2luZyB3b3VsZCBtZWFuIHdlIGNhbm5vdCB1c2UgbW9kYWxzIHdoaWxzdCB0aGUgdXNlciBpc24ndCBsb2dnZWQgaW4uXG4gICAgICAgIC8vIFRoZSBsb25nZXIgdGVybSBzb2x1dGlvbiBpcyB0byBtb3ZlIG91ciBNb2RhbE1hbmFnZXIgaW50byB0aGUgUmVhY3QgdHJlZSB0byBpbmhlcml0IGNvbnRleHRzIHByb3Blcmx5LlxuICAgICAgICByZXR1cm4gTWF0cml4Q2xpZW50UGVnLmdldCgpITtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uS2V5RG93biA9IChlOiBLZXlib2FyZEV2ZW50IHwgUmVhY3QuS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBnZXRLZXlCaW5kaW5nc01hbmFnZXIoKS5nZXRBY2Nlc3NpYmlsaXR5QWN0aW9uKGUpO1xuICAgICAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSBLZXlCaW5kaW5nQWN0aW9uLkVzY2FwZTpcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25DYW5jZWwgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25TdWJtaXQgPSAoZTogTW91c2VFdmVudCB8IEZvcm1FdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS5jYW5TdWJtaXQpIHJldHVybjsgLy8gcHJldGVuZCB0aGUgc3VibWl0IGJ1dHRvbiB3YXMgZGlzYWJsZWRcbiAgICAgICAgdGhpcy5zdWJtaXQoKTtcbiAgICB9O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGNhbmNlbCgpOiB2b2lkO1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzdWJtaXQoKTogdm9pZDtcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVuZGVyQ29udGVudCgpOiBSZWFjdC5SZWFjdE5vZGU7XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8TWF0cml4Q2xpZW50Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17dGhpcy5tYXRyaXhDbGllbnR9PlxuICAgICAgICAgICAgICAgIDxGb2N1c0xvY2tcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuRm9jdXM9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgIGxvY2tQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duOiB0aGlzLm9uS2V5RG93bixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU6IFwiZGlhbG9nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJhcmlhLWxhYmVsbGVkYnlcIl06IFwibXhfQ29tcG91bmREaWFsb2dfdGl0bGVcIixcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGlrZSBCYXNlRGlhbG9nLCB3ZSdsbCBqdXN0IHBvaW50IHRoaXMgYXQgdGhlIHdob2xlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcImFyaWEtZGVzY3JpYmVkYnlcIl06IFwibXhfQ29tcG91bmREaWFsb2dfY29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9Db21wb3VuZERpYWxvZyBteF9TY3JvbGxhYmxlQmFzZURpYWxvZ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X0NvbXBvdW5kRGlhbG9nX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgxPnt0aGlzLnN0YXRlLnRpdGxlfTwvaDE+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkNhbmNlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm14X0NvbXBvdW5kRGlhbG9nX2NhbmNlbEJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtfdChcImRpYWxvZ19jbG9zZV9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGZvcm0gb25TdWJtaXQ9e3RoaXMub25TdWJtaXR9IGNsYXNzTmFtZT1cIm14X0NvbXBvdW5kRGlhbG9nX2Zvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfQ29tcG91bmREaWFsb2dfY29udGVudFwiPnt0aGlzLnJlbmRlckNvbnRlbnQoKX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfQ29tcG91bmREaWFsb2dfZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b24gb25DbGljaz17dGhpcy5vbkNhbmNlbH0ga2luZD1cInByaW1hcnlfb3V0bGluZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5zdGF0ZS5jYW5jZWxMYWJlbCA/PyBfdChcImFjdGlvbnxjYW5jZWxcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BY2Nlc3NpYmxlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25TdWJtaXR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0aGlzLnN0YXRlLmNhblN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9EaWFsb2dfbm9uRGlhbG9nQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLmFjdGlvbkxhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgPC9Gb2N1c0xvY2s+XG4gICAgICAgICAgICA8L01hdHJpeENsaWVudENvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLGVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLGdCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxvQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksZ0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGlCQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxrQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sbUJBQUEsR0FBQVAsT0FBQTtBQWpCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFvQkE7QUFDQTtBQUNBO0FBQ2UsTUFBZVEsbUJBQW1CLFNBR3ZDQyxjQUFLLENBQUNDLGFBQWEsQ0FBaUI7RUFDaENDLFdBQVdBLENBQUNDLEtBQWEsRUFBRTtJQUNqQyxLQUFLLENBQUNBLEtBQUssQ0FBQztJQUFDLElBQUFDLGdCQUFBLENBQUFDLE9BQUEscUJBV0lDLENBQXNDLElBQVc7TUFDbEUsTUFBTUMsTUFBTSxHQUFHLElBQUFDLHlDQUFxQixFQUFDLENBQUMsQ0FBQ0Msc0JBQXNCLENBQUNILENBQUMsQ0FBQztNQUNoRSxRQUFRQyxNQUFNO1FBQ1YsS0FBS0csbUNBQWdCLENBQUNDLE1BQU07VUFDeEJMLENBQUMsQ0FBQ00sZUFBZSxDQUFDLENBQUM7VUFDbkJOLENBQUMsQ0FBQ08sY0FBYyxDQUFDLENBQUM7VUFDbEIsSUFBSSxDQUFDQyxNQUFNLENBQUMsQ0FBQztVQUNiO01BQ1I7SUFDSixDQUFDO0lBQUEsSUFBQVYsZ0JBQUEsQ0FBQUMsT0FBQSxvQkFFa0IsTUFBWTtNQUMzQixJQUFJLENBQUNTLE1BQU0sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFBQSxJQUFBVixnQkFBQSxDQUFBQyxPQUFBLG9CQUVtQkMsQ0FBeUIsSUFBVztNQUNwREEsQ0FBQyxDQUFDTSxlQUFlLENBQUMsQ0FBQztNQUNuQk4sQ0FBQyxDQUFDTyxjQUFjLENBQUMsQ0FBQztNQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDRSxLQUFLLENBQUNDLFNBQVMsRUFBRSxPQUFPLENBQUM7TUFDbkMsSUFBSSxDQUFDQyxNQUFNLENBQUMsQ0FBQztJQUNqQixDQUFDO0VBOUJEO0VBRUEsSUFBY0MsWUFBWUEsQ0FBQSxFQUFpQjtJQUN2QztJQUNBO0lBQ0E7SUFDQTtJQUNBLE9BQU9DLGdDQUFlLENBQUNDLEdBQUcsQ0FBQyxDQUFDO0VBQ2hDO0VBNEJPQyxNQUFNQSxDQUFBLEVBQW9CO0lBQzdCLG9CQUNJaEMsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBaUIsYUFBQSxDQUFDNUIsb0JBQUEsQ0FBQVcsT0FBbUIsQ0FBQ2tCLFFBQVE7TUFBQ0MsS0FBSyxFQUFFLElBQUksQ0FBQ047SUFBYSxnQkFDbkQ3QixNQUFBLENBQUFnQixPQUFBLENBQUFpQixhQUFBLENBQUM5QixlQUFBLENBQUFhLE9BQVM7TUFDTm9CLFdBQVcsRUFBRSxJQUFLO01BQ2xCQyxTQUFTLEVBQUU7UUFDUEMsU0FBUyxFQUFFLElBQUksQ0FBQ0EsU0FBUztRQUN6QkMsSUFBSSxFQUFFLFFBQVE7UUFDZCxDQUFDLGlCQUFpQixHQUFHLHlCQUF5QjtRQUU5QztRQUNBLENBQUMsa0JBQWtCLEdBQUc7TUFDMUIsQ0FBRTtNQUNGQyxTQUFTLEVBQUM7SUFBMkMsZ0JBRXJEeEMsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBaUIsYUFBQTtNQUFLTyxTQUFTLEVBQUM7SUFBMEIsZ0JBQ3JDeEMsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBaUIsYUFBQSxhQUFLLElBQUksQ0FBQ1AsS0FBSyxDQUFDZSxLQUFVLENBQ3pCLENBQUMsZUFDTnpDLE1BQUEsQ0FBQWdCLE9BQUEsQ0FBQWlCLGFBQUEsQ0FBQzFCLGlCQUFBLENBQUFTLE9BQWdCO01BQ2IwQixPQUFPLEVBQUUsSUFBSSxDQUFDQyxRQUFTO01BQ3ZCSCxTQUFTLEVBQUMsZ0NBQWdDO01BQzFDLGNBQVksSUFBQUksbUJBQUUsRUFBQyxvQkFBb0I7SUFBRSxDQUN4QyxDQUFDLGVBQ0Y1QyxNQUFBLENBQUFnQixPQUFBLENBQUFpQixhQUFBO01BQU1ZLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVM7TUFBQ0wsU0FBUyxFQUFDO0lBQXdCLGdCQUM3RHhDLE1BQUEsQ0FBQWdCLE9BQUEsQ0FBQWlCLGFBQUE7TUFBS08sU0FBUyxFQUFDO0lBQTJCLEdBQUUsSUFBSSxDQUFDTSxhQUFhLENBQUMsQ0FBTyxDQUFDLGVBQ3ZFOUMsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBaUIsYUFBQTtNQUFLTyxTQUFTLEVBQUM7SUFBMEIsZ0JBQ3JDeEMsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBaUIsYUFBQSxDQUFDMUIsaUJBQUEsQ0FBQVMsT0FBZ0I7TUFBQzBCLE9BQU8sRUFBRSxJQUFJLENBQUNDLFFBQVM7TUFBQ0ksSUFBSSxFQUFDO0lBQWlCLEdBQzNELElBQUksQ0FBQ3JCLEtBQUssQ0FBQ3NCLFdBQVcsSUFBSSxJQUFBSixtQkFBRSxFQUFDLGVBQWUsQ0FDL0IsQ0FBQyxlQUNuQjVDLE1BQUEsQ0FBQWdCLE9BQUEsQ0FBQWlCLGFBQUEsQ0FBQzFCLGlCQUFBLENBQUFTLE9BQWdCO01BQ2IwQixPQUFPLEVBQUUsSUFBSSxDQUFDRyxRQUFTO01BQ3ZCRSxJQUFJLEVBQUMsU0FBUztNQUNkRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUN2QixLQUFLLENBQUNDLFNBQVU7TUFDaEN1QixJQUFJLEVBQUMsUUFBUTtNQUNiQyxPQUFPLEVBQUMsUUFBUTtNQUNoQlgsU0FBUyxFQUFDO0lBQTJCLEdBRXBDLElBQUksQ0FBQ2QsS0FBSyxDQUFDMEIsV0FDRSxDQUNqQixDQUNILENBQ0MsQ0FDZSxDQUFDO0VBRXZDO0FBQ0o7QUFBQ0MsT0FBQSxDQUFBckMsT0FBQSxHQUFBTixtQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==