UNPKG

matrix-react-sdk

Version:
142 lines (139 loc) 23.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.showSpacePreferences = exports.showSpaceInvite = exports.showCreateNewSubspace = exports.showCreateNewRoom = exports.showAddExistingSubspace = exports.showAddExistingRooms = exports.shouldShowSpaceSettings = exports.shouldShowSpaceInvite = exports.makeSpaceParentEvent = exports.bulkSpaceBehaviour = void 0; exports.showSpaceSettings = showSpaceSettings; var _react = _interopRequireDefault(require("react")); var _matrix = require("matrix-js-sdk/src/matrix"); var _types = require("matrix-js-sdk/src/types"); var _Permalinks = require("./permalinks/Permalinks"); var _Modal = _interopRequireDefault(require("../Modal")); var _CreateRoomDialog = _interopRequireDefault(require("../components/views/dialogs/CreateRoomDialog")); var _createRoom = _interopRequireDefault(require("../createRoom")); var _languageHandler = require("../languageHandler"); var _SpacePublicShare = _interopRequireDefault(require("../components/views/spaces/SpacePublicShare")); var _InfoDialog = _interopRequireDefault(require("../components/views/dialogs/InfoDialog")); var _RoomInvite = require("../RoomInvite"); var _CreateSubspaceDialog = _interopRequireDefault(require("../components/views/dialogs/CreateSubspaceDialog")); var _AddExistingSubspaceDialog = _interopRequireDefault(require("../components/views/dialogs/AddExistingSubspaceDialog")); var _dispatcher = _interopRequireDefault(require("../dispatcher/dispatcher")); var _actions = require("../dispatcher/actions"); var _Spinner = _interopRequireDefault(require("../components/views/elements/Spinner")); var _UIComponents = require("../customisations/helpers/UIComponents"); var _UIFeature = require("../settings/UIFeature"); var _SDKContext = require("../contexts/SDKContext"); /* 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. */ const shouldShowSpaceSettings = space => { const userId = space.client.getUserId(); return space.getMyMembership() === _types.KnownMembership.Join && (space.currentState.maySendStateEvent(_matrix.EventType.RoomAvatar, userId) || space.currentState.maySendStateEvent(_matrix.EventType.RoomName, userId) || space.currentState.maySendStateEvent(_matrix.EventType.RoomTopic, userId) || space.currentState.maySendStateEvent(_matrix.EventType.RoomJoinRules, userId)); }; exports.shouldShowSpaceSettings = shouldShowSpaceSettings; const makeSpaceParentEvent = (room, canonical = false) => ({ type: _matrix.EventType.SpaceParent, content: { via: (0, _Permalinks.calculateRoomVia)(room), canonical: canonical }, state_key: room.roomId }); exports.makeSpaceParentEvent = makeSpaceParentEvent; function showSpaceSettings(space) { _dispatcher.default.dispatch({ action: _actions.Action.OpenSpaceSettings, space }); } const showAddExistingRooms = space => { _dispatcher.default.dispatch({ action: _actions.Action.OpenAddToExistingSpaceDialog, space }); }; exports.showAddExistingRooms = showAddExistingRooms; const showCreateNewRoom = async (space, type) => { const modal = _Modal.default.createDialog(_CreateRoomDialog.default, { type, defaultPublic: space.getJoinRule() === _matrix.JoinRule.Public, parentSpace: space }); const [shouldCreate, opts] = await modal.finished; if (shouldCreate) { await (0, _createRoom.default)(space.client, opts); } return !!shouldCreate; }; exports.showCreateNewRoom = showCreateNewRoom; const shouldShowSpaceInvite = space => (space?.getMyMembership() === _types.KnownMembership.Join && space.canInvite(space.client.getUserId()) || space.getJoinRule() === _matrix.JoinRule.Public) && (0, _UIComponents.shouldShowComponent)(_UIFeature.UIComponent.InviteUsers); exports.shouldShowSpaceInvite = shouldShowSpaceInvite; const showSpaceInvite = (space, initialText = "") => { if (space.getJoinRule() === "public") { const modal = _Modal.default.createDialog(_InfoDialog.default, { title: (0, _languageHandler._t)("invite|to_space", { spaceName: space.name }), description: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", null, (0, _languageHandler._t)("space|share_public")), /*#__PURE__*/_react.default.createElement(_SpacePublicShare.default, { space: space, onFinished: () => modal.close() })), fixedWidth: false, button: false, className: "mx_SpacePanel_sharePublicSpace", hasCloseButton: true }); } else { (0, _RoomInvite.showRoomInviteDialog)(space.roomId, initialText); } }; exports.showSpaceInvite = showSpaceInvite; const showAddExistingSubspace = space => { _Modal.default.createDialog(_AddExistingSubspaceDialog.default, { space, onCreateSubspaceClick: () => showCreateNewSubspace(space), onFinished: added => { if (added && _SDKContext.SdkContextClass.instance.roomViewStore.getRoomId() === space.roomId) { _dispatcher.default.fire(_actions.Action.UpdateSpaceHierarchy); } } }, "mx_AddExistingToSpaceDialog_wrapper"); }; exports.showAddExistingSubspace = showAddExistingSubspace; const showCreateNewSubspace = space => { _Modal.default.createDialog(_CreateSubspaceDialog.default, { space, onAddExistingSpaceClick: () => showAddExistingSubspace(space), onFinished: added => { if (added && _SDKContext.SdkContextClass.instance.roomViewStore.getRoomId() === space.roomId) { _dispatcher.default.fire(_actions.Action.UpdateSpaceHierarchy); } } }, "mx_CreateSubspaceDialog_wrapper"); }; exports.showCreateNewSubspace = showCreateNewSubspace; const bulkSpaceBehaviour = async (space, children, fn) => { const modal = _Modal.default.createDialog(_Spinner.default, undefined, "mx_Dialog_spinner"); try { for (const room of children) { await fn(room); } await fn(space); } finally { modal.close(); } }; exports.bulkSpaceBehaviour = bulkSpaceBehaviour; const showSpacePreferences = (space, initialTabId) => { _dispatcher.default.dispatch({ action: _actions.Action.OpenSpacePreferences, space, initialTabId }); }; exports.showSpacePreferences = showSpacePreferences; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9tYXRyaXgiLCJfdHlwZXMiLCJfUGVybWFsaW5rcyIsIl9Nb2RhbCIsIl9DcmVhdGVSb29tRGlhbG9nIiwiX2NyZWF0ZVJvb20iLCJfbGFuZ3VhZ2VIYW5kbGVyIiwiX1NwYWNlUHVibGljU2hhcmUiLCJfSW5mb0RpYWxvZyIsIl9Sb29tSW52aXRlIiwiX0NyZWF0ZVN1YnNwYWNlRGlhbG9nIiwiX0FkZEV4aXN0aW5nU3Vic3BhY2VEaWFsb2ciLCJfZGlzcGF0Y2hlciIsIl9hY3Rpb25zIiwiX1NwaW5uZXIiLCJfVUlDb21wb25lbnRzIiwiX1VJRmVhdHVyZSIsIl9TREtDb250ZXh0Iiwic2hvdWxkU2hvd1NwYWNlU2V0dGluZ3MiLCJzcGFjZSIsInVzZXJJZCIsImNsaWVudCIsImdldFVzZXJJZCIsImdldE15TWVtYmVyc2hpcCIsIktub3duTWVtYmVyc2hpcCIsIkpvaW4iLCJjdXJyZW50U3RhdGUiLCJtYXlTZW5kU3RhdGVFdmVudCIsIkV2ZW50VHlwZSIsIlJvb21BdmF0YXIiLCJSb29tTmFtZSIsIlJvb21Ub3BpYyIsIlJvb21Kb2luUnVsZXMiLCJleHBvcnRzIiwibWFrZVNwYWNlUGFyZW50RXZlbnQiLCJyb29tIiwiY2Fub25pY2FsIiwidHlwZSIsIlNwYWNlUGFyZW50IiwiY29udGVudCIsInZpYSIsImNhbGN1bGF0ZVJvb21WaWEiLCJzdGF0ZV9rZXkiLCJyb29tSWQiLCJzaG93U3BhY2VTZXR0aW5ncyIsImRlZmF1bHREaXNwYXRjaGVyIiwiZGlzcGF0Y2giLCJhY3Rpb24iLCJBY3Rpb24iLCJPcGVuU3BhY2VTZXR0aW5ncyIsInNob3dBZGRFeGlzdGluZ1Jvb21zIiwiT3BlbkFkZFRvRXhpc3RpbmdTcGFjZURpYWxvZyIsInNob3dDcmVhdGVOZXdSb29tIiwibW9kYWwiLCJNb2RhbCIsImNyZWF0ZURpYWxvZyIsIkNyZWF0ZVJvb21EaWFsb2ciLCJkZWZhdWx0UHVibGljIiwiZ2V0Sm9pblJ1bGUiLCJKb2luUnVsZSIsIlB1YmxpYyIsInBhcmVudFNwYWNlIiwic2hvdWxkQ3JlYXRlIiwib3B0cyIsImZpbmlzaGVkIiwiY3JlYXRlUm9vbSIsInNob3VsZFNob3dTcGFjZUludml0ZSIsImNhbkludml0ZSIsInNob3VsZFNob3dDb21wb25lbnQiLCJVSUNvbXBvbmVudCIsIkludml0ZVVzZXJzIiwic2hvd1NwYWNlSW52aXRlIiwiaW5pdGlhbFRleHQiLCJJbmZvRGlhbG9nIiwidGl0bGUiLCJfdCIsInNwYWNlTmFtZSIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50IiwiRnJhZ21lbnQiLCJvbkZpbmlzaGVkIiwiY2xvc2UiLCJmaXhlZFdpZHRoIiwiYnV0dG9uIiwiY2xhc3NOYW1lIiwiaGFzQ2xvc2VCdXR0b24iLCJzaG93Um9vbUludml0ZURpYWxvZyIsInNob3dBZGRFeGlzdGluZ1N1YnNwYWNlIiwiQWRkRXhpc3RpbmdTdWJzcGFjZURpYWxvZyIsIm9uQ3JlYXRlU3Vic3BhY2VDbGljayIsInNob3dDcmVhdGVOZXdTdWJzcGFjZSIsImFkZGVkIiwiU2RrQ29udGV4dENsYXNzIiwiaW5zdGFuY2UiLCJyb29tVmlld1N0b3JlIiwiZ2V0Um9vbUlkIiwiZmlyZSIsIlVwZGF0ZVNwYWNlSGllcmFyY2h5IiwiQ3JlYXRlU3Vic3BhY2VEaWFsb2ciLCJvbkFkZEV4aXN0aW5nU3BhY2VDbGljayIsImJ1bGtTcGFjZUJlaGF2aW91ciIsImNoaWxkcmVuIiwiZm4iLCJTcGlubmVyIiwidW5kZWZpbmVkIiwic2hvd1NwYWNlUHJlZmVyZW5jZXMiLCJpbml0aWFsVGFiSWQiLCJPcGVuU3BhY2VQcmVmZXJlbmNlcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zcGFjZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgUm9vbSwgSUNyZWF0ZVJvb21TdGF0ZUV2ZW50LCBSb29tVHlwZSwgRXZlbnRUeXBlLCBKb2luUnVsZSB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcbmltcG9ydCB7IEtub3duTWVtYmVyc2hpcCB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy90eXBlc1wiO1xuXG5pbXBvcnQgeyBjYWxjdWxhdGVSb29tVmlhIH0gZnJvbSBcIi4vcGVybWFsaW5rcy9QZXJtYWxpbmtzXCI7XG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uL01vZGFsXCI7XG5pbXBvcnQgQ3JlYXRlUm9vbURpYWxvZyBmcm9tIFwiLi4vY29tcG9uZW50cy92aWV3cy9kaWFsb2dzL0NyZWF0ZVJvb21EaWFsb2dcIjtcbmltcG9ydCBjcmVhdGVSb29tIGZyb20gXCIuLi9jcmVhdGVSb29tXCI7XG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBTcGFjZVB1YmxpY1NoYXJlIGZyb20gXCIuLi9jb21wb25lbnRzL3ZpZXdzL3NwYWNlcy9TcGFjZVB1YmxpY1NoYXJlXCI7XG5pbXBvcnQgSW5mb0RpYWxvZyBmcm9tIFwiLi4vY29tcG9uZW50cy92aWV3cy9kaWFsb2dzL0luZm9EaWFsb2dcIjtcbmltcG9ydCB7IHNob3dSb29tSW52aXRlRGlhbG9nIH0gZnJvbSBcIi4uL1Jvb21JbnZpdGVcIjtcbmltcG9ydCBDcmVhdGVTdWJzcGFjZURpYWxvZyBmcm9tIFwiLi4vY29tcG9uZW50cy92aWV3cy9kaWFsb2dzL0NyZWF0ZVN1YnNwYWNlRGlhbG9nXCI7XG5pbXBvcnQgQWRkRXhpc3RpbmdTdWJzcGFjZURpYWxvZyBmcm9tIFwiLi4vY29tcG9uZW50cy92aWV3cy9kaWFsb2dzL0FkZEV4aXN0aW5nU3Vic3BhY2VEaWFsb2dcIjtcbmltcG9ydCBkZWZhdWx0RGlzcGF0Y2hlciBmcm9tIFwiLi4vZGlzcGF0Y2hlci9kaXNwYXRjaGVyXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi4vZGlzcGF0Y2hlci9hY3Rpb25zXCI7XG5pbXBvcnQgU3Bpbm5lciBmcm9tIFwiLi4vY29tcG9uZW50cy92aWV3cy9lbGVtZW50cy9TcGlubmVyXCI7XG5pbXBvcnQgeyBzaG91bGRTaG93Q29tcG9uZW50IH0gZnJvbSBcIi4uL2N1c3RvbWlzYXRpb25zL2hlbHBlcnMvVUlDb21wb25lbnRzXCI7XG5pbXBvcnQgeyBVSUNvbXBvbmVudCB9IGZyb20gXCIuLi9zZXR0aW5ncy9VSUZlYXR1cmVcIjtcbmltcG9ydCB7IE9wZW5TcGFjZVByZWZlcmVuY2VzUGF5bG9hZCwgU3BhY2VQcmVmZXJlbmNlVGFiIH0gZnJvbSBcIi4uL2Rpc3BhdGNoZXIvcGF5bG9hZHMvT3BlblNwYWNlUHJlZmVyZW5jZXNQYXlsb2FkXCI7XG5pbXBvcnQgeyBPcGVuU3BhY2VTZXR0aW5nc1BheWxvYWQgfSBmcm9tIFwiLi4vZGlzcGF0Y2hlci9wYXlsb2Fkcy9PcGVuU3BhY2VTZXR0aW5nc1BheWxvYWRcIjtcbmltcG9ydCB7IE9wZW5BZGRFeGlzdGluZ1RvU3BhY2VEaWFsb2dQYXlsb2FkIH0gZnJvbSBcIi4uL2Rpc3BhdGNoZXIvcGF5bG9hZHMvT3BlbkFkZEV4aXN0aW5nVG9TcGFjZURpYWxvZ1BheWxvYWRcIjtcbmltcG9ydCB7IFNka0NvbnRleHRDbGFzcyB9IGZyb20gXCIuLi9jb250ZXh0cy9TREtDb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCBzaG91bGRTaG93U3BhY2VTZXR0aW5ncyA9IChzcGFjZTogUm9vbSk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IHVzZXJJZCA9IHNwYWNlLmNsaWVudC5nZXRVc2VySWQoKSE7XG4gICAgcmV0dXJuIChcbiAgICAgICAgc3BhY2UuZ2V0TXlNZW1iZXJzaGlwKCkgPT09IEtub3duTWVtYmVyc2hpcC5Kb2luICYmXG4gICAgICAgIChzcGFjZS5jdXJyZW50U3RhdGUubWF5U2VuZFN0YXRlRXZlbnQoRXZlbnRUeXBlLlJvb21BdmF0YXIsIHVzZXJJZCkgfHxcbiAgICAgICAgICAgIHNwYWNlLmN1cnJlbnRTdGF0ZS5tYXlTZW5kU3RhdGVFdmVudChFdmVudFR5cGUuUm9vbU5hbWUsIHVzZXJJZCkgfHxcbiAgICAgICAgICAgIHNwYWNlLmN1cnJlbnRTdGF0ZS5tYXlTZW5kU3RhdGVFdmVudChFdmVudFR5cGUuUm9vbVRvcGljLCB1c2VySWQpIHx8XG4gICAgICAgICAgICBzcGFjZS5jdXJyZW50U3RhdGUubWF5U2VuZFN0YXRlRXZlbnQoRXZlbnRUeXBlLlJvb21Kb2luUnVsZXMsIHVzZXJJZCkpXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBtYWtlU3BhY2VQYXJlbnRFdmVudCA9IChyb29tOiBSb29tLCBjYW5vbmljYWwgPSBmYWxzZSk6IElDcmVhdGVSb29tU3RhdGVFdmVudCA9PiAoe1xuICAgIHR5cGU6IEV2ZW50VHlwZS5TcGFjZVBhcmVudCxcbiAgICBjb250ZW50OiB7XG4gICAgICAgIHZpYTogY2FsY3VsYXRlUm9vbVZpYShyb29tKSxcbiAgICAgICAgY2Fub25pY2FsOiBjYW5vbmljYWwsXG4gICAgfSxcbiAgICBzdGF0ZV9rZXk6IHJvb20ucm9vbUlkLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93U3BhY2VTZXR0aW5ncyhzcGFjZTogUm9vbSk6IHZvaWQge1xuICAgIGRlZmF1bHREaXNwYXRjaGVyLmRpc3BhdGNoPE9wZW5TcGFjZVNldHRpbmdzUGF5bG9hZD4oe1xuICAgICAgICBhY3Rpb246IEFjdGlvbi5PcGVuU3BhY2VTZXR0aW5ncyxcbiAgICAgICAgc3BhY2UsXG4gICAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBzaG93QWRkRXhpc3RpbmdSb29tcyA9IChzcGFjZTogUm9vbSk6IHZvaWQgPT4ge1xuICAgIGRlZmF1bHREaXNwYXRjaGVyLmRpc3BhdGNoPE9wZW5BZGRFeGlzdGluZ1RvU3BhY2VEaWFsb2dQYXlsb2FkPih7XG4gICAgICAgIGFjdGlvbjogQWN0aW9uLk9wZW5BZGRUb0V4aXN0aW5nU3BhY2VEaWFsb2csXG4gICAgICAgIHNwYWNlLFxuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNob3dDcmVhdGVOZXdSb29tID0gYXN5bmMgKHNwYWNlOiBSb29tLCB0eXBlPzogUm9vbVR5cGUpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCBtb2RhbCA9IE1vZGFsLmNyZWF0ZURpYWxvZyhDcmVhdGVSb29tRGlhbG9nLCB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIGRlZmF1bHRQdWJsaWM6IHNwYWNlLmdldEpvaW5SdWxlKCkgPT09IEpvaW5SdWxlLlB1YmxpYyxcbiAgICAgICAgcGFyZW50U3BhY2U6IHNwYWNlLFxuICAgIH0pO1xuICAgIGNvbnN0IFtzaG91bGRDcmVhdGUsIG9wdHNdID0gYXdhaXQgbW9kYWwuZmluaXNoZWQ7XG4gICAgaWYgKHNob3VsZENyZWF0ZSkge1xuICAgICAgICBhd2FpdCBjcmVhdGVSb29tKHNwYWNlLmNsaWVudCwgb3B0cyk7XG4gICAgfVxuICAgIHJldHVybiAhIXNob3VsZENyZWF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG91bGRTaG93U3BhY2VJbnZpdGUgPSAoc3BhY2U6IFJvb20pOiBib29sZWFuID0+XG4gICAgKChzcGFjZT8uZ2V0TXlNZW1iZXJzaGlwKCkgPT09IEtub3duTWVtYmVyc2hpcC5Kb2luICYmIHNwYWNlLmNhbkludml0ZShzcGFjZS5jbGllbnQuZ2V0VXNlcklkKCkhKSkgfHxcbiAgICAgICAgc3BhY2UuZ2V0Sm9pblJ1bGUoKSA9PT0gSm9pblJ1bGUuUHVibGljKSAmJlxuICAgIHNob3VsZFNob3dDb21wb25lbnQoVUlDb21wb25lbnQuSW52aXRlVXNlcnMpO1xuXG5leHBvcnQgY29uc3Qgc2hvd1NwYWNlSW52aXRlID0gKHNwYWNlOiBSb29tLCBpbml0aWFsVGV4dCA9IFwiXCIpOiB2b2lkID0+IHtcbiAgICBpZiAoc3BhY2UuZ2V0Sm9pblJ1bGUoKSA9PT0gXCJwdWJsaWNcIikge1xuICAgICAgICBjb25zdCBtb2RhbCA9IE1vZGFsLmNyZWF0ZURpYWxvZyhJbmZvRGlhbG9nLCB7XG4gICAgICAgICAgICB0aXRsZTogX3QoXCJpbnZpdGV8dG9fc3BhY2VcIiwgeyBzcGFjZU5hbWU6IHNwYWNlLm5hbWUgfSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogKFxuICAgICAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e190KFwic3BhY2V8c2hhcmVfcHVibGljXCIpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPFNwYWNlUHVibGljU2hhcmUgc3BhY2U9e3NwYWNlfSBvbkZpbmlzaGVkPXsoKSA9PiBtb2RhbC5jbG9zZSgpfSAvPlxuICAgICAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZml4ZWRXaWR0aDogZmFsc2UsXG4gICAgICAgICAgICBidXR0b246IGZhbHNlLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBcIm14X1NwYWNlUGFuZWxfc2hhcmVQdWJsaWNTcGFjZVwiLFxuICAgICAgICAgICAgaGFzQ2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNob3dSb29tSW52aXRlRGlhbG9nKHNwYWNlLnJvb21JZCwgaW5pdGlhbFRleHQpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzaG93QWRkRXhpc3RpbmdTdWJzcGFjZSA9IChzcGFjZTogUm9vbSk6IHZvaWQgPT4ge1xuICAgIE1vZGFsLmNyZWF0ZURpYWxvZyhcbiAgICAgICAgQWRkRXhpc3RpbmdTdWJzcGFjZURpYWxvZyxcbiAgICAgICAge1xuICAgICAgICAgICAgc3BhY2UsXG4gICAgICAgICAgICBvbkNyZWF0ZVN1YnNwYWNlQ2xpY2s6ICgpID0+IHNob3dDcmVhdGVOZXdTdWJzcGFjZShzcGFjZSksXG4gICAgICAgICAgICBvbkZpbmlzaGVkOiAoYWRkZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYWRkZWQgJiYgU2RrQ29udGV4dENsYXNzLmluc3RhbmNlLnJvb21WaWV3U3RvcmUuZ2V0Um9vbUlkKCkgPT09IHNwYWNlLnJvb21JZCkge1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGlzcGF0Y2hlci5maXJlKEFjdGlvbi5VcGRhdGVTcGFjZUhpZXJhcmNoeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgXCJteF9BZGRFeGlzdGluZ1RvU3BhY2VEaWFsb2dfd3JhcHBlclwiLFxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2hvd0NyZWF0ZU5ld1N1YnNwYWNlID0gKHNwYWNlOiBSb29tKTogdm9pZCA9PiB7XG4gICAgTW9kYWwuY3JlYXRlRGlhbG9nKFxuICAgICAgICBDcmVhdGVTdWJzcGFjZURpYWxvZyxcbiAgICAgICAge1xuICAgICAgICAgICAgc3BhY2UsXG4gICAgICAgICAgICBvbkFkZEV4aXN0aW5nU3BhY2VDbGljazogKCkgPT4gc2hvd0FkZEV4aXN0aW5nU3Vic3BhY2Uoc3BhY2UpLFxuICAgICAgICAgICAgb25GaW5pc2hlZDogKGFkZGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGFkZGVkICYmIFNka0NvbnRleHRDbGFzcy5pbnN0YW5jZS5yb29tVmlld1N0b3JlLmdldFJvb21JZCgpID09PSBzcGFjZS5yb29tSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdERpc3BhdGNoZXIuZmlyZShBY3Rpb24uVXBkYXRlU3BhY2VIaWVyYXJjaHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIFwibXhfQ3JlYXRlU3Vic3BhY2VEaWFsb2dfd3JhcHBlclwiLFxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgYnVsa1NwYWNlQmVoYXZpb3VyID0gYXN5bmMgKFxuICAgIHNwYWNlOiBSb29tLFxuICAgIGNoaWxkcmVuOiBSb29tW10sXG4gICAgZm46IChyb29tOiBSb29tKSA9PiBQcm9taXNlPHVua25vd24+LFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgbW9kYWwgPSBNb2RhbC5jcmVhdGVEaWFsb2coU3Bpbm5lciwgdW5kZWZpbmVkLCBcIm14X0RpYWxvZ19zcGlubmVyXCIpO1xuICAgIHRyeSB7XG4gICAgICAgIGZvciAoY29uc3Qgcm9vbSBvZiBjaGlsZHJlbikge1xuICAgICAgICAgICAgYXdhaXQgZm4ocm9vbSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZm4oc3BhY2UpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIG1vZGFsLmNsb3NlKCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHNob3dTcGFjZVByZWZlcmVuY2VzID0gKHNwYWNlOiBSb29tLCBpbml0aWFsVGFiSWQ/OiBTcGFjZVByZWZlcmVuY2VUYWIpOiB2b2lkID0+IHtcbiAgICBkZWZhdWx0RGlzcGF0Y2hlci5kaXNwYXRjaDxPcGVuU3BhY2VQcmVmZXJlbmNlc1BheWxvYWQ+KHtcbiAgICAgICAgYWN0aW9uOiBBY3Rpb24uT3BlblNwYWNlUHJlZmVyZW5jZXMsXG4gICAgICAgIHNwYWNlLFxuICAgICAgICBpbml0aWFsVGFiSWQsXG4gICAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFH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QztBQUNMLENBQUM7QUFBQ2xFLE9BQUEsQ0FBQXdELHVCQUFBLEdBQUFBLHVCQUFBO0FBRUssTUFBTUcscUJBQXFCLEdBQUl6RSxLQUFXLElBQVc7RUFDeERtQyxjQUFLLENBQUNDLFlBQVksQ0FDZDZDLDZCQUFvQixFQUNwQjtJQUNJakYsS0FBSztJQUNMa0YsdUJBQXVCLEVBQUVBLENBQUEsS0FBTVosdUJBQXVCLENBQUN0RSxLQUFLLENBQUM7SUFDN0QrRCxVQUFVLEVBQUdXLEtBQWMsSUFBSztNQUM1QixJQUFJQSxLQUFLLElBQUlDLDJCQUFlLENBQUNDLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDQyxTQUFTLENBQUMsQ0FBQyxLQUFLOUUsS0FBSyxDQUFDd0IsTUFBTSxFQUFFO1FBQzlFRSxtQkFBaUIsQ0FBQ3FELElBQUksQ0FBQ2xELGVBQU0sQ0FBQ21ELG9CQUFvQixDQUFDO01BQ3ZEO0lBQ0o7RUFDSixDQUFDLEVBQ0QsaUNBQ0osQ0FBQztBQUNMLENBQUM7QUFBQ2xFLE9BQUEsQ0FBQTJELHFCQUFBLEdBQUFBLHFCQUFBO0FBRUssTUFBTVUsa0JBQWtCLEdBQUcsTUFBQUEsQ0FDOUJuRixLQUFXLEVBQ1hvRixRQUFnQixFQUNoQkMsRUFBb0MsS0FDcEI7RUFDaEIsTUFBTW5ELEtBQUssR0FBR0MsY0FBSyxDQUFDQyxZQUFZLENBQUNrRCxnQkFBTyxFQUFFQyxTQUFTLEVBQUUsbUJBQW1CLENBQUM7RUFDekUsSUFBSTtJQUNBLEtBQUssTUFBTXZFLElBQUksSUFBSW9FLFFBQVEsRUFBRTtNQUN6QixNQUFNQyxFQUFFLENBQUNyRSxJQUFJLENBQUM7SUFDbEI7SUFDQSxNQUFNcUUsRUFBRSxDQUFDckYsS0FBSyxDQUFDO0VBQ25CLENBQUMsU0FBUztJQUNOa0MsS0FBSyxDQUFDOEIsS0FBSyxDQUFDLENBQUM7RUFDakI7QUFDSixDQUFDO0FBQUNsRCxPQUFBLENBQUFxRSxrQkFBQSxHQUFBQSxrQkFBQTtBQUVLLE1BQU1LLG9CQUFvQixHQUFHQSxDQUFDeEYsS0FBVyxFQUFFeUYsWUFBaUMsS0FBVztFQUMxRi9ELG1CQUFpQixDQUFDQyxRQUFRLENBQThCO0lBQ3BEQyxNQUFNLEVBQUVDLGVBQU0sQ0FBQzZELG9CQUFvQjtJQUNuQzFGLEtBQUs7SUFDTHlGO0VBQ0osQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUFDM0UsT0FBQSxDQUFBMEUsb0JBQUEsR0FBQUEsb0JBQUEiLCJpZ25vcmVMaXN0IjpbXX0=