UNPKG

matrix-react-sdk

Version:
184 lines (150 loc) 22.9 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireWildcard(require("react")); var _event = require("matrix-js-sdk/src/@types/event"); var _languageHandler = require("../../../languageHandler"); var _BaseDialog = _interopRequireDefault(require("./BaseDialog")); var _DevtoolsDialog = _interopRequireDefault(require("./DevtoolsDialog")); var _SpaceBasicSettings = _interopRequireDefault(require("../spaces/SpaceBasicSettings")); var _RoomTopic = require("../elements/RoomTopic"); var _Avatar = require("../../../Avatar"); var _ToggleSwitch = _interopRequireDefault(require("../elements/ToggleSwitch")); var _AccessibleButton = _interopRequireDefault(require("../elements/AccessibleButton")); var _Modal = _interopRequireDefault(require("../../../Modal")); var _dispatcher = _interopRequireDefault(require("../../../dispatcher/dispatcher")); var _promise = require("../../../utils/promise"); var _useDispatcher = require("../../../hooks/useDispatcher"); var _SpaceRoomView = require("../../structures/SpaceRoomView"); /* Copyright 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ const SpaceSettingsDialog /*: React.FC<IProps>*/ = ({ matrixClient: cli, space, onFinished }) => { (0, _useDispatcher.useDispatcher)(_dispatcher.default, (_ref) => { let { action } = _ref, params = (0, _objectWithoutProperties2.default)(_ref, ["action"]); if (action === "after_leave_room" && params.room_id === space.roomId) { onFinished(false); } }); const [busy, setBusy] = (0, _react.useState)(false); const [error, setError] = (0, _react.useState)(""); const userId = cli.getUserId(); const [newAvatar, setNewAvatar] = (0, _react.useState)(null); // undefined means to remove avatar const canSetAvatar = space.currentState.maySendStateEvent(_event.EventType.RoomAvatar, userId); const avatarChanged = newAvatar !== null; const [name, setName] = (0, _react.useState)(space.name); const canSetName = space.currentState.maySendStateEvent(_event.EventType.RoomName, userId); const nameChanged = name !== space.name; const currentTopic = (0, _RoomTopic.getTopic)(space); const [topic, setTopic] = (0, _react.useState)(currentTopic); const canSetTopic = space.currentState.maySendStateEvent(_event.EventType.RoomTopic, userId); const topicChanged = topic !== currentTopic; const currentJoinRule = space.getJoinRule(); const [joinRule, setJoinRule] = (0, _react.useState)(currentJoinRule); const canSetJoinRule = space.currentState.maySendStateEvent(_event.EventType.RoomJoinRules, userId); const joinRuleChanged = joinRule !== currentJoinRule; const onSave = async () => { setBusy(true); const promises = []; if (avatarChanged) { promises.push(cli.sendStateEvent(space.roomId, _event.EventType.RoomAvatar, { url: await cli.uploadContent(newAvatar) }, "")); } if (nameChanged) { promises.push(cli.setRoomName(space.roomId, name)); } if (topicChanged) { promises.push(cli.setRoomTopic(space.roomId, topic)); } if (joinRuleChanged) { promises.push(cli.sendStateEvent(space.roomId, _event.EventType.RoomJoinRules, { join_rule: joinRule }, "")); } const results = await (0, _promise.allSettled)(promises); setBusy(false); const failures = results.filter(r => r.status === "rejected"); if (failures.length > 0) { console.error("Failed to save space settings: ", failures); setError((0, _languageHandler._t)("Failed to save space settings.")); } }; return /*#__PURE__*/_react.default.createElement(_BaseDialog.default, { title: (0, _languageHandler._t)("Space settings"), className: "mx_SpaceSettingsDialog", contentId: "mx_SpaceSettingsDialog", onFinished: onFinished, fixedWidth: false }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_SpaceSettingsDialog_content", id: "mx_SpaceSettingsDialog" }, /*#__PURE__*/_react.default.createElement("div", null, (0, _languageHandler._t)("Edit settings relating to your space.")), error && /*#__PURE__*/_react.default.createElement("div", { className: "mx_SpaceRoomView_errorText" }, error), /*#__PURE__*/_react.default.createElement(_SpaceRoomView.SpaceFeedbackPrompt, { onClick: () => onFinished(false) }), /*#__PURE__*/_react.default.createElement(_SpaceBasicSettings.default, { avatarUrl: (0, _Avatar.avatarUrlForRoom)(space, 80, 80, "crop"), avatarDisabled: busy || !canSetAvatar, setAvatar: setNewAvatar, name: name, nameDisabled: busy || !canSetName, setName: setName, topic: topic, topicDisabled: busy || !canSetTopic, setTopic: setTopic }), /*#__PURE__*/_react.default.createElement("div", null, (0, _languageHandler._t)("Make this space private"), /*#__PURE__*/_react.default.createElement(_ToggleSwitch.default, { checked: joinRule !== "public", onChange: checked => setJoinRule(checked ? "invite" : "public"), disabled: !canSetJoinRule, "aria-label": (0, _languageHandler._t)("Make this space private") })), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { kind: "danger", onClick: () => { _dispatcher.default.dispatch({ action: "leave_room", room_id: space.roomId }); } }, (0, _languageHandler._t)("Leave Space")), /*#__PURE__*/_react.default.createElement("div", { className: "mx_SpaceSettingsDialog_buttons" }, /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { onClick: () => _Modal.default.createDialog(_DevtoolsDialog.default, { roomId: space.roomId }) }, (0, _languageHandler._t)("View dev tools")), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { onClick: onFinished, disabled: busy, kind: "link" }, (0, _languageHandler._t)("Cancel")), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { onClick: onSave, disabled: busy, kind: "primary" }, busy ? (0, _languageHandler._t)("Saving...") : (0, _languageHandler._t)("Save Changes"))))); }; var _default = SpaceSettingsDialog; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2RpYWxvZ3MvU3BhY2VTZXR0aW5nc0RpYWxvZy50c3giXSwibmFtZXMiOlsiU3BhY2VTZXR0aW5nc0RpYWxvZyIsIm1hdHJpeENsaWVudCIsImNsaSIsInNwYWNlIiwib25GaW5pc2hlZCIsImRlZmF1bHREaXNwYXRjaGVyIiwiYWN0aW9uIiwicGFyYW1zIiwicm9vbV9pZCIsInJvb21JZCIsImJ1c3kiLCJzZXRCdXN5IiwiZXJyb3IiLCJzZXRFcnJvciIsInVzZXJJZCIsImdldFVzZXJJZCIsIm5ld0F2YXRhciIsInNldE5ld0F2YXRhciIsImNhblNldEF2YXRhciIsImN1cnJlbnRTdGF0ZSIsIm1heVNlbmRTdGF0ZUV2ZW50IiwiRXZlbnRUeXBlIiwiUm9vbUF2YXRhciIsImF2YXRhckNoYW5nZWQiLCJuYW1lIiwic2V0TmFtZSIsImNhblNldE5hbWUiLCJSb29tTmFtZSIsIm5hbWVDaGFuZ2VkIiwiY3VycmVudFRvcGljIiwidG9waWMiLCJzZXRUb3BpYyIsImNhblNldFRvcGljIiwiUm9vbVRvcGljIiwidG9waWNDaGFuZ2VkIiwiY3VycmVudEpvaW5SdWxlIiwiZ2V0Sm9pblJ1bGUiLCJqb2luUnVsZSIsInNldEpvaW5SdWxlIiwiY2FuU2V0Sm9pblJ1bGUiLCJSb29tSm9pblJ1bGVzIiwiam9pblJ1bGVDaGFuZ2VkIiwib25TYXZlIiwicHJvbWlzZXMiLCJwdXNoIiwic2VuZFN0YXRlRXZlbnQiLCJ1cmwiLCJ1cGxvYWRDb250ZW50Iiwic2V0Um9vbU5hbWUiLCJzZXRSb29tVG9waWMiLCJqb2luX3J1bGUiLCJyZXN1bHRzIiwiZmFpbHVyZXMiLCJmaWx0ZXIiLCJyIiwic3RhdHVzIiwibGVuZ3RoIiwiY29uc29sZSIsImNoZWNrZWQiLCJkaXNwYXRjaCIsIk1vZGFsIiwiY3JlYXRlRGlhbG9nIiwiRGV2dG9vbHNEaWFsb2ciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFnQkE7O0FB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SSxFQUFDLFFBRFQ7QUFFSSxJQUFBLE9BQU8sRUFBRSxNQUFNO0FBQ1hsQywwQkFBa0JzRCxRQUFsQixDQUEyQjtBQUN2QnJELFFBQUFBLE1BQU0sRUFBRSxZQURlO0FBRXZCRSxRQUFBQSxPQUFPLEVBQUVMLEtBQUssQ0FBQ007QUFGUSxPQUEzQjtBQUlIO0FBUEwsS0FTTSx5QkFBRyxhQUFILENBVE4sQ0E3QkosZUF5Q0k7QUFBSyxJQUFBLFNBQVMsRUFBQztBQUFmLGtCQUNJLDZCQUFDLHlCQUFEO0FBQWtCLElBQUEsT0FBTyxFQUFFLE1BQU1tRCxlQUFNQyxZQUFOLENBQW1CQyx1QkFBbkIsRUFBbUM7QUFBQ3JELE1BQUFBLE1BQU0sRUFBRU4sS0FBSyxDQUFDTTtBQUFmLEtBQW5DO0FBQWpDLEtBQ00seUJBQUcsZ0JBQUgsQ0FETixDQURKLGVBSUksNkJBQUMseUJBQUQ7QUFBa0IsSUFBQSxPQUFPLEVBQUVMLFVBQTNCO0FBQXVDLElBQUEsUUFBUSxFQUFFTSxJQUFqRDtBQUF1RCxJQUFBLElBQUksRUFBQztBQUE1RCxLQUNNLHlCQUFHLFFBQUgsQ0FETixDQUpKLGVBT0ksNkJBQUMseUJBQUQ7QUFBa0IsSUFBQSxPQUFPLEVBQUVnQyxNQUEzQjtBQUFtQyxJQUFBLFFBQVEsRUFBRWhDLElBQTdDO0FBQW1ELElBQUEsSUFBSSxFQUFDO0FBQXhELEtBQ01BLElBQUksR0FBRyx5QkFBRyxXQUFILENBQUgsR0FBcUIseUJBQUcsY0FBSCxDQUQvQixDQVBKLENBekNKLENBUEcsQ0FBUDtBQTZESCxDQTFIRDs7ZUE0SGVWLG1CIiwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Um9vbX0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21vZGVscy9yb29tXCI7XG5pbXBvcnQge01hdHJpeENsaWVudH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL2NsaWVudFwiO1xuaW1wb3J0IHtFdmVudFR5cGV9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9AdHlwZXMvZXZlbnRcIjtcblxuaW1wb3J0IHtfdH0gZnJvbSAnLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyJztcbmltcG9ydCB7SURpYWxvZ1Byb3BzfSBmcm9tIFwiLi9JRGlhbG9nUHJvcHNcIjtcbmltcG9ydCBCYXNlRGlhbG9nIGZyb20gXCIuL0Jhc2VEaWFsb2dcIjtcbmltcG9ydCBEZXZ0b29sc0RpYWxvZyBmcm9tIFwiLi9EZXZ0b29sc0RpYWxvZ1wiO1xuaW1wb3J0IFNwYWNlQmFzaWNTZXR0aW5ncyBmcm9tICcuLi9zcGFjZXMvU3BhY2VCYXNpY1NldHRpbmdzJztcbmltcG9ydCB7Z2V0VG9waWN9IGZyb20gXCIuLi9lbGVtZW50cy9Sb29tVG9waWNcIjtcbmltcG9ydCB7YXZhdGFyVXJsRm9yUm9vbX0gZnJvbSBcIi4uLy4uLy4uL0F2YXRhclwiO1xuaW1wb3J0IFRvZ2dsZVN3aXRjaCBmcm9tIFwiLi4vZWxlbWVudHMvVG9nZ2xlU3dpdGNoXCI7XG5pbXBvcnQgQWNjZXNzaWJsZUJ1dHRvbiBmcm9tIFwiLi4vZWxlbWVudHMvQWNjZXNzaWJsZUJ1dHRvblwiO1xuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi8uLi9Nb2RhbFwiO1xuaW1wb3J0IGRlZmF1bHREaXNwYXRjaGVyIGZyb20gXCIuLi8uLi8uLi9kaXNwYXRjaGVyL2Rpc3BhdGNoZXJcIjtcbmltcG9ydCB7YWxsU2V0dGxlZH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Byb21pc2VcIjtcbmltcG9ydCB7dXNlRGlzcGF0Y2hlcn0gZnJvbSBcIi4uLy4uLy4uL2hvb2tzL3VzZURpc3BhdGNoZXJcIjtcbmltcG9ydCB7U3BhY2VGZWVkYmFja1Byb21wdH0gZnJvbSBcIi4uLy4uL3N0cnVjdHVyZXMvU3BhY2VSb29tVmlld1wiO1xuXG5pbnRlcmZhY2UgSVByb3BzIGV4dGVuZHMgSURpYWxvZ1Byb3BzIHtcbiAgICBtYXRyaXhDbGllbnQ6IE1hdHJpeENsaWVudDtcbiAgICBzcGFjZTogUm9vbTtcbn1cblxuY29uc3QgU3BhY2VTZXR0aW5nc0RpYWxvZzogUmVhY3QuRkM8SVByb3BzPiA9ICh7IG1hdHJpeENsaWVudDogY2xpLCBzcGFjZSwgb25GaW5pc2hlZCB9KSA9PiB7XG4gICAgdXNlRGlzcGF0Y2hlcihkZWZhdWx0RGlzcGF0Y2hlciwgKHthY3Rpb24sIC4uLnBhcmFtc30pID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbiA9PT0gXCJhZnRlcl9sZWF2ZV9yb29tXCIgJiYgcGFyYW1zLnJvb21faWQgPT09IHNwYWNlLnJvb21JZCkge1xuICAgICAgICAgICAgb25GaW5pc2hlZChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IFtidXN5LCBzZXRCdXN5XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlKFwiXCIpO1xuXG4gICAgY29uc3QgdXNlcklkID0gY2xpLmdldFVzZXJJZCgpO1xuXG4gICAgY29uc3QgW25ld0F2YXRhciwgc2V0TmV3QXZhdGFyXSA9IHVzZVN0YXRlPEZpbGU+KG51bGwpOyAvLyB1bmRlZmluZWQgbWVhbnMgdG8gcmVtb3ZlIGF2YXRhclxuICAgIGNvbnN0IGNhblNldEF2YXRhciA9IHNwYWNlLmN1cnJlbnRTdGF0ZS5tYXlTZW5kU3RhdGVFdmVudChFdmVudFR5cGUuUm9vbUF2YXRhciwgdXNlcklkKTtcbiAgICBjb25zdCBhdmF0YXJDaGFuZ2VkID0gbmV3QXZhdGFyICE9PSBudWxsO1xuXG4gICAgY29uc3QgW25hbWUsIHNldE5hbWVdID0gdXNlU3RhdGU8c3RyaW5nPihzcGFjZS5uYW1lKTtcbiAgICBjb25zdCBjYW5TZXROYW1lID0gc3BhY2UuY3VycmVudFN0YXRlLm1heVNlbmRTdGF0ZUV2ZW50KEV2ZW50VHlwZS5Sb29tTmFtZSwgdXNlcklkKTtcbiAgICBjb25zdCBuYW1lQ2hhbmdlZCA9IG5hbWUgIT09IHNwYWNlLm5hbWU7XG5cbiAgICBjb25zdCBjdXJyZW50VG9waWMgPSBnZXRUb3BpYyhzcGFjZSk7XG4gICAgY29uc3QgW3RvcGljLCBzZXRUb3BpY10gPSB1c2VTdGF0ZTxzdHJpbmc+KGN1cnJlbnRUb3BpYyk7XG4gICAgY29uc3QgY2FuU2V0VG9waWMgPSBzcGFjZS5jdXJyZW50U3RhdGUubWF5U2VuZFN0YXRlRXZlbnQoRXZlbnRUeXBlLlJvb21Ub3BpYywgdXNlcklkKTtcbiAgICBjb25zdCB0b3BpY0NoYW5nZWQgPSB0b3BpYyAhPT0gY3VycmVudFRvcGljO1xuXG4gICAgY29uc3QgY3VycmVudEpvaW5SdWxlID0gc3BhY2UuZ2V0Sm9pblJ1bGUoKTtcbiAgICBjb25zdCBbam9pblJ1bGUsIHNldEpvaW5SdWxlXSA9IHVzZVN0YXRlKGN1cnJlbnRKb2luUnVsZSk7XG4gICAgY29uc3QgY2FuU2V0Sm9pblJ1bGUgPSBzcGFjZS5jdXJyZW50U3RhdGUubWF5U2VuZFN0YXRlRXZlbnQoRXZlbnRUeXBlLlJvb21Kb2luUnVsZXMsIHVzZXJJZCk7XG4gICAgY29uc3Qgam9pblJ1bGVDaGFuZ2VkID0gam9pblJ1bGUgIT09IGN1cnJlbnRKb2luUnVsZTtcblxuICAgIGNvbnN0IG9uU2F2ZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgc2V0QnVzeSh0cnVlKTtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcblxuICAgICAgICBpZiAoYXZhdGFyQ2hhbmdlZCkge1xuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChjbGkuc2VuZFN0YXRlRXZlbnQoc3BhY2Uucm9vbUlkLCBFdmVudFR5cGUuUm9vbUF2YXRhciwge1xuICAgICAgICAgICAgICAgIHVybDogYXdhaXQgY2xpLnVwbG9hZENvbnRlbnQobmV3QXZhdGFyKSxcbiAgICAgICAgICAgIH0sIFwiXCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lQ2hhbmdlZCkge1xuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChjbGkuc2V0Um9vbU5hbWUoc3BhY2Uucm9vbUlkLCBuYW1lKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodG9waWNDaGFuZ2VkKSB7XG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKGNsaS5zZXRSb29tVG9waWMoc3BhY2Uucm9vbUlkLCB0b3BpYykpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGpvaW5SdWxlQ2hhbmdlZCkge1xuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChjbGkuc2VuZFN0YXRlRXZlbnQoc3BhY2Uucm9vbUlkLCBFdmVudFR5cGUuUm9vbUpvaW5SdWxlcywgeyBqb2luX3J1bGU6IGpvaW5SdWxlIH0sIFwiXCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBhbGxTZXR0bGVkKHByb21pc2VzKTtcbiAgICAgICAgc2V0QnVzeShmYWxzZSk7XG4gICAgICAgIGNvbnN0IGZhaWx1cmVzID0gcmVzdWx0cy5maWx0ZXIociA9PiByLnN0YXR1cyA9PT0gXCJyZWplY3RlZFwiKTtcbiAgICAgICAgaWYgKGZhaWx1cmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gc2F2ZSBzcGFjZSBzZXR0aW5nczogXCIsIGZhaWx1cmVzKTtcbiAgICAgICAgICAgIHNldEVycm9yKF90KFwiRmFpbGVkIHRvIHNhdmUgc3BhY2Ugc2V0dGluZ3MuXCIpKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gPEJhc2VEaWFsb2dcbiAgICAgICAgdGl0bGU9e190KFwiU3BhY2Ugc2V0dGluZ3NcIil9XG4gICAgICAgIGNsYXNzTmFtZT1cIm14X1NwYWNlU2V0dGluZ3NEaWFsb2dcIlxuICAgICAgICBjb250ZW50SWQ9XCJteF9TcGFjZVNldHRpbmdzRGlhbG9nXCJcbiAgICAgICAgb25GaW5pc2hlZD17b25GaW5pc2hlZH1cbiAgICAgICAgZml4ZWRXaWR0aD17ZmFsc2V9XG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X1NwYWNlU2V0dGluZ3NEaWFsb2dfY29udGVudFwiIGlkPVwibXhfU3BhY2VTZXR0aW5nc0RpYWxvZ1wiPlxuICAgICAgICAgICAgPGRpdj57IF90KFwiRWRpdCBzZXR0aW5ncyByZWxhdGluZyB0byB5b3VyIHNwYWNlLlwiKSB9PC9kaXY+XG5cbiAgICAgICAgICAgIHsgZXJyb3IgJiYgPGRpdiBjbGFzc05hbWU9XCJteF9TcGFjZVJvb21WaWV3X2Vycm9yVGV4dFwiPnsgZXJyb3IgfTwvZGl2PiB9XG5cbiAgICAgICAgICAgIDxTcGFjZUZlZWRiYWNrUHJvbXB0IG9uQ2xpY2s9eygpID0+IG9uRmluaXNoZWQoZmFsc2UpfSAvPlxuXG4gICAgICAgICAgICA8U3BhY2VCYXNpY1NldHRpbmdzXG4gICAgICAgICAgICAgICAgYXZhdGFyVXJsPXthdmF0YXJVcmxGb3JSb29tKHNwYWNlLCA4MCwgODAsIFwiY3JvcFwiKX1cbiAgICAgICAgICAgICAgICBhdmF0YXJEaXNhYmxlZD17YnVzeSB8fCAhY2FuU2V0QXZhdGFyfVxuICAgICAgICAgICAgICAgIHNldEF2YXRhcj17c2V0TmV3QXZhdGFyfVxuICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgbmFtZURpc2FibGVkPXtidXN5IHx8ICFjYW5TZXROYW1lfVxuICAgICAgICAgICAgICAgIHNldE5hbWU9e3NldE5hbWV9XG4gICAgICAgICAgICAgICAgdG9waWM9e3RvcGljfVxuICAgICAgICAgICAgICAgIHRvcGljRGlzYWJsZWQ9e2J1c3kgfHwgIWNhblNldFRvcGljfVxuICAgICAgICAgICAgICAgIHNldFRvcGljPXtzZXRUb3BpY31cbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgeyBfdChcIk1ha2UgdGhpcyBzcGFjZSBwcml2YXRlXCIpIH1cbiAgICAgICAgICAgICAgICA8VG9nZ2xlU3dpdGNoXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2pvaW5SdWxlICE9PSBcInB1YmxpY1wifVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17Y2hlY2tlZCA9PiBzZXRKb2luUnVsZShjaGVja2VkID8gXCJpbnZpdGVcIiA6IFwicHVibGljXCIpfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWNhblNldEpvaW5SdWxlfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtfdChcIk1ha2UgdGhpcyBzcGFjZSBwcml2YXRlXCIpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b25cbiAgICAgICAgICAgICAgICBraW5kPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHREaXNwYXRjaGVyLmRpc3BhdGNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogXCJsZWF2ZV9yb29tXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tX2lkOiBzcGFjZS5yb29tSWQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgeyBfdChcIkxlYXZlIFNwYWNlXCIpIH1cbiAgICAgICAgICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9TcGFjZVNldHRpbmdzRGlhbG9nX2J1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBNb2RhbC5jcmVhdGVEaWFsb2coRGV2dG9vbHNEaWFsb2csIHtyb29tSWQ6IHNwYWNlLnJvb21JZH0pfT5cbiAgICAgICAgICAgICAgICAgICAgeyBfdChcIlZpZXcgZGV2IHRvb2xzXCIpIH1cbiAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b24gb25DbGljaz17b25GaW5pc2hlZH0gZGlzYWJsZWQ9e2J1c3l9IGtpbmQ9XCJsaW5rXCI+XG4gICAgICAgICAgICAgICAgICAgIHsgX3QoXCJDYW5jZWxcIikgfVxuICAgICAgICAgICAgICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvbiBvbkNsaWNrPXtvblNhdmV9IGRpc2FibGVkPXtidXN5fSBraW5kPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICB7IGJ1c3kgPyBfdChcIlNhdmluZy4uLlwiKSA6IF90KFwiU2F2ZSBDaGFuZ2VzXCIpIH1cbiAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9CYXNlRGlhbG9nPjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNwYWNlU2V0dGluZ3NEaWFsb2c7XG5cbiJdfQ==