genassist-chat-react 1.0.38 → 1.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ChatBubble.d.ts +1 -0
- package/dist/components/ChatBubble.js +4 -4
- package/dist/components/ChatMessage.js +6 -2
- package/dist/components/GenAgentChat.js +153 -28
- package/dist/components/LiveCallControl.d.ts +25 -0
- package/dist/components/LiveCallControl.js +83 -0
- package/dist/components/MarkdownMessage.js +23 -1
- package/dist/genassist-chat.es.js +16915 -0
- package/dist/genassist-chat.umd.js +91 -0
- package/dist/hooks/useAudioRecorder.js +74 -2
- package/dist/hooks/useChat.d.ts +3 -0
- package/dist/hooks/useChat.js +16 -5
- package/dist/hooks/useLiveVoice.d.ts +32 -0
- package/dist/hooks/useLiveVoice.js +292 -0
- package/dist/services/chatService.js +10 -6
- package/dist/styles/genAgentChatStyles.d.ts +2 -0
- package/dist/styles/genAgentChatStyles.js +15 -1
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +1 -1
- package/package.json +2 -2
- package/dist/components/AttachmentPreview.d.ts +0 -8
- package/dist/components/AttachmentPreview.js +0 -77
- package/dist/utils/urlUtil.d.ts +0 -2
- package/dist/utils/urlUtil.js +0 -7
|
@@ -10,9 +10,9 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
-
import { Sparkles, X } from 'lucide-react';
|
|
13
|
+
import { MessageCircle, Sparkles, X } from 'lucide-react';
|
|
14
14
|
export var ChatBubble = function (_a) {
|
|
15
|
-
var showChat = _a.showChat, onClick = _a.onClick, primaryColor = _a.primaryColor, style = _a.style;
|
|
15
|
+
var showChat = _a.showChat, onClick = _a.onClick, primaryColor = _a.primaryColor, style = _a.style, chatBubbleIcon = _a.chatBubbleIcon;
|
|
16
16
|
var defaultStyle = {
|
|
17
17
|
position: 'fixed',
|
|
18
18
|
bottom: '20px',
|
|
@@ -30,6 +30,6 @@ export var ChatBubble = function (_a) {
|
|
|
30
30
|
zIndex: 40,
|
|
31
31
|
};
|
|
32
32
|
var chatBubbleStyle = __assign(__assign({}, defaultStyle), style);
|
|
33
|
-
return (_jsx("div", { style: chatBubbleStyle, onClick: onClick, children: showChat ? _jsx(X, { size: 24 }) : _jsx(Sparkles, { size: 24 }) }));
|
|
33
|
+
return (_jsx("div", { style: chatBubbleStyle, onClick: onClick, children: showChat ? _jsx(X, { size: 24 }) : chatBubbleIcon === 'message' ? _jsx(MessageCircle, { size: 30 }) : chatBubbleIcon === 'x' ? _jsx(X, { size: 24 }) : _jsx(Sparkles, { size: 24 }) }));
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhdEJ1YmJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0NoYXRCdWJibGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQVUxRCxNQUFNLENBQUMsSUFBTSxVQUFVLEdBQThCLFVBQUMsRUFNckQ7UUFMQyxRQUFRLGNBQUEsRUFDUixPQUFPLGFBQUEsRUFDUCxZQUFZLGtCQUFBLEVBQ1osS0FBSyxXQUFBLEVBQ0wsY0FBYyxvQkFBQTtJQUVkLElBQU0sWUFBWSxHQUF3QjtRQUN4QyxRQUFRLEVBQUUsT0FBTztRQUNqQixNQUFNLEVBQUUsTUFBTTtRQUNkLEtBQUssRUFBRSxNQUFNO1FBQ2IsS0FBSyxFQUFFLE1BQU07UUFDYixNQUFNLEVBQUUsTUFBTTtRQUNkLFlBQVksRUFBRSxLQUFLO1FBQ25CLGVBQWUsRUFBRSxZQUFZO1FBQzdCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE9BQU8sRUFBRSxNQUFNO1FBQ2YsVUFBVSxFQUFFLFFBQVE7UUFDcEIsY0FBYyxFQUFFLFFBQVE7UUFDeEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsU0FBUyxFQUFFLGdDQUFnQztRQUMzQyxNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFFRixJQUFNLGVBQWUseUJBQ2hCLFlBQVksR0FDWixLQUFLLENBQ1QsQ0FBQztJQUVGLE9BQU8sQ0FDTCxjQUFLLEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE9BQU8sWUFDMUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFDLENBQUMsSUFBQyxJQUFJLEVBQUUsRUFBRSxHQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUMsYUFBYSxJQUFDLElBQUksRUFBRSxFQUFFLEdBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBQyxDQUFDLElBQUMsSUFBSSxFQUFFLEVBQUUsR0FBSSxDQUFDLENBQUMsQ0FBQyxLQUFDLFFBQVEsSUFBQyxJQUFJLEVBQUUsRUFBRSxHQUFJLEdBQ3hKLENBQ1AsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBNZXNzYWdlQ2lyY2xlLCBTcGFya2xlcywgWCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5cbmludGVyZmFjZSBDaGF0QnViYmxlUHJvcHMge1xuICBzaG93Q2hhdDogYm9vbGVhbjtcbiAgb25DbGljazogKCkgPT4gdm9pZDtcbiAgcHJpbWFyeUNvbG9yOiBzdHJpbmc7XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgY2hhdEJ1YmJsZUljb24/OiAnbWVzc2FnZScgfCAnc3BhcmtsZXMnIHwgJ3gnO1xufVxuXG5leHBvcnQgY29uc3QgQ2hhdEJ1YmJsZTogUmVhY3QuRkM8Q2hhdEJ1YmJsZVByb3BzPiA9ICh7XG4gIHNob3dDaGF0LFxuICBvbkNsaWNrLFxuICBwcmltYXJ5Q29sb3IsXG4gIHN0eWxlLFxuICBjaGF0QnViYmxlSWNvbixcbn0pID0+IHtcbiAgY29uc3QgZGVmYXVsdFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgIGJvdHRvbTogJzIwcHgnLFxuICAgIHJpZ2h0OiAnMjBweCcsXG4gICAgd2lkdGg6ICc2MHB4JyxcbiAgICBoZWlnaHQ6ICc2MHB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICc1MCUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogcHJpbWFyeUNvbG9yLFxuICAgIGNvbG9yOiAnI2ZmZmZmZicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBib3hTaGFkb3c6ICcwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSknLFxuICAgIHpJbmRleDogNDAsXG4gIH07XG5cbiAgY29uc3QgY2hhdEJ1YmJsZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIC4uLmRlZmF1bHRTdHlsZSxcbiAgICAuLi5zdHlsZSxcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgc3R5bGU9e2NoYXRCdWJibGVTdHlsZX0gb25DbGljaz17b25DbGlja30+XG4gICAgICB7c2hvd0NoYXQgPyA8WCBzaXplPXsyNH0gLz4gOiBjaGF0QnViYmxlSWNvbiA9PT0gJ21lc3NhZ2UnID8gPE1lc3NhZ2VDaXJjbGUgc2l6ZT17MzB9IC8+IDogY2hhdEJ1YmJsZUljb24gPT09ICd4JyA/IDxYIHNpemU9ezI0fSAvPiA6IDxTcGFya2xlcyBzaXplPXsyNH0gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl19
|
|
@@ -32,7 +32,11 @@ export var ChatMessageComponent = function (_a) {
|
|
|
32
32
|
var isWelcomeMessage = !isUser && !isSpecial && isFirstMessage;
|
|
33
33
|
var _f = React.useState(false), isHovered = _f[0], setIsHovered = _f[1];
|
|
34
34
|
var editingFeedback = React.useState(false)[0];
|
|
35
|
-
|
|
35
|
+
// Track the message text directly (don't snapshot on mount): live-voice caption
|
|
36
|
+
// bubbles grow their text as the transcript streams, and a frozen snapshot would
|
|
37
|
+
// pin them to the first chunk. Normal messages have stable text, so this is a
|
|
38
|
+
// no-op for them. (The disabled typewriter below can re-introduce local state.)
|
|
39
|
+
var displayText = message.text;
|
|
36
40
|
var contentBlocks = React.useMemo(function () { return parseInteractiveContentBlocks(displayText, message === null || message === void 0 ? void 0 : message.type); }, [displayText]);
|
|
37
41
|
// Format timestamp with translations
|
|
38
42
|
var timestamp = React.useMemo(function () {
|
|
@@ -272,4 +276,4 @@ export var ChatMessageComponent = function (_a) {
|
|
|
272
276
|
}
|
|
273
277
|
}, children: _jsx(ThumbsDown, { size: 18 }) })] })) }))] }));
|
|
274
278
|
};
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhdE1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DaGF0TWVzc2FnZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFtQy9ELE1BQU0sQ0FBQyxJQUFNLG9CQUFvQixHQUErQixVQUFDLEVBcUJoRTtRQXBCQyxPQUFPLGFBQUEsRUFDUCxLQUFLLFdBQUEsRUFDTCxXQUFXLGlCQUFBLEVBQ1gsc0JBQXNCLEVBQXRCLGNBQWMsbUJBQUcsS0FBSyxLQUFBLEVBQ3RCLHlCQUF5QixFQUF6QixpQkFBaUIsbUJBQUcsS0FBSyxLQUFBLEVBQ3pCLFVBQVUsZ0JBQUEsRUFDVixlQUFlLHFCQUFBLEVBQ0QsZ0JBQWdCLGtCQUFBLEVBQzlCLGVBQWUscUJBQUEsRUFDZixZQUFZLGtCQUFBLEVBQ1oscUJBQXFCLEVBQXJCLGFBQWEsbUJBQUcsS0FBSyxLQUFBLEVBQ3JCLGFBQWEsbUJBQUEs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aUJBQ0UsSUFBSSxFQUFDLFFBQVEsRUFDYixLQUFLLEVBQUUsZUFBZSxFQUN0QixLQUFLLEVBQUUsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEVBQy9CLE9BQU8sRUFBRTtnQ0FDUCx5RUFBeUU7Z0NBQ3pFLElBQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUssT0FBZSxDQUFDLEVBQUUsQ0FBQztnQ0FDeEQsSUFBSSxLQUFLLElBQUksVUFBVSxFQUFFLENBQUM7b0NBQ3hCLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0NBQzNCLENBQUM7cUNBQU0sQ0FBQztvQ0FDTixTQUFTO2dDQUNYLENBQUM7NEJBQ0gsQ0FBQyxZQUVELEtBQUMsVUFBVSxJQUFDLElBQUksRUFBRSxFQUFFLEdBQUksR0FDakIsSUFDUixDQUNKLEdBQ0csQ0FDUCxJQUNHLENBQ1AsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBXZWxjb21lQ2FyZCB9IGZyb20gJy4vV2VsY29tZUNhcmQnO1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIFNjaGVkdWxlSXRlbSwgVHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgVXNlciwgVXNlclgsIEFsZXJ0Q2lyY2xlLCBUaHVtYnNVcCwgVGh1bWJzRG93biwgTWljIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IEF1ZGlvUGxheWVyIH0gZnJvbSAnLi9BdWRpb1BsYXllcic7XG5pbXBvcnQgeyBmb3JtYXRUaW1lc3RhbXAgfSBmcm9tICcuLi91dGlscy90aW1lJztcbmltcG9ydCB7IEludGVyYWN0aXZlQ29udGVudCB9IGZyb20gJy4vSW50ZXJhY3RpdmVDb250ZW50JztcbmltcG9ydCB7IHBhcnNlSW50ZXJhY3RpdmVDb250ZW50QmxvY2tzIH0gZnJvbSAnLi4vdXRpbHMvaW50ZXJhY3RpdmVDb250ZW50JztcbmltcG9ydCB7IGRlZmF1bHRUcmFuc2xhdGlvbnMsIGdldFRyYW5zbGF0aW9uU3RyaW5nLCBtZXJnZVRyYW5zbGF0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2kxOG4nO1xuaW1wb3J0IHsgVXBsb2FkRmlsZVByZXZpZXcgfSBmcm9tICcuL2NvbW1vbi9VcGxvYWRGaWxlUHJldmlldyc7XG5cbmludGVyZmFjZSBDaGF0TWVzc2FnZVByb3BzIHtcbiAgbWVzc2FnZTogQ2hhdE1lc3NhZ2U7XG4gIHRoZW1lPzoge1xuICAgIHByaW1hcnlDb2xvcj86IHN0cmluZztcbiAgICBzZWNvbmRhcnlDb2xvcj86IHN0cmluZztcbiAgICBmb250RmFtaWx5Pzogc3RyaW5nO1xuICAgIGZvbnRTaXplPzogc3RyaW5nO1xuICAgIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgICB0ZXh0Q29sb3I/OiBzdHJpbmc7XG4gIH07XG4gIG9uUGxheUF1ZGlvPzogKHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgaXNQbGF5aW5nQXVkaW8/OiBib29sZWFuO1xuICBpc0ZpcnN0TWVzc2FnZT86IGJvb2xlYW47XG4gIGlzTmV4dFNhbWVTcGVha2VyPzogYm9vbGVhbjtcbiAgaXNQcmV2U2FtZVNwZWFrZXI/OiBib29sZWFuO1xuICBvbkZlZWRiYWNrPzogKG1lc3NhZ2VJZDogc3RyaW5nLCB2YWx1ZTogJ2dvb2QnIHwgJ2JhZCcpID0+IHZvaWQ7XG4gIGVuYWJsZVR5cGV3cml0ZXI/OiBib29sZWFuO1xuICB3ZWxjb21lSW1hZ2VVcmw/OiBzdHJpbmc7XG4gIHdlbGNvbWVUaXRsZT86IHN0cmluZztcbiAgcG9zc2libGVRdWVyaWVzPzogc3RyaW5nW107XG4gIG9uUXVpY2tRdWVyeT86IChxdWVyeTogc3RyaW5nKSA9PiB2b2lkO1xuICBpc0xhc3RNZXNzYWdlPzogYm9vbGVhbjtcbiAgb25RdWlja0FjdGlvbj86ICh0ZXh0OiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uU2NoZWR1bGVDb25maXJtPzogKHNjaGVkdWxlOiBTY2hlZHVsZUl0ZW0pID0+IHZvaWQ7XG4gIHRyYW5zbGF0aW9ucz86IFRyYW5zbGF0aW9ucztcbiAgbGFuZ3VhZ2U/OiBzdHJpbmc7XG4gIGFnZW50TmFtZT86IHN0cmluZzsgLy8gQ3VzdG9tIGFnZW50IG5hbWUgdG8gZGlzcGxheSBpbnN0ZWFkIG9mIHRyYW5zbGF0aW9uXG4gIGlzQWdlbnRUeXBpbmc/OiBib29sZWFuOyAvLyBXaGV0aGVyIGFnZW50IGlzIGN1cnJlbnRseSB0eXBpbmcvdGhpbmtpbmdcbiAgYXVkaW9VcmxCdWlsZGVyPzogKG1lc3NhZ2VJZDogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIGF1ZGlvSGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGF1dG9QbGF5QXVkaW9NZXNzYWdlSWQ/OiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgY29uc3QgQ2hhdE1lc3NhZ2VDb21wb25lbnQ6IFJlYWN0LkZDPENoYXRNZXNzYWdlUHJvcHM+ID0gKHtcbiAgbWVzc2FnZSxcbiAgdGhlbWUsXG4gIG9uUGxheUF1ZGlvLFxuICBpc0ZpcnN0TWVzc2FnZSA9IGZhbHNlLFxuICBpc1ByZXZTYW1lU3BlYWtlciA9IGZhbHNlLFxuICBvbkZlZWRiYWNrLFxuICB3ZWxjb21lSW1hZ2VVcmwsXG4gIHdlbGNvbWVUaXRsZTogd2VsY29tZVRpdGxlUHJvcCxcbiAgcG9zc2libGVRdWVyaWVzLFxuICBvblF1aWNrUXVlcnksXG4gIGlzTGFzdE1lc3NhZ2UgPSBmYWxzZSxcbiAgb25RdWlja0FjdGlvbixcbiAgb25TY2hlZHVsZUNvbmZpcm0sXG4gIHRyYW5zbGF0aW9uczogY3VzdG9tVHJhbnNsYXRpb25zLFxuICBsYW5ndWFnZSxcbiAgYWdlbnROYW1lLFxuICBpc0FnZW50VHlwaW5nID0gZmFsc2UsXG4gIGF1ZGlvVXJsQnVpbGRlcixcbiAgYXVkaW9IZWFkZXJzLFxuICBhdXRvUGxheUF1ZGlvTWVzc2FnZUlkLFxufSkgPT4ge1xuICAvLyBNZXJnZSB0cmFuc2xhdGlvbnMgd2l0aCBkZWZhdWx0c1xuICBjb25zdCB0cmFuc2xhdGlvbnMgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IG1lcmdlVHJhbnNsYXRpb25zKGN1c3RvbVRyYW5zbGF0aW9ucywgZGVmYXVsdFRyYW5zbGF0aW9ucyksXG4gICAgW2N1c3RvbVRyYW5zbGF0aW9uc11cbiAgKTtcblxuICAvLyBUcmFuc2xhdGlvbiBoZWxwZXJcbiAgY29uc3QgdCA9IChrZXk6IHN0cmluZywgZmFsbGJhY2s/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiBnZXRUcmFuc2xhdGlvblN0cmluZyhrZXksIHRyYW5zbGF0aW9ucywgZmFsbGJhY2spO1xuICB9O1xuICBjb25zdCBpc1VzZXIgPSBtZXNzYWdlLnNwZWFrZXIgPT09ICdjdXN0b21lcic7XG4gIGNvbnN0IGlzU3BlY2lhbCA9IG1lc3NhZ2Uuc3BlYWtlciA9PT0gJ3NwZWNpYWwnO1xuICBjb25zdCBpc1dlbGNvbWVNZXNzYWdlID0gIWlzVXNlciAmJiAhaXNTcGVjaWFsICYmIGlzRmlyc3RNZXNzYWdlO1xuICBjb25zdCBbaXNIb3ZlcmVkLCBzZXRJc0hvdmVyZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZWRpdGluZ0ZlZWRiYWNrXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2Rpc3BsYXlUZXh0XSA9IFJlYWN0LnVzZVN0YXRlPHN0cmluZz4obWVzc2FnZS50ZXh0KTtcbiAgY29uc3QgY29udGVudEJsb2NrcyA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gcGFyc2VJbnRlcmFjdGl2ZUNvbnRlbnRCbG9ja3MoZGlzcGxheVRleHQsIG1lc3NhZ2U/LnR5cGUgYXMgJ2ZpbGUnIHwgJ21lc3NhZ2UnIHwgdW5kZWZpbmVkKSxcbiAgICBbZGlzcGxheVRleHRdXG4gICk7XG5cbiAgLy8gRm9ybWF0IHRpbWVzdGFtcCB3aXRoIHRyYW5zbGF0aW9uc1xuICBjb25zdCB0aW1lc3RhbXAgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB0aW1lVHJhbnNsYXRpb25zID0gdHJhbnNsYXRpb25zPy50aW1lID8ge1xuICAgICAganVzdE5vdzogdHJhbnNsYXRpb25zLnRpbWUuanVzdE5vdyxcbiAgICAgIHRvZGF5OiB0cmFuc2xhdGlvbnMudGltZS50b2RheSxcbiAgICAgIHllc3RlcmRheTogdHJhbnNsYXRpb25zLnRpbWUueWVzdGVyZGF5LFxuICAgIH0gOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGZvcm1hdFRpbWVzdGFtcChtZXNzYWdlLmNyZWF0ZV90aW1lLCBsYW5ndWFnZSwgdGltZVRyYW5zbGF0aW9ucyk7XG4gIH0sIFttZXNzYWdlLmNyZWF0ZV90aW1lLCBsYW5ndWFnZSwgdHJhbnNsYXRpb25zXSk7XG5cbiAgLy8gRmFzdCB0eXBld3JpdGVyIGVmZmVjdCBmb3IgbmV3bHkgZGlzcGxheWVkIGFnZW50IG1lc3NhZ2VzLCBmaXggbGF0ZXJcbiAgLy8gUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgLy8gICBpZiAoIWlzVXNlciAmJiAhaXNTcGVjaWFsICYmIGVuYWJsZVR5cGV3cml0ZXIgJiYgbWVzc2FnZS50ZXh0ICE9PSBsYXN0QW5pbWF0ZWRSZWYuY3VycmVudCkge1xuICAvLyAgICAgbGFzdEFuaW1hdGVkUmVmLmN1cnJlbnQgPSBtZXNzYWdlLnRleHQ7XG4gIC8vICAgICBzZXRJc1R5cGV3cml0aW5nKHRydWUpO1xuICAvLyAgICAgc2V0RGlzcGxheVRleHQoJycpO1xuICAvLyAgICAgbGV0IGkgPSAwO1xuICAvLyAgICAgY29uc3QgdG90YWwgPSBtZXNzYWdlLnRleHQubGVuZ3RoO1xuICAvLyAgICAgY29uc3QgdGlja01zID0gMTY7XG4gIC8vICAgICBjb25zdCB0YXJnZXRNcyA9IDEyMDA7XG4gIC8vICAgICBjb25zdCBjaGFyc1BlclRpY2sgPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKHRvdGFsIC8gKHRhcmdldE1zIC8gdGlja01zKSkpO1xuICAvLyAgICAgY29uc3QgaW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAvLyAgICAgICBpICs9IGNoYXJzUGVyVGljaztcbiAgLy8gICAgICAgaWYgKGkgPj0gdG90YWwpIHtcbiAgLy8gICAgICAgICBzZXREaXNwbGF5VGV4dChtZXNzYWdlLnRleHQpO1xuICAvLyAgICAgICAgIHNldElzVHlwZXdyaXRpbmcoZmFsc2UpO1xuICAvLyAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsKTtcbiAgLy8gICAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgICBzZXREaXNwbGF5VGV4dChtZXNzYWdlLnRleHQuc2xpY2UoMCwgaSkpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9LCB0aWNrTXMpO1xuICAvLyAgICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsKTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgc2V0RGlzcGxheVRleHQobWVzc2FnZS50ZXh0KTtcbiAgLy8gICAgIHNldElzVHlwZXdyaXRpbmcoZmFsc2UpO1xuICAvLyAgIH1cbiAgLy8gfSwgW21lc3NhZ2UudGV4dCwgZW5hYmxlVHlwZXdyaXRlciwgaXNVc2VyLCBpc1NwZWNpYWxdKTtcblxuICAvLyBVcGRhdGVkIGRlc2lnbiBjb2xvcnNcbiAgY29uc3QgdXNlckJ1YmJsZUJnQ29sb3IgPSAnI0U0RTRFNyc7IC8vIGdyZXkgZm9yIHVzZXJcbiAgY29uc3QgdXNlclRleHRDb2xvciA9ICcjMDAwMDAwJztcbiAgY29uc3QgYWdlbnRUZXh0Q29sb3IgPSB0aGVtZT8udGV4dENvbG9yIHx8ICcjMDAwMDAwJztcbiAgY29uc3QgcHJpbWFyeUNvbG9yID0gdGhlbWU/LnByaW1hcnlDb2xvciB8fCAnIzRmNDZlNSc7XG4gIGNvbnN0IGZvbnRGYW1pbHkgPSB0aGVtZT8uZm9udEZhbWlseSB8fCAnUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZic7XG4gIGNvbnN0IGZvbnRTaXplID0gdGhlbWU/LmZvbnRTaXplIHx8ICcxNXB4JztcbiAgY29uc3QgYnViYmxlVGV4dENvbG9yID0gaXNVc2VyID8gdXNlclRleHRDb2xvciA6IGFnZW50VGV4dENvbG9yO1xuXG4gIGNvbnN0IG1lc3NhZ2VDb250YWluZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBtYXJnaW5Cb3R0b206IGlzUHJldlNhbWVTcGVha2VyID8gJzhweCcgOiAnOHB4JyxcbiAgICBtYXJnaW5Ub3A6IGlzUHJldlNhbWVTcGVha2VyID8gJzBweCcgOiAnMTZweCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgYWxpZ25JdGVtczogaXNVc2VyID8gJ2ZsZXgtZW5kJyA6ICdmbGV4LXN0YXJ0JyxcbiAgfTtcblxuICBjb25zdCBsYWJlbFJvd1N0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6IGlzUHJldlNhbWVTcGVha2VyID8gJ25vbmUnIDogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnODAlJyxcbiAgICBqdXN0aWZ5Q29udGVudDogaXNVc2VyID8gJ2ZsZXgtZW5kJyA6ICdmbGV4LXN0YXJ0JyxcbiAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgIGdhcDogJzhweCcsXG4gICAgbWFyZ2luQm90dG9tOiAnNnB4JyxcbiAgfTtcblxuICBjb25zdCBtZXNzYWdlTGFiZWxTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgIGNvbG9yOiAnIzAwMDAwMCcsXG4gICAgbGluZUhlaWdodDogMSxcbiAgICBmb250V2VpZ2h0OiA2MDAsXG4gIH07XG5cbiAgY29uc3QgdG9wVGltZXN0YW1wU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZm9udFNpemU6ICcxM3B4JyxcbiAgICBjb2xvcjogJyM2YjcyODAnLFxuICAgIGxpbmVIZWlnaHQ6IDEsXG4gIH07XG5cbiAgY29uc3QgbWVzc2FnZUJ1YmJsZUNvbnRhaW5lclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBtYXhXaWR0aDogJzgwJScsXG4gIH07XG5cbiAgLy8gT25seSB1c2VyJ3MgbWVzc2FnZXMgc2hvdWxkIHJlbmRlciBhcyBidWJibGVzLlxuICAvLyBBZ2VudCBtZXNzYWdlcyBhcmUgcGxhaW4gdGV4dCB3aXRoIG5vIGNvbnRhaW5lciBiYWNrZ3JvdW5kLlxuICBjb25zdCBidWJibGVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IGlzVXNlclxuICAgID8ge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHVzZXJCdWJibGVCZ0NvbG9yLFxuICAgICAgICBjb2xvcjogdXNlclRleHRDb2xvcixcbiAgICAgICAgcGFkZGluZzogJzEycHggMTZweCcsXG4gICAgICAgIGJvcmRlclJhZGl1czogJzEycHggMCAxMnB4IDEycHgnLFxuICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseSxcbiAgICAgICAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG4gICAgICAgIGxpbmVIZWlnaHQ6IDEuNCxcbiAgICAgICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJveFNoYWRvdzogJzAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMDgpJ1xuICAgICAgfVxuICAgIDoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGNvbG9yOiBhZ2VudFRleHRDb2xvcixcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAwLFxuICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseSxcbiAgICAgICAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG4gICAgICAgIGxpbmVIZWlnaHQ6IDEuNCxcbiAgICAgICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJveFNoYWRvdzogJ25vbmUnXG4gICAgICB9O1xuXG4gIGNvbnN0IGF0dGFjaG1lbnRzQ29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgbWFyZ2luVG9wOiAnOHB4JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgZ2FwOiAnOHB4JyxcbiAgfTtcblxuICAvLyBGZWVkYmFjayBzdGF0ZSBhbmQgVUkgKHRodW1icyB1cC9kb3duKSBmb3IgYWdlbnQgbWVzc2FnZXNcbiAgY29uc3QgZmVlZGJhY2tWYWx1ZSA9IChtZXNzYWdlLmZlZWRiYWNrICYmIG1lc3NhZ2UuZmVlZGJhY2subGVuZ3RoID4gMClcbiAgICA/IG1lc3NhZ2UuZmVlZGJhY2tbbWVzc2FnZS5mZWVkYmFjay5sZW5ndGggLSAxXS5mZWVkYmFja1xuICAgIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHRodW1ic1Nob3VsZFNob3cgPSAhaXNVc2VyICYmICFpc1NwZWNpYWwgJiYgaXNIb3ZlcmVkICYmICFmZWVkYmFja1ZhbHVlO1xuICBjb25zdCBzaG93VGh1bWJzQXJlYSA9ICFpc1VzZXIgJiYgIWlzU3BlY2lhbDsgLy8gT25seSBhZ2VudHMgaGF2ZSB0aHVtYnMgYXJlYVxuXG4gIGNvbnN0IGZlZWRiYWNrUm93U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogc2hvd1RodW1ic0FyZWEgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgbWFyZ2luVG9wOiA4LFxuICAgIGFsaWduU2VsZjogJ2ZsZXgtc3RhcnQnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGhlaWdodDogMjAsXG4gICAgZ2FwOiA4LFxuICAgIHZpc2liaWxpdHk6IHRodW1ic1Nob3VsZFNob3cgfHwgISFmZWVkYmFja1ZhbHVlID8gJ3Zpc2libGUnIDogJ2hpZGRlbicsXG4gIH07XG5cbiAgY29uc3QgaWNvbkJ1dHRvblN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgYm9yZGVyOiAnbm9uZScsXG4gICAgcGFkZGluZzogMCxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBjb2xvcjogJyM5Y2EzYWYnLFxuICAgIGRpc3BsYXk6IHRodW1ic1Nob3VsZFNob3cgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH07XG5cbiAgY29uc3Qgc2VwYXJhdG9yU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgd2lkdGg6IDEsXG4gICAgaGVpZ2h0OiAxNCxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZTVlN2ViJyxcbiAgICBkaXNwbGF5OiB0aHVtYnNTaG91bGRTaG93ID8gJ2Jsb2NrJyA6ICdub25lJyxcbiAgfTtcblxuICBjb25zdCBzaW5nbGVJY29uU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgY29sb3I6ICcjMDAwMDAwJyxcbiAgICBkaXNwbGF5OiBmZWVkYmFja1ZhbHVlID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9O1xuXG4gIGxldCB3ZWxjb21lVGl0bGUgPSB3ZWxjb21lVGl0bGVQcm9wIHx8ICcnO1xuICBsZXQgd2VsY29tZUNvbnRlbnQgPSAnJztcbiAgXG4gIGlmIChpc1dlbGNvbWVNZXNzYWdlKSB7XG4gICAgY29uc3QgbWVzc2FnZVRleHQgPSBtZXNzYWdlLnRleHQ7XG4gICAgaWYgKCF3ZWxjb21lVGl0bGVQcm9wKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IG1lc3NhZ2VUZXh0LnNwbGl0KC9bXFxuXFwuIT9dLyk7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID4gMCkgd2VsY29tZVRpdGxlID0gKHBhcnRzWzBdIHx8ICcnKS50cmltKCk7XG4gICAgICB3ZWxjb21lQ29udGVudCA9IG1lc3NhZ2VUZXh0LnN1YnN0cmluZyh3ZWxjb21lVGl0bGUubGVuZ3RoKS50cmltKCk7XG4gICAgICB3ZWxjb21lQ29udGVudCA9IHdlbGNvbWVDb250ZW50LnJlcGxhY2UoL15bLC4hP1xcc10rLywgJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3ZWxjb21lQ29udGVudCA9IG1lc3NhZ2VUZXh0O1xuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBzcGVjaWFsIG1lc3NhZ2VzIChsaWtlIHRha2VvdmVyIGluZGljYXRvcnMpXG4gIGlmIChpc1NwZWNpYWwpIHtcbiAgICBjb25zdCBzcGVjaWFsTWVzc2FnZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICBtYXJnaW46ICcxNnB4IDAnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICB9O1xuXG4gICAgLy8gRGV0ZXJtaW5lIGljb24gYW5kIHN0eWxlIGJhc2VkIG9uIG1lc3NhZ2UgY29udGVudFxuICAgIC8vIEFnZW50IG9mZiAmIHNlcnZlciBkb3duXG4gICAgY29uc3QgaXNBZ2VudE9mZk9yU2VydmVyRG93biA9XG4gICAgICBtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnb2ZmbGluZScpIHx8XG4gICAgICBtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnaW5hY3RpdmUnKSB8fFxuICAgICAgbWVzc2FnZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3VuYXZhaWxhYmxlJykgfHxcbiAgICAgIChtZXNzYWdlLmxpbmtVcmwgJiYgbWVzc2FnZS5saW5rTGFiZWwpO1xuICAgIGxldCBpY29uO1xuICAgIGxldCBiYWNrZ3JvdW5kQ29sb3IgPSAnI0UzRjJGRCc7XG4gICAgbGV0IHRleHRDb2xvciA9ICcjMTk3NkQyJztcbiAgICBpZiAoaXNBZ2VudE9mZk9yU2VydmVyRG93bikge1xuICAgICAgaWNvbiA9IDxBbGVydENpcmNsZSBzaXplPXsxOH0gLz47XG4gICAgICBiYWNrZ3JvdW5kQ29sb3IgPSAnI0ZGRjNFMCc7XG4gICAgICB0ZXh0Q29sb3IgPSAnI0Y1N0MwMCc7XG4gICAgfSBlbHNlIGlmIChtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygndG9vayBvdmVyJykgfHwgbWVzc2FnZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3Rha2VvdmVyJykpIHtcbiAgICAgIGljb24gPSA8VXNlclggc2l6ZT17MTh9IC8+O1xuICAgIH0gZWxzZSB7XG4gICAgICBpY29uID0gPFVzZXIgc2l6ZT17MTh9IC8+O1xuICAgIH1cblxuICAgIGNvbnN0IHNwZWNpYWxCdWJibGVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgIGNvbG9yOiB0ZXh0Q29sb3IsXG4gICAgICBwYWRkaW5nOiAnOHB4IDE2cHgnLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMTZweCcsXG4gICAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgICAgZm9udEZhbWlseSxcbiAgICAgIGZvbnRXZWlnaHQ6ICc1MDAnLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgICBnYXA6ICc4cHgnLFxuICAgIH07XG5cbiAgICBjb25zdCBsaW5rU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgICBjb2xvcjogdGV4dENvbG9yLFxuICAgICAgdGV4dERlY29yYXRpb246ICd1bmRlcmxpbmUnLFxuICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgICAgZm9udEZhbWlseSxcbiAgICAgIGZvbnRXZWlnaHQ6ICc1MDAnLFxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17c3BlY2lhbE1lc3NhZ2VTdHlsZX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgLi4uc3BlY2lhbEJ1YmJsZVN0eWxlLCBmbGV4RGlyZWN0aW9uOiAncm93JywgYWxpZ25JdGVtczogJ2NlbnRlcicgfX0+XG4gICAgICAgICAge2ljb259XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6ICc0cHgnIH19PlxuICAgICAgICAgICAgPHNwYW4+e21lc3NhZ2UudGV4dH08L3NwYW4+XG4gICAgICAgICAgICB7bWVzc2FnZS5saW5rVXJsICYmIG1lc3NhZ2UubGlua0xhYmVsICYmIChcbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPXttZXNzYWdlLmxpbmtVcmx9XG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17bGlua1N0eWxlfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge21lc3NhZ2UubGlua0xhYmVsfVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAoaXNXZWxjb21lTWVzc2FnZSkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHN0eWxlPXttZXNzYWdlQ29udGFpbmVyU3R5bGV9PlxuICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLm1lc3NhZ2VCdWJibGVDb250YWluZXJTdHlsZSB9fT5cbiAgICAgICAgICA8V2VsY29tZUNhcmRcbiAgICAgICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgICAgIGltYWdlVXJsPXt3ZWxjb21lSW1hZ2VVcmx9XG4gICAgICAgICAgICB0aXRsZT17d2VsY29tZVRpdGxlfVxuICAgICAgICAgICAgY29udGVudD17d2VsY29tZUNvbnRlbnR9XG4gICAgICAgICAgICBwb3NzaWJsZVF1ZXJpZXM9e3Bvc3NpYmxlUXVlcmllc31cbiAgICAgICAgICAgIG9uUXVpY2tRdWVyeT17b25RdWlja1F1ZXJ5fVxuICAgICAgICAgICAgaXNBZ2VudFR5cGluZz17aXNBZ2VudFR5cGluZ31cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgXG4gICAgICBzdHlsZT17bWVzc2FnZUNvbnRhaW5lclN0eWxlfVxuICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRJc0hvdmVyZWQodHJ1ZSl9XG4gICAgICBvbk1vdXNlTGVhdmU9eygpID0+IHsgaWYgKCFlZGl0aW5nRmVlZGJhY2spIHNldElzSG92ZXJlZChmYWxzZSk7IH19XG4gICAgPlxuICAgICAgPGRpdiBzdHlsZT17bGFiZWxSb3dTdHlsZX0+XG4gICAgICAgIHtpc1VzZXIgPyAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3RvcFRpbWVzdGFtcFN0eWxlfT57dGltZXN0YW1wfTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17bWVzc2FnZUxhYmVsU3R5bGV9Pnt0KCdsYWJlbHMueW91Jyl9PC9kaXY+XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21lc3NhZ2VMYWJlbFN0eWxlfT57YWdlbnROYW1lIHx8IHQoJ2xhYmVscy5hZ2VudCcpfTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17dG9wVGltZXN0YW1wU3R5bGV9Pnt0aW1lc3RhbXB9PC9kaXY+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAge21lc3NhZ2UuYXR0YWNobWVudHMgJiYgbWVzc2FnZS5hdHRhY2htZW50cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17eyAuLi5hdHRhY2htZW50c0NvbnRhaW5lclN0eWxlLCBhbGlnbkl0ZW1zOiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnIH19PlxuICAgICAgICAgIHttZXNzYWdlLmF0dGFjaG1lbnRzLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxVcGxvYWRGaWxlUHJldmlldyBrZXk9e2luZGV4fSBmaWxlPXthdHRhY2htZW50fSAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHttZXNzYWdlLnR5cGUgPT09ICdhdWRpbycgJiYgaXNVc2VyICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDQsIGFsaWduU2VsZjogJ2ZsZXgtZW5kJyB9fT5cbiAgICAgICAgICB7bWVzc2FnZS5hdWRpb09iamVjdFVybCA/IChcbiAgICAgICAgICAgIDxBdWRpb1BsYXllciBibG9iVXJsPXttZXNzYWdlLmF1ZGlvT2JqZWN0VXJsfSBwcmltYXJ5Q29sb3I9e3ByaW1hcnlDb2xvcn0gLz5cbiAgICAgICAgICApIDogYXVkaW9VcmxCdWlsZGVyICYmIG1lc3NhZ2UubWVzc2FnZV9pZCAmJiBhdWRpb0hlYWRlcnMgPyAoXG4gICAgICAgICAgICA8QXVkaW9QbGF5ZXIgYXVkaW9Vcmw9e2F1ZGlvVXJsQnVpbGRlcihtZXNzYWdlLm1lc3NhZ2VfaWQpfSBoZWFkZXJzPXthdWRpb0hlYWRlcnN9IHByaW1hcnlDb2xvcj17cHJpbWFyeUNvbG9yfSAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLmJ1YmJsZVN0eWxlLCBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc4cHgnIH19PlxuICAgICAgICAgICAgICA8TWljIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS50ZXh0IHx8ICdbVm9pY2UgbWVzc2FnZV0nfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAge21lc3NhZ2UudHlwZSA9PT0gJ2F1ZGlvJyAmJiAhaXNVc2VyICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDQsIGFsaWduU2VsZjogJ2ZsZXgtc3RhcnQnIH19PlxuICAgICAgICAgIHthdWRpb1VybEJ1aWxkZXIgJiYgbWVzc2FnZS5tZXNzYWdlX2lkICYmIGF1ZGlvSGVhZGVycyA/IChcbiAgICAgICAgICAgIDxBdWRpb1BsYXllclxuICAgICAgICAgICAgICBhdWRpb1VybD17YXVkaW9VcmxCdWlsZGVyKG1lc3NhZ2UubWVzc2FnZV9pZCl9XG4gICAgICAgICAgICAgIGhlYWRlcnM9e2F1ZGlvSGVhZGVyc31cbiAgICAgICAgICAgICAgcHJpbWFyeUNvbG9yPXtwcmltYXJ5Q29sb3J9XG4gICAgICAgICAgICAgIGF1dG9QbGF5PXthdXRvUGxheUF1ZGlvTWVzc2FnZUlkID09PSBtZXNzYWdlLm1lc3NhZ2VfaWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLmJ1YmJsZVN0eWxlLCBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc4cHgnIH19PlxuICAgICAgICAgICAgICA8TWljIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS50ZXh0IHx8ICdbQXVkaW8gcmVzcG9uc2VdJ308L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHttZXNzYWdlLnR5cGUgIT09ICdhdWRpbycgJiYgbWVzc2FnZS50ZXh0ICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc4cHgnLCBhbGlnblNlbGY6IGlzVXNlciA/ICdmbGV4LWVuZCcgOiAnZmxleC1zdGFydCcgfX0+XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyAuLi5idWJibGVTdHlsZSwgcG9zaXRpb246ICdyZWxhdGl2ZScgfX0+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogMTIgfX0+XG4gICAgICAgICAgICAgIDxJbnRlcmFjdGl2ZUNvbnRlbnRcbiAgICAgICAgICAgICAgICBibG9ja3M9e2NvbnRlbnRCbG9ja3N9XG4gICAgICAgICAgICAgICAgcHJpbWFyeUNvbG9yPXtwcmltYXJ5Q29sb3J9XG4gICAgICAgICAgICAgICAgdGV4dENvbG9yPXtidWJibGVUZXh0Q29sb3J9XG4gICAgICAgICAgICAgICAgaXNBY3Rpb25hYmxlPXshaXNVc2VyICYmIGlzTGFzdE1lc3NhZ2UgJiYgIWlzQWdlbnRUeXBpbmd9XG4gICAgICAgICAgICAgICAgb25RdWlja0FjdGlvbj17b25RdWlja0FjdGlvbn1cbiAgICAgICAgICAgICAgICBvblNjaGVkdWxlQ29uZmlybT17b25TY2hlZHVsZUNvbmZpcm19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7LyogRmVlZGJhY2sgcm93IGJlbG93IGFnZW50IG1lc3NhZ2UgKi99XG4gICAgICB7c2hvd1RodW1ic0FyZWEgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXtmZWVkYmFja1Jvd1N0eWxlfT5cbiAgICAgICAgICB7ZmVlZGJhY2tWYWx1ZSA/IChcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3NpbmdsZUljb25TdHlsZX0+XG4gICAgICAgICAgICAgIHtmZWVkYmFja1ZhbHVlID09PSAnZ29vZCcgPyAoXG4gICAgICAgICAgICAgICAgPFRodW1ic1VwIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxUaHVtYnNEb3duIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17aWNvbkJ1dHRvblN0eWxlfVxuICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdmZWVkYmFjay50aHVtYnNVcCcpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIFVzZSBtZXNzYWdlX2lkIGZyb20gc29ja2V0LCBmYWxsYmFjayB0byBpZCBpZiBtZXNzYWdlX2lkIGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG1zZ0lkID0gbWVzc2FnZS5tZXNzYWdlX2lkIHx8IChtZXNzYWdlIGFzIGFueSkuaWQ7XG4gICAgICAgICAgICAgICAgICBpZiAobXNnSWQgJiYgb25GZWVkYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBvbkZlZWRiYWNrKG1zZ0lkLCAnZ29vZCcpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUaHVtYnNVcCBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3NlcGFyYXRvclN0eWxlfSAvPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e2ljb25CdXR0b25TdHlsZX1cbiAgICAgICAgICAgICAgICB0aXRsZT17dCgnZmVlZGJhY2sudGh1bWJzRG93bicpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIFVzZSBtZXNzYWdlX2lkIGZyb20gc29ja2V0LCBmYWxsYmFjayB0byBpZCBpZiBtZXNzYWdlX2lkIGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG1zZ0lkID0gbWVzc2FnZS5tZXNzYWdlX2lkIHx8IChtZXNzYWdlIGFzIGFueSkuaWQ7XG4gICAgICAgICAgICAgICAgICBpZiAobXNnSWQgJiYgb25GZWVkYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBvbkZlZWRiYWNrKG1zZ0lkLCAnYmFkJyk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRodW1ic0Rvd24gc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcbiJdfQ==
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhdE1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DaGF0TWVzc2FnZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFtQy9ELE1BQU0sQ0FBQyxJQUFNLG9CQUFvQixHQUErQixVQUFDLEVBcUJoRTtRQXBCQyxPQUFPLGFBQUEsRUFDUCxLQUFLLFdBQUEsRUFDTCxXQUFXLGlCQUFBLEVBQ1gsc0JBQXNCLEVBQXRCLGNBQWMsbUJBQUcsS0FBSyxLQUFBLEVBQ3RCLHlCQUF5QixFQUF6QixpQkFBaUIsbUJBQUcsS0FBSyxLQUFBLEVBQ3pCLFVBQVUsZ0JBQUEsRUFDVixlQUFlLHFCQUFBLEVBQ0QsZ0JBQWdCLGtCQUFBLEVBQzlCLGVBQWUscUJBQUEsRUFDZixZQUFZLGtCQUFBLEVBQ1oscUJBQXFCLEVBQXJCLGFBQWEsbUJBQUcsS0FBSyxLQUFBLEVBQ3JCLGFBQWEsbUJBQUEs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QUFFLGNBQWMsR0FBSSxFQUM5QixpQkFDRSxJQUFJLEVBQUMsUUFBUSxFQUNiLEtBQUssRUFBRSxlQUFlLEVBQ3RCLEtBQUssRUFBRSxDQUFDLENBQUMscUJBQXFCLENBQUMsRUFDL0IsT0FBTyxFQUFFO2dDQUNQLHlFQUF5RTtnQ0FDekUsSUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSyxPQUFlLENBQUMsRUFBRSxDQUFDO2dDQUN4RCxJQUFJLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQztvQ0FDeEIsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztnQ0FDM0IsQ0FBQztxQ0FBTSxDQUFDO29DQUNOLFNBQVM7Z0NBQ1gsQ0FBQzs0QkFDSCxDQUFDLFlBRUQsS0FBQyxVQUFVLElBQUMsSUFBSSxFQUFFLEVBQUUsR0FBSSxHQUNqQixJQUNSLENBQ0osR0FDRyxDQUNQLElBQ0csQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFdlbGNvbWVDYXJkIH0gZnJvbSAnLi9XZWxjb21lQ2FyZCc7XG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgU2NoZWR1bGVJdGVtLCBUcmFuc2xhdGlvbnMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBVc2VyLCBVc2VyWCwgQWxlcnRDaXJjbGUsIFRodW1ic1VwLCBUaHVtYnNEb3duLCBNaWMgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgQXVkaW9QbGF5ZXIgfSBmcm9tICcuL0F1ZGlvUGxheWVyJztcbmltcG9ydCB7IGZvcm1hdFRpbWVzdGFtcCB9IGZyb20gJy4uL3V0aWxzL3RpbWUnO1xuaW1wb3J0IHsgSW50ZXJhY3RpdmVDb250ZW50IH0gZnJvbSAnLi9JbnRlcmFjdGl2ZUNvbnRlbnQnO1xuaW1wb3J0IHsgcGFyc2VJbnRlcmFjdGl2ZUNvbnRlbnRCbG9ja3MgfSBmcm9tICcuLi91dGlscy9pbnRlcmFjdGl2ZUNvbnRlbnQnO1xuaW1wb3J0IHsgZGVmYXVsdFRyYW5zbGF0aW9ucywgZ2V0VHJhbnNsYXRpb25TdHJpbmcsIG1lcmdlVHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vdXRpbHMvaTE4bic7XG5pbXBvcnQgeyBVcGxvYWRGaWxlUHJldmlldyB9IGZyb20gJy4vY29tbW9uL1VwbG9hZEZpbGVQcmV2aWV3JztcblxuaW50ZXJmYWNlIENoYXRNZXNzYWdlUHJvcHMge1xuICBtZXNzYWdlOiBDaGF0TWVzc2FnZTtcbiAgdGhlbWU/OiB7XG4gICAgcHJpbWFyeUNvbG9yPzogc3RyaW5nO1xuICAgIHNlY29uZGFyeUNvbG9yPzogc3RyaW5nO1xuICAgIGZvbnRGYW1pbHk/OiBzdHJpbmc7XG4gICAgZm9udFNpemU/OiBzdHJpbmc7XG4gICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgIHRleHRDb2xvcj86IHN0cmluZztcbiAgfTtcbiAgb25QbGF5QXVkaW8/OiAodGV4dDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBpc1BsYXlpbmdBdWRpbz86IGJvb2xlYW47XG4gIGlzRmlyc3RNZXNzYWdlPzogYm9vbGVhbjtcbiAgaXNOZXh0U2FtZVNwZWFrZXI/OiBib29sZWFuO1xuICBpc1ByZXZTYW1lU3BlYWtlcj86IGJvb2xlYW47XG4gIG9uRmVlZGJhY2s/OiAobWVzc2FnZUlkOiBzdHJpbmcsIHZhbHVlOiAnZ29vZCcgfCAnYmFkJykgPT4gdm9pZDtcbiAgZW5hYmxlVHlwZXdyaXRlcj86IGJvb2xlYW47XG4gIHdlbGNvbWVJbWFnZVVybD86IHN0cmluZztcbiAgd2VsY29tZVRpdGxlPzogc3RyaW5nO1xuICBwb3NzaWJsZVF1ZXJpZXM/OiBzdHJpbmdbXTtcbiAgb25RdWlja1F1ZXJ5PzogKHF1ZXJ5OiBzdHJpbmcpID0+IHZvaWQ7XG4gIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuO1xuICBvblF1aWNrQWN0aW9uPzogKHRleHQ6IHN0cmluZykgPT4gdm9pZDtcbiAgb25TY2hlZHVsZUNvbmZpcm0/OiAoc2NoZWR1bGU6IFNjaGVkdWxlSXRlbSkgPT4gdm9pZDtcbiAgdHJhbnNsYXRpb25zPzogVHJhbnNsYXRpb25zO1xuICBsYW5ndWFnZT86IHN0cmluZztcbiAgYWdlbnROYW1lPzogc3RyaW5nOyAvLyBDdXN0b20gYWdlbnQgbmFtZSB0byBkaXNwbGF5IGluc3RlYWQgb2YgdHJhbnNsYXRpb25cbiAgaXNBZ2VudFR5cGluZz86IGJvb2xlYW47IC8vIFdoZXRoZXIgYWdlbnQgaXMgY3VycmVudGx5IHR5cGluZy90aGlua2luZ1xuICBhdWRpb1VybEJ1aWxkZXI/OiAobWVzc2FnZUlkOiBzdHJpbmcpID0+IHN0cmluZztcbiAgYXVkaW9IZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgYXV0b1BsYXlBdWRpb01lc3NhZ2VJZD86IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBDaGF0TWVzc2FnZUNvbXBvbmVudDogUmVhY3QuRkM8Q2hhdE1lc3NhZ2VQcm9wcz4gPSAoe1xuICBtZXNzYWdlLFxuICB0aGVtZSxcbiAgb25QbGF5QXVkaW8sXG4gIGlzRmlyc3RNZXNzYWdlID0gZmFsc2UsXG4gIGlzUHJldlNhbWVTcGVha2VyID0gZmFsc2UsXG4gIG9uRmVlZGJhY2ssXG4gIHdlbGNvbWVJbWFnZVVybCxcbiAgd2VsY29tZVRpdGxlOiB3ZWxjb21lVGl0bGVQcm9wLFxuICBwb3NzaWJsZVF1ZXJpZXMsXG4gIG9uUXVpY2tRdWVyeSxcbiAgaXNMYXN0TWVzc2FnZSA9IGZhbHNlLFxuICBvblF1aWNrQWN0aW9uLFxuICBvblNjaGVkdWxlQ29uZmlybSxcbiAgdHJhbnNsYXRpb25zOiBjdXN0b21UcmFuc2xhdGlvbnMsXG4gIGxhbmd1YWdlLFxuICBhZ2VudE5hbWUsXG4gIGlzQWdlbnRUeXBpbmcgPSBmYWxzZSxcbiAgYXVkaW9VcmxCdWlsZGVyLFxuICBhdWRpb0hlYWRlcnMsXG4gIGF1dG9QbGF5QXVkaW9NZXNzYWdlSWQsXG59KSA9PiB7XG4gIC8vIE1lcmdlIHRyYW5zbGF0aW9ucyB3aXRoIGRlZmF1bHRzXG4gIGNvbnN0IHRyYW5zbGF0aW9ucyA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gbWVyZ2VUcmFuc2xhdGlvbnMoY3VzdG9tVHJhbnNsYXRpb25zLCBkZWZhdWx0VHJhbnNsYXRpb25zKSxcbiAgICBbY3VzdG9tVHJhbnNsYXRpb25zXVxuICApO1xuXG4gIC8vIFRyYW5zbGF0aW9uIGhlbHBlclxuICBjb25zdCB0ID0gKGtleTogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIGdldFRyYW5zbGF0aW9uU3RyaW5nKGtleSwgdHJhbnNsYXRpb25zLCBmYWxsYmFjayk7XG4gIH07XG4gIGNvbnN0IGlzVXNlciA9IG1lc3NhZ2Uuc3BlYWtlciA9PT0gJ2N1c3RvbWVyJztcbiAgY29uc3QgaXNTcGVjaWFsID0gbWVzc2FnZS5zcGVha2VyID09PSAnc3BlY2lhbCc7XG4gIGNvbnN0IGlzV2VsY29tZU1lc3NhZ2UgPSAhaXNVc2VyICYmICFpc1NwZWNpYWwgJiYgaXNGaXJzdE1lc3NhZ2U7XG4gIGNvbnN0IFtpc0hvdmVyZWQsIHNldElzSG92ZXJlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlZGl0aW5nRmVlZGJhY2tdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAvLyBUcmFjayB0aGUgbWVzc2FnZSB0ZXh0IGRpcmVjdGx5IChkb24ndCBzbmFwc2hvdCBvbiBtb3VudCk6IGxpdmUtdm9pY2UgY2FwdGlvblxuICAvLyBidWJibGVzIGdyb3cgdGhlaXIgdGV4dCBhcyB0aGUgdHJhbnNjcmlwdCBzdHJlYW1zLCBhbmQgYSBmcm96ZW4gc25hcHNob3Qgd291bGRcbiAgLy8gcGluIHRoZW0gdG8gdGhlIGZpcnN0IGNodW5rLiBOb3JtYWwgbWVzc2FnZXMgaGF2ZSBzdGFibGUgdGV4dCwgc28gdGhpcyBpcyBhXG4gIC8vIG5vLW9wIGZvciB0aGVtLiAoVGhlIGRpc2FibGVkIHR5cGV3cml0ZXIgYmVsb3cgY2FuIHJlLWludHJvZHVjZSBsb2NhbCBzdGF0ZS4pXG4gIGNvbnN0IGRpc3BsYXlUZXh0ID0gbWVzc2FnZS50ZXh0O1xuICBjb25zdCBjb250ZW50QmxvY2tzID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiBwYXJzZUludGVyYWN0aXZlQ29udGVudEJsb2NrcyhkaXNwbGF5VGV4dCwgbWVzc2FnZT8udHlwZSBhcyAnZmlsZScgfCAnbWVzc2FnZScgfCB1bmRlZmluZWQpLFxuICAgIFtkaXNwbGF5VGV4dF1cbiAgKTtcblxuICAvLyBGb3JtYXQgdGltZXN0YW1wIHdpdGggdHJhbnNsYXRpb25zXG4gIGNvbnN0IHRpbWVzdGFtcCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHRpbWVUcmFuc2xhdGlvbnMgPSB0cmFuc2xhdGlvbnM/LnRpbWUgPyB7XG4gICAgICBqdXN0Tm93OiB0cmFuc2xhdGlvbnMudGltZS5qdXN0Tm93LFxuICAgICAgdG9kYXk6IHRyYW5zbGF0aW9ucy50aW1lLnRvZGF5LFxuICAgICAgeWVzdGVyZGF5OiB0cmFuc2xhdGlvbnMudGltZS55ZXN0ZXJkYXksXG4gICAgfSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gZm9ybWF0VGltZXN0YW1wKG1lc3NhZ2UuY3JlYXRlX3RpbWUsIGxhbmd1YWdlLCB0aW1lVHJhbnNsYXRpb25zKTtcbiAgfSwgW21lc3NhZ2UuY3JlYXRlX3RpbWUsIGxhbmd1YWdlLCB0cmFuc2xhdGlvbnNdKTtcblxuICAvLyBGYXN0IHR5cGV3cml0ZXIgZWZmZWN0IGZvciBuZXdseSBkaXNwbGF5ZWQgYWdlbnQgbWVzc2FnZXMsIGZpeCBsYXRlclxuICAvLyBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAvLyAgIGlmICghaXNVc2VyICYmICFpc1NwZWNpYWwgJiYgZW5hYmxlVHlwZXdyaXRlciAmJiBtZXNzYWdlLnRleHQgIT09IGxhc3RBbmltYXRlZFJlZi5jdXJyZW50KSB7XG4gIC8vICAgICBsYXN0QW5pbWF0ZWRSZWYuY3VycmVudCA9IG1lc3NhZ2UudGV4dDtcbiAgLy8gICAgIHNldElzVHlwZXdyaXRpbmcodHJ1ZSk7XG4gIC8vICAgICBzZXREaXNwbGF5VGV4dCgnJyk7XG4gIC8vICAgICBsZXQgaSA9IDA7XG4gIC8vICAgICBjb25zdCB0b3RhbCA9IG1lc3NhZ2UudGV4dC5sZW5ndGg7XG4gIC8vICAgICBjb25zdCB0aWNrTXMgPSAxNjtcbiAgLy8gICAgIGNvbnN0IHRhcmdldE1zID0gMTIwMDtcbiAgLy8gICAgIGNvbnN0IGNoYXJzUGVyVGljayA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQodG90YWwgLyAodGFyZ2V0TXMgLyB0aWNrTXMpKSk7XG4gIC8vICAgICBjb25zdCBpbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gIC8vICAgICAgIGkgKz0gY2hhcnNQZXJUaWNrO1xuICAvLyAgICAgICBpZiAoaSA+PSB0b3RhbCkge1xuICAvLyAgICAgICAgIHNldERpc3BsYXlUZXh0KG1lc3NhZ2UudGV4dCk7XG4gIC8vICAgICAgICAgc2V0SXNUeXBld3JpdGluZyhmYWxzZSk7XG4gIC8vICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAvLyAgICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAgIHNldERpc3BsYXlUZXh0KG1lc3NhZ2UudGV4dC5zbGljZSgwLCBpKSk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH0sIHRpY2tNcyk7XG4gIC8vICAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBzZXREaXNwbGF5VGV4dChtZXNzYWdlLnRleHQpO1xuICAvLyAgICAgc2V0SXNUeXBld3JpdGluZyhmYWxzZSk7XG4gIC8vICAgfVxuICAvLyB9LCBbbWVzc2FnZS50ZXh0LCBlbmFibGVUeXBld3JpdGVyLCBpc1VzZXIsIGlzU3BlY2lhbF0pO1xuXG4gIC8vIFVwZGF0ZWQgZGVzaWduIGNvbG9yc1xuICBjb25zdCB1c2VyQnViYmxlQmdDb2xvciA9ICcjRTRFNEU3JzsgLy8gZ3JleSBmb3IgdXNlclxuICBjb25zdCB1c2VyVGV4dENvbG9yID0gJyMwMDAwMDAnO1xuICBjb25zdCBhZ2VudFRleHRDb2xvciA9IHRoZW1lPy50ZXh0Q29sb3IgfHwgJyMwMDAwMDAnO1xuICBjb25zdCBwcmltYXJ5Q29sb3IgPSB0aGVtZT8ucHJpbWFyeUNvbG9yIHx8ICcjNGY0NmU1JztcbiAgY29uc3QgZm9udEZhbWlseSA9IHRoZW1lPy5mb250RmFtaWx5IHx8ICdSb2JvdG8sIEFyaWFsLCBzYW5zLXNlcmlmJztcbiAgY29uc3QgZm9udFNpemUgPSB0aGVtZT8uZm9udFNpemUgfHwgJzE1cHgnO1xuICBjb25zdCBidWJibGVUZXh0Q29sb3IgPSBpc1VzZXIgPyB1c2VyVGV4dENvbG9yIDogYWdlbnRUZXh0Q29sb3I7XG5cbiAgY29uc3QgbWVzc2FnZUNvbnRhaW5lclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIG1hcmdpbkJvdHRvbTogaXNQcmV2U2FtZVNwZWFrZXIgPyAnOHB4JyA6ICc4cHgnLFxuICAgIG1hcmdpblRvcDogaXNQcmV2U2FtZVNwZWFrZXIgPyAnMHB4JyA6ICcxNnB4JyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBhbGlnbkl0ZW1zOiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnLFxuICB9O1xuXG4gIGNvbnN0IGxhYmVsUm93U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogaXNQcmV2U2FtZVNwZWFrZXIgPyAnbm9uZScgOiAnZmxleCcsXG4gICAgd2lkdGg6ICc4MCUnLFxuICAgIGp1c3RpZnlDb250ZW50OiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnLFxuICAgIGFsaWduSXRlbXM6ICdiYXNlbGluZScsXG4gICAgZ2FwOiAnOHB4JyxcbiAgICBtYXJnaW5Cb3R0b206ICc2cHgnLFxuICB9O1xuXG4gIGNvbnN0IG1lc3NhZ2VMYWJlbFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgY29sb3I6ICcjMDAwMDAwJyxcbiAgICBsaW5lSGVpZ2h0OiAxLFxuICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgfTtcblxuICBjb25zdCB0b3BUaW1lc3RhbXBTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogJzEzcHgnLFxuICAgIGNvbG9yOiAnIzZiNzI4MCcsXG4gICAgbGluZUhlaWdodDogMSxcbiAgfTtcblxuICBjb25zdCBtZXNzYWdlQnViYmxlQ29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIG1heFdpZHRoOiAnODAlJyxcbiAgfTtcblxuICAvLyBPbmx5IHVzZXIncyBtZXNzYWdlcyBzaG91bGQgcmVuZGVyIGFzIGJ1YmJsZXMuXG4gIC8vIEFnZW50IG1lc3NhZ2VzIGFyZSBwbGFpbiB0ZXh0IHdpdGggbm8gY29udGFpbmVyIGJhY2tncm91bmQuXG4gIGNvbnN0IGJ1YmJsZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0gaXNVc2VyXG4gICAgPyB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdXNlckJ1YmJsZUJnQ29sb3IsXG4gICAgICAgIGNvbG9yOiB1c2VyVGV4dENvbG9yLFxuICAgICAgICBwYWRkaW5nOiAnMTJweCAxNnB4JyxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTJweCAwIDEycHggMTJweCcsXG4gICAgICAgIGZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5LFxuICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgbGluZUhlaWdodDogMS40LFxuICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4wOCknXG4gICAgICB9XG4gICAgOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY29sb3I6IGFnZW50VGV4dENvbG9yLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICBib3JkZXJSYWRpdXM6IDAsXG4gICAgICAgIGZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5LFxuICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgbGluZUhlaWdodDogMS40LFxuICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnbm9uZSdcbiAgICAgIH07XG5cbiAgY29uc3QgYXR0YWNobWVudHNDb250YWluZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBtYXJnaW5Ub3A6ICc4cHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBnYXA6ICc4cHgnLFxuICB9O1xuXG4gIC8vIEZlZWRiYWNrIHN0YXRlIGFuZCBVSSAodGh1bWJzIHVwL2Rvd24pIGZvciBhZ2VudCBtZXNzYWdlc1xuICBjb25zdCBmZWVkYmFja1ZhbHVlID0gKG1lc3NhZ2UuZmVlZGJhY2sgJiYgbWVzc2FnZS5mZWVkYmFjay5sZW5ndGggPiAwKVxuICAgID8gbWVzc2FnZS5mZWVkYmFja1ttZXNzYWdlLmZlZWRiYWNrLmxlbmd0aCAtIDFdLmZlZWRiYWNrXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgdGh1bWJzU2hvdWxkU2hvdyA9ICFpc1VzZXIgJiYgIWlzU3BlY2lhbCAmJiBpc0hvdmVyZWQgJiYgIWZlZWRiYWNrVmFsdWU7XG4gIGNvbnN0IHNob3dUaHVtYnNBcmVhID0gIWlzVXNlciAmJiAhaXNTcGVjaWFsOyAvLyBPbmx5IGFnZW50cyBoYXZlIHRodW1icyBhcmVhXG5cbiAgY29uc3QgZmVlZGJhY2tSb3dTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBkaXNwbGF5OiBzaG93VGh1bWJzQXJlYSA/ICdmbGV4JyA6ICdub25lJyxcbiAgICBtYXJnaW5Ub3A6IDgsXG4gICAgYWxpZ25TZWxmOiAnZmxleC1zdGFydCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgaGVpZ2h0OiAyMCxcbiAgICBnYXA6IDgsXG4gICAgdmlzaWJpbGl0eTogdGh1bWJzU2hvdWxkU2hvdyB8fCAhIWZlZWRiYWNrVmFsdWUgPyAndmlzaWJsZScgOiAnaGlkZGVuJyxcbiAgfTtcblxuICBjb25zdCBpY29uQnV0dG9uU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICBib3JkZXI6ICdub25lJyxcbiAgICBwYWRkaW5nOiAwLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGNvbG9yOiAnIzljYTNhZicsXG4gICAgZGlzcGxheTogdGh1bWJzU2hvdWxkU2hvdyA/ICdmbGV4JyA6ICdub25lJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfTtcblxuICBjb25zdCBzZXBhcmF0b3JTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICB3aWR0aDogMSxcbiAgICBoZWlnaHQ6IDE0LFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNlNWU3ZWInLFxuICAgIGRpc3BsYXk6IHRodW1ic1Nob3VsZFNob3cgPyAnYmxvY2snIDogJ25vbmUnLFxuICB9O1xuXG4gIGNvbnN0IHNpbmdsZUljb25TdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBjb2xvcjogJyMwMDAwMDAnLFxuICAgIGRpc3BsYXk6IGZlZWRiYWNrVmFsdWUgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH07XG5cbiAgbGV0IHdlbGNvbWVUaXRsZSA9IHdlbGNvbWVUaXRsZVByb3AgfHwgJyc7XG4gIGxldCB3ZWxjb21lQ29udGVudCA9ICcnO1xuICBcbiAgaWYgKGlzV2VsY29tZU1lc3NhZ2UpIHtcbiAgICBjb25zdCBtZXNzYWdlVGV4dCA9IG1lc3NhZ2UudGV4dDtcbiAgICBpZiAoIXdlbGNvbWVUaXRsZVByb3ApIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gbWVzc2FnZVRleHQuc3BsaXQoL1tcXG5cXC4hP10vKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAwKSB3ZWxjb21lVGl0bGUgPSAocGFydHNbMF0gfHwgJycpLnRyaW0oKTtcbiAgICAgIHdlbGNvbWVDb250ZW50ID0gbWVzc2FnZVRleHQuc3Vic3RyaW5nKHdlbGNvbWVUaXRsZS5sZW5ndGgpLnRyaW0oKTtcbiAgICAgIHdlbGNvbWVDb250ZW50ID0gd2VsY29tZUNvbnRlbnQucmVwbGFjZSgvXlssLiE/XFxzXSsvLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdlbGNvbWVDb250ZW50ID0gbWVzc2FnZVRleHQ7XG4gICAgfVxuICB9XG5cbiAgLy8gSGFuZGxlIHNwZWNpYWwgbWVzc2FnZXMgKGxpa2UgdGFrZW92ZXIgaW5kaWNhdG9ycylcbiAgaWYgKGlzU3BlY2lhbCkge1xuICAgIGNvbnN0IHNwZWNpYWxNZXNzYWdlU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgIG1hcmdpbjogJzE2cHggMCcsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH07XG5cbiAgICAvLyBEZXRlcm1pbmUgaWNvbiBhbmQgc3R5bGUgYmFzZWQgb24gbWVzc2FnZSBjb250ZW50XG4gICAgLy8gQWdlbnQgb2ZmICYgc2VydmVyIGRvd25cbiAgICBjb25zdCBpc0FnZW50T2ZmT3JTZXJ2ZXJEb3duID1cbiAgICAgIG1lc3NhZ2UudGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdvZmZsaW5lJykgfHxcbiAgICAgIG1lc3NhZ2UudGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdpbmFjdGl2ZScpIHx8XG4gICAgICBtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygndW5hdmFpbGFibGUnKSB8fFxuICAgICAgKG1lc3NhZ2UubGlua1VybCAmJiBtZXNzYWdlLmxpbmtMYWJlbCk7XG4gICAgbGV0IGljb247XG4gICAgbGV0IGJhY2tncm91bmRDb2xvciA9ICcjRTNGMkZEJztcbiAgICBsZXQgdGV4dENvbG9yID0gJyMxOTc2RDInO1xuICAgIGlmIChpc0FnZW50T2ZmT3JTZXJ2ZXJEb3duKSB7XG4gICAgICBpY29uID0gPEFsZXJ0Q2lyY2xlIHNpemU9ezE4fSAvPjtcbiAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjRkZGM0UwJztcbiAgICAgIHRleHRDb2xvciA9ICcjRjU3QzAwJztcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2UudGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCd0b29rIG92ZXInKSB8fCBtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygndGFrZW92ZXInKSkge1xuICAgICAgaWNvbiA9IDxVc2VyWCBzaXplPXsxOH0gLz47XG4gICAgfSBlbHNlIHtcbiAgICAgIGljb24gPSA8VXNlciBzaXplPXsxOH0gLz47XG4gICAgfVxuXG4gICAgY29uc3Qgc3BlY2lhbEJ1YmJsZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgY29sb3I6IHRleHRDb2xvcixcbiAgICAgIHBhZGRpbmc6ICc4cHggMTZweCcsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxNnB4JyxcbiAgICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgICBmb250RmFtaWx5LFxuICAgICAgZm9udFdlaWdodDogJzUwMCcsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgIGFsaWduSXRlbXM6ICdmbGV4LXN0YXJ0JyxcbiAgICAgIGdhcDogJzhweCcsXG4gICAgfTtcblxuICAgIGNvbnN0IGxpbmtTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICAgIGNvbG9yOiB0ZXh0Q29sb3IsXG4gICAgICB0ZXh0RGVjb3JhdGlvbjogJ3VuZGVybGluZScsXG4gICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgICBmb250RmFtaWx5LFxuICAgICAgZm9udFdlaWdodDogJzUwMCcsXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHN0eWxlPXtzcGVjaWFsTWVzc2FnZVN0eWxlfT5cbiAgICAgICAgPGRpdiBzdHlsZT17eyAuLi5zcGVjaWFsQnViYmxlU3R5bGUsIGZsZXhEaXJlY3Rpb246ICdyb3cnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgICB7aWNvbn1cbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogJzRweCcgfX0+XG4gICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS50ZXh0fTwvc3Bhbj5cbiAgICAgICAgICAgIHttZXNzYWdlLmxpbmtVcmwgJiYgbWVzc2FnZS5saW5rTGFiZWwgJiYgKFxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGhyZWY9e21lc3NhZ2UubGlua1VybH1cbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtsaW5rU3R5bGV9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7bWVzc2FnZS5saW5rTGFiZWx9XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc1dlbGNvbWVNZXNzYWdlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgc3R5bGU9e21lc3NhZ2VDb250YWluZXJTdHlsZX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgLi4ubWVzc2FnZUJ1YmJsZUNvbnRhaW5lclN0eWxlIH19PlxuICAgICAgICAgIDxXZWxjb21lQ2FyZFxuICAgICAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICAgICAgaW1hZ2VVcmw9e3dlbGNvbWVJbWFnZVVybH1cbiAgICAgICAgICAgIHRpdGxlPXt3ZWxjb21lVGl0bGV9XG4gICAgICAgICAgICBjb250ZW50PXt3ZWxjb21lQ29udGVudH1cbiAgICAgICAgICAgIHBvc3NpYmxlUXVlcmllcz17cG9zc2libGVRdWVyaWVzfVxuICAgICAgICAgICAgb25RdWlja1F1ZXJ5PXtvblF1aWNrUXVlcnl9XG4gICAgICAgICAgICBpc0FnZW50VHlwaW5nPXtpc0FnZW50VHlwaW5nfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBcbiAgICAgIHN0eWxlPXttZXNzYWdlQ29udGFpbmVyU3R5bGV9XG4gICAgICBvbk1vdXNlRW50ZXI9eygpID0+IHNldElzSG92ZXJlZCh0cnVlKX1cbiAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4geyBpZiAoIWVkaXRpbmdGZWVkYmFjaykgc2V0SXNIb3ZlcmVkKGZhbHNlKTsgfX1cbiAgICA+XG4gICAgICA8ZGl2IHN0eWxlPXtsYWJlbFJvd1N0eWxlfT5cbiAgICAgICAge2lzVXNlciA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17dG9wVGltZXN0YW1wU3R5bGV9Pnt0aW1lc3RhbXB9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXttZXNzYWdlTGFiZWxTdHlsZX0+e3QoJ2xhYmVscy55b3UnKX08L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17bWVzc2FnZUxhYmVsU3R5bGV9PnthZ2VudE5hbWUgfHwgdCgnbGFiZWxzLmFnZW50Jyl9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt0b3BUaW1lc3RhbXBTdHlsZX0+e3RpbWVzdGFtcH08L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7bWVzc2FnZS5hdHRhY2htZW50cyAmJiBtZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLmF0dGFjaG1lbnRzQ29udGFpbmVyU3R5bGUsIGFsaWduSXRlbXM6IGlzVXNlciA/ICdmbGV4LWVuZCcgOiAnZmxleC1zdGFydCcgfX0+XG4gICAgICAgICAge21lc3NhZ2UuYXR0YWNobWVudHMubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPFVwbG9hZEZpbGVQcmV2aWV3IGtleT17aW5kZXh9IGZpbGU9e2F0dGFjaG1lbnR9IC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAge21lc3NhZ2UudHlwZSA9PT0gJ2F1ZGlvJyAmJiBpc1VzZXIgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogNCwgYWxpZ25TZWxmOiAnZmxleC1lbmQnIH19PlxuICAgICAgICAgIHttZXNzYWdlLmF1ZGlvT2JqZWN0VXJsID8gKFxuICAgICAgICAgICAgPEF1ZGlvUGxheWVyIGJsb2JVcmw9e21lc3NhZ2UuYXVkaW9PYmplY3RVcmx9IHByaW1hcnlDb2xvcj17cHJpbWFyeUNvbG9yfSAvPlxuICAgICAgICAgICkgOiBhdWRpb1VybEJ1aWxkZXIgJiYgbWVzc2FnZS5tZXNzYWdlX2lkICYmIGF1ZGlvSGVhZGVycyA/IChcbiAgICAgICAgICAgIDxBdWRpb1BsYXllciBhdWRpb1VybD17YXVkaW9VcmxCdWlsZGVyKG1lc3NhZ2UubWVzc2FnZV9pZCl9IGhlYWRlcnM9e2F1ZGlvSGVhZGVyc30gcHJpbWFyeUNvbG9yPXtwcmltYXJ5Q29sb3J9IC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgLi4uYnViYmxlU3R5bGUsIGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzhweCcgfX0+XG4gICAgICAgICAgICAgIDxNaWMgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgIDxzcGFuPnttZXNzYWdlLnRleHQgfHwgJ1tWb2ljZSBtZXNzYWdlXSd9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7bWVzc2FnZS50eXBlID09PSAnYXVkaW8nICYmICFpc1VzZXIgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogNCwgYWxpZ25TZWxmOiAnZmxleC1zdGFydCcgfX0+XG4gICAgICAgICAge2F1ZGlvVXJsQnVpbGRlciAmJiBtZXNzYWdlLm1lc3NhZ2VfaWQgJiYgYXVkaW9IZWFkZXJzID8gKFxuICAgICAgICAgICAgPEF1ZGlvUGxheWVyXG4gICAgICAgICAgICAgIGF1ZGlvVXJsPXthdWRpb1VybEJ1aWxkZXIobWVzc2FnZS5tZXNzYWdlX2lkKX1cbiAgICAgICAgICAgICAgaGVhZGVycz17YXVkaW9IZWFkZXJzfVxuICAgICAgICAgICAgICBwcmltYXJ5Q29sb3I9e3ByaW1hcnlDb2xvcn1cbiAgICAgICAgICAgICAgYXV0b1BsYXk9e2F1dG9QbGF5QXVkaW9NZXNzYWdlSWQgPT09IG1lc3NhZ2UubWVzc2FnZV9pZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgLi4uYnViYmxlU3R5bGUsIGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzhweCcgfX0+XG4gICAgICAgICAgICAgIDxNaWMgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgIDxzcGFuPnttZXNzYWdlLnRleHQgfHwgJ1tBdWRpbyByZXNwb25zZV0nfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAge21lc3NhZ2UudHlwZSAhPT0gJ2F1ZGlvJyAmJiBtZXNzYWdlLnRleHQgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzhweCcsIGFsaWduU2VsZjogaXNVc2VyID8gJ2ZsZXgtZW5kJyA6ICdmbGV4LXN0YXJ0JyB9fT5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLmJ1YmJsZVN0eWxlLCBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9fT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiAxMiB9fT5cbiAgICAgICAgICAgICAgPEludGVyYWN0aXZlQ29udGVudFxuICAgICAgICAgICAgICAgIGJsb2Nrcz17Y29udGVudEJsb2Nrc31cbiAgICAgICAgICAgICAgICBwcmltYXJ5Q29sb3I9e3ByaW1hcnlDb2xvcn1cbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9e2J1YmJsZVRleHRDb2xvcn1cbiAgICAgICAgICAgICAgICBpc0FjdGlvbmFibGU9eyFpc1VzZXIgJiYgaXNMYXN0TWVzc2FnZSAmJiAhaXNBZ2VudFR5cGluZ31cbiAgICAgICAgICAgICAgICBvblF1aWNrQWN0aW9uPXtvblF1aWNrQWN0aW9ufVxuICAgICAgICAgICAgICAgIG9uU2NoZWR1bGVDb25maXJtPXtvblNjaGVkdWxlQ29uZmlybX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBGZWVkYmFjayByb3cgYmVsb3cgYWdlbnQgbWVzc2FnZSAqL31cbiAgICAgIHtzaG93VGh1bWJzQXJlYSAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e2ZlZWRiYWNrUm93U3R5bGV9PlxuICAgICAgICAgIHtmZWVkYmFja1ZhbHVlID8gKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17c2luZ2xlSWNvblN0eWxlfT5cbiAgICAgICAgICAgICAge2ZlZWRiYWNrVmFsdWUgPT09ICdnb29kJyA/IChcbiAgICAgICAgICAgICAgICA8VGh1bWJzVXAgc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFRodW1ic0Rvd24gc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtpY29uQnV0dG9uU3R5bGV9XG4gICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2ZlZWRiYWNrLnRodW1ic1VwJyl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gVXNlIG1lc3NhZ2VfaWQgZnJvbSBzb2NrZXQsIGZhbGxiYWNrIHRvIGlkIGlmIG1lc3NhZ2VfaWQgZG9lc24ndCBleGlzdFxuICAgICAgICAgICAgICAgICAgY29uc3QgbXNnSWQgPSBtZXNzYWdlLm1lc3NhZ2VfaWQgfHwgKG1lc3NhZ2UgYXMgYW55KS5pZDtcbiAgICAgICAgICAgICAgICAgIGlmIChtc2dJZCAmJiBvbkZlZWRiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRmVlZGJhY2sobXNnSWQsICdnb29kJyk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRodW1ic1VwIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17c2VwYXJhdG9yU3R5bGV9IC8+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17aWNvbkJ1dHRvblN0eWxlfVxuICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdmZWVkYmFjay50aHVtYnNEb3duJyl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gVXNlIG1lc3NhZ2VfaWQgZnJvbSBzb2NrZXQsIGZhbGxiYWNrIHRvIGlkIGlmIG1lc3NhZ2VfaWQgZG9lc24ndCBleGlzdFxuICAgICAgICAgICAgICAgICAgY29uc3QgbXNnSWQgPSBtZXNzYWdlLm1lc3NhZ2VfaWQgfHwgKG1lc3NhZ2UgYXMgYW55KS5pZDtcbiAgICAgICAgICAgICAgICAgIGlmIChtc2dJZCAmJiBvbkZlZWRiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRmVlZGJhY2sobXNnSWQsICdiYWQnKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGh1bWJzRG93biBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl19
|