UNPKG

matrix-react-sdk

Version:
137 lines (132 loc) 18.8 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.PowerStatus = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _AccessibleButton = _interopRequireDefault(require("../elements/AccessibleButton")); var _languageHandler = require("../../../languageHandler"); var _E2EIcon = _interopRequireDefault(require("./E2EIcon")); var _BaseAvatar = _interopRequireDefault(require("../avatars/BaseAvatar")); var _PresenceLabel = _interopRequireDefault(require("./PresenceLabel")); /* Copyright 2024 New Vector Ltd. Copyright 2020 The Matrix.org Foundation C.I.C. Copyright 2018 New Vector Ltd Copyright 2015, 2016 OpenMarket Ltd SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ let PowerStatus = exports.PowerStatus = /*#__PURE__*/function (PowerStatus) { PowerStatus["Admin"] = "admin"; PowerStatus["Moderator"] = "moderator"; return PowerStatus; }({}); const PowerLabel = { [PowerStatus.Admin]: (0, _languageHandler._td)("power_level|admin"), [PowerStatus.Moderator]: (0, _languageHandler._td)("power_level|mod") }; const PRESENCE_CLASS = { "offline": "mx_EntityTile_offline", "online": "mx_EntityTile_online", "unavailable": "mx_EntityTile_unavailable", "io.element.unreachable": "mx_EntityTile_unreachable" }; function presenceClassForMember(presenceState, lastActiveAgo, showPresence) { if (showPresence === false) { return "mx_EntityTile_online_beenactive"; } // offline is split into two categories depending on whether we have // a last_active_ago for them. if (presenceState === "offline") { if (lastActiveAgo) { return PRESENCE_CLASS["offline"] + "_beenactive"; } else { return PRESENCE_CLASS["offline"] + "_neveractive"; } } else if (presenceState) { return PRESENCE_CLASS[presenceState]; } else { return PRESENCE_CLASS["offline"] + "_neveractive"; } } class EntityTile extends _react.default.PureComponent { constructor(props) { super(props); this.state = { hover: false }; } /** * Creates the PresenceLabel component if needed * @returns The PresenceLabel component if we need to render it, undefined otherwise */ getPresenceLabel() { if (!this.props.showPresence) return; const activeAgo = this.props.presenceLastActiveAgo ? Date.now() - (this.props.presenceLastTs - this.props.presenceLastActiveAgo) : -1; return /*#__PURE__*/_react.default.createElement(_PresenceLabel.default, { activeAgo: activeAgo, currentlyActive: this.props.presenceCurrentlyActive, presenceState: this.props.presenceState }); } render() { const mainClassNames = { mx_EntityTile: true }; if (this.props.className) mainClassNames[this.props.className] = true; const presenceClass = presenceClassForMember(this.props.presenceState, this.props.presenceLastActiveAgo, this.props.showPresence); mainClassNames[presenceClass] = true; const name = this.props.nameJSX || this.props.name; const nameAndPresence = /*#__PURE__*/_react.default.createElement("div", { className: "mx_EntityTile_details" }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_EntityTile_name" }, name), this.getPresenceLabel()); let powerLabel; const powerStatus = this.props.powerStatus; if (powerStatus) { const powerText = (0, _languageHandler._t)(PowerLabel[powerStatus]); powerLabel = /*#__PURE__*/_react.default.createElement("div", { className: "mx_EntityTile_power" }, powerText); } let e2eIcon; const { e2eStatus } = this.props; if (e2eStatus) { e2eIcon = /*#__PURE__*/_react.default.createElement(_E2EIcon.default, { status: e2eStatus, isUser: true, bordered: true }); } const av = this.props.avatarJsx || /*#__PURE__*/_react.default.createElement(_BaseAvatar.default, { name: this.props.name, size: "36px", "aria-hidden": "true" }); // The wrapping div is required to make the magic mouse listener work, for some reason. return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { className: (0, _classnames.default)(mainClassNames), title: this.props.title, onClick: this.props.onClick }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_EntityTile_avatar" }, av, e2eIcon), nameAndPresence, powerLabel)); } } exports.default = EntityTile; (0, _defineProperty2.default)(EntityTile, "defaultProps", { onClick: () => {}, presenceState: "offline", presenceLastActiveAgo: 0, presenceLastTs: 0, showInviteButton: false, showPresence: true }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jbGFzc25hbWVzIiwiX0FjY2Vzc2libGVCdXR0b24iLCJfbGFuZ3VhZ2VIYW5kbGVyIiwiX0UyRUljb24iLCJfQmFzZUF2YXRhciIsIl9QcmVzZW5jZUxhYmVsIiwiUG93ZXJTdGF0dXMiLCJleHBvcnRzIiwiUG93ZXJMYWJlbCIsIkFkbWluIiwiX3RkIiwiTW9kZXJhdG9yIiwiUFJFU0VOQ0VfQ0xBU1MiLCJwcmVzZW5jZUNsYXNzRm9yTWVtYmVyIiwicHJlc2VuY2VTdGF0ZSIsImxhc3RBY3RpdmVBZ28iLCJzaG93UHJlc2VuY2UiLCJFbnRpdHlUaWxlIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiaG92ZXIiLCJnZXRQcmVzZW5jZUxhYmVsIiwiYWN0aXZlQWdvIiwicHJlc2VuY2VMYXN0QWN0aXZlQWdvIiwiRGF0ZSIsIm5vdyIsInByZXNlbmNlTGFzdFRzIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJjdXJyZW50bHlBY3RpdmUiLCJwcmVzZW5jZUN1cnJlbnRseUFjdGl2ZSIsInJlbmRlciIsIm1haW5DbGFzc05hbWVzIiwibXhfRW50aXR5VGlsZSIsImNsYXNzTmFtZSIsInByZXNlbmNlQ2xhc3MiLCJuYW1lIiwibmFtZUpTWCIsIm5hbWVBbmRQcmVzZW5jZSIsInBvd2VyTGFiZWwiLCJwb3dlclN0YXR1cyIsInBvd2VyVGV4dCIsIl90IiwiZTJlSWNvbiIsImUyZVN0YXR1cyIsInN0YXR1cyIsImlzVXNlciIsImJvcmRlcmVkIiwiYXYiLCJhdmF0YXJKc3giLCJzaXplIiwiY2xhc3NOYW1lcyIsInRpdGxlIiwib25DbGljayIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJzaG93SW52aXRlQnV0dG9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3Mvcm9vbXMvRW50aXR5VGlsZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cbkNvcHlyaWdodCAyMDE4IE5ldyBWZWN0b3IgTHRkXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuXG5pbXBvcnQgQWNjZXNzaWJsZUJ1dHRvbiBmcm9tIFwiLi4vZWxlbWVudHMvQWNjZXNzaWJsZUJ1dHRvblwiO1xuaW1wb3J0IHsgX3QsIF90ZCwgVHJhbnNsYXRpb25LZXkgfSBmcm9tIFwiLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgRTJFSWNvbiwgeyBFMkVTdGF0ZSB9IGZyb20gXCIuL0UyRUljb25cIjtcbmltcG9ydCBCYXNlQXZhdGFyIGZyb20gXCIuLi9hdmF0YXJzL0Jhc2VBdmF0YXJcIjtcbmltcG9ydCBQcmVzZW5jZUxhYmVsIGZyb20gXCIuL1ByZXNlbmNlTGFiZWxcIjtcblxuZXhwb3J0IGVudW0gUG93ZXJTdGF0dXMge1xuICAgIEFkbWluID0gXCJhZG1pblwiLFxuICAgIE1vZGVyYXRvciA9IFwibW9kZXJhdG9yXCIsXG59XG5cbmNvbnN0IFBvd2VyTGFiZWw6IFJlY29yZDxQb3dlclN0YXR1cywgVHJhbnNsYXRpb25LZXk+ID0ge1xuICAgIFtQb3dlclN0YXR1cy5BZG1pbl06IF90ZChcInBvd2VyX2xldmVsfGFkbWluXCIpLFxuICAgIFtQb3dlclN0YXR1cy5Nb2RlcmF0b3JdOiBfdGQoXCJwb3dlcl9sZXZlbHxtb2RcIiksXG59O1xuXG5leHBvcnQgdHlwZSBQcmVzZW5jZVN0YXRlID0gXCJvZmZsaW5lXCIgfCBcIm9ubGluZVwiIHwgXCJ1bmF2YWlsYWJsZVwiIHwgXCJpby5lbGVtZW50LnVucmVhY2hhYmxlXCI7XG5cbmNvbnN0IFBSRVNFTkNFX0NMQVNTOiBSZWNvcmQ8UHJlc2VuY2VTdGF0ZSwgc3RyaW5nPiA9IHtcbiAgICBcIm9mZmxpbmVcIjogXCJteF9FbnRpdHlUaWxlX29mZmxpbmVcIixcbiAgICBcIm9ubGluZVwiOiBcIm14X0VudGl0eVRpbGVfb25saW5lXCIsXG4gICAgXCJ1bmF2YWlsYWJsZVwiOiBcIm14X0VudGl0eVRpbGVfdW5hdmFpbGFibGVcIixcbiAgICBcImlvLmVsZW1lbnQudW5yZWFjaGFibGVcIjogXCJteF9FbnRpdHlUaWxlX3VucmVhY2hhYmxlXCIsXG59O1xuXG5mdW5jdGlvbiBwcmVzZW5jZUNsYXNzRm9yTWVtYmVyKHByZXNlbmNlU3RhdGU/OiBQcmVzZW5jZVN0YXRlLCBsYXN0QWN0aXZlQWdvPzogbnVtYmVyLCBzaG93UHJlc2VuY2U/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBpZiAoc2hvd1ByZXNlbmNlID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gXCJteF9FbnRpdHlUaWxlX29ubGluZV9iZWVuYWN0aXZlXCI7XG4gICAgfVxuXG4gICAgLy8gb2ZmbGluZSBpcyBzcGxpdCBpbnRvIHR3byBjYXRlZ29yaWVzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlIGhhdmVcbiAgICAvLyBhIGxhc3RfYWN0aXZlX2FnbyBmb3IgdGhlbS5cbiAgICBpZiAocHJlc2VuY2VTdGF0ZSA9PT0gXCJvZmZsaW5lXCIpIHtcbiAgICAgICAgaWYgKGxhc3RBY3RpdmVBZ28pIHtcbiAgICAgICAgICAgIHJldHVybiBQUkVTRU5DRV9DTEFTU1tcIm9mZmxpbmVcIl0gKyBcIl9iZWVuYWN0aXZlXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUFJFU0VOQ0VfQ0xBU1NbXCJvZmZsaW5lXCJdICsgXCJfbmV2ZXJhY3RpdmVcIjtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJlc2VuY2VTdGF0ZSkge1xuICAgICAgICByZXR1cm4gUFJFU0VOQ0VfQ0xBU1NbcHJlc2VuY2VTdGF0ZV07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFBSRVNFTkNFX0NMQVNTW1wib2ZmbGluZVwiXSArIFwiX25ldmVyYWN0aXZlXCI7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG5hbWVKU1g/OiBKU1guRWxlbWVudDtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBhdmF0YXJKc3g/OiBKU1guRWxlbWVudDsgLy8gPEJhc2VBdmF0YXIgLz5cbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgcHJlc2VuY2VTdGF0ZTogUHJlc2VuY2VTdGF0ZTtcbiAgICBwcmVzZW5jZUxhc3RBY3RpdmVBZ286IG51bWJlcjtcbiAgICBwcmVzZW5jZUxhc3RUczogbnVtYmVyO1xuICAgIHByZXNlbmNlQ3VycmVudGx5QWN0aXZlPzogYm9vbGVhbjtcbiAgICBvbkNsaWNrKCk6IHZvaWQ7XG4gICAgc2hvd1ByZXNlbmNlOiBib29sZWFuO1xuICAgIHN1YnRleHRMYWJlbD86IHN0cmluZztcbiAgICBlMmVTdGF0dXM/OiBFMkVTdGF0ZTtcbiAgICBwb3dlclN0YXR1cz86IFBvd2VyU3RhdHVzO1xufVxuXG5pbnRlcmZhY2UgSVN0YXRlIHtcbiAgICBob3ZlcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW50aXR5VGlsZSBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgICAgIHByZXNlbmNlU3RhdGU6IFwib2ZmbGluZVwiLFxuICAgICAgICBwcmVzZW5jZUxhc3RBY3RpdmVBZ286IDAsXG4gICAgICAgIHByZXNlbmNlTGFzdFRzOiAwLFxuICAgICAgICBzaG93SW52aXRlQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgc2hvd1ByZXNlbmNlOiB0cnVlLFxuICAgIH07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IElQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGhvdmVyOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHRoZSBQcmVzZW5jZUxhYmVsIGNvbXBvbmVudCBpZiBuZWVkZWRcbiAgICAgKiBAcmV0dXJucyBUaGUgUHJlc2VuY2VMYWJlbCBjb21wb25lbnQgaWYgd2UgbmVlZCB0byByZW5kZXIgaXQsIHVuZGVmaW5lZCBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFByZXNlbmNlTGFiZWwoKTogSlNYLkVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRoaXMucHJvcHMuc2hvd1ByZXNlbmNlKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGFjdGl2ZUFnbyA9IHRoaXMucHJvcHMucHJlc2VuY2VMYXN0QWN0aXZlQWdvXG4gICAgICAgICAgICA/IERhdGUubm93KCkgLSAodGhpcy5wcm9wcy5wcmVzZW5jZUxhc3RUcyAtIHRoaXMucHJvcHMucHJlc2VuY2VMYXN0QWN0aXZlQWdvKVxuICAgICAgICAgICAgOiAtMTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxQcmVzZW5jZUxhYmVsXG4gICAgICAgICAgICAgICAgYWN0aXZlQWdvPXthY3RpdmVBZ299XG4gICAgICAgICAgICAgICAgY3VycmVudGx5QWN0aXZlPXt0aGlzLnByb3BzLnByZXNlbmNlQ3VycmVudGx5QWN0aXZlfVxuICAgICAgICAgICAgICAgIHByZXNlbmNlU3RhdGU9e3RoaXMucHJvcHMucHJlc2VuY2VTdGF0ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAgICAgICBjb25zdCBtYWluQ2xhc3NOYW1lczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7XG4gICAgICAgICAgICBteF9FbnRpdHlUaWxlOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5jbGFzc05hbWUpIG1haW5DbGFzc05hbWVzW3RoaXMucHJvcHMuY2xhc3NOYW1lXSA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgcHJlc2VuY2VDbGFzcyA9IHByZXNlbmNlQ2xhc3NGb3JNZW1iZXIoXG4gICAgICAgICAgICB0aGlzLnByb3BzLnByZXNlbmNlU3RhdGUsXG4gICAgICAgICAgICB0aGlzLnByb3BzLnByZXNlbmNlTGFzdEFjdGl2ZUFnbyxcbiAgICAgICAgICAgIHRoaXMucHJvcHMuc2hvd1ByZXNlbmNlLFxuICAgICAgICApO1xuICAgICAgICBtYWluQ2xhc3NOYW1lc1twcmVzZW5jZUNsYXNzXSA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMucHJvcHMubmFtZUpTWCB8fCB0aGlzLnByb3BzLm5hbWU7XG4gICAgICAgIGNvbnN0IG5hbWVBbmRQcmVzZW5jZSA9IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfRW50aXR5VGlsZV9kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9FbnRpdHlUaWxlX25hbWVcIj57bmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICB7dGhpcy5nZXRQcmVzZW5jZUxhYmVsKCl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgcG93ZXJMYWJlbDtcbiAgICAgICAgY29uc3QgcG93ZXJTdGF0dXMgPSB0aGlzLnByb3BzLnBvd2VyU3RhdHVzO1xuICAgICAgICBpZiAocG93ZXJTdGF0dXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvd2VyVGV4dCA9IF90KFBvd2VyTGFiZWxbcG93ZXJTdGF0dXNdKTtcbiAgICAgICAgICAgIHBvd2VyTGFiZWwgPSA8ZGl2IGNsYXNzTmFtZT1cIm14X0VudGl0eVRpbGVfcG93ZXJcIj57cG93ZXJUZXh0fTwvZGl2PjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBlMmVJY29uO1xuICAgICAgICBjb25zdCB7IGUyZVN0YXR1cyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKGUyZVN0YXR1cykge1xuICAgICAgICAgICAgZTJlSWNvbiA9IDxFMkVJY29uIHN0YXR1cz17ZTJlU3RhdHVzfSBpc1VzZXI9e3RydWV9IGJvcmRlcmVkPXt0cnVlfSAvPjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGF2ID0gdGhpcy5wcm9wcy5hdmF0YXJKc3ggfHwgPEJhc2VBdmF0YXIgbmFtZT17dGhpcy5wcm9wcy5uYW1lfSBzaXplPVwiMzZweFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+O1xuXG4gICAgICAgIC8vIFRoZSB3cmFwcGluZyBkaXYgaXMgcmVxdWlyZWQgdG8gbWFrZSB0aGUgbWFnaWMgbW91c2UgbGlzdGVuZXIgd29yaywgZm9yIHNvbWUgcmVhc29uLlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMobWFpbkNsYXNzTmFtZXMpfVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17dGhpcy5wcm9wcy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9FbnRpdHlUaWxlX2F2YXRhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2F2fVxuICAgICAgICAgICAgICAgICAgICAgICAge2UyZUljb259XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB7bmFtZUFuZFByZXNlbmNlfVxuICAgICAgICAgICAgICAgICAgICB7cG93ZXJMYWJlbH1cbiAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBVUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsaUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGdCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxjQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkEsSUFtQllPLFdBQVcsR0FBQUMsT0FBQSxDQUFBRCxXQUFBLDBCQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFBLE9BQVhBLFdBQVc7QUFBQTtBQUt2QixNQUFNRSxVQUErQyxHQUFHO0VBQ3BELENBQUNGLFdBQVcsQ0FBQ0csS0FBSyxHQUFHLElBQUFDLG9CQUFHLEVBQUMsbUJBQW1CLENBQUM7RUFDN0MsQ0FBQ0osV0FBVyxDQUFDSyxTQUFTLEdBQUcsSUFBQUQsb0JBQUcsRUFBQyxpQkFBaUI7QUFDbEQsQ0FBQztBQUlELE1BQU1FLGNBQTZDLEdBQUc7RUFDbEQsU0FBUyxFQUFFLHVCQUF1QjtFQUNsQyxRQUFRLEVBQUUsc0JBQXNC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