matrix-react-sdk
Version:
SDK for matrix.org using React
119 lines (116 loc) • 17.4 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
var _matrix = require("matrix-js-sdk/src/matrix");
var _Media = require("../../../customisations/Media");
var _languageHandler = require("../../../languageHandler");
var _FormattingUtils = require("../../../utils/FormattingUtils");
var _dispatcher = _interopRequireDefault(require("../../../dispatcher/dispatcher"));
var _ReactionsRowButtonTooltip = _interopRequireDefault(require("./ReactionsRowButtonTooltip"));
var _AccessibleButton = _interopRequireDefault(require("../elements/AccessibleButton"));
var _MatrixClientContext = _interopRequireDefault(require("../../../contexts/MatrixClientContext"));
var _ReactionsRow = require("./ReactionsRow");
/*
Copyright 2024 New Vector Ltd.
Copyright 2019-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.
*/
class ReactionsRowButton extends _react.default.PureComponent {
constructor(...args) {
super(...args);
(0, _defineProperty2.default)(this, "onClick", () => {
const {
mxEvent,
myReactionEvent,
content
} = this.props;
if (myReactionEvent) {
this.context.redactEvent(mxEvent.getRoomId(), myReactionEvent.getId());
} else {
this.context.sendEvent(mxEvent.getRoomId(), _matrix.EventType.Reaction, {
"m.relates_to": {
rel_type: _matrix.RelationType.Annotation,
event_id: mxEvent.getId(),
key: content
}
});
_dispatcher.default.dispatch({
action: "message_sent"
});
}
});
}
render() {
const {
mxEvent,
content,
count,
reactionEvents,
myReactionEvent
} = this.props;
const classes = (0, _classnames.default)({
mx_ReactionsRowButton: true,
mx_ReactionsRowButton_selected: !!myReactionEvent
});
const room = this.context.getRoom(mxEvent.getRoomId());
let label;
let customReactionName;
if (room) {
const senders = [];
for (const reactionEvent of reactionEvents) {
const member = room.getMember(reactionEvent.getSender());
senders.push(member?.name || reactionEvent.getSender());
customReactionName = this.props.customReactionImagesEnabled && _ReactionsRow.REACTION_SHORTCODE_KEY.findIn(reactionEvent.getContent()) || undefined;
}
const reactors = (0, _FormattingUtils.formatList)(senders, 6);
if (content) {
label = (0, _languageHandler._t)("timeline|reactions|label", {
reactors,
content: customReactionName || content
});
} else {
label = reactors;
}
}
let reactionContent = /*#__PURE__*/_react.default.createElement("span", {
className: "mx_ReactionsRowButton_content",
"aria-hidden": "true"
}, content);
if (this.props.customReactionImagesEnabled && content.startsWith("mxc://")) {
const imageSrc = (0, _Media.mediaFromMxc)(content).srcHttp;
if (imageSrc) {
reactionContent = /*#__PURE__*/_react.default.createElement("img", {
className: "mx_ReactionsRowButton_content",
alt: customReactionName || (0, _languageHandler._t)("timeline|reactions|custom_reaction_fallback_label"),
src: imageSrc,
width: "16",
height: "16"
});
}
}
return /*#__PURE__*/_react.default.createElement(_ReactionsRowButtonTooltip.default, {
mxEvent: this.props.mxEvent,
content: content,
reactionEvents: reactionEvents,
customReactionImagesEnabled: this.props.customReactionImagesEnabled
}, /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
className: classes,
"aria-label": label,
onClick: this.onClick,
disabled: this.props.disabled
}, reactionContent, /*#__PURE__*/_react.default.createElement("span", {
className: "mx_ReactionsRowButton_count",
"aria-hidden": "true"
}, count)));
}
}
exports.default = ReactionsRowButton;
(0, _defineProperty2.default)(ReactionsRowButton, "contextType", _MatrixClientContext.default);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jbGFzc25hbWVzIiwiX21hdHJpeCIsIl9NZWRpYSIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfRm9ybWF0dGluZ1V0aWxzIiwiX2Rpc3BhdGNoZXIiLCJfUmVhY3Rpb25zUm93QnV0dG9uVG9vbHRpcCIsIl9BY2Nlc3NpYmxlQnV0dG9uIiwiX01hdHJpeENsaWVudENvbnRleHQiLCJfUmVhY3Rpb25zUm93IiwiUmVhY3Rpb25zUm93QnV0dG9uIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJhcmdzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJteEV2ZW50IiwibXlSZWFjdGlvbkV2ZW50IiwiY29udGVudCIsInByb3BzIiwiY29udGV4dCIsInJlZGFjdEV2ZW50IiwiZ2V0Um9vbUlkIiwiZ2V0SWQiLCJzZW5kRXZlbnQiLCJFdmVudFR5cGUiLCJSZWFjdGlvbiIsInJlbF90eXBlIiwiUmVsYXRpb25UeXBlIiwiQW5ub3RhdGlvbiIsImV2ZW50X2lkIiwia2V5IiwiZGlzIiwiZGlzcGF0Y2giLCJhY3Rpb24iLCJyZW5kZXIiLCJjb3VudCIsInJlYWN0aW9uRXZlbnRzIiwiY2xhc3NlcyIsImNsYXNzTmFtZXMiLCJteF9SZWFjdGlvbnNSb3dCdXR0b24iLCJteF9SZWFjdGlvbnNSb3dCdXR0b25fc2VsZWN0ZWQiLCJyb29tIiwiZ2V0Um9vbSIsImxhYmVsIiwiY3VzdG9tUmVhY3Rpb25OYW1lIiwic2VuZGVycyIsInJlYWN0aW9uRXZlbnQiLCJtZW1iZXIiLCJnZXRNZW1iZXIiLCJnZXRTZW5kZXIiLCJwdXNoIiwibmFtZSIsImN1c3RvbVJlYWN0aW9uSW1hZ2VzRW5hYmxlZCIsIlJFQUNUSU9OX1NIT1JUQ09ERV9LRVkiLCJmaW5kSW4iLCJnZXRDb250ZW50IiwidW5kZWZpbmVkIiwicmVhY3RvcnMiLCJmb3JtYXRMaXN0IiwiX3QiLCJyZWFjdGlvbkNvbnRlbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3RhcnRzV2l0aCIsImltYWdlU3JjIiwibWVkaWFGcm9tTXhjIiwic3JjSHR0cCIsImFsdCIsInNyYyIsIndpZHRoIiwiaGVpZ2h0Iiwib25DbGljayIsImRpc2FibGVkIiwiZXhwb3J0cyIsIk1hdHJpeENsaWVudENvbnRleHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9tZXNzYWdlcy9SZWFjdGlvbnNSb3dCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDE5LTIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcbmltcG9ydCB7IEV2ZW50VHlwZSwgTWF0cml4RXZlbnQsIFJlbGF0aW9uVHlwZSB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcblxuaW1wb3J0IHsgbWVkaWFGcm9tTXhjIH0gZnJvbSBcIi4uLy4uLy4uL2N1c3RvbWlzYXRpb25zL01lZGlhXCI7XG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCB7IGZvcm1hdExpc3QgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvRm9ybWF0dGluZ1V0aWxzXCI7XG5pbXBvcnQgZGlzIGZyb20gXCIuLi8uLi8uLi9kaXNwYXRjaGVyL2Rpc3BhdGNoZXJcIjtcbmltcG9ydCBSZWFjdGlvbnNSb3dCdXR0b25Ub29sdGlwIGZyb20gXCIuL1JlYWN0aW9uc1Jvd0J1dHRvblRvb2x0aXBcIjtcbmltcG9ydCBBY2Nlc3NpYmxlQnV0dG9uIGZyb20gXCIuLi9lbGVtZW50cy9BY2Nlc3NpYmxlQnV0dG9uXCI7XG5pbXBvcnQgTWF0cml4Q2xpZW50Q29udGV4dCBmcm9tIFwiLi4vLi4vLi4vY29udGV4dHMvTWF0cml4Q2xpZW50Q29udGV4dFwiO1xuaW1wb3J0IHsgUkVBQ1RJT05fU0hPUlRDT0RFX0tFWSB9IGZyb20gXCIuL1JlYWN0aW9uc1Jvd1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgLy8gVGhlIGV2ZW50IHdlJ3JlIGRpc3BsYXlpbmcgcmVhY3Rpb25zIGZvclxuICAgIG14RXZlbnQ6IE1hdHJpeEV2ZW50O1xuICAgIC8vIFRoZSByZWFjdGlvbiBjb250ZW50IC8ga2V5IC8gZW1vamlcbiAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgLy8gVGhlIGNvdW50IG9mIHZvdGVzIGZvciB0aGlzIGtleVxuICAgIGNvdW50OiBudW1iZXI7XG4gICAgLy8gQSBsaXN0IG9mIE1hdHJpeCByZWFjdGlvbiBldmVudHMgZm9yIHRoaXMga2V5XG4gICAgcmVhY3Rpb25FdmVudHM6IE1hdHJpeEV2ZW50W107XG4gICAgLy8gQSBwb3NzaWJsZSBNYXRyaXggZXZlbnQgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgdm90ZWQgZm9yIHRoaXMgdHlwZVxuICAgIG15UmVhY3Rpb25FdmVudD86IE1hdHJpeEV2ZW50O1xuICAgIC8vIFdoZXRoZXIgdG8gcHJldmVudCBxdWljay1yZWFjdGlvbnMgYnkgY2xpY2tpbmcgb24gdGhpcyByZWFjdGlvblxuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICAvLyBXaGV0aGVyIHRvIHJlbmRlciBjdXN0b20gaW1hZ2UgcmVhY3Rpb25zXG4gICAgY3VzdG9tUmVhY3Rpb25JbWFnZXNFbmFibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhY3Rpb25zUm93QnV0dG9uIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxJUHJvcHM+IHtcbiAgICBwdWJsaWMgc3RhdGljIGNvbnRleHRUeXBlID0gTWF0cml4Q2xpZW50Q29udGV4dDtcbiAgICBwdWJsaWMgZGVjbGFyZSBjb250ZXh0OiBSZWFjdC5Db250ZXh0VHlwZTx0eXBlb2YgTWF0cml4Q2xpZW50Q29udGV4dD47XG5cbiAgICBwdWJsaWMgb25DbGljayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgeyBteEV2ZW50LCBteVJlYWN0aW9uRXZlbnQsIGNvbnRlbnQgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChteVJlYWN0aW9uRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5yZWRhY3RFdmVudChteEV2ZW50LmdldFJvb21JZCgpISwgbXlSZWFjdGlvbkV2ZW50LmdldElkKCkhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5zZW5kRXZlbnQobXhFdmVudC5nZXRSb29tSWQoKSEsIEV2ZW50VHlwZS5SZWFjdGlvbiwge1xuICAgICAgICAgICAgICAgIFwibS5yZWxhdGVzX3RvXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgcmVsX3R5cGU6IFJlbGF0aW9uVHlwZS5Bbm5vdGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICBldmVudF9pZDogbXhFdmVudC5nZXRJZCgpISxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb250ZW50LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRpcy5kaXNwYXRjaCh7IGFjdGlvbjogXCJtZXNzYWdlX3NlbnRcIiB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIGNvbnN0IHsgbXhFdmVudCwgY29udGVudCwgY291bnQsIHJlYWN0aW9uRXZlbnRzLCBteVJlYWN0aW9uRXZlbnQgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzTmFtZXMoe1xuICAgICAgICAgICAgbXhfUmVhY3Rpb25zUm93QnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgbXhfUmVhY3Rpb25zUm93QnV0dG9uX3NlbGVjdGVkOiAhIW15UmVhY3Rpb25FdmVudCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgcm9vbSA9IHRoaXMuY29udGV4dC5nZXRSb29tKG14RXZlbnQuZ2V0Um9vbUlkKCkpO1xuICAgICAgICBsZXQgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IGN1c3RvbVJlYWN0aW9uTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAocm9vbSkge1xuICAgICAgICAgICAgY29uc3Qgc2VuZGVyczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVhY3Rpb25FdmVudCBvZiByZWFjdGlvbkV2ZW50cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lbWJlciA9IHJvb20uZ2V0TWVtYmVyKHJlYWN0aW9uRXZlbnQuZ2V0U2VuZGVyKCkhKTtcbiAgICAgICAgICAgICAgICBzZW5kZXJzLnB1c2gobWVtYmVyPy5uYW1lIHx8IHJlYWN0aW9uRXZlbnQuZ2V0U2VuZGVyKCkhKTtcbiAgICAgICAgICAgICAgICBjdXN0b21SZWFjdGlvbk5hbWUgPVxuICAgICAgICAgICAgICAgICAgICAodGhpcy5wcm9wcy5jdXN0b21SZWFjdGlvbkltYWdlc0VuYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIFJFQUNUSU9OX1NIT1JUQ09ERV9LRVkuZmluZEluKHJlYWN0aW9uRXZlbnQuZ2V0Q29udGVudCgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZWFjdG9ycyA9IGZvcm1hdExpc3Qoc2VuZGVycywgNik7XG4gICAgICAgICAgICBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgICAgIGxhYmVsID0gX3QoXCJ0aW1lbGluZXxyZWFjdGlvbnN8bGFiZWxcIiwge1xuICAgICAgICAgICAgICAgICAgICByZWFjdG9ycyxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogY3VzdG9tUmVhY3Rpb25OYW1lIHx8IGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxhYmVsID0gcmVhY3RvcnM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVhY3Rpb25Db250ZW50ID0gKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXhfUmVhY3Rpb25zUm93QnV0dG9uX2NvbnRlbnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY3VzdG9tUmVhY3Rpb25JbWFnZXNFbmFibGVkICYmIGNvbnRlbnQuc3RhcnRzV2l0aChcIm14YzovL1wiKSkge1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VTcmMgPSBtZWRpYUZyb21NeGMoY29udGVudCkuc3JjSHR0cDtcbiAgICAgICAgICAgIGlmIChpbWFnZVNyYykge1xuICAgICAgICAgICAgICAgIHJlYWN0aW9uQ29udGVudCA9IChcbiAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfUmVhY3Rpb25zUm93QnV0dG9uX2NvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0PXtjdXN0b21SZWFjdGlvbk5hbWUgfHwgX3QoXCJ0aW1lbGluZXxyZWFjdGlvbnN8Y3VzdG9tX3JlYWN0aW9uX2ZhbGxiYWNrX2xhYmVsXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtpbWFnZVNyY31cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFJlYWN0aW9uc1Jvd0J1dHRvblRvb2x0aXBcbiAgICAgICAgICAgICAgICBteEV2ZW50PXt0aGlzLnByb3BzLm14RXZlbnR9XG4gICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cbiAgICAgICAgICAgICAgICByZWFjdGlvbkV2ZW50cz17cmVhY3Rpb25FdmVudHN9XG4gICAgICAgICAgICAgICAgY3VzdG9tUmVhY3Rpb25JbWFnZXNFbmFibGVkPXt0aGlzLnByb3BzLmN1c3RvbVJlYWN0aW9uSW1hZ2VzRW5hYmxlZH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXN9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnByb3BzLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3JlYWN0aW9uQ29udGVudH1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXhfUmVhY3Rpb25zUm93QnV0dG9uX2NvdW50XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y291bnR9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICA8L1JlYWN0aW9uc1Jvd0J1dHRvblRvb2x0aXA+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGdCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxnQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sV0FBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sMEJBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLGlCQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxvQkFBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsYUFBQSxHQUFBVixPQUFBO0FBbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQWdDZSxNQUFNVyxrQkFBa0IsU0FBU0MsY0FBSyxDQUFDQyxhQUFhLENBQVM7RUFBQUMsWUFBQSxHQUFBQyxJQUFBO0lBQUEsU0FBQUEsSUFBQTtJQUFBLElBQUFDLGdCQUFBLENBQUFDLE9BQUEsbUJBSXZELE1BQVk7TUFDekIsTUFBTTtRQUFFQyxPQUFPO1FBQUVDLGVBQWU7UUFBRUM7TUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDQyxLQUFLO01BQ3hELElBQUlGLGVBQWUsRUFBRTtRQUNqQixJQUFJLENBQUNHLE9BQU8sQ0FBQ0MsV0FBVyxDQUFDTCxPQUFPLENBQUNNLFNBQVMsQ0FBQyxDQUFDLEVBQUdMLGVBQWUsQ0FBQ00sS0FBSyxDQUFDLENBQUUsQ0FBQztNQUM1RSxDQUFDLE1BQU07UUFDSCxJQUFJLENBQUNILE9BQU8sQ0FBQ0ksU0FB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