matrix-react-sdk
Version:
SDK for matrix.org using React
110 lines (106 loc) • 18.6 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.VoiceBroadcastRecordingPip = void 0;
var _react = _interopRequireWildcard(require("react"));
var _pauseSolid = _interopRequireDefault(require("@vector-im/compound-design-tokens/assets/web/icons/pause-solid"));
var _micOnSolid = _interopRequireDefault(require("@vector-im/compound-design-tokens/assets/web/icons/mic-on-solid"));
var _ = require("../..");
var _useVoiceBroadcastRecording = require("../../hooks/useVoiceBroadcastRecording");
var _VoiceBroadcastHeader = require("../atoms/VoiceBroadcastHeader");
var _stop = require("../../../../res/img/compound/stop-16.svg");
var _record10px = require("../../../../res/img/compound/record-10px.svg");
var _languageHandler = require("../../../languageHandler");
var _useAudioDeviceSelection = require("../../../hooks/useAudioDeviceSelection");
var _DevicesContextMenu = require("../../../components/views/audio_messages/DevicesContextMenu");
var _AccessibleButton = _interopRequireDefault(require("../../../components/views/elements/AccessibleButton"));
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 2022 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 VoiceBroadcastRecordingPip = ({
recording
}) => {
const pipRef = (0, _react.useRef)(null);
const {
live,
timeLeft,
recordingState,
room,
stopRecording,
toggleRecording
} = (0, _useVoiceBroadcastRecording.useVoiceBroadcastRecording)(recording);
const {
currentDevice,
devices,
setDevice
} = (0, _useAudioDeviceSelection.useAudioDeviceSelection)();
const onDeviceSelect = async device => {
setShowDeviceSelect(false);
if (currentDevice?.deviceId === device.deviceId) {
// device unchanged
return;
}
setDevice(device);
if ([_.VoiceBroadcastInfoState.Paused, _.VoiceBroadcastInfoState.Stopped].includes(recordingState)) {
// Nothing to do in these cases. Resume will use the selected device.
return;
}
// pause and resume to switch the input device
await recording.pause();
await recording.resume();
};
const [showDeviceSelect, setShowDeviceSelect] = (0, _react.useState)(false);
const toggleControl = recordingState === _.VoiceBroadcastInfoState.Paused ? /*#__PURE__*/_react.default.createElement(_.VoiceBroadcastControl, {
className: "mx_VoiceBroadcastControl-recording",
onClick: toggleRecording,
icon: /*#__PURE__*/_react.default.createElement(_record10px.Icon, {
className: "mx_Icon mx_Icon_12"
}),
label: (0, _languageHandler._t)("voice_broadcast|resume")
}) : /*#__PURE__*/_react.default.createElement(_.VoiceBroadcastControl, {
onClick: toggleRecording,
icon: /*#__PURE__*/_react.default.createElement(_pauseSolid.default, {
className: "mx_Icon mx_Icon_12"
}),
label: (0, _languageHandler._t)("voice_broadcast|pause")
});
const controls = recordingState === "connection_error" ? /*#__PURE__*/_react.default.createElement(_.VoiceBroadcastRecordingConnectionError, null) : /*#__PURE__*/_react.default.createElement("div", {
className: "mx_VoiceBroadcastBody_controls"
}, toggleControl, /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
onClick: () => setShowDeviceSelect(true),
title: (0, _languageHandler._t)("voip|change_input_device")
}, /*#__PURE__*/_react.default.createElement(_micOnSolid.default, {
className: "mx_Icon mx_Icon_16 mx_Icon_alert"
})), /*#__PURE__*/_react.default.createElement(_.VoiceBroadcastControl, {
icon: /*#__PURE__*/_react.default.createElement(_stop.Icon, {
className: "mx_Icon mx_Icon_16"
}),
label: "Stop Recording",
onClick: stopRecording
}));
return /*#__PURE__*/_react.default.createElement("div", {
className: "mx_VoiceBroadcastBody mx_VoiceBroadcastBody--pip",
ref: pipRef
}, /*#__PURE__*/_react.default.createElement(_VoiceBroadcastHeader.VoiceBroadcastHeader, {
linkToRoom: true,
live: live ? "live" : "grey",
room: room,
timeLeft: timeLeft
}), /*#__PURE__*/_react.default.createElement("hr", {
className: "mx_VoiceBroadcastBody_divider"
}), controls, showDeviceSelect && /*#__PURE__*/_react.default.createElement(_DevicesContextMenu.DevicesContextMenu, {
containerRef: pipRef,
currentDevice: currentDevice,
devices: devices,
onDeviceSelect: onDeviceSelect
}));
};
exports.VoiceBroadcastRecordingPip = VoiceBroadcastRecordingPip;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcGF1c2VTb2xpZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbWljT25Tb2xpZCIsIl8iLCJfdXNlVm9pY2VCcm9hZGNhc3RSZWNvcmRpbmciLCJfVm9pY2VCcm9hZGNhc3RIZWFkZXIiLCJfc3RvcCIsIl9yZWNvcmQxMHB4IiwiX2xhbmd1YWdlSGFuZGxlciIsIl91c2VBdWRpb0RldmljZVNlbGVjdGlvbiIsIl9EZXZpY2VzQ29udGV4dE1lbnUiLCJfQWNjZXNzaWJsZUJ1dHRvbiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nUGlwIiwicmVjb3JkaW5nIiwicGlwUmVmIiwidXNlUmVmIiwibGl2ZSIsInRpbWVMZWZ0IiwicmVjb3JkaW5nU3RhdGUiLCJyb29tIiwic3RvcFJlY29yZGluZyIsInRvZ2dsZVJlY29yZGluZyIsInVzZVZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nIiwiY3VycmVudERldmljZSIsImRldmljZXMiLCJzZXREZXZpY2UiLCJ1c2VBdWRpb0RldmljZVNlbGVjdGlvbiIsIm9uRGV2aWNlU2VsZWN0IiwiZGV2aWNlIiwic2V0U2hvd0RldmljZVNlbGVjdCIsImRldmljZUlkIiwiVm9pY2VCcm9hZGNhc3RJbmZvU3RhdGUiLCJQYXVzZWQiLCJTdG9wcGVkIiwiaW5jbHVkZXMiLCJwYXVzZSIsInJlc3VtZSIsInNob3dEZXZpY2VTZWxlY3QiLCJ1c2VTdGF0ZSIsInRvZ2dsZUNvbnRyb2wiLCJjcmVhdGVFbGVtZW50IiwiVm9pY2VCcm9hZGNhc3RDb250cm9sIiwiY2xhc3NOYW1lIiwib25DbGljayIsImljb24iLCJJY29uIiwibGFiZWwiLCJfdCIsImNvbnRyb2xzIiwiVm9pY2VCcm9hZGNhc3RSZWNvcmRpbmdDb25uZWN0aW9uRXJyb3IiLCJ0aXRsZSIsInJlZiIsIlZvaWNlQnJvYWRjYXN0SGVhZGVyIiwibGlua1RvUm9vbSIsIkRldmljZXNDb250ZXh0TWVudSIsImNvbnRhaW5lclJlZiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdm9pY2UtYnJvYWRjYXN0L2NvbXBvbmVudHMvbW9sZWN1bGVzL1ZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nUGlwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFBhdXNlSWNvbiBmcm9tIFwiQHZlY3Rvci1pbS9jb21wb3VuZC1kZXNpZ24tdG9rZW5zL2Fzc2V0cy93ZWIvaWNvbnMvcGF1c2Utc29saWRcIjtcbmltcG9ydCBNaWNyb3Bob25lSWNvbiBmcm9tIFwiQHZlY3Rvci1pbS9jb21wb3VuZC1kZXNpZ24tdG9rZW5zL2Fzc2V0cy93ZWIvaWNvbnMvbWljLW9uLXNvbGlkXCI7XG5cbmltcG9ydCB7XG4gICAgVm9pY2VCcm9hZGNhc3RDb250cm9sLFxuICAgIFZvaWNlQnJvYWRjYXN0SW5mb1N0YXRlLFxuICAgIFZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nLFxuICAgIFZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nQ29ubmVjdGlvbkVycm9yLFxuICAgIFZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nU3RhdGUsXG59IGZyb20gXCIuLi8uLlwiO1xuaW1wb3J0IHsgdXNlVm9pY2VCcm9hZGNhc3RSZWNvcmRpbmcgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVm9pY2VCcm9hZGNhc3RSZWNvcmRpbmdcIjtcbmltcG9ydCB7IFZvaWNlQnJvYWRjYXN0SGVhZGVyIH0gZnJvbSBcIi4uL2F0b21zL1ZvaWNlQnJvYWRjYXN0SGVhZGVyXCI7XG5pbXBvcnQgeyBJY29uIGFzIFN0b3BJY29uIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3Jlcy9pbWcvY29tcG91bmQvc3RvcC0xNi5zdmdcIjtcbmltcG9ydCB7IEljb24gYXMgUmVjb3JkSWNvbiB9IGZyb20gXCIuLi8uLi8uLi8uLi9yZXMvaW1nL2NvbXBvdW5kL3JlY29yZC0xMHB4LnN2Z1wiO1xuaW1wb3J0IHsgX3QgfSBmcm9tIFwiLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgeyB1c2VBdWRpb0RldmljZVNlbGVjdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9ob29rcy91c2VBdWRpb0RldmljZVNlbGVjdGlvblwiO1xuaW1wb3J0IHsgRGV2aWNlc0NvbnRleHRNZW51IH0gZnJvbSBcIi4uLy4uLy4uL2NvbXBvbmVudHMvdmlld3MvYXVkaW9fbWVzc2FnZXMvRGV2aWNlc0NvbnRleHRNZW51XCI7XG5pbXBvcnQgQWNjZXNzaWJsZUJ1dHRvbiBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy92aWV3cy9lbGVtZW50cy9BY2Nlc3NpYmxlQnV0dG9uXCI7XG5cbmludGVyZmFjZSBWb2ljZUJyb2FkY2FzdFJlY29yZGluZ1BpcFByb3BzIHtcbiAgICByZWNvcmRpbmc6IFZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nO1xufVxuXG5leHBvcnQgY29uc3QgVm9pY2VCcm9hZGNhc3RSZWNvcmRpbmdQaXA6IFJlYWN0LkZDPFZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nUGlwUHJvcHM+ID0gKHsgcmVjb3JkaW5nIH0pID0+IHtcbiAgICBjb25zdCBwaXBSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCB7IGxpdmUsIHRpbWVMZWZ0LCByZWNvcmRpbmdTdGF0ZSwgcm9vbSwgc3RvcFJlY29yZGluZywgdG9nZ2xlUmVjb3JkaW5nIH0gPVxuICAgICAgICB1c2VWb2ljZUJyb2FkY2FzdFJlY29yZGluZyhyZWNvcmRpbmcpO1xuICAgIGNvbnN0IHsgY3VycmVudERldmljZSwgZGV2aWNlcywgc2V0RGV2aWNlIH0gPSB1c2VBdWRpb0RldmljZVNlbGVjdGlvbigpO1xuXG4gICAgY29uc3Qgb25EZXZpY2VTZWxlY3QgPSBhc3luYyAoZGV2aWNlOiBNZWRpYURldmljZUluZm8pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgc2V0U2hvd0RldmljZVNlbGVjdChmYWxzZSk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnREZXZpY2U/LmRldmljZUlkID09PSBkZXZpY2UuZGV2aWNlSWQpIHtcbiAgICAgICAgICAgIC8vIGRldmljZSB1bmNoYW5nZWRcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldERldmljZShkZXZpY2UpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICBbVm9pY2VCcm9hZGNhc3RJbmZvU3RhdGUuUGF1c2VkLCBWb2ljZUJyb2FkY2FzdEluZm9TdGF0ZS5TdG9wcGVkXSBhcyBWb2ljZUJyb2FkY2FzdFJlY29yZGluZ1N0YXRlW11cbiAgICAgICAgICAgICkuaW5jbHVkZXMocmVjb3JkaW5nU3RhdGUpXG4gICAgICAgICkge1xuICAgICAgICAgICAgLy8gTm90aGluZyB0byBkbyBpbiB0aGVzZSBjYXNlcy4gUmVzdW1lIHdpbGwgdXNlIHRoZSBzZWxlY3RlZCBkZXZpY2UuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBwYXVzZSBhbmQgcmVzdW1lIHRvIHN3aXRjaCB0aGUgaW5wdXQgZGV2aWNlXG4gICAgICAgIGF3YWl0IHJlY29yZGluZy5wYXVzZSgpO1xuICAgICAgICBhd2FpdCByZWNvcmRpbmcucmVzdW1lKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IFtzaG93RGV2aWNlU2VsZWN0LCBzZXRTaG93RGV2aWNlU2VsZWN0XSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIGNvbnN0IHRvZ2dsZUNvbnRyb2wgPVxuICAgICAgICByZWNvcmRpbmdTdGF0ZSA9PT0gVm9pY2VCcm9hZGNhc3RJbmZvU3RhdGUuUGF1c2VkID8gKFxuICAgICAgICAgICAgPFZvaWNlQnJvYWRjYXN0Q29udHJvbFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm14X1ZvaWNlQnJvYWRjYXN0Q29udHJvbC1yZWNvcmRpbmdcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RvZ2dsZVJlY29yZGluZ31cbiAgICAgICAgICAgICAgICBpY29uPXs8UmVjb3JkSWNvbiBjbGFzc05hbWU9XCJteF9JY29uIG14X0ljb25fMTJcIiAvPn1cbiAgICAgICAgICAgICAgICBsYWJlbD17X3QoXCJ2b2ljZV9icm9hZGNhc3R8cmVzdW1lXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxWb2ljZUJyb2FkY2FzdENvbnRyb2xcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0b2dnbGVSZWNvcmRpbmd9XG4gICAgICAgICAgICAgICAgaWNvbj17PFBhdXNlSWNvbiBjbGFzc05hbWU9XCJteF9JY29uIG14X0ljb25fMTJcIiAvPn1cbiAgICAgICAgICAgICAgICBsYWJlbD17X3QoXCJ2b2ljZV9icm9hZGNhc3R8cGF1c2VcIil9XG4gICAgICAgICAgICAvPlxuICAgICAgICApO1xuXG4gICAgY29uc3QgY29udHJvbHMgPVxuICAgICAgICByZWNvcmRpbmdTdGF0ZSA9PT0gXCJjb25uZWN0aW9uX2Vycm9yXCIgPyAoXG4gICAgICAgICAgICA8Vm9pY2VCcm9hZGNhc3RSZWNvcmRpbmdDb25uZWN0aW9uRXJyb3IgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfVm9pY2VCcm9hZGNhc3RCb2R5X2NvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAge3RvZ2dsZUNvbnRyb2x9XG4gICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCk6IHZvaWQgPT4gc2V0U2hvd0RldmljZVNlbGVjdCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e190KFwidm9pcHxjaGFuZ2VfaW5wdXRfZGV2aWNlXCIpfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPE1pY3JvcGhvbmVJY29uIGNsYXNzTmFtZT1cIm14X0ljb24gbXhfSWNvbl8xNiBteF9JY29uX2FsZXJ0XCIgLz5cbiAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICAgICAgPFZvaWNlQnJvYWRjYXN0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICBpY29uPXs8U3RvcEljb24gY2xhc3NOYW1lPVwibXhfSWNvbiBteF9JY29uXzE2XCIgLz59XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiU3RvcCBSZWNvcmRpbmdcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtzdG9wUmVjb3JkaW5nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfVm9pY2VCcm9hZGNhc3RCb2R5IG14X1ZvaWNlQnJvYWRjYXN0Qm9keS0tcGlwXCIgcmVmPXtwaXBSZWZ9PlxuICAgICAgICAgICAgPFZvaWNlQnJvYWRjYXN0SGVhZGVyIGxpbmtUb1Jvb209e3RydWV9IGxpdmU9e2xpdmUgPyBcImxpdmVcIiA6IFwiZ3JleVwifSByb29tPXtyb29tfSB0aW1lTGVmdD17dGltZUxlZnR9IC8+XG4gICAgICAgICAgICA8aHIgY2xhc3NOYW1lPVwibXhfVm9pY2VCcm9hZGNhc3RCb2R5X2RpdmlkZXJcIiAvPlxuICAgICAgICAgICAge2NvbnRyb2xzfVxuICAgICAgICAgICAge3Nob3dEZXZpY2VTZWxlY3QgJiYgKFxuICAgICAgICAgICAgICAgIDxEZXZpY2VzQ29udGV4dE1lbnVcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUmVmPXtwaXBSZWZ9XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnREZXZpY2U9e2N1cnJlbnREZXZpY2V9XG4gICAgICAgICAgICAgICAgICAgIGRldmljZXM9e2RldmljZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uRGV2aWNlU2VsZWN0PXtvbkRldmljZVNlbGVjdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSSxDQUFBLEdBQUFKLE9BQUE7QUFPQSxJQUFBSywyQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0scUJBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLEtBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFdBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLGdCQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSx3QkFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsbUJBQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLGlCQUFBLEdBQUFWLHNCQUFBLENBQUFGLE9BQUE7QUFBbUYsU0FBQWEseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWYsd0JBQUFlLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxXQUFBSyxPQUFBLEVBQUFMLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxDQUFBSCxPQUFBLEdBQUFMLENBQUEsRUFBQUcsQ0FBQSxJQUFBQSxDQUFBLENBQUFlLEdBQUEsQ0FBQWxCLENBQUEsRUFBQVEsQ0FBQSxHQUFBQSxDQUFBO0FBMUJuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUEwQk8sTUFBTVcsMEJBQXFFLEdBQUdBLENBQUM7RUFBRUM7QUFBVSxDQUFDLEtBQUs7RUFDcEcsTUFBTUMsTUFBTSxHQUFHLElBQUFDLGFBQU0sRUFBd0IsSUFBSSxDQUFDO0VBQ2xELE1BQU07SUFBRUMsSUFBSTtJQUFFQyxRQUFRO0lBQUVDLGNBQWM7SUFBRUMsSUFBSTtJQUFFQyxhQUFhO0lBQUVDO0VBQWdCLENBQUMsR0FDMUUsSUFBQUMsc0RBQTBCLEVBQUNULFNBQVMsQ0FBQztFQUN6QyxNQUFNO0lBQUVVLGFBQWE7SUFBRUMsT0FBTztJQUFFQztFQUFVLENBQUMsR0FBRyxJQUFBQyxnREFBdUIsRUFBQyxDQUFDO0VBRXZFLE1BQU1DLGNBQWMsR0FBRyxNQUFPQyxNQUF1QixJQUFvQjtJQUNyRUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDO0lBRTFCLElBQUlOLGFBQWEsRUFBRU8sUUFBUSxLQUFLRixNQUFNLENBQUNFLFFBQVEsRUFBRTtNQUM3QztNQUNBO0lBQ0o7SUFFQUwsU0FBUyxDQUFDRyxNQUFNLENBQUM7SUFFakIsSUFFUSxDQUFDRyx5QkFBdUIsQ0FBQ0MsTUFBTSxFQUFFRCx5QkFBdUIsQ0FBQ0UsT0FBTyxDQUFDLENBQ25FQyxRQUFRLENBQUNoQixjQUFjLENBQUMsRUFDNUI7TUFDRTtNQUNBO0lBQ0o7O0lBRUE7SUFDQSxNQUFNTCxTQUFTLENBQUNzQixLQUFLLENBQUMsQ0FBQztJQUN2QixNQUFNdEIsU0FBUyxDQUFDdUIsTUFBTSxDQUFDLENBQUM7RUFDNUIsQ0FBQztFQUVELE1BQU0sQ0FBQ0MsZ0JBQWdCLEVBQUVSLG1CQUFtQixDQUFDLEdBQUcsSUFBQVMsZUFBUSxFQUFVLEtBQUssQ0FBQztFQUV4RSxNQUFNQyxhQUFhLEdBQ2ZyQixjQUFjLEtBQUthLHlCQUF1QixDQUFDQyxNQUFNLGdCQUM3Q3ZELE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQTBDLGFBQUEsQ0FBQ3pELENBQUEsQ0FBQTBELHFCQUFxQjtJQUNsQkMsU0FBUyxFQUFDLG9DQUFvQztJQUM5Q0MsT0FBTyxFQUFFdEIsZUFBZ0I7SUFDekJ1QixJQUFJLGVBQUVuRSxNQUFBLENBQUFxQixPQUFBLENBQUEwQyxhQUFBLENBQUNyRCxXQUFBLENBQUEwRCxJQUFVO01BQUNILFNBQVMsRUFBQztJQUFvQixDQUFFLENBQUU7SUFDcERJLEtBQUssRUFBRSxJQUFBQyxtQkFBRSxFQUFDLHdCQUF3QjtFQUFFLENBQ3ZDLENBQUMsZ0JBRUZ0RSxNQUFBLENBQUFxQixPQUFBLENBQUEwQyxhQUFBLENBQUN6RCxDQUFBLENBQUEwRCxxQkFBcUI7SUFDbEJFLE9BQU8sRUFBRXRCLGVBQWdCO0lBQ3pCdUIsSUFBSSxlQUFFbkUsTUFBQSxDQUFBcUIsT0FBQSxDQUFBMEMsYUFBQSxDQUFDNUQsV0FBQSxDQUFBa0IsT0FBUztNQUFDNEMsU0FBUyxFQUFDO0lBQW9CLENBQUUsQ0FBRTtJQUNuREksS0FBSyxFQUFFLElBQUFDLG1CQUFFLEVBQUMsdUJBQXVCO0VBQUUsQ0FDdEMsQ0FDSjtFQUVMLE1BQU1DLFFBQVEsR0FDVjlCLGNBQWMsS0FBSyxrQkFBa0IsZ0JBQ2pDekMsTUFBQSxDQUFBcUIsT0FBQSxDQUFBMEMsYUFBQSxDQUFDekQsQ0FBQSxDQUFBa0Usc0NBQXNDLE1BQUUsQ0FBQyxnQkFFMUN4RSxNQUFBLENBQUFxQixPQUFBLENBQUEwQyxhQUFBO0lBQUtFLFNBQVMsRUFBQztFQUFnQyxHQUMxQ0gsYUFBYSxlQUNkOUQsTUFBQSxDQUFBcUIsT0FBQSxDQUFBMEMsYUFBQSxDQUFDakQsaUJBQUEsQ0FBQU8sT0FBZ0I7SUFDYjZDLE9BQU8sRUFBRUEsQ0FBQSxLQUFZZCxtQkFBbUIsQ0FBQyxJQUFJLENBQUU7SUFDL0NxQixLQUFLLEVBQUUsSUFBQUgsbUJBQUUsRUFBQywwQkFBMEI7RUFBRSxnQkFFdEN0RSxNQUFBLENBQUFxQixPQUFBLENBQUEwQyxhQUFBLENBQUMxRCxXQUFBLENBQUFnQixPQUFjO0lBQUM0QyxTQUFTLEVBQUM7RUFBa0MsQ0FBRSxDQUNoRCxDQUFDLGVBQ25CakUsTUFBQSxDQUFBcUIsT0FBQSxDQUFBMEMsYUFBQSxDQUFDekQsQ0FBQSxDQUFBMEQscUJBQXFCO0lBQ2xCRyxJQUFJLGVBQUVuRSxNQUFBLENBQUFxQixPQUFBLENBQUEwQyxhQUFBLENBQUN0RCxLQUFBLENBQUEyRCxJQUFRO01BQUNILFNBQVMsRUFBQztJQUFvQixDQUFFLENBQUU7SUFDbERJLEtBQUssRUFBQyxnQkFBZ0I7SUFDdEJILE9BQU8sRUFBRXZCO0VBQWMsQ0FDMUIsQ0FDQSxDQUNSO0VBRUwsb0JBQ0kzQyxNQUFBLENBQUFxQixPQUFBLENBQUEwQyxhQUFBO0lBQUtFLFNBQVMsRUFBQyxrREFBa0Q7SUFBQ1MsR0FBRyxFQUFFckM7RUFBTyxnQkFDMUVyQyxNQUFBLENBQUFxQixPQUFBLENBQUEwQyxhQUFBLENBQUN2RCxxQkFBQSxDQUFBbUUsb0JBQW9CO0lBQUNDLFVBQVUsRUFBRSxJQUFLO0lBQUNyQyxJQUFJLEVBQUVBLElBQUksR0FBRyxNQUFNLEdBQUcsTUFBTztJQUFDRyxJQUFJLEVBQUVBLElBQUs7SUFBQ0YsUUFBUSxFQUFFQTtFQUFTLENBQUUsQ0FBQyxlQUN4R3hDLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQTBDLGFBQUE7SUFBSUUsU0FBUyxFQUFDO0VBQStCLENBQUUsQ0FBQyxFQUMvQ00sUUFBUSxFQUNSWCxnQkFBZ0IsaUJBQ2I1RCxNQUFBLENBQUFxQixPQUFBLENBQUEwQyxhQUFBLENBQUNsRCxtQkFBQSxDQUFBZ0Usa0JBQWtCO0lBQ2ZDLFlBQVksRUFBRXpDLE1BQU87SUFDckJTLGFBQWEsRUFBRUEsYUFBYztJQUM3QkMsT0FBTyxFQUFFQSxPQUFRO0lBQ2pCRyxjQUFjLEVBQUVBO0VBQWUsQ0FDbEMsQ0FFSixDQUFDO0FBRWQsQ0FBQztBQUFDNkIsT0FBQSxDQUFBNUMsMEJBQUEsR0FBQUEsMEJBQUEiLCJpZ25vcmVMaXN0IjpbXX0=