genassist-chat-react 1.0.39 → 1.0.41
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/README.md +3 -0
- package/dist/components/BubbleDock.d.ts +19 -0
- package/dist/components/BubbleDock.js +129 -0
- package/dist/components/DynamicFormMessage.d.ts +8 -2
- package/dist/components/DynamicFormMessage.js +99 -55
- package/dist/components/GenAgentChat.js +427 -247
- package/dist/components/GenAgentConfigPanel.d.ts +2 -0
- package/dist/components/GenAgentConfigPanel.js +4 -2
- package/dist/hooks/useChat.d.ts +4 -1
- package/dist/hooks/useChat.js +81 -39
- package/dist/hooks/useViewportManager.d.ts +2 -0
- package/dist/hooks/useViewportManager.js +14 -1
- package/dist/services/chatService.d.ts +19 -2
- package/dist/services/chatService.js +46 -3
- package/dist/styles/genAgentChatStyles.d.ts +13 -7
- package/dist/styles/genAgentChatStyles.js +127 -43
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.js +1 -1
- package/package.json +6 -3
|
@@ -12,12 +12,14 @@ export interface ChatSettingsConfig {
|
|
|
12
12
|
description: string;
|
|
13
13
|
agentName: string;
|
|
14
14
|
logoUrl?: string;
|
|
15
|
+
brandLogoUrl?: string;
|
|
15
16
|
}
|
|
16
17
|
export interface FeatureFlags {
|
|
17
18
|
useAudio?: boolean;
|
|
18
19
|
useFile?: boolean;
|
|
19
20
|
useWs?: boolean;
|
|
20
21
|
usePoll?: boolean;
|
|
22
|
+
quickInput?: boolean;
|
|
21
23
|
}
|
|
22
24
|
export interface GenAgentConfigPanelProps {
|
|
23
25
|
theme?: ChatTheme;
|
|
@@ -34,12 +34,14 @@ var defaultSettings = {
|
|
|
34
34
|
description: 'Support',
|
|
35
35
|
agentName: 'Agent',
|
|
36
36
|
logoUrl: '',
|
|
37
|
+
brandLogoUrl: '',
|
|
37
38
|
};
|
|
38
39
|
var defaultFeatureFlags = {
|
|
39
40
|
useAudio: false,
|
|
40
41
|
useFile: false,
|
|
41
42
|
useWs: false,
|
|
42
43
|
usePoll: false,
|
|
44
|
+
quickInput: false,
|
|
43
45
|
};
|
|
44
46
|
function objectToParams(obj) {
|
|
45
47
|
if (!obj)
|
|
@@ -326,7 +328,7 @@ export var GenAgentConfigPanel = function (_a) {
|
|
|
326
328
|
? "'Times New Roman', serif"
|
|
327
329
|
: 'monospace';
|
|
328
330
|
handleThemeChange('fontFamily', ff);
|
|
329
|
-
}, children: [_jsx("option", { value: "Inter", children: "Inter" }), _jsx("option", { value: "Arial", children: "Arial" }), _jsx("option", { value: "Times New Roman", children: "Times New Roman" }), _jsx("option", { value: "monospace", children: "Monospace" })] })] })] }))] }), _jsxs("div", { children: [_jsxs("div", { style: sectionHeaderStyle, onClick: function () { return setShowSettings(!showSettings); }, children: [_jsx("h3", { style: sectionTitleStyle, children: "SETTINGS" }), showSettings ? _jsx(ChevronUp, { size: 16 }) : _jsx(ChevronDown, { size: 16 })] }), showSettings && (_jsxs(_Fragment, { children: [_jsxs("div", { style: { padding: '16px 16px 12px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Name" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.name, onChange: function (e) { return handleSettingChange('name', e.target.value); } })] }), _jsxs("div", { style: { padding: '0 16px 12px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Description" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.description, onChange: function (e) { return handleSettingChange('description', e.target.value); } })] }), _jsxs("div", { style: { padding: '0 16px 12px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Agent Name" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.agentName, onChange: function (e) { return handleSettingChange('agentName', e.target.value); } })] }), _jsxs("div", { style: { padding: '0 16px
|
|
331
|
+
}, children: [_jsx("option", { value: "Inter", children: "Inter" }), _jsx("option", { value: "Arial", children: "Arial" }), _jsx("option", { value: "Times New Roman", children: "Times New Roman" }), _jsx("option", { value: "monospace", children: "Monospace" })] })] })] }))] }), _jsxs("div", { children: [_jsxs("div", { style: sectionHeaderStyle, onClick: function () { return setShowSettings(!showSettings); }, children: [_jsx("h3", { style: sectionTitleStyle, children: "SETTINGS" }), showSettings ? _jsx(ChevronUp, { size: 16 }) : _jsx(ChevronDown, { size: 16 })] }), showSettings && (_jsxs(_Fragment, { children: [_jsxs("div", { style: { padding: '16px 16px 12px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Name" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.name, onChange: function (e) { return handleSettingChange('name', e.target.value); } })] }), _jsxs("div", { style: { padding: '0 16px 12px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Description" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.description, onChange: function (e) { return handleSettingChange('description', e.target.value); } })] }), _jsxs("div", { style: { padding: '0 16px 12px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Agent Name" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.agentName, onChange: function (e) { return handleSettingChange('agentName', e.target.value); } })] }), _jsxs("div", { style: { padding: '0 16px 12px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Logo URL" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.logoUrl || '', onChange: function (e) { return handleSettingChange('logoUrl', e.target.value); }, placeholder: "https://example.com/logo.png" })] }), _jsxs("div", { style: { padding: '0 16px 16px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Full Logo URL" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.brandLogoUrl || '', onChange: function (e) { return handleSettingChange('brandLogoUrl', e.target.value); }, placeholder: "https://example.com/full-logo.png" }), _jsx("div", { style: { fontSize: 11, color: '#888', marginTop: 6 }, children: "When set, replaces the small logo + name with this full logo." })] }), _jsxs("div", { style: { padding: '16px', borderTop: '1px solid #e0e0e0', marginTop: 8 }, children: [_jsx("div", { style: { fontSize: 13, color: '#555', marginBottom: 12, fontWeight: 500 }, children: "Features" }), _jsxs("div", { style: formGroupStyle, children: [_jsx("label", { style: labelStyle, children: "Use Audio" }), _jsx("input", { type: "checkbox", checked: !!featureFlags.useAudio, onChange: function (e) { return handleFeatureFlagChange('useAudio', e.target.checked); }, style: { width: 20, height: 20, cursor: 'pointer' } })] }), _jsxs("div", { style: formGroupStyle, children: [_jsx("label", { style: labelStyle, children: "Use File" }), _jsx("input", { type: "checkbox", checked: !!featureFlags.useFile, onChange: function (e) { return handleFeatureFlagChange('useFile', e.target.checked); }, style: { width: 20, height: 20, cursor: 'pointer' } })] }), _jsxs("div", { style: formGroupStyle, children: [_jsx("label", { style: labelStyle, children: "Use WebSocket" }), _jsx("input", { type: "checkbox", checked: !!featureFlags.useWs, onChange: function (e) { return handleFeatureFlagChange('useWs', e.target.checked); }, style: { width: 20, height: 20, cursor: 'pointer' } })] }), _jsxs("div", { style: formGroupStyle, children: [_jsx("label", { style: labelStyle, children: "Use Heartbeat Polling" }), _jsx("input", { type: "checkbox", checked: !!featureFlags.usePoll, onChange: function (e) { return handleFeatureFlagChange('usePoll', e.target.checked); }, style: { width: 20, height: 20, cursor: 'pointer' } })] }), _jsxs("div", { style: formGroupStyle, children: [_jsx("label", { style: labelStyle, children: "Quick Message Input" }), _jsx("input", { type: "checkbox", checked: !!featureFlags.quickInput, onChange: function (e) { return handleFeatureFlagChange('quickInput', e.target.checked); }, style: { width: 20, height: 20, cursor: 'pointer' } })] })] })] }))] }), _jsxs("div", { children: [_jsxs("div", { style: sectionHeaderStyle, onClick: function () { return setShowMetadata(!showMetadata); }, children: [_jsx("h3", { style: sectionTitleStyle, children: "METADATA" }), showMetadata ? _jsx(ChevronUp, { size: 16 }) : _jsx(ChevronDown, { size: 16 })] }), showMetadata && (_jsxs(_Fragment, { children: [_jsxs("div", { style: { padding: '12px 16px' }, children: [_jsxs("div", { style: { fontSize: 13, color: '#555', marginBottom: 10 }, children: ["Define key/value parameters sent as chat metadata.", Object.keys(agentChatInputMetadata || {}).length > 0 && (_jsx("span", { style: { display: 'block', marginTop: 4, color: '#666' }, children: "Parameters from the workflow's Chat Input node are shown below." }))] }), _jsxs("button", { style: fullWidthActionButton, onClick: function () { return setShowAddParam(true); }, children: [_jsx(Plus, { size: 18 }), _jsx("span", { children: "Add Parameter" })] })] }), params.length > 0 && (_jsx("div", { style: { padding: '2px 16px 12px', display: 'flex', flexDirection: 'column', gap: 6 }, children: params.map(function (p, idx) {
|
|
330
332
|
var _a;
|
|
331
333
|
var displayVal = p.type === 'boolean' ? (p.value ? 'True' : 'False') : String((_a = p.value) !== null && _a !== void 0 ? _a : '');
|
|
332
334
|
return (_jsxs("div", { style: metaRowStyle, children: [_jsx("div", { style: metaNameStyle, children: p.name }), _jsx("div", { style: metaValueStyle, title: displayVal, children: displayVal }), _jsx("button", { title: "Edit", style: smallIconButton, onClick: function () {
|
|
@@ -387,4 +389,4 @@ var modalFooterStyle = {
|
|
|
387
389
|
borderTop: '1px solid #eee',
|
|
388
390
|
backgroundColor: '#fafafa',
|
|
389
391
|
};
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VuQWdlbnRDb25maWdQYW5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0dlbkFnZW50Q29uZmlnUGFuZWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQWUsTUFBTSxjQUFjLENBQUM7QUF5RHpGLElBQU0sWUFBWSxHQUFjO0lBQzlCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLGVBQWUsRUFBRSxTQUFTO0lBQzFCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsUUFBUSxFQUFFLE1BQU07Q0FDakIsQ0FBQztBQUVGLElBQU0sZUFBZSxHQUF1QjtJQUMxQyxJQUFJLEVBQUUsV0FBVztJQUNqQixXQUFXLEVBQUUsU0FBUztJQUN0QixTQUFTLEVBQUUsT0FBTztJQUNsQixPQUFPLEVBQUUsRUFBRTtDQUNaLENBQUM7QUFFRixJQUFNLG1CQUFtQixHQUFpQjtJQUN4QyxRQUFRLEVBQUUsS0FBSztJQUNmLE9BQU8sRUFBRSxLQUFLO0lBQ2QsS0FBSyxFQUFFLEtBQUs7SUFDWixPQUFPLEVBQUUsS0FBSztDQUNmLENBQUM7QUFFRixTQUFTLGNBQWMsQ0FBQyxHQUFvQztJQUMxRCxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQyxDQUFDO1FBQzVCLElBQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixJQUFJLElBQUks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ZixZQUFZLEVBQUUsZ0JBQWdCO0NBQy9CLENBQUM7QUFFRixJQUFNLGNBQWMsR0FBd0I7SUFDMUMsT0FBTyxFQUFFLEVBQUU7SUFDWCxPQUFPLEVBQUUsTUFBTTtJQUNmLGFBQWEsRUFBRSxRQUFRO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFO0NBQ1IsQ0FBQztBQUVGLElBQU0sZ0JBQWdCLEdBQXdCO0lBQzVDLE9BQU8sRUFBRSxFQUFFO0lBQ1gsT0FBTyxFQUFFLE1BQU07SUFDZixjQUFjLEVBQUUsVUFBVTtJQUMxQixHQUFHLEVBQUUsQ0FBQztJQUNOLFNBQVMsRUFBRSxnQkFBZ0I7SUFDM0IsZUFBZSxFQUFFLFNBQVM7Q0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ2hldnJvbkRvd24sIENoZXZyb25VcCwgUGx1cywgVHJhc2gyLCBQZW5jaWwsIFgsIFNwYXJrbGVzIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBDaGF0VGhlbWUge1xuICBwcmltYXJ5Q29sb3I6IHN0cmluZztcbiAgc2Vjb25kYXJ5Q29sb3I6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHRleHRDb2xvcjogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFNldHRpbmdzQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhZ2VudE5hbWU6IHN0cmluZztcbiAgbG9nb1VybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRmxhZ3Mge1xuICB1c2VBdWRpbz86IGJvb2xlYW47XG4gIHVzZUZpbGU/OiBib29sZWFuO1xuICB1c2VXcz86IGJvb2xlYW47XG4gIHVzZVBvbGw/OiBib29sZWFuO1xufVxuXG50eXBlIFBhcmFtVHlwZSA9ICdzdHJpbmcnIHwgJ251bWJlcicgfCAnYm9vbGVhbic7XG5cbmludGVyZmFjZSBNZXRhZGF0YVBhcmFtIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBQYXJhbVR5cGU7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbkFnZW50Q29uZmlnUGFuZWxQcm9wcyB7XG4gIHRoZW1lPzogQ2hhdFRoZW1lO1xuICBvblRoZW1lQ2hhbmdlPzogKG5leHQ6IENoYXRUaGVtZSkgPT4gdm9pZDtcblxuICBjaGF0U2V0dGluZ3M/OiBDaGF0U2V0dGluZ3NDb25maWc7XG4gIG9uQ2hhdFNldHRpbmdzQ2hhbmdlPzogKG5leHQ6IENoYXRTZXR0aW5nc0NvbmZpZykgPT4gdm9pZDtcblxuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIG9uTWV0YWRhdGFDaGFuZ2U/OiAobmV4dDogUmVjb3JkPHN0cmluZywgYW55PikgPT4gdm9pZDtcblxuICBhZ2VudENoYXRJbnB1dE1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBmZWF0dXJlRmxhZ3M/OiBGZWF0dXJlRmxhZ3M7XG4gIG9uRmVhdHVyZUZsYWdzQ2hhbmdlPzogKG5leHQ6IEZlYXR1cmVGbGFncykgPT4gdm9pZDtcblxuICBkZWZhdWx0T3Blbj86IHsgYXBwZWFyYW5jZT86IGJvb2xlYW47IHNldHRpbmdzPzogYm9vbGVhbjsgbWV0YWRhdGE/OiBib29sZWFuIH07XG4gIG9uU2F2ZT86IChwYXlsb2FkOiB7IHRoZW1lOiBDaGF0VGhlbWU7IGNoYXRTZXR0aW5nczogQ2hhdFNldHRpbmdzQ29uZmlnOyBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PjsgZmVhdHVyZUZsYWdzOiBGZWF0dXJlRmxhZ3MgfSkgPT4gdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuXG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbn1cblxuY29uc3QgZGVmYXVsdFRoZW1lOiBDaGF0VGhlbWUgPSB7XG4gIHByaW1hcnlDb2xvcjogJyM0RjQ2RTUnLFxuICBzZWNvbmRhcnlDb2xvcjogJyNmNWY1ZjUnLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmZmZmJyxcbiAgdGV4dENvbG9yOiAnIzAwMDAwMCcsXG4gIGZvbnRGYW1pbHk6ICdJbnRlciwgc2Fucy1zZXJpZicsXG4gIGZvbnRTaXplOiAnMTVweCcsXG59O1xuXG5jb25zdCBkZWZhdWx0U2V0dGluZ3M6IENoYXRTZXR0aW5nc0NvbmZpZyA9IHtcbiAgbmFtZTogJ0dlbmFzc2lzdCcsXG4gIGRlc2NyaXB0aW9uOiAnU3VwcG9ydCcsXG4gIGFnZW50TmFtZTogJ0FnZW50JyxcbiAgbG9nb1VybDogJycsXG59O1xuXG5jb25zdCBkZWZhdWx0RmVhdHVyZUZsYWdzOiBGZWF0dXJlRmxhZ3MgPSB7XG4gIHVzZUF1ZGlvOiBmYWxzZSxcbiAgdXNlRmlsZTogZmFsc2UsXG4gIHVzZVdzOiBmYWxzZSxcbiAgdXNlUG9sbDogZmFsc2UsXG59O1xuXG5mdW5jdGlvbiBvYmplY3RUb1BhcmFtcyhvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQpOiBNZXRhZGF0YVBhcmFtW10ge1xuICBpZiAoIW9iaikgcmV0dXJuIFtdO1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5tYXAoKGspID0+IHtcbiAgICBjb25zdCB2ID0gb2JqW2tdO1xuICAgIGxldCB0eXBlOiBQYXJhbVR5cGUgPSAnc3RyaW5nJztcbiAgICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKSB0eXBlID0gJ251bWJlcic7XG4gICAgZWxzZSBpZiAodHlwZW9mIHYgPT09ICdib29sZWFuJykgdHlwZSA9ICdib29sZWFuJztcbiAgICByZXR1cm4geyBuYW1lOiBrLCB0eXBlLCByZXF1aXJlZDogZmFsc2UsIHZhbHVlOiB2IH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXJhbXNUb09iamVjdChwYXJhbXM6IE1ldGFkYXRhUGFyYW1bXSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICBjb25zdCBvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIHBhcmFtcy5mb3JFYWNoKChwKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBwLnZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgb1twLm5hbWVdID0gcC52YWx1ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbztcbn1cblxuZXhwb3J0IGNvbnN0IEdlbkFnZW50Q29uZmlnUGFuZWw6IFJlYWN0LkZDPEdlbkFnZW50Q29uZmlnUGFuZWxQcm9wcz4gPSAoe1xuICB0aGVtZTogdGhlbWVQcm9wLFxuICBvblRoZW1lQ2hhbmdlLFxuICBjaGF0U2V0dGluZ3M6IGNoYXRTZXR0aW5nc1Byb3AsXG4gIG9uQ2hhdFNldHRpbmdzQ2hhbmdlLFxuICBtZXRhZGF0YTogbWV0YWRhdGFQcm9wLFxuICBvbk1ldGFkYXRhQ2hhbmdlLFxuICBhZ2VudENoYXRJbnB1dE1ldGFkYXRhLFxuICBmZWF0dXJlRmxhZ3M6IGZlYXR1cmVGbGFnc1Byb3AsXG4gIG9uRmVhdHVyZUZsYWdzQ2hhbmdlLFxuICBkZWZhdWx0T3BlbixcbiAgb25TYXZlLFxuICBvbkNhbmNlbCxcbiAgc3R5bGUsXG59KSA9PiB7XG4gIC8vIE1lcmdlIHdvcmtmbG93IGNoYXQgaW5wdXQgbWV0YWRhdGEgd2l0aCB1c2VyIG1ldGFkYXRhXG4gIGNvbnN0IG1lcmdlZE1ldGFkYXRhID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoeyAuLi4oYWdlbnRDaGF0SW5wdXRNZXRhZGF0YSB8fCB7fSksIC4uLihtZXRhZGF0YVByb3AgfHwge30pIH0pLFxuICAgIFthZ2VudENoYXRJbnB1dE1ldGFkYXRhLCBtZXRhZGF0YVByb3BdXG4gICk7XG5cbiAgLy8gQ29udHJvbGxlZCBvciBpbnRlcm5hbCBzdGF0ZSBmYWxsYmFja3NcbiAgY29uc3QgW3RoZW1lLCBzZXRUaGVtZV0gPSB1c2VTdGF0ZTxDaGF0VGhlbWU+KHRoZW1lUHJvcCB8fCBkZWZhdWx0VGhlbWUpO1xuICBjb25zdCBbY2hhdFNldHRpbmdzLCBzZXRDaGF0U2V0dGluZ3NdID0gdXNlU3RhdGU8Q2hhdFNldHRpbmdzQ29uZmlnPihjaGF0U2V0dGluZ3NQcm9wIHx8IGRlZmF1bHRTZXR0aW5ncyk7XG4gIGNvbnN0IFtwYXJhbXMsIHNldFBhcmFtc10gPSB1c2VTdGF0ZTxNZXRhZGF0YVBhcmFtW10+KCgpID0+IG9iamVjdFRvUGFyYW1zKG1lcmdlZE1ldGFkYXRhKSk7XG4gIGNvbnN0IFtmZWF0dXJlRmxhZ3MsIHNldEZlYXR1cmVGbGFnc10gPSB1c2VTdGF0ZTxGZWF0dXJlRmxhZ3M+KGZlYXR1cmVGbGFnc1Byb3AgfHwgZGVmYXVsdEZlYXR1cmVGbGFncyk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGhlbWVQcm9wKSBzZXRUaGVtZSh0aGVtZVByb3ApO1xuICB9LCBbdGhlbWVQcm9wXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2hhdFNldHRpbmdzUHJvcCkgc2V0Q2hhdFNldHRpbmdzKGNoYXRTZXR0aW5nc1Byb3ApO1xuICB9LCBbY2hhdFNldHRpbmdzUHJvcF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UGFyYW1zKG9iamVjdFRvUGFyYW1zKG1lcmdlZE1ldGFkYXRhKSk7XG4gIH0sIFthZ2VudENoYXRJbnB1dE1ldGFkYXRhLCBtZXRhZGF0YVByb3BdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChmZWF0dXJlRmxhZ3NQcm9wKSBzZXRGZWF0dXJlRmxhZ3MoZmVhdHVyZUZsYWdzUHJvcCk7XG4gIH0sIFtmZWF0dXJlRmxhZ3NQcm9wXSk7XG5cbiAgY29uc3QgW3Nob3dBcHBlYXJhbmNlLCBzZXRTaG93QXBwZWFyYW5jZV0gPSB1c2VTdGF0ZShcbiAgICB0eXBlb2YgZGVmYXVsdE9wZW4/LmFwcGVhcmFuY2UgPT09ICdib29sZWFuJyA/ICEhZGVmYXVsdE9wZW4/LmFwcGVhcmFuY2UgOiB0cnVlXG4gICk7XG4gIGNvbnN0IFtzaG93U2V0dGluZ3MsIHNldFNob3dTZXR0aW5nc10gPSB1c2VTdGF0ZShcbiAgICB0eXBlb2YgZGVmYXVsdE9wZW4/LnNldHRpbmdzID09PSAnYm9vbGVhbicgPyAhIWRlZmF1bHRPcGVuPy5zZXR0aW5ncyA6IGZhbHNlXG4gICk7XG4gIGNvbnN0IFtzaG93TWV0YWRhdGEsIHNldFNob3dNZXRhZGF0YV0gPSB1c2VTdGF0ZShcbiAgICB0eXBlb2YgZGVmYXVsdE9wZW4/Lm1ldGFkYXRhID09PSAnYm9vbGVhbicgPyAhIWRlZmF1bHRPcGVuPy5tZXRhZGF0YSA6IGZhbHNlXG4gICk7XG5cbiAgLy8gQXV0by1leHBhbmQgTWV0YWRhdGEgc2VjdGlvblxuICBjb25zdCBwcmV2TWV0YUtleUNvdW50UmVmID0gUmVhY3QudXNlUmVmPG51bWJlcj4oMCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qga2V5Q291bnQgPSBhZ2VudENoYXRJbnB1dE1ldGFkYXRhID8gT2JqZWN0LmtleXMoYWdlbnRDaGF0SW5wdXRNZXRhZGF0YSkubGVuZ3RoIDogMDtcbiAgICBpZiAoa2V5Q291bnQgPiAwICYmIHByZXZNZXRhS2V5Q291bnRSZWYuY3VycmVudCA9PT0gMCkge1xuICAgICAgc2V0U2hvd01ldGFkYXRhKHRydWUpO1xuICAgIH1cbiAgICBwcmV2TWV0YUtleUNvdW50UmVmLmN1cnJlbnQgPSBrZXlDb3VudDtcbiAgfSwgW2FnZW50Q2hhdElucHV0TWV0YWRhdGFdKTtcblxuICBjb25zdCBbc2hvd0FkZFBhcmFtLCBzZXRTaG93QWRkUGFyYW1dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZHJhZnRQYXJhbSwgc2V0RHJhZnRQYXJhbV0gPSB1c2VTdGF0ZTxNZXRhZGF0YVBhcmFtPih7XG4gICAgbmFtZTogJ3BhcmFtXzEnLFxuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICB2YWx1ZTogJycsXG4gIH0pO1xuXG4gIGNvbnN0IFtzaG93RWRpdFBhcmFtLCBzZXRTaG93RWRpdFBhcmFtXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2VkaXRJbmRleCwgc2V0RWRpdEluZGV4XSA9IHVzZVN0YXRlPG51bWJlciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbZWRpdERyYWZ0LCBzZXRFZGl0RHJhZnRdID0gdXNlU3RhdGU8TWV0YWRhdGFQYXJhbT4oeyBuYW1lOiAnJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiBmYWxzZSwgdmFsdWU6ICcnIH0pO1xuXG4gIGNvbnN0IG1ldGFkYXRhID0gdXNlTWVtbygoKSA9PiBwYXJhbXNUb09iamVjdChwYXJhbXMpLCBbcGFyYW1zXSk7XG5cbiAgY29uc3QgaGFuZGxlVGhlbWVDaGFuZ2UgPSAoa2V5OiBrZXlvZiBDaGF0VGhlbWUsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBuZXh0ID0geyAuLi50aGVtZSwgW2tleV06IHZhbHVlIH0gYXMgQ2hhdFRoZW1lO1xuICAgIGlmICghdGhlbWVQcm9wKSBzZXRUaGVtZShuZXh0KTtcbiAgICBvblRoZW1lQ2hhbmdlPy4obmV4dCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU2V0dGluZ0NoYW5nZSA9IChrZXk6IGtleW9mIENoYXRTZXR0aW5nc0NvbmZpZywgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG5leHQgPSB7IC4uLmNoYXRTZXR0aW5ncywgW2tleV06IHZhbHVlIH0gYXMgQ2hhdFNldHRpbmdzQ29uZmlnO1xuICAgIGlmICghY2hhdFNldHRpbmdzUHJvcCkgc2V0Q2hhdFNldHRpbmdzKG5leHQpO1xuICAgIG9uQ2hhdFNldHRpbmdzQ2hhbmdlPy4obmV4dCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmVhdHVyZUZsYWdDaGFuZ2UgPSAoa2V5OiBrZXlvZiBGZWF0dXJlRmxhZ3MsIHZhbHVlOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IHsgLi4uZmVhdHVyZUZsYWdzLCBba2V5XTogdmFsdWUgfSBhcyBGZWF0dXJlRmxhZ3M7XG4gICAgaWYgKCFmZWF0dXJlRmxhZ3NQcm9wKSBzZXRGZWF0dXJlRmxhZ3MobmV4dCk7XG4gICAgb25GZWF0dXJlRmxhZ3NDaGFuZ2U/LihuZXh0KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBZGRQYXJhbSA9ICgpID0+IHtcbiAgICBjb25zdCBuYW1lID0gZHJhZnRQYXJhbS5uYW1lLnRyaW0oKTtcbiAgICBpZiAoIW5hbWUpIHJldHVybjtcbiAgICBpZiAocGFyYW1zLnNvbWUoKHApID0+IHAubmFtZSA9PT0gbmFtZSkpIHJldHVybjtcbiAgICBjb25zdCBub3JtYWxpemVkOiBNZXRhZGF0YVBhcmFtID0ge1xuICAgICAgLi4uZHJhZnRQYXJhbSxcbiAgICAgIG5hbWUsXG4gICAgICB2YWx1ZTpcbiAgICAgICAgdHlwZW9mIGRyYWZ0UGFyYW0udmFsdWUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgPyBkcmFmdFBhcmFtLnZhbHVlXG4gICAgICAgICAgOiBkcmFmdFBhcmFtLnR5cGUgPT09ICdudW1iZXInXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiBkcmFmdFBhcmFtLnR5cGUgPT09ICdib29sZWFuJ1xuICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICA6ICcnLFxuICAgIH07XG4gICAgY29uc3QgbmV4dCA9IFsuLi5wYXJhbXMsIG5vcm1hbGl6ZWRdO1xuICAgIHNldFBhcmFtcyhuZXh0KTtcbiAgICBvbk1ldGFkYXRhQ2hhbmdlPy4ocGFyYW1zVG9PYmplY3QobmV4dCkpO1xuICAgIHNldERyYWZ0UGFyYW0oeyBuYW1lOiAncGFyYW1fMScsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogZmFsc2UsIHZhbHVlOiAnJyB9KTtcbiAgICBzZXRTaG93QWRkUGFyYW0oZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGNvZXJjZUZvclR5cGUgPSAodmFsOiBhbnksIHR5cGU6IFBhcmFtVHlwZSkgPT4ge1xuICAgIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgY29uc3QgbiA9IE51bWJlcih2YWwpO1xuICAgICAgcmV0dXJuIGlzTmFOKG4pID8gMCA6IG47XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnYm9vbGVhbicpIHJldHVybiB2YWw7XG4gICAgICBjb25zdCBzID0gU3RyaW5nKHZhbCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiBzID09PSAndHJ1ZScgfHwgcyA9PT0gJzEnIHx8IHMgPT09ICd5ZXMnO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbCA/PyAnJyk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRWRpdFNhdmUgPSAoKSA9PiB7XG4gICAgaWYgKGVkaXRJbmRleCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIGNvbnN0IG5ld05hbWUgPSBlZGl0RHJhZnQubmFtZS50cmltKCk7XG4gICAgaWYgKCFuZXdOYW1lKSByZXR1cm47XG4gICAgaWYgKHBhcmFtcy5zb21lKChwLCBpKSA9PiBpICE9PSBlZGl0SW5kZXggJiYgcC5uYW1lID09PSBuZXdOYW1lKSkgcmV0dXJuO1xuICAgIGNvbnN0IG5leHQgPSBbLi4ucGFyYW1zXTtcbiAgICBjb25zdCBvbGQgPSBuZXh0W2VkaXRJbmRleF07XG4gICAgY29uc3QgdXBkYXRlZDogTWV0YWRhdGFQYXJhbSA9IHsgLi4ub2xkLCAuLi5lZGl0RHJhZnQgfTtcbiAgICB1cGRhdGVkLnZhbHVlID0gY29lcmNlRm9yVHlwZShvbGQudmFsdWUsIGVkaXREcmFmdC50eXBlKTtcbiAgICBuZXh0W2VkaXRJbmRleF0gPSB1cGRhdGVkO1xuICAgIHNldFBhcmFtcyhuZXh0KTtcbiAgICBvbk1ldGFkYXRhQ2hhbmdlPy4ocGFyYW1zVG9PYmplY3QobmV4dCkpO1xuICAgIHNldFNob3dFZGl0UGFyYW0oZmFsc2UpO1xuICAgIHNldEVkaXRJbmRleChudWxsKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVSZW1vdmVQYXJhbSA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IHBhcmFtcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcbiAgICBzZXRQYXJhbXMobmV4dCk7XG4gICAgb25NZXRhZGF0YUNoYW5nZT8uKHBhcmFtc1RvT2JqZWN0KG5leHQpKTtcbiAgfTtcblxuICBjb25zdCBjb250YWluZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmbGV4OiAnMScsXG4gICAgbWF4V2lkdGg6IDMwMCxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmZmZmJyxcbiAgICBib3JkZXJSYWRpdXM6IDgsXG4gICAgYm94U2hhZG93OiAnMCAycHggMTBweCByZ2JhKDAsMCwwLDAuMSknLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgLi4uc3R5bGUsXG4gIH07XG5cbiAgY29uc3Qgc2VjdGlvbkhlYWRlclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIHBhZGRpbmc6IDE2LFxuICAgIGJvcmRlckJvdHRvbTogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZjlmOWY5JyxcbiAgfTtcblxuICBjb25zdCBzZWN0aW9uVGl0bGVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBtYXJnaW46IDAsXG4gICAgZm9udFNpemU6IDEyLFxuICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgICBjb2xvcjogJyM2NjYnLFxuICAgIGxldHRlclNwYWNpbmc6IDEsXG4gIH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcztcblxuICBjb25zdCBmb3JtR3JvdXBTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBwYWRkaW5nOiAnMTZweCAxNnB4IDEycHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGJvcmRlckJvdHRvbTogJ25vbmUnLFxuICB9O1xuXG4gIGNvbnN0IGxhYmVsU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7IGZvbnRTaXplOiAxNCwgY29sb3I6ICcjMzMzJyB9O1xuICBjb25zdCBjb2xvclBpY2tlclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGFwcGVhcmFuY2U6ICdub25lJyxcbiAgICB3aWR0aDogMTIwLFxuICAgIGhlaWdodDogMzIsXG4gICAgcGFkZGluZzogMCxcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2UwZTBlMCcsXG4gICAgYm9yZGVyUmFkaXVzOiA0LFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXM7XG5cbiAgY29uc3Qgc2VsZWN0U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgd2lkdGg6IDE0MCxcbiAgICBoZWlnaHQ6IDMyLFxuICAgIHBhZGRpbmc6ICcwIDhweCcsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICAgIGJvcmRlclJhZGl1czogNCxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogMTQsXG4gIH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcztcblxuICBjb25zdCBpbnB1dFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAzMixcbiAgICBwYWRkaW5nOiAnMCA4cHgnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgZm9udFNpemU6IDE0LFxuICB9O1xuXG4gIGNvbnN0IGFjdGlvbkJhclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIHBhZGRpbmc6IDEyLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtZW5kJyxcbiAgICBnYXA6IDgsXG4gICAgYm9yZGVyVG9wOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNmYWZhZmEnLFxuICB9O1xuXG4gIGNvbnN0IGNhbmNlbEJ1dHRvblN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIHBhZGRpbmc6ICc4cHggMTJweCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICAgIGJvcmRlclJhZGl1czogNixcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgfTtcbiAgY29uc3Qgc2F2ZUJ1dHRvblN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIHBhZGRpbmc6ICc4cHggMTJweCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnIzExMTgyNycsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgIzBiMTIyMCcsXG4gICAgYm9yZGVyUmFkaXVzOiA2LFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICB9O1xuXG4gIGNvbnN0IGZ1bGxXaWR0aEFjdGlvbkJ1dHRvbjogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgZ2FwOiA4LFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcGFkZGluZzogJzEwcHggMTJweCcsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICAgIGJvcmRlclJhZGl1czogOCxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBmb250U2l6ZTogMTQsXG4gICAgY29sb3I6ICcjMTExJyxcbiAgfTtcblxuICBjb25zdCBzbWFsbEljb25CdXR0b246IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICAgIGJvcmRlclJhZGl1czogOCxcbiAgICB3aWR0aDogMjgsXG4gICAgaGVpZ2h0OiAyOCxcbiAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgfTtcblxuICBjb25zdCBtZXRhUm93U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2dyaWQnLFxuICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICcxZnIgbWlubWF4KDkwcHgsIDE1MHB4KSAyOHB4IDI4cHgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGdhcDogOCxcbiAgICBwYWRkaW5nOiAnNnB4IDAnLFxuICB9O1xuICBjb25zdCBtZXRhTmFtZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGZvbnRTaXplOiAxMyxcbiAgICBjb2xvcjogJyMyMjInLFxuICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICB9O1xuICBjb25zdCBtZXRhVmFsdWVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBtYXhXaWR0aDogMTUwLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgZm9udFNpemU6IDEzLFxuICAgIGNvbG9yOiAnIzExMScsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlNmU2ZTYnLFxuICAgIGJvcmRlclJhZGl1czogMTIsXG4gICAgcGFkZGluZzogJzZweCAxMHB4JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmFmYWZhJyxcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gKCkgPT4ge1xuICAgIG9uU2F2ZT8uKHsgdGhlbWUsIGNoYXRTZXR0aW5ncywgbWV0YWRhdGEsIGZlYXR1cmVGbGFncyB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgc3R5bGU9e2NvbnRhaW5lclN0eWxlfT5cbiAgICAgIHsvKiBBcHBlYXJhbmNlIFNlY3Rpb24gKi99XG4gICAgICA8ZGl2IHN0eWxlPXt7IGJvcmRlckJvdHRvbTogJzFweCBzb2xpZCAjZTBlMGUwJyB9fT5cbiAgICAgICAgPGRpdiBzdHlsZT17c2VjdGlvbkhlYWRlclN0eWxlfSBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QXBwZWFyYW5jZSghc2hvd0FwcGVhcmFuY2UpfT5cbiAgICAgICAgICA8aDMgc3R5bGU9e3NlY3Rpb25UaXRsZVN0eWxlfT5BUFBFQVJBTkNFPC9oMz5cbiAgICAgICAgICB7c2hvd0FwcGVhcmFuY2UgPyA8Q2hldnJvblVwIHNpemU9ezE2fSAvPiA6IDxDaGV2cm9uRG93biBzaXplPXsxNn0gLz59XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7c2hvd0FwcGVhcmFuY2UgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+UHJpbWFyeSBDb2xvcjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RoZW1lLnByaW1hcnlDb2xvcn1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVRoZW1lQ2hhbmdlKCdwcmltYXJ5Q29sb3InLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgc3R5bGU9e2NvbG9yUGlja2VyU3R5bGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e2Zvcm1Hcm91cFN0eWxlfT5cbiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5TZWNvbmRhcnkgQ29sb3I8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aGVtZS5zZWNvbmRhcnlDb2xvcn1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVRoZW1lQ2hhbmdlKCdzZWNvbmRhcnlDb2xvcicsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICBzdHlsZT17Y29sb3JQaWNrZXJTdHlsZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17Zm9ybUdyb3VwU3R5bGV9PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e2xhYmVsU3R5bGV9PkJhY2tncm91bmQgQ29sb3I8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aGVtZS5iYWNrZ3JvdW5kQ29sb3J9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaGVtZUNoYW5nZSgnYmFja2dyb3VuZENvbG9yJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIHN0eWxlPXtjb2xvclBpY2tlclN0eWxlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+VGV4dCBDb2xvcjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RoZW1lLnRleHRDb2xvcn1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVRoZW1lQ2hhbmdlKCd0ZXh0Q29sb3InLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgc3R5bGU9e2NvbG9yUGlja2VyU3R5bGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e2Zvcm1Hcm91cFN0eWxlfT5cbiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5Gb250IFNpemU8L2xhYmVsPlxuICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgc3R5bGU9e3NlbGVjdFN0eWxlfVxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aGVtZS5mb250U2l6ZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVRoZW1lQ2hhbmdlKCdmb250U2l6ZScsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxMnB4XCI+U21hbGwgKDEycHgpPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjE1cHhcIj5NZWRpdW0gKDE1cHgpPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjE4cHhcIj5MYXJnZSAoMThweCk8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e2Zvcm1Hcm91cFN0eWxlfT5cbiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5Gb250IEZhbWlseTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3RoZW1lLmZvbnRGYW1pbHkuc3BsaXQoJywnKVswXS50cmltKCl9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB2ID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmZiA9XG4gICAgICAgICAgICAgICAgICAgIHYgPT09ICdJbnRlcidcbiAgICAgICAgICAgICAgICAgICAgICA/ICdJbnRlciwgc2Fucy1zZXJpZidcbiAgICAgICAgICAgICAgICAgICAgICA6IHYgPT09ICdBcmlhbCdcbiAgICAgICAgICAgICAgICAgICAgICA/ICdBcmlhbCwgc2Fucy1zZXJpZidcbiAgICAgICAgICAgICAgICAgICAgICA6IHYgPT09ICdUaW1lcyBOZXcgUm9tYW4nXG4gICAgICAgICAgICAgICAgICAgICAgPyBcIidUaW1lcyBOZXcgUm9tYW4nLCBzZXJpZlwiXG4gICAgICAgICAgICAgICAgICAgICAgOiAnbW9ub3NwYWNlJztcbiAgICAgICAgICAgICAgICAgIGhhbmRsZVRoZW1lQ2hhbmdlKCdmb250RmFtaWx5JywgZmYpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiSW50ZXJcIj5JbnRlcjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJBcmlhbFwiPkFyaWFsPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlRpbWVzIE5ldyBSb21hblwiPlRpbWVzIE5ldyBSb21hbjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJtb25vc3BhY2VcIj5Nb25vc3BhY2U8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogU2V0dGluZ3MgU2VjdGlvbiAqL31cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgc3R5bGU9e3NlY3Rpb25IZWFkZXJTdHlsZX0gb25DbGljaz17KCkgPT4gc2V0U2hvd1NldHRpbmdzKCFzaG93U2V0dGluZ3MpfT5cbiAgICAgICAgICA8aDMgc3R5bGU9e3NlY3Rpb25UaXRsZVN0eWxlfT5TRVRUSU5HUzwvaDM+XG4gICAgICAgICAge3Nob3dTZXR0aW5ncyA/IDxDaGV2cm9uVXAgc2l6ZT17MTZ9IC8+IDogPENoZXZyb25Eb3duIHNpemU9ezE2fSAvPn1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHtzaG93U2V0dGluZ3MgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHBhZGRpbmc6ICcxNnB4IDE2cHggMTJweCcgfX0+XG4gICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyAuLi5sYWJlbFN0eWxlLCBkaXNwbGF5OiAnYmxvY2snLCBtYXJnaW5Cb3R0b206IDggfX0+TmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyAuLi5pbnB1dFN0eWxlLCBoZWlnaHQ6IDQwLCBwYWRkaW5nOiAnMCAxMnB4JywgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcgfX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17Y2hhdFNldHRpbmdzLm5hbWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVTZXR0aW5nQ2hhbmdlKCduYW1lJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHBhZGRpbmc6ICcwIDE2cHggMTJweCcgfX0+XG4gICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyAuLi5sYWJlbFN0eWxlLCBkaXNwbGF5OiAnYmxvY2snLCBtYXJnaW5Cb3R0b206IDggfX0+RGVzY3JpcHRpb248L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgLi4uaW5wdXRTdHlsZSwgaGVpZ2h0OiA0MCwgcGFkZGluZzogJzAgMTJweCcsIGJveFNpemluZzogJ2JvcmRlci1ib3gnIH19XG4gICAgICAgICAgICAgICAgdmFsdWU9e2NoYXRTZXR0aW5ncy5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVNldHRpbmdDaGFuZ2UoJ2Rlc2NyaXB0aW9uJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHBhZGRpbmc6ICcwIDE2cHggMTJweCcgfX0+XG4gICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyAuLi5sYWJlbFN0eWxlLCBkaXNwbGF5OiAnYmxvY2snLCBtYXJnaW5Cb3R0b206IDggfX0+QWdlbnQgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyAuLi5pbnB1dFN0eWxlLCBoZWlnaHQ6IDQwLCBwYWRkaW5nOiAnMCAxMnB4JywgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcgfX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17Y2hhdFNldHRpbmdzLmFnZW50TmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVNldHRpbmdDaGFuZ2UoJ2FnZW50TmFtZScsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiAnMCAxNnB4IDE2cHgnIH19PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgLi4ubGFiZWxTdHlsZSwgZGlzcGxheTogJ2Jsb2NrJywgbWFyZ2luQm90dG9tOiA4IH19PkxvZ28gVVJMPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IC4uLmlucHV0U3R5bGUsIGhlaWdodDogNDAsIHBhZGRpbmc6ICcwIDEycHgnLCBib3hTaXppbmc6ICdib3JkZXItYm94JyB9fVxuICAgICAgICAgICAgICAgIHZhbHVlPXtjaGF0U2V0dGluZ3MubG9nb1VybCB8fCAnJ31cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVNldHRpbmdDaGFuZ2UoJ2xvZ29VcmwnLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJodHRwczovL2V4YW1wbGUuY29tL2xvZ28ucG5nXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiAnMTZweCcsIGJvcmRlclRvcDogJzFweCBzb2xpZCAjZTBlMGUwJywgbWFyZ2luVG9wOiA4IH19PlxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiAxMywgY29sb3I6ICcjNTU1JywgbWFyZ2luQm90dG9tOiAxMiwgZm9udFdlaWdodDogNTAwIH19PlxuICAgICAgICAgICAgICAgIEZlYXR1cmVzXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5Vc2UgQXVkaW88L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyEhZmVhdHVyZUZsYWdzLnVzZUF1ZGlvfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVGZWF0dXJlRmxhZ0NoYW5nZSgndXNlQXVkaW8nLCBlLnRhcmdldC5jaGVja2VkKX1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiAyMCwgaGVpZ2h0OiAyMCwgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17Zm9ybUdyb3VwU3R5bGV9PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+VXNlIEZpbGU8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyEhZmVhdHVyZUZsYWdzLnVzZUZpbGV9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUZlYXR1cmVGbGFnQ2hhbmdlKCd1c2VGaWxlJywgZS50YXJnZXQuY2hlY2tlZCl9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogMjAsIGhlaWdodDogMjAsIGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e2Zvcm1Hcm91cFN0eWxlfT5cbiAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e2xhYmVsU3R5bGV9PlVzZSBXZWJTb2NrZXQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyEhZmVhdHVyZUZsYWdzLnVzZVdzfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVGZWF0dXJlRmxhZ0NoYW5nZSgndXNlV3MnLCBlLnRhcmdldC5jaGVja2VkKX1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiAyMCwgaGVpZ2h0OiAyMCwgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17Zm9ybUdyb3VwU3R5bGV9PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+VXNlIEhlYXJ0YmVhdCBQb2xsaW5nPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXshIWZlYXR1cmVGbGFncy51c2VQb2xsfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVGZWF0dXJlRmxhZ0NoYW5nZSgndXNlUG9sbCcsIGUudGFyZ2V0LmNoZWNrZWQpfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwLCBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIE1ldGFkYXRhIFNlY3Rpb24gKi99XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPXtzZWN0aW9uSGVhZGVyU3R5bGV9IG9uQ2xpY2s9eygpID0+IHNldFNob3dNZXRhZGF0YSghc2hvd01ldGFkYXRhKX0+XG4gICAgICAgICAgPGgzIHN0eWxlPXtzZWN0aW9uVGl0bGVTdHlsZX0+TUVUQURBVEE8L2gzPlxuICAgICAgICAgIHtzaG93TWV0YWRhdGEgPyA8Q2hldnJvblVwIHNpemU9ezE2fSAvPiA6IDxDaGV2cm9uRG93biBzaXplPXsxNn0gLz59XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7c2hvd01ldGFkYXRhICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiAnMTJweCAxNnB4JyB9fT5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTMsIGNvbG9yOiAnIzU1NScsIG1hcmdpbkJvdHRvbTogMTAgfX0+XG4gICAgICAgICAgICAgICAgRGVmaW5lIGtleS92YWx1ZSBwYXJhbWV0ZXJzIHNlbnQgYXMgY2hhdCBtZXRhZGF0YS5cbiAgICAgICAgICAgICAgICB7T2JqZWN0LmtleXMoYWdlbnRDaGF0SW5wdXRNZXRhZGF0YSB8fCB7fSkubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnYmxvY2snLCBtYXJnaW5Ub3A6IDQsIGNvbG9yOiAnIzY2NicgfX0+XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnMgZnJvbSB0aGUgd29ya2Zsb3cmYXBvcztzIENoYXQgSW5wdXQgbm9kZSBhcmUgc2hvd24gYmVsb3cuXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxidXR0b24gc3R5bGU9e2Z1bGxXaWR0aEFjdGlvbkJ1dHRvbn0gb25DbGljaz17KCkgPT4gc2V0U2hvd0FkZFBhcmFtKHRydWUpfT5cbiAgICAgICAgICAgICAgICA8UGx1cyBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj5BZGQgUGFyYW1ldGVyPC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge3BhcmFtcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiAnMnB4IDE2cHggMTJweCcsIGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogNiB9fT5cbiAgICAgICAgICAgICAgICB7cGFyYW1zLm1hcCgocCwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsID0gcC50eXBlID09PSAnYm9vbGVhbicgPyAocC52YWx1ZSA/ICdUcnVlJyA6ICdGYWxzZScpIDogU3RyaW5nKHAudmFsdWUgPz8gJycpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e3AubmFtZX0gc3R5bGU9e21ldGFSb3dTdHlsZX0+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17bWV0YU5hbWVTdHlsZX0+e3AubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXttZXRhVmFsdWVTdHlsZX0gdGl0bGU9e2Rpc3BsYXlWYWx9PlxuICAgICAgICAgICAgICAgICAgICAgICAge2Rpc3BsYXlWYWx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJFZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzbWFsbEljb25CdXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVkaXRJbmRleChpZHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFZGl0RHJhZnQoeyAuLi5wIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93RWRpdFBhcmFtKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2BFZGl0ICR7cC5uYW1lfWB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBlbmNpbCBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIlJlbW92ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17c21hbGxJY29uQnV0dG9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUmVtb3ZlUGFyYW0oaWR4KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2BSZW1vdmUgJHtwLm5hbWV9YH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VHJhc2gyIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQWN0aW9uIEJ1dHRvbnMgKi99XG4gICAgICA8ZGl2IHN0eWxlPXthY3Rpb25CYXJTdHlsZX0+XG4gICAgICAgIDxidXR0b24gc3R5bGU9e2NhbmNlbEJ1dHRvblN0eWxlfSBvbkNsaWNrPXsoKSA9PiBvbkNhbmNlbD8uKCl9PkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHN0eWxlPXtzYXZlQnV0dG9uU3R5bGV9IG9uQ2xpY2s9e2hhbmRsZVNhdmV9PlNhdmUgQ2hhbmdlczwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBTaW1wbGUgUGFyYW1ldGVyIE1vZGFscyAqL31cbiAgICAgIHtzaG93QWRkUGFyYW0gJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbE92ZXJsYXlTdHlsZX0+XG4gICAgICAgICAgPGRpdiBzdHlsZT17bW9kYWxTdHlsZX0+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbEhlYWRlclN0eWxlfT5BZGQgUGFyYW1ldGVyPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbEJvZHlTdHlsZX0+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2IH19PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzc3NycgfX0+UGFyYW1ldGVyIE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e2lucHV0U3R5bGV9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17ZHJhZnRQYXJhbS5uYW1lfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXREcmFmdFBhcmFtKChkKSA9PiAoeyAuLi5kLCBuYW1lOiBlLnRhcmdldC52YWx1ZSB9KSl9XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInBhcmFtXzFcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6IDEyIH19PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2LCBmbGV4OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5UeXBlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3NlbGVjdFN0eWxlfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZHJhZnRQYXJhbS50eXBlfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgc2V0RHJhZnRQYXJhbSgoZCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBlLnRhcmdldC52YWx1ZSBhcyBQYXJhbVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZS50YXJnZXQudmFsdWUgPT09ICdib29sZWFuJyA/IGZhbHNlIDogZS50YXJnZXQudmFsdWUgPT09ICdudW1iZXInID8gMCA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJzdHJpbmdcIj5TdHJpbmc8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm51bWJlclwiPk51bWJlcjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYm9vbGVhblwiPkJvb2xlYW48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYsIGZsZXg6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgZm9udFNpemU6IDEyLCBjb2xvcjogJyM3NzcnIH19PlJlcXVpcmVkPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3NlbGVjdFN0eWxlfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZHJhZnRQYXJhbS5yZXF1aXJlZCA/ICd5ZXMnIDogJ25vJ31cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXREcmFmdFBhcmFtKChkKSA9PiAoeyAuLi5kLCByZXF1aXJlZDogZS50YXJnZXQudmFsdWUgPT09ICd5ZXMnIH0pKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vXCI+Tm88L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInllc1wiPlllczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2IH19PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzc3NycgfX0+RGVmYXVsdCAvIFZhbHVlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICB7ZHJhZnRQYXJhbS50eXBlID09PSAnYm9vbGVhbicgPyAoXG4gICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzZWxlY3RTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2RyYWZ0UGFyYW0udmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldERyYWZ0UGFyYW0oKGQpID0+ICh7IC4uLmQsIHZhbHVlOiBlLnRhcmdldC52YWx1ZSA9PT0gJ3RydWUnIH0pKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImZhbHNlXCI+RmFsc2U8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInRydWVcIj5UcnVlPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9e2RyYWZ0UGFyYW0udHlwZSA9PT0gJ251bWJlcicgPyAnbnVtYmVyJyA6ICd0ZXh0J31cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2lucHV0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtTdHJpbmcoZHJhZnRQYXJhbS52YWx1ZSA/PyAnJyl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBzZXREcmFmdFBhcmFtKChkKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkcmFmdFBhcmFtLnR5cGUgPT09ICdudW1iZXInID8gTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSA6IGUudGFyZ2V0LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsRm9vdGVyU3R5bGV9PlxuICAgICAgICAgICAgICA8YnV0dG9uIHN0eWxlPXtjYW5jZWxCdXR0b25TdHlsZX0gb25DbGljaz17KCkgPT4gc2V0U2hvd0FkZFBhcmFtKGZhbHNlKX0+XG4gICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIHN0eWxlPXtzYXZlQnV0dG9uU3R5bGV9IG9uQ2xpY2s9e2hhbmRsZUFkZFBhcmFtfT5cbiAgICAgICAgICAgICAgICBBZGRcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0VkaXRQYXJhbSAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e21vZGFsT3ZlcmxheVN0eWxlfT5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbFN0eWxlfT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsSGVhZGVyU3R5bGV9PkVkaXQgUGFyYW1ldGVyPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbEJvZHlTdHlsZX0+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2IH19PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzc3NycgfX0+UGFyYW1ldGVyIE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e2lucHV0U3R5bGV9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17ZWRpdERyYWZ0Lm5hbWV9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldEVkaXREcmFmdCgoZCkgPT4gKHsgLi4uZCwgbmFtZTogZS50YXJnZXQudmFsdWUgfSkpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6IDEyIH19PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2LCBmbGV4OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5UeXBlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3NlbGVjdFN0eWxlfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZWRpdERyYWZ0LnR5cGV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBzZXRFZGl0RHJhZnQoKGQpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZS50YXJnZXQudmFsdWUgYXMgUGFyYW1UeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID09PSAnYm9vbGVhbidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlLnRhcmdldC52YWx1ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHR5cGVvZiBkLnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInN0cmluZ1wiPlN0cmluZzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibnVtYmVyXCI+TnVtYmVyPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJib29sZWFuXCI+Qm9vbGVhbjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogNiwgZmxleDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzc3NycgfX0+UmVxdWlyZWQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtlZGl0RHJhZnQucmVxdWlyZWQgPyAneWVzJyA6ICdubyd9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0RWRpdERyYWZ0KChkKSA9PiAoeyAuLi5kLCByZXF1aXJlZDogZS50YXJnZXQudmFsdWUgPT09ICd5ZXMnIH0pKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vXCI+Tm88L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInllc1wiPlllczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2IH19PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzc3NycgfX0+VmFsdWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgIHtlZGl0RHJhZnQudHlwZSA9PT0gJ2Jvb2xlYW4nID8gKFxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtlZGl0RHJhZnQudmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldEVkaXREcmFmdCgoZCkgPT4gKHsgLi4uZCwgdmFsdWU6IGUudGFyZ2V0LnZhbHVlID09PSAndHJ1ZScgfSkpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZmFsc2VcIj5GYWxzZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidHJ1ZVwiPlRydWU8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT17ZWRpdERyYWZ0LnR5cGUgPT09ICdudW1iZXInID8gJ251bWJlcicgOiAndGV4dCd9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtpbnB1dFN0eWxlfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17U3RyaW5nKGVkaXREcmFmdC52YWx1ZSA/PyAnJyl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBzZXRFZGl0RHJhZnQoKGQpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVkaXREcmFmdC50eXBlID09PSAnbnVtYmVyJyA/IE51bWJlcihlLnRhcmdldC52YWx1ZSkgOiBlLnRhcmdldC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbEZvb3RlclN0eWxlfT5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBzdHlsZT17Y2FuY2VsQnV0dG9uU3R5bGV9IG9uQ2xpY2s9eygpID0+IHNldFNob3dFZGl0UGFyYW0oZmFsc2UpfT5cbiAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gc3R5bGU9e3NhdmVCdXR0b25TdHlsZX0gb25DbGljaz17aGFuZGxlRWRpdFNhdmV9PlxuICAgICAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gTW9kYWwgc3R5bGVzIChzaGFyZWQpXG5jb25zdCBtb2RhbE92ZXJsYXlTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgcG9zaXRpb246ICdmaXhlZCcsXG4gIGluc2V0OiAwLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsMCwwLDAuMjUpJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICB6SW5kZXg6IDEwMDUsXG59O1xuXG5jb25zdCBtb2RhbFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICB3aWR0aDogNDIwLFxuICBtYXhXaWR0aDogJzkydncnLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgYm9yZGVyUmFkaXVzOiAxMixcbiAgYm94U2hhZG93OiAnMCA4cHggMjRweCByZ2JhKDAsMCwwLDAuMTgpJyxcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxufTtcblxuY29uc3QgbW9kYWxIZWFkZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgcGFkZGluZzogJzEycHggMTZweCcsXG4gIGZvbnRXZWlnaHQ6IDYwMCxcbiAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNlZWUnLFxufTtcblxuY29uc3QgbW9kYWxCb2R5U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gIHBhZGRpbmc6IDE2LFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICBnYXA6IDEyLFxufTtcblxuY29uc3QgbW9kYWxGb290ZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgcGFkZGluZzogMTIsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAganVzdGlmeUNvbnRlbnQ6ICdmbGV4LWVuZCcsXG4gIGdhcDogOCxcbiAgYm9yZGVyVG9wOiAnMXB4IHNvbGlkICNlZWUnLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmFmYWZhJyxcbn07Il19
|
|
392
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VuQWdlbnRDb25maWdQYW5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0dlbkFnZW50Q29uZmlnUGFuZWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQWUsTUFBTSxjQUFjLENBQUM7QUEyRHpGLElBQU0sWUFBWSxHQUFjO0lBQzlCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLGVBQWUsRUFBRSxTQUFTO0lBQzFCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsUUFBUSxFQUFFLE1BQU07Q0FDakIsQ0FBQztBQUVGLElBQU0sZUFBZSxHQUF1QjtJQUMxQyxJQUFJLEVBQUUsV0FBVztJQUNqQixXQUFXLEVBQUUsU0FBUztJQUN0QixTQUFTLEVBQUUsT0FBTztJQUNsQixPQUFPLEVBQUUsRUFBRTtJQUNYLFlBQVksRUFBRSxFQUFFO0NBQ2pCLENBQUM7QUFFRixJQUFNLG1CQUFtQixHQUFpQjtJQUN4QyxRQUFRLEVBQUUsS0FBSztJQUNmLE9BQU8sRUFBRSxLQUFLO0lBQ2QsS0FBSyxFQUFFLEtBQUs7SUFDWixPQUFPLEVBQUUsS0FBSztJQUNkLFVBQVUsRUFBRSxLQUFLO0NBQ2xCLENBQUM7QUFFRixTQUFTLGNBQWMsQ0FBQyxHQUFvQztJQUMxRCxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQyxDQUFDO1FBQzVCLElBQU0sQ0FBQyxHQUFH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R0FBd0I7SUFDMUMsT0FBTyxFQUFFLEVBQUU7SUFDWCxPQUFPLEVBQUUsTUFBTTtJQUNmLGFBQWEsRUFBRSxRQUFRO0lBQ3ZCLEdBQUcsRUFBRSxFQUFFO0NBQ1IsQ0FBQztBQUVGLElBQU0sZ0JBQWdCLEdBQXdCO0lBQzVDLE9BQU8sRUFBRSxFQUFFO0lBQ1gsT0FBTyxFQUFFLE1BQU07SUFDZixjQUFjLEVBQUUsVUFBVTtJQUMxQixHQUFHLEVBQUUsQ0FBQztJQUNOLFNBQVMsRUFBRSxnQkFBZ0I7SUFDM0IsZUFBZSxFQUFFLFNBQVM7Q0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ2hldnJvbkRvd24sIENoZXZyb25VcCwgUGx1cywgVHJhc2gyLCBQZW5jaWwsIFgsIFNwYXJrbGVzIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBDaGF0VGhlbWUge1xuICBwcmltYXJ5Q29sb3I6IHN0cmluZztcbiAgc2Vjb25kYXJ5Q29sb3I6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHRleHRDb2xvcjogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFNldHRpbmdzQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhZ2VudE5hbWU6IHN0cmluZztcbiAgbG9nb1VybD86IHN0cmluZztcbiAgYnJhbmRMb2dvVXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVGbGFncyB7XG4gIHVzZUF1ZGlvPzogYm9vbGVhbjtcbiAgdXNlRmlsZT86IGJvb2xlYW47XG4gIHVzZVdzPzogYm9vbGVhbjtcbiAgdXNlUG9sbD86IGJvb2xlYW47XG4gIHF1aWNrSW5wdXQ/OiBib29sZWFuO1xufVxuXG50eXBlIFBhcmFtVHlwZSA9ICdzdHJpbmcnIHwgJ251bWJlcicgfCAnYm9vbGVhbic7XG5cbmludGVyZmFjZSBNZXRhZGF0YVBhcmFtIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBQYXJhbVR5cGU7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbkFnZW50Q29uZmlnUGFuZWxQcm9wcyB7XG4gIHRoZW1lPzogQ2hhdFRoZW1lO1xuICBvblRoZW1lQ2hhbmdlPzogKG5leHQ6IENoYXRUaGVtZSkgPT4gdm9pZDtcblxuICBjaGF0U2V0dGluZ3M/OiBDaGF0U2V0dGluZ3NDb25maWc7XG4gIG9uQ2hhdFNldHRpbmdzQ2hhbmdlPzogKG5leHQ6IENoYXRTZXR0aW5nc0NvbmZpZykgPT4gdm9pZDtcblxuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIG9uTWV0YWRhdGFDaGFuZ2U/OiAobmV4dDogUmVjb3JkPHN0cmluZywgYW55PikgPT4gdm9pZDtcblxuICBhZ2VudENoYXRJbnB1dE1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBmZWF0dXJlRmxhZ3M/OiBGZWF0dXJlRmxhZ3M7XG4gIG9uRmVhdHVyZUZsYWdzQ2hhbmdlPzogKG5leHQ6IEZlYXR1cmVGbGFncykgPT4gdm9pZDtcblxuICBkZWZhdWx0T3Blbj86IHsgYXBwZWFyYW5jZT86IGJvb2xlYW47IHNldHRpbmdzPzogYm9vbGVhbjsgbWV0YWRhdGE/OiBib29sZWFuIH07XG4gIG9uU2F2ZT86IChwYXlsb2FkOiB7IHRoZW1lOiBDaGF0VGhlbWU7IGNoYXRTZXR0aW5nczogQ2hhdFNldHRpbmdzQ29uZmlnOyBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PjsgZmVhdHVyZUZsYWdzOiBGZWF0dXJlRmxhZ3MgfSkgPT4gdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuXG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbn1cblxuY29uc3QgZGVmYXVsdFRoZW1lOiBDaGF0VGhlbWUgPSB7XG4gIHByaW1hcnlDb2xvcjogJyM0RjQ2RTUnLFxuICBzZWNvbmRhcnlDb2xvcjogJyNmNWY1ZjUnLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmZmZmJyxcbiAgdGV4dENvbG9yOiAnIzAwMDAwMCcsXG4gIGZvbnRGYW1pbHk6ICdJbnRlciwgc2Fucy1zZXJpZicsXG4gIGZvbnRTaXplOiAnMTVweCcsXG59O1xuXG5jb25zdCBkZWZhdWx0U2V0dGluZ3M6IENoYXRTZXR0aW5nc0NvbmZpZyA9IHtcbiAgbmFtZTogJ0dlbmFzc2lzdCcsXG4gIGRlc2NyaXB0aW9uOiAnU3VwcG9ydCcsXG4gIGFnZW50TmFtZTogJ0FnZW50JyxcbiAgbG9nb1VybDogJycsXG4gIGJyYW5kTG9nb1VybDogJycsXG59O1xuXG5jb25zdCBkZWZhdWx0RmVhdHVyZUZsYWdzOiBGZWF0dXJlRmxhZ3MgPSB7XG4gIHVzZUF1ZGlvOiBmYWxzZSxcbiAgdXNlRmlsZTogZmFsc2UsXG4gIHVzZVdzOiBmYWxzZSxcbiAgdXNlUG9sbDogZmFsc2UsXG4gIHF1aWNrSW5wdXQ6IGZhbHNlLFxufTtcblxuZnVuY3Rpb24gb2JqZWN0VG9QYXJhbXMob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkKTogTWV0YWRhdGFQYXJhbVtdIHtcbiAgaWYgKCFvYmopIHJldHVybiBbXTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubWFwKChrKSA9PiB7XG4gICAgY29uc3QgdiA9IG9ialtrXTtcbiAgICBsZXQgdHlwZTogUGFyYW1UeXBlID0gJ3N0cmluZyc7XG4gICAgaWYgKHR5cGVvZiB2ID09PSAnbnVtYmVyJykgdHlwZSA9ICdudW1iZXInO1xuICAgIGVsc2UgaWYgKHR5cGVvZiB2ID09PSAnYm9vbGVhbicpIHR5cGUgPSAnYm9vbGVhbic7XG4gICAgcmV0dXJuIHsgbmFtZTogaywgdHlwZSwgcmVxdWlyZWQ6IGZhbHNlLCB2YWx1ZTogdiB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFyYW1zVG9PYmplY3QocGFyYW1zOiBNZXRhZGF0YVBhcmFtW10pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgY29uc3QgbzogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBwYXJhbXMuZm9yRWFjaCgocCkgPT4ge1xuICAgIGlmICh0eXBlb2YgcC52YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG9bcC5uYW1lXSA9IHAudmFsdWU7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG87XG59XG5cbmV4cG9ydCBjb25zdCBHZW5BZ2VudENvbmZpZ1BhbmVsOiBSZWFjdC5GQzxHZW5BZ2VudENvbmZpZ1BhbmVsUHJvcHM+ID0gKHtcbiAgdGhlbWU6IHRoZW1lUHJvcCxcbiAgb25UaGVtZUNoYW5nZSxcbiAgY2hhdFNldHRpbmdzOiBjaGF0U2V0dGluZ3NQcm9wLFxuICBvbkNoYXRTZXR0aW5nc0NoYW5nZSxcbiAgbWV0YWRhdGE6IG1ldGFkYXRhUHJvcCxcbiAgb25NZXRhZGF0YUNoYW5nZSxcbiAgYWdlbnRDaGF0SW5wdXRNZXRhZGF0YSxcbiAgZmVhdHVyZUZsYWdzOiBmZWF0dXJlRmxhZ3NQcm9wLFxuICBvbkZlYXR1cmVGbGFnc0NoYW5nZSxcbiAgZGVmYXVsdE9wZW4sXG4gIG9uU2F2ZSxcbiAgb25DYW5jZWwsXG4gIHN0eWxlLFxufSkgPT4ge1xuICAvLyBNZXJnZSB3b3JrZmxvdyBjaGF0IGlucHV0IG1ldGFkYXRhIHdpdGggdXNlciBtZXRhZGF0YVxuICBjb25zdCBtZXJnZWRNZXRhZGF0YSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHsgLi4uKGFnZW50Q2hhdElucHV0TWV0YWRhdGEgfHwge30pLCAuLi4obWV0YWRhdGFQcm9wIHx8IHt9KSB9KSxcbiAgICBbYWdlbnRDaGF0SW5wdXRNZXRhZGF0YSwgbWV0YWRhdGFQcm9wXVxuICApO1xuXG4gIC8vIENvbnRyb2xsZWQgb3IgaW50ZXJuYWwgc3RhdGUgZmFsbGJhY2tzXG4gIGNvbnN0IFt0aGVtZSwgc2V0VGhlbWVdID0gdXNlU3RhdGU8Q2hhdFRoZW1lPih0aGVtZVByb3AgfHwgZGVmYXVsdFRoZW1lKTtcbiAgY29uc3QgW2NoYXRTZXR0aW5ncywgc2V0Q2hhdFNldHRpbmdzXSA9IHVzZVN0YXRlPENoYXRTZXR0aW5nc0NvbmZpZz4oY2hhdFNldHRpbmdzUHJvcCB8fCBkZWZhdWx0U2V0dGluZ3MpO1xuICBjb25zdCBbcGFyYW1zLCBzZXRQYXJhbXNdID0gdXNlU3RhdGU8TWV0YWRhdGFQYXJhbVtdPigoKSA9PiBvYmplY3RUb1BhcmFtcyhtZXJnZWRNZXRhZGF0YSkpO1xuICBjb25zdCBbZmVhdHVyZUZsYWdzLCBzZXRGZWF0dXJlRmxhZ3NdID0gdXNlU3RhdGU8RmVhdHVyZUZsYWdzPihmZWF0dXJlRmxhZ3NQcm9wIHx8IGRlZmF1bHRGZWF0dXJlRmxhZ3MpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoZW1lUHJvcCkgc2V0VGhlbWUodGhlbWVQcm9wKTtcbiAgfSwgW3RoZW1lUHJvcF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoYXRTZXR0aW5nc1Byb3ApIHNldENoYXRTZXR0aW5ncyhjaGF0U2V0dGluZ3NQcm9wKTtcbiAgfSwgW2NoYXRTZXR0aW5nc1Byb3BdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFBhcmFtcyhvYmplY3RUb1BhcmFtcyhtZXJnZWRNZXRhZGF0YSkpO1xuICB9LCBbYWdlbnRDaGF0SW5wdXRNZXRhZGF0YSwgbWV0YWRhdGFQcm9wXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZmVhdHVyZUZsYWdzUHJvcCkgc2V0RmVhdHVyZUZsYWdzKGZlYXR1cmVGbGFnc1Byb3ApO1xuICB9LCBbZmVhdHVyZUZsYWdzUHJvcF0pO1xuXG4gIGNvbnN0IFtzaG93QXBwZWFyYW5jZSwgc2V0U2hvd0FwcGVhcmFuY2VdID0gdXNlU3RhdGUoXG4gICAgdHlwZW9mIGRlZmF1bHRPcGVuPy5hcHBlYXJhbmNlID09PSAnYm9vbGVhbicgPyAhIWRlZmF1bHRPcGVuPy5hcHBlYXJhbmNlIDogdHJ1ZVxuICApO1xuICBjb25zdCBbc2hvd1NldHRpbmdzLCBzZXRTaG93U2V0dGluZ3NdID0gdXNlU3RhdGUoXG4gICAgdHlwZW9mIGRlZmF1bHRPcGVuPy5zZXR0aW5ncyA9PT0gJ2Jvb2xlYW4nID8gISFkZWZhdWx0T3Blbj8uc2V0dGluZ3MgOiBmYWxzZVxuICApO1xuICBjb25zdCBbc2hvd01ldGFkYXRhLCBzZXRTaG93TWV0YWRhdGFdID0gdXNlU3RhdGUoXG4gICAgdHlwZW9mIGRlZmF1bHRPcGVuPy5tZXRhZGF0YSA9PT0gJ2Jvb2xlYW4nID8gISFkZWZhdWx0T3Blbj8ubWV0YWRhdGEgOiBmYWxzZVxuICApO1xuXG4gIC8vIEF1dG8tZXhwYW5kIE1ldGFkYXRhIHNlY3Rpb25cbiAgY29uc3QgcHJldk1ldGFLZXlDb3VudFJlZiA9IFJlYWN0LnVzZVJlZjxudW1iZXI+KDApO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGtleUNvdW50ID0gYWdlbnRDaGF0SW5wdXRNZXRhZGF0YSA/IE9iamVjdC5rZXlzKGFnZW50Q2hhdElucHV0TWV0YWRhdGEpLmxlbmd0aCA6IDA7XG4gICAgaWYgKGtleUNvdW50ID4gMCAmJiBwcmV2TWV0YUtleUNvdW50UmVmLmN1cnJlbnQgPT09IDApIHtcbiAgICAgIHNldFNob3dNZXRhZGF0YSh0cnVlKTtcbiAgICB9XG4gICAgcHJldk1ldGFLZXlDb3VudFJlZi5jdXJyZW50ID0ga2V5Q291bnQ7XG4gIH0sIFthZ2VudENoYXRJbnB1dE1ldGFkYXRhXSk7XG5cbiAgY29uc3QgW3Nob3dBZGRQYXJhbSwgc2V0U2hvd0FkZFBhcmFtXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2RyYWZ0UGFyYW0sIHNldERyYWZ0UGFyYW1dID0gdXNlU3RhdGU8TWV0YWRhdGFQYXJhbT4oe1xuICAgIG5hbWU6ICdwYXJhbV8xJyxcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgdmFsdWU6ICcnLFxuICB9KTtcblxuICBjb25zdCBbc2hvd0VkaXRQYXJhbSwgc2V0U2hvd0VkaXRQYXJhbV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlZGl0SW5kZXgsIHNldEVkaXRJbmRleF0gPSB1c2VTdGF0ZTxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2VkaXREcmFmdCwgc2V0RWRpdERyYWZ0XSA9IHVzZVN0YXRlPE1ldGFkYXRhUGFyYW0+KHsgbmFtZTogJycsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogZmFsc2UsIHZhbHVlOiAnJyB9KTtcblxuICBjb25zdCBtZXRhZGF0YSA9IHVzZU1lbW8oKCkgPT4gcGFyYW1zVG9PYmplY3QocGFyYW1zKSwgW3BhcmFtc10pO1xuXG4gIGNvbnN0IGhhbmRsZVRoZW1lQ2hhbmdlID0gKGtleToga2V5b2YgQ2hhdFRoZW1lLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IHsgLi4udGhlbWUsIFtrZXldOiB2YWx1ZSB9IGFzIENoYXRUaGVtZTtcbiAgICBpZiAoIXRoZW1lUHJvcCkgc2V0VGhlbWUobmV4dCk7XG4gICAgb25UaGVtZUNoYW5nZT8uKG5leHQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVNldHRpbmdDaGFuZ2UgPSAoa2V5OiBrZXlvZiBDaGF0U2V0dGluZ3NDb25maWcsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBuZXh0ID0geyAuLi5jaGF0U2V0dGluZ3MsIFtrZXldOiB2YWx1ZSB9IGFzIENoYXRTZXR0aW5nc0NvbmZpZztcbiAgICBpZiAoIWNoYXRTZXR0aW5nc1Byb3ApIHNldENoYXRTZXR0aW5ncyhuZXh0KTtcbiAgICBvbkNoYXRTZXR0aW5nc0NoYW5nZT8uKG5leHQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZlYXR1cmVGbGFnQ2hhbmdlID0gKGtleToga2V5b2YgRmVhdHVyZUZsYWdzLCB2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IG5leHQgPSB7IC4uLmZlYXR1cmVGbGFncywgW2tleV06IHZhbHVlIH0gYXMgRmVhdHVyZUZsYWdzO1xuICAgIGlmICghZmVhdHVyZUZsYWdzUHJvcCkgc2V0RmVhdHVyZUZsYWdzKG5leHQpO1xuICAgIG9uRmVhdHVyZUZsYWdzQ2hhbmdlPy4obmV4dCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQWRkUGFyYW0gPSAoKSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IGRyYWZ0UGFyYW0ubmFtZS50cmltKCk7XG4gICAgaWYgKCFuYW1lKSByZXR1cm47XG4gICAgaWYgKHBhcmFtcy5zb21lKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpKSByZXR1cm47XG4gICAgY29uc3Qgbm9ybWFsaXplZDogTWV0YWRhdGFQYXJhbSA9IHtcbiAgICAgIC4uLmRyYWZ0UGFyYW0sXG4gICAgICBuYW1lLFxuICAgICAgdmFsdWU6XG4gICAgICAgIHR5cGVvZiBkcmFmdFBhcmFtLnZhbHVlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgID8gZHJhZnRQYXJhbS52YWx1ZVxuICAgICAgICAgIDogZHJhZnRQYXJhbS50eXBlID09PSAnbnVtYmVyJ1xuICAgICAgICAgID8gMFxuICAgICAgICAgIDogZHJhZnRQYXJhbS50eXBlID09PSAnYm9vbGVhbidcbiAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgOiAnJyxcbiAgICB9O1xuICAgIGNvbnN0IG5leHQgPSBbLi4ucGFyYW1zLCBub3JtYWxpemVkXTtcbiAgICBzZXRQYXJhbXMobmV4dCk7XG4gICAgb25NZXRhZGF0YUNoYW5nZT8uKHBhcmFtc1RvT2JqZWN0KG5leHQpKTtcbiAgICBzZXREcmFmdFBhcmFtKHsgbmFtZTogJ3BhcmFtXzEnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IGZhbHNlLCB2YWx1ZTogJycgfSk7XG4gICAgc2V0U2hvd0FkZFBhcmFtKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCBjb2VyY2VGb3JUeXBlID0gKHZhbDogYW55LCB0eXBlOiBQYXJhbVR5cGUpID0+IHtcbiAgICBpZiAodHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IG4gPSBOdW1iZXIodmFsKTtcbiAgICAgIHJldHVybiBpc05hTihuKSA/IDAgOiBuO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gdmFsO1xuICAgICAgY29uc3QgcyA9IFN0cmluZyh2YWwpLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gcyA9PT0gJ3RydWUnIHx8IHMgPT09ICcxJyB8fCBzID09PSAneWVzJztcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWwgPz8gJycpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVkaXRTYXZlID0gKCkgPT4ge1xuICAgIGlmIChlZGl0SW5kZXggPT09IG51bGwpIHJldHVybjtcbiAgICBjb25zdCBuZXdOYW1lID0gZWRpdERyYWZ0Lm5hbWUudHJpbSgpO1xuICAgIGlmICghbmV3TmFtZSkgcmV0dXJuO1xuICAgIGlmIChwYXJhbXMuc29tZSgocCwgaSkgPT4gaSAhPT0gZWRpdEluZGV4ICYmIHAubmFtZSA9PT0gbmV3TmFtZSkpIHJldHVybjtcbiAgICBjb25zdCBuZXh0ID0gWy4uLnBhcmFtc107XG4gICAgY29uc3Qgb2xkID0gbmV4dFtlZGl0SW5kZXhdO1xuICAgIGNvbnN0IHVwZGF0ZWQ6IE1ldGFkYXRhUGFyYW0gPSB7IC4uLm9sZCwgLi4uZWRpdERyYWZ0IH07XG4gICAgdXBkYXRlZC52YWx1ZSA9IGNvZXJjZUZvclR5cGUob2xkLnZhbHVlLCBlZGl0RHJhZnQudHlwZSk7XG4gICAgbmV4dFtlZGl0SW5kZXhdID0gdXBkYXRlZDtcbiAgICBzZXRQYXJhbXMobmV4dCk7XG4gICAgb25NZXRhZGF0YUNoYW5nZT8uKHBhcmFtc1RvT2JqZWN0KG5leHQpKTtcbiAgICBzZXRTaG93RWRpdFBhcmFtKGZhbHNlKTtcbiAgICBzZXRFZGl0SW5kZXgobnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVtb3ZlUGFyYW0gPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5leHQgPSBwYXJhbXMuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgc2V0UGFyYW1zKG5leHQpO1xuICAgIG9uTWV0YWRhdGFDaGFuZ2U/LihwYXJhbXNUb09iamVjdChuZXh0KSk7XG4gIH07XG5cbiAgY29uc3QgY29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZmxleDogJzEnLFxuICAgIG1heFdpZHRoOiAzMDAsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZmZmZicsXG4gICAgYm9yZGVyUmFkaXVzOiA4LFxuICAgIGJveFNoYWRvdzogJzAgMnB4IDEwcHggcmdiYSgwLDAsMCwwLjEpJyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIC4uLnN0eWxlLFxuICB9O1xuXG4gIGNvbnN0IHNlY3Rpb25IZWFkZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBwYWRkaW5nOiAxNixcbiAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2UwZTBlMCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2Y5ZjlmOScsXG4gIH07XG5cbiAgY29uc3Qgc2VjdGlvblRpdGxlU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgbWFyZ2luOiAwLFxuICAgIGZvbnRTaXplOiAxMixcbiAgICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gICAgY29sb3I6ICcjNjY2JyxcbiAgICBsZXR0ZXJTcGFjaW5nOiAxLFxuICB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXM7XG5cbiAgY29uc3QgZm9ybUdyb3VwU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgcGFkZGluZzogJzE2cHggMTZweCAxMnB4JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBib3JkZXJCb3R0b206ICdub25lJyxcbiAgfTtcblxuICBjb25zdCBsYWJlbFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0geyBmb250U2l6ZTogMTQsIGNvbG9yOiAnIzMzMycgfTtcbiAgY29uc3QgY29sb3JQaWNrZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBhcHBlYXJhbmNlOiAnbm9uZScsXG4gICAgd2lkdGg6IDEyMCxcbiAgICBoZWlnaHQ6IDMyLFxuICAgIHBhZGRpbmc6IDAsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICAgIGJvcmRlclJhZGl1czogNCxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuXG4gIGNvbnN0IHNlbGVjdFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIHdpZHRoOiAxNDAsXG4gICAgaGVpZ2h0OiAzMixcbiAgICBwYWRkaW5nOiAnMCA4cHgnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gICAgZm9udFNpemU6IDE0LFxuICB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXM7XG5cbiAgY29uc3QgaW5wdXRTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogMzIsXG4gICAgcGFkZGluZzogJzAgOHB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2UwZTBlMCcsXG4gICAgYm9yZGVyUmFkaXVzOiA0LFxuICAgIGZvbnRTaXplOiAxNCxcbiAgfTtcblxuICBjb25zdCBhY3Rpb25CYXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBwYWRkaW5nOiAxMixcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdmbGV4LWVuZCcsXG4gICAgZ2FwOiA4LFxuICAgIGJvcmRlclRvcDogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmFmYWZhJyxcbiAgfTtcblxuICBjb25zdCBjYW5jZWxCdXR0b25TdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBwYWRkaW5nOiAnOHB4IDEycHgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICBib3JkZXJSYWRpdXM6IDYsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gIH07XG4gIGNvbnN0IHNhdmVCdXR0b25TdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBwYWRkaW5nOiAnOHB4IDEycHgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyMxMTE4MjcnLFxuICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICMwYjEyMjAnLFxuICAgIGJvcmRlclJhZGl1czogNixcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgfTtcblxuICBjb25zdCBmdWxsV2lkdGhBY3Rpb25CdXR0b246IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGdhcDogOCxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmc6ICcxMHB4IDEycHgnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICBib3JkZXJSYWRpdXM6IDgsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgZm9udFNpemU6IDE0LFxuICAgIGNvbG9yOiAnIzExMScsXG4gIH07XG5cbiAgY29uc3Qgc21hbGxJY29uQnV0dG9uOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICBib3JkZXJSYWRpdXM6IDgsXG4gICAgd2lkdGg6IDI4LFxuICAgIGhlaWdodDogMjgsXG4gICAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gIH07XG5cbiAgY29uc3QgbWV0YVJvd1N0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAnMWZyIG1pbm1heCg5MHB4LCAxNTBweCkgMjhweCAyOHB4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBnYXA6IDgsXG4gICAgcGFkZGluZzogJzZweCAwJyxcbiAgfTtcbiAgY29uc3QgbWV0YU5hbWVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogMTMsXG4gICAgY29sb3I6ICcjMjIyJyxcbiAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgfTtcbiAgY29uc3QgbWV0YVZhbHVlU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgbWF4V2lkdGg6IDE1MCxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIGZvbnRTaXplOiAxMyxcbiAgICBjb2xvcjogJyMxMTEnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTZlNmU2JyxcbiAgICBib3JkZXJSYWRpdXM6IDEyLFxuICAgIHBhZGRpbmc6ICc2cHggMTBweCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZhZmFmYScsXG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU2F2ZSA9ICgpID0+IHtcbiAgICBvblNhdmU/Lih7IHRoZW1lLCBjaGF0U2V0dGluZ3MsIG1ldGFkYXRhLCBmZWF0dXJlRmxhZ3MgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHN0eWxlPXtjb250YWluZXJTdHlsZX0+XG4gICAgICB7LyogQXBwZWFyYW5jZSBTZWN0aW9uICovfVxuICAgICAgPGRpdiBzdHlsZT17eyBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2UwZTBlMCcgfX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3NlY3Rpb25IZWFkZXJTdHlsZX0gb25DbGljaz17KCkgPT4gc2V0U2hvd0FwcGVhcmFuY2UoIXNob3dBcHBlYXJhbmNlKX0+XG4gICAgICAgICAgPGgzIHN0eWxlPXtzZWN0aW9uVGl0bGVTdHlsZX0+QVBQRUFSQU5DRTwvaDM+XG4gICAgICAgICAge3Nob3dBcHBlYXJhbmNlID8gPENoZXZyb25VcCBzaXplPXsxNn0gLz4gOiA8Q2hldnJvbkRvd24gc2l6ZT17MTZ9IC8+fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3Nob3dBcHBlYXJhbmNlICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17Zm9ybUdyb3VwU3R5bGV9PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e2xhYmVsU3R5bGV9PlByaW1hcnkgQ29sb3I8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aGVtZS5wcmltYXJ5Q29sb3J9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaGVtZUNoYW5nZSgncHJpbWFyeUNvbG9yJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIHN0eWxlPXtjb2xvclBpY2tlclN0eWxlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+U2Vjb25kYXJ5IENvbG9yPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGhlbWUuc2Vjb25kYXJ5Q29sb3J9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaGVtZUNoYW5nZSgnc2Vjb25kYXJ5Q29sb3InLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgc3R5bGU9e2NvbG9yUGlja2VyU3R5bGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e2Zvcm1Hcm91cFN0eWxlfT5cbiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5CYWNrZ3JvdW5kIENvbG9yPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGhlbWUuYmFja2dyb3VuZENvbG9yfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlVGhlbWVDaGFuZ2UoJ2JhY2tncm91bmRDb2xvcicsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICBzdHlsZT17Y29sb3JQaWNrZXJTdHlsZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17Zm9ybUdyb3VwU3R5bGV9PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e2xhYmVsU3R5bGV9PlRleHQgQ29sb3I8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aGVtZS50ZXh0Q29sb3J9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaGVtZUNoYW5nZSgndGV4dENvbG9yJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIHN0eWxlPXtjb2xvclBpY2tlclN0eWxlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+Rm9udCBTaXplPC9sYWJlbD5cbiAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgIHN0eWxlPXtzZWxlY3RTdHlsZX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17dGhlbWUuZm9udFNpemV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaGVtZUNoYW5nZSgnZm9udFNpemUnLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMTJweFwiPlNtYWxsICgxMnB4KTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxNXB4XCI+TWVkaXVtICgxNXB4KTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxOHB4XCI+TGFyZ2UgKDE4cHgpPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+Rm9udCBGYW1pbHk8L2xhYmVsPlxuICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgc3R5bGU9e3NlbGVjdFN0eWxlfVxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aGVtZS5mb250RmFtaWx5LnNwbGl0KCcsJylbMF0udHJpbSgpfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdiA9IGUudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZmYgPVxuICAgICAgICAgICAgICAgICAgICB2ID09PSAnSW50ZXInXG4gICAgICAgICAgICAgICAgICAgICAgPyAnSW50ZXIsIHNhbnMtc2VyaWYnXG4gICAgICAgICAgICAgICAgICAgICAgOiB2ID09PSAnQXJpYWwnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnQXJpYWwsIHNhbnMtc2VyaWYnXG4gICAgICAgICAgICAgICAgICAgICAgOiB2ID09PSAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICAgICAgICAgICAgICAgID8gXCInVGltZXMgTmV3IFJvbWFuJywgc2VyaWZcIlxuICAgICAgICAgICAgICAgICAgICAgIDogJ21vbm9zcGFjZSc7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVUaGVtZUNoYW5nZSgnZm9udEZhbWlseScsIGZmKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkludGVyXCI+SW50ZXI8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQXJpYWxcIj5BcmlhbDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJUaW1lcyBOZXcgUm9tYW5cIj5UaW1lcyBOZXcgUm9tYW48L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibW9ub3NwYWNlXCI+TW9ub3NwYWNlPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIFNldHRpbmdzIFNlY3Rpb24gKi99XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPXtzZWN0aW9uSGVhZGVyU3R5bGV9IG9uQ2xpY2s9eygpID0+IHNldFNob3dTZXR0aW5ncyghc2hvd1NldHRpbmdzKX0+XG4gICAgICAgICAgPGgzIHN0eWxlPXtzZWN0aW9uVGl0bGVTdHlsZX0+U0VUVElOR1M8L2gzPlxuICAgICAgICAgIHtzaG93U2V0dGluZ3MgPyA8Q2hldnJvblVwIHNpemU9ezE2fSAvPiA6IDxDaGV2cm9uRG93biBzaXplPXsxNn0gLz59XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7c2hvd1NldHRpbmdzICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiAnMTZweCAxNnB4IDEycHgnIH19PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgLi4ubGFiZWxTdHlsZSwgZGlzcGxheTogJ2Jsb2NrJywgbWFyZ2luQm90dG9tOiA4IH19Pk5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgLi4uaW5wdXRTdHlsZSwgaGVpZ2h0OiA0MCwgcGFkZGluZzogJzAgMTJweCcsIGJveFNpemluZzogJ2JvcmRlci1ib3gnIH19XG4gICAgICAgICAgICAgICAgdmFsdWU9e2NoYXRTZXR0aW5ncy5uYW1lfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlU2V0dGluZ0NoYW5nZSgnbmFtZScsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiAnMCAxNnB4IDEycHgnIH19PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgLi4ubGFiZWxTdHlsZSwgZGlzcGxheTogJ2Jsb2NrJywgbWFyZ2luQm90dG9tOiA4IH19PkRlc2NyaXB0aW9uPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IC4uLmlucHV0U3R5bGUsIGhlaWdodDogNDAsIHBhZGRpbmc6ICcwIDEycHgnLCBib3hTaXppbmc6ICdib3JkZXItYm94JyB9fVxuICAgICAgICAgICAgICAgIHZhbHVlPXtjaGF0U2V0dGluZ3MuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVTZXR0aW5nQ2hhbmdlKCdkZXNjcmlwdGlvbicsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiAnMCAxNnB4IDEycHgnIH19PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgLi4ubGFiZWxTdHlsZSwgZGlzcGxheTogJ2Jsb2NrJywgbWFyZ2luQm90dG9tOiA4IH19PkFnZW50IE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgLi4uaW5wdXRTdHlsZSwgaGVpZ2h0OiA0MCwgcGFkZGluZzogJzAgMTJweCcsIGJveFNpemluZzogJ2JvcmRlci1ib3gnIH19XG4gICAgICAgICAgICAgICAgdmFsdWU9e2NoYXRTZXR0aW5ncy5hZ2VudE5hbWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVTZXR0aW5nQ2hhbmdlKCdhZ2VudE5hbWUnLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgcGFkZGluZzogJzAgMTZweCAxMnB4JyB9fT5cbiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IC4uLmxhYmVsU3R5bGUsIGRpc3BsYXk6ICdibG9jaycsIG1hcmdpbkJvdHRvbTogOCB9fT5Mb2dvIFVSTDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyAuLi5pbnB1dFN0eWxlLCBoZWlnaHQ6IDQwLCBwYWRkaW5nOiAnMCAxMnB4JywgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcgfX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17Y2hhdFNldHRpbmdzLmxvZ29VcmwgfHwgJyd9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVTZXR0aW5nQ2hhbmdlKCdsb2dvVXJsJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiaHR0cHM6Ly9leGFtcGxlLmNvbS9sb2dvLnBuZ1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgcGFkZGluZzogJzAgMTZweCAxNnB4JyB9fT5cbiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IC4uLmxhYmVsU3R5bGUsIGRpc3BsYXk6ICdibG9jaycsIG1hcmdpbkJvdHRvbTogOCB9fT5GdWxsIExvZ28gVVJMPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IC4uLmlucHV0U3R5bGUsIGhlaWdodDogNDAsIHBhZGRpbmc6ICcwIDEycHgnLCBib3hTaXppbmc6ICdib3JkZXItYm94JyB9fVxuICAgICAgICAgICAgICAgIHZhbHVlPXtjaGF0U2V0dGluZ3MuYnJhbmRMb2dvVXJsIHx8ICcnfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlU2V0dGluZ0NoYW5nZSgnYnJhbmRMb2dvVXJsJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiaHR0cHM6Ly9leGFtcGxlLmNvbS9mdWxsLWxvZ28ucG5nXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTEsIGNvbG9yOiAnIzg4OCcsIG1hcmdpblRvcDogNiB9fT5cbiAgICAgICAgICAgICAgICBXaGVuIHNldCwgcmVwbGFjZXMgdGhlIHNtYWxsIGxvZ28gKyBuYW1lIHdpdGggdGhpcyBmdWxsIGxvZ28uXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHBhZGRpbmc6ICcxNnB4JywgYm9yZGVyVG9wOiAnMXB4IHNvbGlkICNlMGUwZTAnLCBtYXJnaW5Ub3A6IDggfX0+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDEzLCBjb2xvcjogJyM1NTUnLCBtYXJnaW5Cb3R0b206IDEyLCBmb250V2VpZ2h0OiA1MDAgfX0+XG4gICAgICAgICAgICAgICAgRmVhdHVyZXNcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e2Zvcm1Hcm91cFN0eWxlfT5cbiAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e2xhYmVsU3R5bGV9PlVzZSBBdWRpbzwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ISFmZWF0dXJlRmxhZ3MudXNlQXVkaW99XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUZlYXR1cmVGbGFnQ2hhbmdlKCd1c2VBdWRpbycsIGUudGFyZ2V0LmNoZWNrZWQpfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwLCBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5Vc2UgRmlsZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ISFmZWF0dXJlRmxhZ3MudXNlRmlsZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlRmVhdHVyZUZsYWdDaGFuZ2UoJ3VzZUZpbGUnLCBlLnRhcmdldC5jaGVja2VkKX1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiAyMCwgaGVpZ2h0OiAyMCwgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17Zm9ybUdyb3VwU3R5bGV9PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+VXNlIFdlYlNvY2tldDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ISFmZWF0dXJlRmxhZ3MudXNlV3N9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUZlYXR1cmVGbGFnQ2hhbmdlKCd1c2VXcycsIGUudGFyZ2V0LmNoZWNrZWQpfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwLCBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5Vc2UgSGVhcnRiZWF0IFBvbGxpbmc8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyEhZmVhdHVyZUZsYWdzLnVzZVBvbGx9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUZlYXR1cmVGbGFnQ2hhbmdlKCd1c2VQb2xsJywgZS50YXJnZXQuY2hlY2tlZCl9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogMjAsIGhlaWdodDogMjAsIGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e2Zvcm1Hcm91cFN0eWxlfT5cbiAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e2xhYmVsU3R5bGV9PlF1aWNrIE1lc3NhZ2UgSW5wdXQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyEhZmVhdHVyZUZsYWdzLnF1aWNrSW5wdXR9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUZlYXR1cmVGbGFnQ2hhbmdlKCdxdWlja0lucHV0JywgZS50YXJnZXQuY2hlY2tlZCl9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogMjAsIGhlaWdodDogMjAsIGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogTWV0YWRhdGEgU2VjdGlvbiAqL31cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgc3R5bGU9e3NlY3Rpb25IZWFkZXJTdHlsZX0gb25DbGljaz17KCkgPT4gc2V0U2hvd01ldGFkYXRhKCFzaG93TWV0YWRhdGEpfT5cbiAgICAgICAgICA8aDMgc3R5bGU9e3NlY3Rpb25UaXRsZVN0eWxlfT5NRVRBREFUQTwvaDM+XG4gICAgICAgICAge3Nob3dNZXRhZGF0YSA/IDxDaGV2cm9uVXAgc2l6ZT17MTZ9IC8+IDogPENoZXZyb25Eb3duIHNpemU9ezE2fSAvPn1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHtzaG93TWV0YWRhdGEgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHBhZGRpbmc6ICcxMnB4IDE2cHgnIH19PlxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiAxMywgY29sb3I6ICcjNTU1JywgbWFyZ2luQm90dG9tOiAxMCB9fT5cbiAgICAgICAgICAgICAgICBEZWZpbmUga2V5L3ZhbHVlIHBhcmFtZXRlcnMgc2VudCBhcyBjaGF0IG1ldGFkYXRhLlxuICAgICAgICAgICAgICAgIHtPYmplY3Qua2V5cyhhZ2VudENoYXRJbnB1dE1ldGFkYXRhIHx8IHt9KS5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdibG9jaycsIG1hcmdpblRvcDogNCwgY29sb3I6ICcjNjY2JyB9fT5cbiAgICAgICAgICAgICAgICAgICAgUGFyYW1ldGVycyBmcm9tIHRoZSB3b3JrZmxvdyZhcG9zO3MgQ2hhdCBJbnB1dCBub2RlIGFyZSBzaG93biBiZWxvdy5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBzdHlsZT17ZnVsbFdpZHRoQWN0aW9uQnV0dG9ufSBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkUGFyYW0odHJ1ZSl9PlxuICAgICAgICAgICAgICAgIDxQbHVzIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICAgIDxzcGFuPkFkZCBQYXJhbWV0ZXI8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7cGFyYW1zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHBhZGRpbmc6ICcycHggMTZweCAxMnB4JywgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2IH19PlxuICAgICAgICAgICAgICAgIHtwYXJhbXMubWFwKChwLCBpZHgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlWYWwgPSBwLnR5cGUgPT09ICdib29sZWFuJyA/IChwLnZhbHVlID8gJ1RydWUnIDogJ0ZhbHNlJykgOiBTdHJpbmcocC52YWx1ZSA/PyAnJyk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17cC5uYW1lfSBzdHlsZT17bWV0YVJvd1N0eWxlfT5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXttZXRhTmFtZVN0eWxlfT57cC5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e21ldGFWYWx1ZVN0eWxlfSB0aXRsZT17ZGlzcGxheVZhbH0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVZhbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIkVkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3NtYWxsSWNvbkJ1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RWRpdEluZGV4KGlkeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVkaXREcmFmdCh7IC4uLnAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dFZGl0UGFyYW0odHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17YEVkaXQgJHtwLm5hbWV9YH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGVuY2lsIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiUmVtb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzbWFsbEljb25CdXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVSZW1vdmVQYXJhbShpZHgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17YFJlbW92ZSAke3AubmFtZX1gfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUcmFzaDIgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBBY3Rpb24gQnV0dG9ucyAqL31cbiAgICAgIDxkaXYgc3R5bGU9e2FjdGlvbkJhclN0eWxlfT5cbiAgICAgICAgPGJ1dHRvbiBzdHlsZT17Y2FuY2VsQnV0dG9uU3R5bGV9IG9uQ2xpY2s9eygpID0+IG9uQ2FuY2VsPy4oKX0+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gc3R5bGU9e3NhdmVCdXR0b25TdHlsZX0gb25DbGljaz17aGFuZGxlU2F2ZX0+U2F2ZSBDaGFuZ2VzPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIFNpbXBsZSBQYXJhbWV0ZXIgTW9kYWxzICovfVxuICAgICAge3Nob3dBZGRQYXJhbSAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e21vZGFsT3ZlcmxheVN0eWxlfT5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbFN0eWxlfT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsSGVhZGVyU3R5bGV9PkFkZCBQYXJhbWV0ZXI8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsQm9keVN0eWxlfT5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYgfX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5QYXJhbWV0ZXIgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT17aW5wdXRTdHlsZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtkcmFmdFBhcmFtLm5hbWV9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldERyYWZ0UGFyYW0oKGQpID0+ICh7IC4uLmQsIG5hbWU6IGUudGFyZ2V0LnZhbHVlIH0pKX1cbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwicGFyYW1fMVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogMTIgfX0+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYsIGZsZXg6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgZm9udFNpemU6IDEyLCBjb2xvcjogJyM3NzcnIH19PlR5cGU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtkcmFmdFBhcmFtLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBzZXREcmFmdFBhcmFtKChkKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGUudGFyZ2V0LnZhbHVlIGFzIFBhcmFtVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLnRhcmdldC52YWx1ZSA9PT0gJ2Jvb2xlYW4nID8gZmFsc2UgOiBlLnRhcmdldC52YWx1ZSA9PT0gJ251bWJlcicgPyAwIDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInN0cmluZ1wiPlN0cmluZzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibnVtYmVyXCI+TnVtYmVyPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJib29sZWFuXCI+Qm9vbGVhbjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogNiwgZmxleDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzc3NycgfX0+UmVxdWlyZWQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtkcmFmdFBhcmFtLnJlcXVpcmVkID8gJ3llcycgOiAnbm8nfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldERyYWZ0UGFyYW0oKGQpID0+ICh7IC4uLmQsIHJlcXVpcmVkOiBlLnRhcmdldC52YWx1ZSA9PT0gJ3llcycgfSkpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm9cIj5Obzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwieWVzXCI+WWVzPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYgfX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5EZWZhdWx0IC8gVmFsdWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgIHtkcmFmdFBhcmFtLnR5cGUgPT09ICdib29sZWFuJyA/IChcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3NlbGVjdFN0eWxlfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZHJhZnRQYXJhbS52YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0RHJhZnRQYXJhbSgoZCkgPT4gKHsgLi4uZCwgdmFsdWU6IGUudGFyZ2V0LnZhbHVlID09PSAndHJ1ZScgfSkpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZmFsc2VcIj5GYWxzZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidHJ1ZVwiPlRydWU8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT17ZHJhZnRQYXJhbS50eXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3RleHQnfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17aW5wdXRTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e1N0cmluZyhkcmFmdFBhcmFtLnZhbHVlID8/ICcnKX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHNldERyYWZ0UGFyYW0oKGQpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRyYWZ0UGFyYW0udHlwZSA9PT0gJ251bWJlcicgPyBOdW1iZXIoZS50YXJnZXQudmFsdWUpIDogZS50YXJnZXQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBzdHlsZT17bW9kYWxGb290ZXJTdHlsZX0+XG4gICAgICAgICAgICAgIDxidXR0b24gc3R5bGU9e2NhbmNlbEJ1dHRvblN0eWxlfSBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkUGFyYW0oZmFsc2UpfT5cbiAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gc3R5bGU9e3NhdmVCdXR0b25TdHlsZX0gb25DbGljaz17aGFuZGxlQWRkUGFyYW19PlxuICAgICAgICAgICAgICAgIEFkZFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93RWRpdFBhcmFtICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17bW9kYWxPdmVybGF5U3R5bGV9PlxuICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsU3R5bGV9PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17bW9kYWxIZWFkZXJTdHlsZX0+RWRpdCBQYXJhbWV0ZXI8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsQm9keVN0eWxlfT5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYgfX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5QYXJhbWV0ZXIgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT17aW5wdXRTdHlsZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtlZGl0RHJhZnQubmFtZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0RWRpdERyYWZ0KChkKSA9PiAoeyAuLi5kLCBuYW1lOiBlLnRhcmdldC52YWx1ZSB9KSl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogMTIgfX0+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYsIGZsZXg6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgZm9udFNpemU6IDEyLCBjb2xvcjogJyM3NzcnIH19PlR5cGU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtlZGl0RHJhZnQudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHNldEVkaXREcmFmdCgoZCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBlLnRhcmdldC52YWx1ZSBhcyBQYXJhbVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPT09ICdib29sZWFuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGUudGFyZ2V0LnZhbHVlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdHlwZW9mIGQudmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBkLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwic3RyaW5nXCI+U3RyaW5nPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJudW1iZXJcIj5OdW1iZXI8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJvb2xlYW5cIj5Cb29sZWFuPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2LCBmbGV4OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5SZXF1aXJlZDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzZWxlY3RTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2VkaXREcmFmdC5yZXF1aXJlZCA/ICd5ZXMnIDogJ25vJ31cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRFZGl0RHJhZnQoKGQpID0+ICh7IC4uLmQsIHJlcXVpcmVkOiBlLnRhcmdldC52YWx1ZSA9PT0gJ3llcycgfSkpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm9cIj5Obzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwieWVzXCI+WWVzPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYgfX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5WYWx1ZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAge2VkaXREcmFmdC50eXBlID09PSAnYm9vbGVhbicgPyAoXG4gICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzZWxlY3RTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2VkaXREcmFmdC52YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0RWRpdERyYWZ0KChkKSA9PiAoeyAuLi5kLCB2YWx1ZTogZS50YXJnZXQudmFsdWUgPT09ICd0cnVlJyB9KSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJmYWxzZVwiPkZhbHNlPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ0cnVlXCI+VHJ1ZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPXtlZGl0RHJhZnQudHlwZSA9PT0gJ251bWJlcicgPyAnbnVtYmVyJyA6ICd0ZXh0J31cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2lucHV0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtTdHJpbmcoZWRpdERyYWZ0LnZhbHVlID8/ICcnKX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHNldEVkaXREcmFmdCgoZCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmQsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZWRpdERyYWZ0LnR5cGUgPT09ICdudW1iZXInID8gTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSA6IGUudGFyZ2V0LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsRm9vdGVyU3R5bGV9PlxuICAgICAgICAgICAgICA8YnV0dG9uIHN0eWxlPXtjYW5jZWxCdXR0b25TdHlsZX0gb25DbGljaz17KCkgPT4gc2V0U2hvd0VkaXRQYXJhbShmYWxzZSl9PlxuICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBzdHlsZT17c2F2ZUJ1dHRvblN0eWxlfSBvbkNsaWNrPXtoYW5kbGVFZGl0U2F2ZX0+XG4gICAgICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG4vLyBNb2RhbCBzdHlsZXMgKHNoYXJlZClcbmNvbnN0IG1vZGFsT3ZlcmxheVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgaW5zZXQ6IDAsXG4gIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsMC4yNSknLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gIHpJbmRleDogMTAwNSxcbn07XG5cbmNvbnN0IG1vZGFsU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gIHdpZHRoOiA0MjAsXG4gIG1heFdpZHRoOiAnOTJ2dycsXG4gIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLFxuICBib3JkZXJSYWRpdXM6IDEyLFxuICBib3hTaGFkb3c6ICcwIDhweCAyNHB4IHJnYmEoMCwwLDAsMC4xOCknLFxuICBvdmVyZmxvdzogJ2hpZGRlbicsXG59O1xuXG5jb25zdCBtb2RhbEhlYWRlclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICBwYWRkaW5nOiAnMTJweCAxNnB4JyxcbiAgZm9udFdlaWdodDogNjAwLFxuICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2VlZScsXG59O1xuXG5jb25zdCBtb2RhbEJvZHlTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgcGFkZGluZzogMTYsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gIGdhcDogMTIsXG59O1xuXG5jb25zdCBtb2RhbEZvb3RlclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICBwYWRkaW5nOiAxMixcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtZW5kJyxcbiAgZ2FwOiA4LFxuICBib3JkZXJUb3A6ICcxcHggc29saWQgI2VlZScsXG4gIGJhY2tncm91bmRDb2xvcjogJyNmYWZhZmEnLFxufTsiXX0=
|
package/dist/hooks/useChat.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChatMessage, Attachment } from "../types";
|
|
1
|
+
import { ChatMessage, Attachment, FormNodeLocale } from "../types";
|
|
2
2
|
export interface UseChatProps {
|
|
3
3
|
baseUrl: string;
|
|
4
4
|
websocketUrl?: string;
|
|
@@ -26,6 +26,8 @@ export declare const useChat: ({ baseUrl, websocketUrl, apiKey, tenant, metadata
|
|
|
26
26
|
uploadFile: (file: File) => Promise<Attachment | null>;
|
|
27
27
|
resetConversation: (reCaptchaToken?: string | undefined) => Promise<void>;
|
|
28
28
|
startConversation: (reCaptchaToken?: string | undefined) => Promise<void>;
|
|
29
|
+
triggerStartForm: (reCaptchaToken?: string | undefined) => Promise<void>;
|
|
30
|
+
shouldTriggerStartForm: boolean;
|
|
29
31
|
connectionState: "connecting" | "connected" | "disconnected";
|
|
30
32
|
conversationId: string | null;
|
|
31
33
|
guestToken: string | null;
|
|
@@ -40,6 +42,7 @@ export declare const useChat: ({ baseUrl, websocketUrl, apiKey, tenant, metadata
|
|
|
40
42
|
inputDisclaimerHtml: string | null;
|
|
41
43
|
thinkingPhrases: string[];
|
|
42
44
|
thinkingDelayMs: number;
|
|
45
|
+
formNodeLocales: Record<string, Record<string, FormNodeLocale>>;
|
|
43
46
|
availableLanguages: string[] | null;
|
|
44
47
|
chatInputMetadata: Record<string, unknown>;
|
|
45
48
|
agentId: string | null;
|