UNPKG

matrix-react-sdk

Version:
80 lines (75 loc) 14.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _languageHandler = require("../../../languageHandler"); var _MatrixClientPeg = require("../../../MatrixClientPeg"); var _EventTileBubble = _interopRequireDefault(require("./EventTileBubble")); var _MatrixClientContext = _interopRequireDefault(require("../../../contexts/MatrixClientContext")); var _DMRoomMap = _interopRequireDefault(require("../../../utils/DMRoomMap")); var _objects = require("../../../utils/objects"); var _isLocalRoom = require("../../../utils/localRoom/isLocalRoom"); var _crypto = require("../../../utils/crypto"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } /* Copyright 2024 New Vector Ltd. Copyright 2020 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. */ const EncryptionEvent = /*#__PURE__*/(0, _react.forwardRef)(({ mxEvent, timestamp }, ref) => { const cli = (0, _react.useContext)(_MatrixClientContext.default); const roomId = mxEvent.getRoomId(); const isRoomEncrypted = _MatrixClientPeg.MatrixClientPeg.safeGet().isRoomEncrypted(roomId); const prevContent = mxEvent.getPrevContent(); const content = mxEvent.getContent(); // if no change happened then skip rendering this, a shallow check is enough as all known fields are top-level. if (!(0, _objects.objectHasDiff)(prevContent, content)) return null; // nop if (content.algorithm === _crypto.MEGOLM_ENCRYPTION_ALGORITHM && isRoomEncrypted) { let subtitle; const dmPartner = _DMRoomMap.default.shared().getUserIdForRoomId(roomId); const room = cli?.getRoom(roomId); if (prevContent.algorithm === _crypto.MEGOLM_ENCRYPTION_ALGORITHM) { subtitle = (0, _languageHandler._t)("timeline|m.room.encryption|parameters_changed"); } else if (dmPartner) { const displayName = room?.getMember(dmPartner)?.rawDisplayName || dmPartner; subtitle = (0, _languageHandler._t)("timeline|m.room.encryption|enabled_dm", { displayName }); } else if (room && (0, _isLocalRoom.isLocalRoom)(room)) { subtitle = (0, _languageHandler._t)("timeline|m.room.encryption|enabled_local"); } else { subtitle = (0, _languageHandler._t)("timeline|m.room.encryption|enabled"); } return /*#__PURE__*/_react.default.createElement(_EventTileBubble.default, { className: "mx_cryptoEvent mx_cryptoEvent_icon", title: (0, _languageHandler._t)("common|encryption_enabled"), subtitle: subtitle, timestamp: timestamp }); } if (isRoomEncrypted) { return /*#__PURE__*/_react.default.createElement(_EventTileBubble.default, { className: "mx_cryptoEvent mx_cryptoEvent_icon", title: (0, _languageHandler._t)("common|encryption_enabled"), subtitle: (0, _languageHandler._t)("timeline|m.room.encryption|disable_attempt"), timestamp: timestamp }); } return /*#__PURE__*/_react.default.createElement(_EventTileBubble.default, { className: "mx_cryptoEvent mx_cryptoEvent_icon mx_cryptoEvent_icon_warning", title: (0, _languageHandler._t)("timeline|m.room.encryption|disabled"), subtitle: (0, _languageHandler._t)("timeline|m.room.encryption|unsupported"), ref: ref, timestamp: timestamp }); }); var _default = exports.default = EncryptionEvent; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbGFuZ3VhZ2VIYW5kbGVyIiwiX01hdHJpeENsaWVudFBlZyIsIl9FdmVudFRpbGVCdWJibGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX01hdHJpeENsaWVudENvbnRleHQiLCJfRE1Sb29tTWFwIiwiX29iamVjdHMiLCJfaXNMb2NhbFJvb20iLCJfY3J5cHRvIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiRW5jcnlwdGlvbkV2ZW50IiwiZm9yd2FyZFJlZiIsIm14RXZlbnQiLCJ0aW1lc3RhbXAiLCJyZWYiLCJjbGkiLCJ1c2VDb250ZXh0IiwiTWF0cml4Q2xpZW50Q29udGV4dCIsInJvb21JZCIsImdldFJvb21JZCIsImlzUm9vbUVuY3J5cHRlZCIsIk1hdHJpeENsaWVudFBlZyIsInNhZmVHZXQiLCJwcmV2Q29udGVudCIsImdldFByZXZDb250ZW50IiwiY29udGVudCIsImdldENvbnRlbnQiLCJvYmplY3RIYXNEaWZmIiwiYWxnb3JpdGhtIiwiTUVHT0xNX0VOQ1JZUFRJT05fQUxHT1JJVEhNIiwic3VidGl0bGUiLCJkbVBhcnRuZXIiLCJETVJvb21NYXAiLCJzaGFyZWQiLCJnZXRVc2VySWRGb3JSb29tSWQiLCJyb29tIiwiZ2V0Um9vbSIsIl90IiwiZGlzcGxheU5hbWUiLCJnZXRNZW1iZXIiLCJyYXdEaXNwbGF5TmFtZSIsImlzTG9jYWxSb29tIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInRpdGxlIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3MvbWVzc2FnZXMvRW5jcnlwdGlvbkV2ZW50LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QsIHsgZm9yd2FyZFJlZiwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgTWF0cml4RXZlbnQgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5cbmltcG9ydCB0eXBlIHsgUm9vbUVuY3J5cHRpb25FdmVudENvbnRlbnQgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvdHlwZXNcIjtcbmltcG9ydCB7IF90IH0gZnJvbSBcIi4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IHsgTWF0cml4Q2xpZW50UGVnIH0gZnJvbSBcIi4uLy4uLy4uL01hdHJpeENsaWVudFBlZ1wiO1xuaW1wb3J0IEV2ZW50VGlsZUJ1YmJsZSBmcm9tIFwiLi9FdmVudFRpbGVCdWJibGVcIjtcbmltcG9ydCBNYXRyaXhDbGllbnRDb250ZXh0IGZyb20gXCIuLi8uLi8uLi9jb250ZXh0cy9NYXRyaXhDbGllbnRDb250ZXh0XCI7XG5pbXBvcnQgRE1Sb29tTWFwIGZyb20gXCIuLi8uLi8uLi91dGlscy9ETVJvb21NYXBcIjtcbmltcG9ydCB7IG9iamVjdEhhc0RpZmYgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvb2JqZWN0c1wiO1xuaW1wb3J0IHsgaXNMb2NhbFJvb20gfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvbG9jYWxSb29tL2lzTG9jYWxSb29tXCI7XG5pbXBvcnQgeyBNRUdPTE1fRU5DUllQVElPTl9BTEdPUklUSE0gfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY3J5cHRvXCI7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIG14RXZlbnQ6IE1hdHJpeEV2ZW50O1xuICAgIHRpbWVzdGFtcD86IEpTWC5FbGVtZW50O1xufVxuXG5jb25zdCBFbmNyeXB0aW9uRXZlbnQgPSBmb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBJUHJvcHM+KCh7IG14RXZlbnQsIHRpbWVzdGFtcCB9LCByZWYpID0+IHtcbiAgICBjb25zdCBjbGkgPSB1c2VDb250ZXh0KE1hdHJpeENsaWVudENvbnRleHQpO1xuICAgIGNvbnN0IHJvb21JZCA9IG14RXZlbnQuZ2V0Um9vbUlkKCkhO1xuICAgIGNvbnN0IGlzUm9vbUVuY3J5cHRlZCA9IE1hdHJpeENsaWVudFBlZy5zYWZlR2V0KCkuaXNSb29tRW5jcnlwdGVkKHJvb21JZCk7XG5cbiAgICBjb25zdCBwcmV2Q29udGVudCA9IG14RXZlbnQuZ2V0UHJldkNvbnRlbnQoKSBhcyBSb29tRW5jcnlwdGlvbkV2ZW50Q29udGVudDtcbiAgICBjb25zdCBjb250ZW50ID0gbXhFdmVudC5nZXRDb250ZW50PFJvb21FbmNyeXB0aW9uRXZlbnRDb250ZW50PigpO1xuXG4gICAgLy8gaWYgbm8gY2hhbmdlIGhhcHBlbmVkIHRoZW4gc2tpcCByZW5kZXJpbmcgdGhpcywgYSBzaGFsbG93IGNoZWNrIGlzIGVub3VnaCBhcyBhbGwga25vd24gZmllbGRzIGFyZSB0b3AtbGV2ZWwuXG4gICAgaWYgKCFvYmplY3RIYXNEaWZmKHByZXZDb250ZW50LCBjb250ZW50KSkgcmV0dXJuIG51bGw7IC8vIG5vcFxuXG4gICAgaWYgKGNvbnRlbnQuYWxnb3JpdGhtID09PSBNRUdPTE1fRU5DUllQVElPTl9BTEdPUklUSE0gJiYgaXNSb29tRW5jcnlwdGVkKSB7XG4gICAgICAgIGxldCBzdWJ0aXRsZTogc3RyaW5nO1xuICAgICAgICBjb25zdCBkbVBhcnRuZXIgPSBETVJvb21NYXAuc2hhcmVkKCkuZ2V0VXNlcklkRm9yUm9vbUlkKHJvb21JZCk7XG4gICAgICAgIGNvbnN0IHJvb20gPSBjbGk/LmdldFJvb20ocm9vbUlkKTtcbiAgICAgICAgaWYgKHByZXZDb250ZW50LmFsZ29yaXRobSA9PT0gTUVHT0xNX0VOQ1JZUFRJT05fQUxHT1JJVEhNKSB7XG4gICAgICAgICAgICBzdWJ0aXRsZSA9IF90KFwidGltZWxpbmV8bS5yb29tLmVuY3J5cHRpb258cGFyYW1ldGVyc19jaGFuZ2VkXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKGRtUGFydG5lcikge1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSByb29tPy5nZXRNZW1iZXIoZG1QYXJ0bmVyKT8ucmF3RGlzcGxheU5hbWUgfHwgZG1QYXJ0bmVyO1xuICAgICAgICAgICAgc3VidGl0bGUgPSBfdChcInRpbWVsaW5lfG0ucm9vbS5lbmNyeXB0aW9ufGVuYWJsZWRfZG1cIiwgeyBkaXNwbGF5TmFtZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChyb29tICYmIGlzTG9jYWxSb29tKHJvb20pKSB7XG4gICAgICAgICAgICBzdWJ0aXRsZSA9IF90KFwidGltZWxpbmV8bS5yb29tLmVuY3J5cHRpb258ZW5hYmxlZF9sb2NhbFwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1YnRpdGxlID0gX3QoXCJ0aW1lbGluZXxtLnJvb20uZW5jcnlwdGlvbnxlbmFibGVkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxFdmVudFRpbGVCdWJibGVcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9jcnlwdG9FdmVudCBteF9jcnlwdG9FdmVudF9pY29uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT17X3QoXCJjb21tb258ZW5jcnlwdGlvbl9lbmFibGVkXCIpfVxuICAgICAgICAgICAgICAgIHN1YnRpdGxlPXtzdWJ0aXRsZX1cbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA9e3RpbWVzdGFtcH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGlzUm9vbUVuY3J5cHRlZCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEV2ZW50VGlsZUJ1YmJsZVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm14X2NyeXB0b0V2ZW50IG14X2NyeXB0b0V2ZW50X2ljb25cIlxuICAgICAgICAgICAgICAgIHRpdGxlPXtfdChcImNvbW1vbnxlbmNyeXB0aW9uX2VuYWJsZWRcIil9XG4gICAgICAgICAgICAgICAgc3VidGl0bGU9e190KFwidGltZWxpbmV8bS5yb29tLmVuY3J5cHRpb258ZGlzYWJsZV9hdHRlbXB0XCIpfVxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcD17dGltZXN0YW1wfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8RXZlbnRUaWxlQnViYmxlXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJteF9jcnlwdG9FdmVudCBteF9jcnlwdG9FdmVudF9pY29uIG14X2NyeXB0b0V2ZW50X2ljb25fd2FybmluZ1wiXG4gICAgICAgICAgICB0aXRsZT17X3QoXCJ0aW1lbGluZXxtLnJvb20uZW5jcnlwdGlvbnxkaXNhYmxlZFwiKX1cbiAgICAgICAgICAgIHN1YnRpdGxlPXtfdChcInRpbWVsaW5lfG0ucm9vbS5lbmNyeXB0aW9ufHVuc3VwcG9ydGVkXCIpfVxuICAgICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgICB0aW1lc3RhbXA9e3RpbWVzdGFtcH1cbiAgICAgICAgLz5cbiAgICApO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IEVuY3J5cHRpb25FdmVudDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUlBLElBQUFDLGdCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxnQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsZ0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLG9CQUFBLEdBQUFELHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFGLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxZQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxPQUFBLEdBQUFULE9BQUE7QUFBb0UsU0FBQVUseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVosd0JBQUFZLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxXQUFBSyxPQUFBLEVBQUFMLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxDQUFBSCxPQUFBLEdBQUFMLENBQUEsRUFBQUcsQ0FBQSxJQUFBQSxDQUFBLENBQUFlLEdBQUEsQ0FBQWxCLENBQUEsRUFBQVEsQ0FBQSxHQUFBQSxDQUFBO0FBbkJwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFvQkEsTUFBTVcsZUFBZSxnQkFBRyxJQUFBQyxpQkFBVSxFQUF5QixDQUFDO0VBQUVDLE9BQU87RUFBRUM7QUFBVSxDQUFDLEVBQUVDLEdBQUcsS0FBSztFQUN4RixNQUFNQyxHQUFHLEdBQUcsSUFBQUMsaUJBQVUsRUFBQ0MsNEJBQW1CLENBQUM7RUFDM0MsTUFBTUMsTUFBTSxHQUFHTixPQUFPLENBQUNPLFNBQVMsQ0FBQyxDQUFFO0VBQ25DLE1BQU1DLGVBQWUsR0FBR0MsZ0NBQWUsQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQ0YsZUFBZSxDQUFDRixNQUFNLENBQUM7RUFFekUsTUFBTUssV0FBVyxHQUFHWCxPQUFPLENBQUNZLGNBQWMsQ0FBQyxDQUErQjtFQUMxRSxNQUFNQyxPQUFPLEdBQUdiLE9BQU8sQ0FBQ2MsVUFBVSxDQUE2QixDQUFDOztFQUVoRTtFQUNBLElBQUksQ0FBQyxJQUFBQyxzQkFBYSxFQUFDSixXQUFXLEVBQUVFLE9BQU8sQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUM7O0VBRXZELElBQUlBLE9BQU8sQ0FBQ0csU0FBUyxLQUFLQyxtQ0FBMkIsSUFBSVQsZUFBZSxFQUFFO0lBQ3RFLElBQUlVLFFBQWdCO0lBQ3BCLE1BQU1DLFNBQVMsR0FBR0Msa0JBQVMsQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQ0Msa0JBQWtCLENBQUNoQixNQUFNLENBQUM7SUFDL0QsTUFBTWlCLElBQUksR0FBR3BCLEdBQUcsRUFBRXFCLE9BQU8sQ0FBQ2xCLE1BQU0sQ0FBQztJQUNqQyxJQUFJSyxXQUFXLENBQUNLLFNBQVMsS0FBS0MsbUNBQTJCLEVBQUU7TUFDdkRDLFFBQVEsR0FBRyxJQUFBTyxtQkFBRSxFQUFDLCtDQUErQyxDQUFDO0lBQ2xFLENBQUMsTUFBTSxJQUFJTixTQUFTLEVBQUU7TUFDbEIsTUFBTU8sV0FBVyxHQUFHSCxJQUFJLEVBQUVJLFNBQVMsQ0FBQ1IsU0FBUyxDQUFDLEVBQUVTLGNBQWMsSUFBSVQsU0FBUztNQUMzRUQsUUFBUSxHQUFHLElBQUFPLG1CQUFFLEVBQUMsdUNBQXVDLEVBQUU7UUFBRUM7TUFBWSxDQUFDLENBQUM7SUFDM0UsQ0FBQyxNQUFNLElBQUlILElBQUksSUFBSSxJQUFBTSx3QkFBVyxFQUFDTixJQUFJLENBQUMsRUFBRTtNQUNsQ0wsUUFBUSxHQUFHLElBQUFPLG1CQUFFLEVBQUMsMENBQTBDLENBQUM7SUFDN0QsQ0FBQyxNQUFNO01BQ0hQLFFBQVEsR0FBRyxJQUFBTyxtQkFBRSxFQUFDLG9DQUFvQyxDQUFDO0lBQ3ZEO0lBRUEsb0JBQ0kzRCxNQUFBLENBQUFrQixPQUFBLENBQUE4QyxhQUFBLENBQUMzRCxnQkFBQSxDQUFBYSxPQUFlO01BQ1orQyxTQUFTLEVBQUMsb0NBQW9DO01BQzlDQyxLQUFLLEVBQUUsSUFBQVAsbUJBQUUsRUFBQywyQkFBMkIsQ0FBRTtNQUN2Q1AsUUFBUSxFQUFFQSxRQUFTO01BQ25CakIsU0FBUyxFQUFFQTtJQUFVLENBQ3hCLENBQUM7RUFFVjtFQUVBLElBQUlPLGVBQWUsRUFBRTtJQUNqQixvQkFDSTFDLE1BQUEsQ0FBQWtCLE9BQUEsQ0FBQThDLGFBQUEsQ0FBQzNELGdCQUFBLENBQUFhLE9BQWU7TUFDWitDLFNBQVMsRUFBQyxvQ0FBb0M7TUFDOUNDLEtBQUssRUFBRSxJQUFBUCxtQkFBRSxFQUFDLDJCQUEyQixDQUFFO01BQ3ZDUCxRQUFRLEVBQUUsSUFBQU8sbUJBQUUsRUFBQyw0Q0FBNEMsQ0FBRTtNQUMzRHhCLFNBQVMsRUFBRUE7SUFBVSxDQUN4QixDQUFDO0VBRVY7RUFFQSxvQkFDSW5DLE1BQUEsQ0FBQWtCLE9BQUEsQ0FBQThDLGFBQUEsQ0FBQzNELGdCQUFBLENBQUFhLE9BQWU7SUFDWitDLFNBQVMsRUFBQyxnRUFBZ0U7SUFDMUVDLEtBQUssRUFBRSxJQUFBUCxtQkFBRSxFQUFDLHFDQUFxQyxDQUFFO0lBQ2pEUCxRQUFRLEVBQUUsSUFBQU8sbUJBQUUsRUFBQyx3Q0FBd0MsQ0FBRTtJQUN2RHZCLEdBQUcsRUFBRUEsR0FBSTtJQUNURCxTQUFTLEVBQUVBO0VBQVUsQ0FDeEIsQ0FBQztBQUVWLENBQUMsQ0FBQztBQUFDLElBQUFnQyxRQUFBLEdBQUFDLE9BQUEsQ0FBQWxELE9BQUEsR0FFWWMsZUFBZSIsImlnbm9yZUxpc3QiOltdfQ==