1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215 | 1×
| (function(global){global.wrappers['/Users/lqez/Dev/summernote/src/js/bs3/ui.js']=[function(require,module,exports,__dirname,__filename){ "use strict";
exports.__esModule = true;
var jquery_1 = require("jquery");
var renderer_1 = require("../base/renderer");
var editor = renderer_1["default"].create('<div class="note-editor note-frame panel panel-default"/>');
var toolbar = renderer_1["default"].create('<div class="note-toolbar panel-heading" role="toolbar"></div></div>');
var editingArea = renderer_1["default"].create('<div class="note-editing-area"/>');
var codable = renderer_1["default"].create('<textarea class="note-codable" role="textbox" aria-multiline="true"/>');
var editable = renderer_1["default"].create('<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"/>');
var statusbar = renderer_1["default"].create([
'<output class="note-status-output" aria-live="polite"/>',
'<div class="note-statusbar" role="status">',
' <div class="note-resizebar" role="seperator" aria-orientation="horizontal" aria-label="Resize">',
' <div class="note-icon-bar"/>',
' <div class="note-icon-bar"/>',
' <div class="note-icon-bar"/>',
' </div>',
'</div>',
].join(''));
var airEditor = renderer_1["default"].create('<div class="note-editor"/>');
var airEditable = renderer_1["default"].create([
'<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"/>',
'<output class="note-status-output" aria-live="polite"/>',
].join(''));
var buttonGroup = renderer_1["default"].create('<div class="note-btn-group btn-group">');
var dropdown = renderer_1["default"].create('<ul class="dropdown-menu" role="list">', function ($node, options) {
var markup = jquery_1["default"].isArray(options.items) ? options.items.map(function (item) {
var value = (typeof item === 'string') ? item : (item.value || '');
var content = options.template ? options.template(item) : item;
var option = (typeof item === 'object') ? item.option : undefined;
var dataValue = 'data-value="' + value + '"';
var dataOption = (option !== undefined) ? ' data-option="' + option + '"' : '';
return '<li role="listitem" aria-label="' + value + '"><a href="#" ' + (dataValue + dataOption) + '>' + content + '</a></li>';
}).join('') : options.items;
$node.html(markup).attr({ 'aria-label': options.title });
});
var dropdownButtonContents = function (contents, options) {
return contents + ' ' + icon(options.icons.caret, 'span');
};
var dropdownCheck = renderer_1["default"].create('<ul class="dropdown-menu note-check" role="list">', function ($node, options) {
var markup = jquery_1["default"].isArray(options.items) ? options.items.map(function (item) {
var value = (typeof item === 'string') ? item : (item.value || '');
var content = options.template ? options.template(item) : item;
return '<li role="listitem" aria-label="' + item + '"><a href="#" data-value="' + value + '">' + icon(options.checkClassName) + ' ' + content + '</a></li>';
}).join('') : options.items;
$node.html(markup).attr({ 'aria-label': options.title });
});
var palette = renderer_1["default"].create('<div class="note-color-palette"/>', function ($node, options) {
var contents = [];
for (var row = 0, rowSize = options.colors.length; row < rowSize; row++) {
var eventName = options.eventName;
var colors = options.colors[row];
var colorsName = options.colorsName[row];
var buttons = [];
for (var col = 0, colSize = colors.length; col < colSize; col++) {
var color = colors[col];
var colorName = colorsName[col];
buttons.push([
'<button type="button" class="note-color-btn"',
'style="background-color:', color, '" ',
'data-event="', eventName, '" ',
'data-value="', color, '" ',
'title="', colorName, '" ',
'aria-label="', colorName, '" ',
'data-toggle="button" tabindex="-1"></button>',
].join(''));
}
contents.push('<div class="note-color-row">' + buttons.join('') + '</div>');
}
$node.html(contents.join(''));
if (options.tooltip) {
$node.find('.note-color-btn').tooltip({
container: options.container,
trigger: 'hover',
placement: 'bottom'
});
}
});
var dialog = renderer_1["default"].create('<div class="modal" aria-hidden="false" tabindex="-1" role="dialog"/>', function ($node, options) {
if (options.fade) {
$node.addClass('fade');
}
$node.attr({
'aria-label': options.title
});
$node.html([
'<div class="modal-dialog">',
' <div class="modal-content">',
(options.title
? ' <div class="modal-header">' +
' <button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">×</button>' +
' <h4 class="modal-title">' + options.title + '</h4>' +
' </div>' : ''),
' <div class="modal-body">' + options.body + '</div>',
(options.footer
? ' <div class="modal-footer">' + options.footer + '</div>' : ''),
' </div>',
'</div>',
].join(''));
});
var popover = renderer_1["default"].create([
'<div class="note-popover popover in">',
' <div class="arrow"/>',
' <div class="popover-content note-children-container"/>',
'</div>',
].join(''), function ($node, options) {
var direction = typeof options.direction !== 'undefined' ? options.direction : 'bottom';
$node.addClass(direction);
if (options.hideArrow) {
$node.find('.arrow').hide();
}
});
var checkbox = renderer_1["default"].create('<div class="checkbox"></div>', function ($node, options) {
$node.html([
'<label' + (options.id ? ' for="' + options.id + '"' : '') + '>',
' <input role="checkbox" type="checkbox"' + (options.id ? ' id="' + options.id + '"' : ''),
(options.checked ? ' checked' : ''),
' aria-checked="' + (options.checked ? 'true' : 'false') + '"/>',
(options.text ? options.text : ''),
'</label>',
].join(''));
});
var icon = function (iconClassName, tagName) {
tagName = tagName || 'i';
return '<' + tagName + ' class="' + iconClassName + '"/>';
};
var ui = {
editor: editor,
toolbar: toolbar,
editingArea: editingArea,
codable: codable,
editable: editable,
statusbar: statusbar,
airEditor: airEditor,
airEditable: airEditable,
buttonGroup: buttonGroup,
dropdown: dropdown,
dropdownButtonContents: dropdownButtonContents,
dropdownCheck: dropdownCheck,
palette: palette,
dialog: dialog,
popover: popover,
checkbox: checkbox,
icon: icon,
options: {},
button: function ($node, options) {
return renderer_1["default"].create('<button type="button" class="note-btn btn btn-default btn-sm" role="button" tabindex="-1">', function ($node, options) {
if (options && options.tooltip) {
$node.attr({
title: options.tooltip,
'aria-label': options.tooltip
}).tooltip({
container: (options.container !== undefined) ? options.container : 'body',
trigger: 'hover',
placement: 'bottom'
}).on('click', function (e) {
jquery_1["default"](e.currentTarget).tooltip('hide');
});
}
})($node, options);
},
toggleBtn: function ($btn, isEnable) {
$btn.toggleClass('disabled', !isEnable);
$btn.attr('disabled', !isEnable);
},
toggleBtnActive: function ($btn, isActive) {
$btn.toggleClass('active', isActive);
},
onDialogShown: function ($dialog, handler) {
$dialog.one('shown.bs.modal', handler);
},
onDialogHidden: function ($dialog, handler) {
$dialog.one('hidden.bs.modal', handler);
},
showDialog: function ($dialog) {
$dialog.modal('show');
},
hideDialog: function ($dialog) {
$dialog.modal('hide');
},
createLayout: function ($note, options) {
var $editor = (options.airMode ? ui.airEditor([
ui.editingArea([
ui.airEditable(),
]),
]) : ui.editor([
ui.toolbar(),
ui.editingArea([
ui.codable(),
ui.editable(),
]),
ui.statusbar(),
])).render();
$editor.insertAfter($note);
return {
note: $note,
editor: $editor,
toolbar: $editor.find('.note-toolbar'),
editingArea: $editor.find('.note-editing-area'),
editable: $editor.find('.note-editable'),
codable: $editor.find('.note-codable'),
statusbar: $editor.find('.note-statusbar')
};
},
removeLayout: function ($note, layoutInfo) {
$note.html(layoutInfo.editable.html());
layoutInfo.editor.remove();
$note.show();
}
};
exports["default"] = ui;
},'src/js/bs3/ui.js',{"jquery":"/Users/lqez/Dev/summernote/node_modules/jquery/dist/jquery.js","../base/renderer":"/Users/lqez/Dev/summernote/src/js/base/renderer.js"}];})(this);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1aS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlDQUF1QjtBQUN2Qiw2Q0FBd0M7QUFFeEMsSUFBTSxNQUFNLEdBQUcscUJBQVEsQ0FBQyxNQUFNLENBQUMsMkRBQTJELENBQUMsQ0FBQztBQUM1RixJQUFNLE9BQU8sR0FBRyxxQkFBUSxDQUFDLE1BQU0sQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQ3ZHLElBQU0sV0FBVyxHQUFHLHFCQUFRLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7QUFDeEUsSUFBTSxPQUFPLEdBQUcscUJBQVEsQ0FBQyxNQUFNLENBQUMsdUVBQXVFLENBQUMsQ0FBQztBQUN6RyxJQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLE1BQU0sQ0FBQywwRkFBMEYsQ0FBQyxDQUFDO0FBQzdILElBQU0sU0FBUyxHQUFHLHFCQUFRLENBQUMsTUFBTSxDQUFDO0lBQ2hDLHlEQUF5RDtJQUN6RCw0Q0FBNEM7SUFDNUMsbUdBQW1HO0lBQ25HLGtDQUFrQztJQUNsQyxrQ0FBa0M7SUFDbEMsa0NBQWtDO0lBQ2xDLFVBQVU7SUFDVixRQUFRO0NBQ1QsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUVaLElBQU0sU0FBUyxHQUFHLHFCQUFRLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFDaEUsSUFBTSxXQUFXLEdBQUcscUJBQVEsQ0FBQyxNQUFNLENBQUM7SUFDbEMsMEZBQTBGO0lBQzFGLHlEQUF5RDtDQUMxRCxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRVosSUFBTSxXQUFXLEdBQUcscUJBQVEsQ0FBQyxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQztBQUU5RSxJQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLE1BQU0sQ0FBQyx3Q0FBd0MsRUFBRSxVQUFTLEtBQUssRUFBRSxPQUFPO0lBQ2hHLElBQU0s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WUFBWSxFQUFFLFVBQVMsS0FBSyxFQUFFLFVBQVU7UUFDdEMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZixDQUFDO0NBQ0YsQ0FBQztBQUVGLHFCQUFlLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgcmVuZGVyZXIgZnJvbSAnLi4vYmFzZS9yZW5kZXJlcic7XG5cbmNvbnN0IGVkaXRvciA9IHJlbmRlcmVyLmNyZWF0ZSgnPGRpdiBjbGFzcz1cIm5vdGUtZWRpdG9yIG5vdGUtZnJhbWUgcGFuZWwgcGFuZWwtZGVmYXVsdFwiLz4nKTtcbmNvbnN0IHRvb2xiYXIgPSByZW5kZXJlci5jcmVhdGUoJzxkaXYgY2xhc3M9XCJub3RlLXRvb2xiYXIgcGFuZWwtaGVhZGluZ1wiIHJvbGU9XCJ0b29sYmFyXCI+PC9kaXY+PC9kaXY+Jyk7XG5jb25zdCBlZGl0aW5nQXJlYSA9IHJlbmRlcmVyLmNyZWF0ZSgnPGRpdiBjbGFzcz1cIm5vdGUtZWRpdGluZy1hcmVhXCIvPicpO1xuY29uc3QgY29kYWJsZSA9IHJlbmRlcmVyLmNyZWF0ZSgnPHRleHRhcmVhIGNsYXNzPVwibm90ZS1jb2RhYmxlXCIgcm9sZT1cInRleHRib3hcIiBhcmlhLW11bHRpbGluZT1cInRydWVcIi8+Jyk7XG5jb25zdCBlZGl0YWJsZSA9IHJlbmRlcmVyLmNyZWF0ZSgnPGRpdiBjbGFzcz1cIm5vdGUtZWRpdGFibGVcIiBjb250ZW50RWRpdGFibGU9XCJ0cnVlXCIgcm9sZT1cInRleHRib3hcIiBhcmlhLW11bHRpbGluZT1cInRydWVcIi8+Jyk7XG5jb25zdCBzdGF0dXNiYXIgPSByZW5kZXJlci5jcmVhdGUoW1xuICAnPG91dHB1dCBjbGFzcz1cIm5vdGUtc3RhdHVzLW91dHB1dFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiLz4nLFxuICAnPGRpdiBjbGFzcz1cIm5vdGUtc3RhdHVzYmFyXCIgcm9sZT1cInN0YXR1c1wiPicsXG4gICcgIDxkaXYgY2xhc3M9XCJub3RlLXJlc2l6ZWJhclwiIHJvbGU9XCJzZXBlcmF0b3JcIiBhcmlhLW9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiIGFyaWEtbGFiZWw9XCJSZXNpemVcIj4nLFxuICAnICAgIDxkaXYgY2xhc3M9XCJub3RlLWljb24tYmFyXCIvPicsXG4gICcgICAgPGRpdiBjbGFzcz1cIm5vdGUtaWNvbi1iYXJcIi8+JyxcbiAgJyAgICA8ZGl2IGNsYXNzPVwibm90ZS1pY29uLWJhclwiLz4nLFxuICAnICA8L2Rpdj4nLFxuICAnPC9kaXY+Jyxcbl0uam9pbignJykpO1xuXG5jb25zdCBhaXJFZGl0b3IgPSByZW5kZXJlci5jcmVhdGUoJzxkaXYgY2xhc3M9XCJub3RlLWVkaXRvclwiLz4nKTtcbmNvbnN0IGFpckVkaXRhYmxlID0gcmVuZGVyZXIuY3JlYXRlKFtcbiAgJzxkaXYgY2xhc3M9XCJub3RlLWVkaXRhYmxlXCIgY29udGVudEVkaXRhYmxlPVwidHJ1ZVwiIHJvbGU9XCJ0ZXh0Ym94XCIgYXJpYS1tdWx0aWxpbmU9XCJ0cnVlXCIvPicsXG4gICc8b3V0cHV0IGNsYXNzPVwibm90ZS1zdGF0dXMtb3V0cHV0XCIgYXJpYS1saXZlPVwicG9saXRlXCIvPicsXG5dLmpvaW4oJycpKTtcblxuY29uc3QgYnV0dG9uR3JvdXAgPSByZW5kZXJlci5jcmVhdGUoJzxkaXYgY2xhc3M9XCJub3RlLWJ0bi1ncm91cCBidG4tZ3JvdXBcIj4nKTtcblxuY29uc3QgZHJvcGRvd24gPSByZW5kZXJlci5jcmVhdGUoJzx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiByb2xlPVwibGlzdFwiPicsIGZ1bmN0aW9uKCRub2RlLCBvcHRpb25zKSB7XG4gIGNvbnN0IG1hcmt1cCA9ICQuaXNBcnJheShvcHRpb25zLml0ZW1zKSA/IG9wdGlvbnMuaXRlbXMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICBjb25zdCB2YWx1ZSA9ICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpID8gaXRlbSA6IChpdGVtLnZhbHVlIHx8ICcnKTtcbiAgICBjb25zdCBjb250ZW50ID0gb3B0aW9ucy50ZW1wbGF0ZSA/IG9wdGlvbnMudGVtcGxhdGUoaXRlbSkgOiBpdGVtO1xuICAgIGNvbnN0IG9wdGlvbiA9ICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpID8gaXRlbS5vcHRpb24gOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBkYXRhVmFsdWUgPSAnZGF0YS12YWx1ZT1cIicgKyB2YWx1ZSArICdcIic7XG4gICAgY29uc3QgZGF0YU9wdGlvbiA9IChvcHRpb24gIT09IHVuZGVmaW5lZCkgPyAnIGRhdGEtb3B0aW9uPVwiJyArIG9wdGlvbiArICdcIicgOiAnJztcbiAgICByZXR1cm4gJzxsaSByb2xlPVwibGlzdGl0ZW1cIiBhcmlhLWxhYmVsPVwiJyArIHZhbHVlICsgJ1wiPjxhIGhyZWY9XCIjXCIgJyArIChkYXRhVmFsdWUgKyBkYXRhT3B0aW9uKSArICc+JyArIGNvbnRlbnQgKyAnPC9hPjwvbGk+JztcbiAgfSkuam9pbignJykgOiBvcHRpb25zLml0ZW1zO1xuXG4gICRub2RlLmh0bWwobWFya3VwKS5hdHRyKHsgJ2FyaWEtbGFiZWwnOiBvcHRpb25zLnRpdGxlIH0pO1xufSk7XG5cbmNvbnN0IGRyb3Bkb3duQnV0dG9uQ29udGVudHMgPSBmdW5jdGlvbihjb250ZW50cywgb3B0aW9ucykge1xuICByZXR1cm4gY29udGVudHMgKyAnICcgKyBpY29uKG9wdGlvbnMuaWNvbnMuY2FyZXQsICdzcGFuJyk7XG59O1xuXG5jb25zdCBkcm9wZG93bkNoZWNrID0gcmVuZGVyZXIuY3JlYXRlKCc8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51IG5vdGUtY2hlY2tcIiByb2xlPVwibGlzdFwiPicsIGZ1bmN0aW9uKCRub2RlLCBvcHRpb25zKSB7XG4gIGNvbnN0IG1hcmt1cCA9ICQuaXNBcnJheShvcHRpb25zLml0ZW1zKSA/IG9wdGlvbnMuaXRlbXMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICBjb25zdCB2YWx1ZSA9ICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpID8gaXRlbSA6IChpdGVtLnZhbHVlIHx8ICcnKTtcbiAgICBjb25zdCBjb250ZW50ID0gb3B0aW9ucy50ZW1wbGF0ZSA/IG9wdGlvbnMudGVtcGxhdGUoaXRlbSkgOiBpdGVtO1xuICAgIHJldHVybiAnPGxpIHJvbGU9XCJsaXN0aXRlbVwiIGFyaWEtbGFiZWw9XCInICsgaXRlbSArICdcIj48YSBocmVmPVwiI1wiIGRhdGEtdmFsdWU9XCInICsgdmFsdWUgKyAnXCI+JyArIGljb24ob3B0aW9ucy5jaGVja0NsYXNzTmFtZSkgKyAnICcgKyBjb250ZW50ICsgJzwvYT48L2xpPic7XG4gIH0pLmpvaW4oJycpIDogb3B0aW9ucy5pdGVtcztcbiAgJG5vZGUuaHRtbChtYXJrdXApLmF0dHIoeyAnYXJpYS1sYWJlbCc6IG9wdGlvbnMudGl0bGUgfSk7XG59KTtcblxuY29uc3QgcGFsZXR0ZSA9IHJlbmRlcmVyLmNyZWF0ZSgnPGRpdiBjbGFzcz1cIm5vdGUtY29sb3ItcGFsZXR0ZVwiLz4nLCBmdW5jdGlvbigkbm9kZSwgb3B0aW9ucykge1xuICBjb25zdCBjb250ZW50cyA9IFtdO1xuICBmb3IgKGxldCByb3cgPSAwLCByb3dTaXplID0gb3B0aW9ucy5jb2xvcnMubGVuZ3RoOyByb3cgPCByb3dTaXplOyByb3crKykge1xuICAgIGNvbnN0IGV2ZW50TmFtZSA9IG9wdGlvbnMuZXZlbnROYW1lO1xuICAgIGNvbnN0IGNvbG9ycyA9IG9wdGlvbnMuY29sb3JzW3Jvd107XG4gICAgY29uc3QgY29sb3JzTmFtZSA9IG9wdGlvbnMuY29sb3JzTmFtZVtyb3ddO1xuICAgIGNvbnN0IGJ1dHRvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBjb2wgPSAwLCBjb2xTaXplID0gY29sb3JzLmxlbmd0aDsgY29sIDwgY29sU2l6ZTsgY29sKyspIHtcbiAgICAgIGNvbnN0IGNvbG9yID0gY29sb3JzW2NvbF07XG4gICAgICBjb25zdCBjb2xvck5hbWUgPSBjb2xvcnNOYW1lW2NvbF07XG4gICAgICBidXR0b25zLnB1c2goW1xuICAgICAgICAnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJub3RlLWNvbG9yLWJ0blwiJyxcbiAgICAgICAgJ3N0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjonLCBjb2xvciwgJ1wiICcsXG4gICAgICAgICdkYXRhLWV2ZW50PVwiJywgZXZlbnROYW1lLCAnXCIgJyxcbiAgICAgICAgJ2RhdGEtdmFsdWU9XCInLCBjb2xvciwgJ1wiICcsXG4gICAgICAgICd0aXRsZT1cIicsIGNvbG9yTmFtZSwgJ1wiICcsXG4gICAgICAgICdhcmlhLWxhYmVsPVwiJywgY29sb3JOYW1lLCAnXCIgJyxcbiAgICAgICAgJ2RhdGEtdG9nZ2xlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiPjwvYnV0dG9uPicsXG4gICAgICBdLmpvaW4oJycpKTtcbiAgICB9XG4gICAgY29udGVudHMucHVzaCgnPGRpdiBjbGFzcz1cIm5vdGUtY29sb3Itcm93XCI+JyArIGJ1dHRvbnMuam9pbignJykgKyAnPC9kaXY+Jyk7XG4gIH1cbiAgJG5vZGUuaHRtbChjb250ZW50cy5qb2luKCcnKSk7XG5cbiAgaWYgKG9wdGlvbnMudG9vbHRpcCkge1xuICAgICRub2RlLmZpbmQoJy5ub3RlLWNvbG9yLWJ0bicpLnRvb2x0aXAoe1xuICAgICAgY29udGFpbmVyOiBvcHRpb25zLmNvbnRhaW5lcixcbiAgICAgIHRyaWdnZXI6ICdob3ZlcicsXG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgIH0pO1xuICB9XG59KTtcblxuY29uc3QgZGlhbG9nID0gcmVuZGVyZXIuY3JlYXRlKCc8ZGl2IGNsYXNzPVwibW9kYWxcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgdGFiaW5kZXg9XCItMVwiIHJvbGU9XCJkaWFsb2dcIi8+JywgZnVuY3Rpb24oJG5vZGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMuZmFkZSkge1xuICAgICRub2RlLmFkZENsYXNzKCdmYWRlJyk7XG4gIH1cbiAgJG5vZGUuYXR0cih7XG4gICAgJ2FyaWEtbGFiZWwnOiBvcHRpb25zLnRpdGxlLFxuICB9KTtcbiAgJG5vZGUuaHRtbChbXG4gICAgJzxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2dcIj4nLFxuICAgICcgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+JyxcbiAgICAob3B0aW9ucy50aXRsZVxuICAgICAgPyAnICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj4nICtcbiAgICAnICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvYnV0dG9uPicgK1xuICAgICcgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiPicgKyBvcHRpb25zLnRpdGxlICsgJzwvaDQ+JyArXG4gICAgJyAgICA8L2Rpdj4nIDogJydcbiAgICApLFxuICAgICcgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj4nICsgb3B0aW9ucy5ib2R5ICsgJzwvZGl2PicsXG4gICAgKG9wdGlvbnMuZm9vdGVyXG4gICAgICA/ICcgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPicgKyBvcHRpb25zLmZvb3RlciArICc8L2Rpdj4nIDogJydcbiAgICApLFxuICAgICcgIDwvZGl2PicsXG4gICAgJzwvZGl2PicsXG4gIF0uam9pbignJykpO1xufSk7XG5cbmNvbnN0IHBvcG92ZXIgPSByZW5kZXJlci5jcmVhdGUoW1xuICAnPGRpdiBjbGFzcz1cIm5vdGUtcG9wb3ZlciBwb3BvdmVyIGluXCI+JyxcbiAgJyAgPGRpdiBjbGFzcz1cImFycm93XCIvPicsXG4gICcgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWNvbnRlbnQgbm90ZS1jaGlsZHJlbi1jb250YWluZXJcIi8+JyxcbiAgJzwvZGl2PicsXG5dLmpvaW4oJycpLCBmdW5jdGlvbigkbm9kZSwgb3B0aW9ucykge1xuICBjb25zdCBkaXJlY3Rpb24gPSB0eXBlb2Ygb3B0aW9ucy5kaXJlY3Rpb24gIT09ICd1bmRlZmluZWQnID8gb3B0aW9ucy5kaXJlY3Rpb24gOiAnYm90dG9tJztcblxuICAkbm9kZS5hZGRDbGFzcyhkaXJlY3Rpb24pO1xuXG4gIGlmIChvcHRpb25zLmhpZGVBcnJvdykge1xuICAgICRub2RlLmZpbmQoJy5hcnJvdycpLmhpZGUoKTtcbiAgfVxufSk7XG5cbmNvbnN0IGNoZWNrYm94ID0gcmVuZGVyZXIuY3JlYXRlKCc8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj48L2Rpdj4nLCBmdW5jdGlvbigkbm9kZSwgb3B0aW9ucykge1xuICAkbm9kZS5odG1sKFtcbiAgICAnPGxhYmVsJyArIChvcHRpb25zLmlkID8gJyBmb3I9XCInICsgb3B0aW9ucy5pZCArICdcIicgOiAnJykgKyAnPicsXG4gICAgJyA8aW5wdXQgcm9sZT1cImNoZWNrYm94XCIgdHlwZT1cImNoZWNrYm94XCInICsgKG9wdGlvbnMuaWQgPyAnIGlkPVwiJyArIG9wdGlvbnMuaWQgKyAnXCInIDogJycpLFxuICAgIChvcHRpb25zLmNoZWNrZWQgPyAnIGNoZWNrZWQnIDogJycpLFxuICAgICcgYXJpYS1jaGVja2VkPVwiJyArIChvcHRpb25zLmNoZWNrZWQgPyAndHJ1ZScgOiAnZmFsc2UnKSArICdcIi8+JyxcbiAgICAob3B0aW9ucy50ZXh0ID8gb3B0aW9ucy50ZXh0IDogJycpLFxuICAgICc8L2xhYmVsPicsXG4gIF0uam9pbignJykpO1xufSk7XG5cbmNvbnN0IGljb24gPSBmdW5jdGlvbihpY29uQ2xhc3NOYW1lLCB0YWdOYW1lKSB7XG4gIHRhZ05hbWUgPSB0YWdOYW1lIHx8ICdpJztcbiAgcmV0dXJuICc8JyArIHRhZ05hbWUgKyAnIGNsYXNzPVwiJyArIGljb25DbGFzc05hbWUgKyAnXCIvPic7XG59O1xuY29uc3QgdWkgPSB7XG4gIGVkaXRvcjogZWRpdG9yLFxuICB0b29sYmFyOiB0b29sYmFyLFxuICBlZGl0aW5nQXJlYTogZWRpdGluZ0FyZWEsXG4gIGNvZGFibGU6IGNvZGFibGUsXG4gIGVkaXRhYmxlOiBlZGl0YWJsZSxcbiAgc3RhdHVzYmFyOiBzdGF0dXNiYXIsXG4gIGFpckVkaXRvcjogYWlyRWRpdG9yLFxuICBhaXJFZGl0YWJsZTogYWlyRWRpdGFibGUsXG4gIGJ1dHRvbkdyb3VwOiBidXR0b25Hcm91cCxcbiAgZHJvcGRvd246IGRyb3Bkb3duLFxuICBkcm9wZG93bkJ1dHRvbkNvbnRlbnRzOiBkcm9wZG93bkJ1dHRvbkNvbnRlbnRzLFxuICBkcm9wZG93bkNoZWNrOiBkcm9wZG93bkNoZWNrLFxuICBwYWxldHRlOiBwYWxldHRlLFxuICBkaWFsb2c6IGRpYWxvZyxcbiAgcG9wb3ZlcjogcG9wb3ZlcixcbiAgY2hlY2tib3g6IGNoZWNrYm94LFxuICBpY29uOiBpY29uLFxuICBvcHRpb25zOiB7fSxcblxuICBidXR0b246IGZ1bmN0aW9uKCRub2RlLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIHJlbmRlcmVyLmNyZWF0ZSgnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJub3RlLWJ0biBidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCIgcm9sZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiLTFcIj4nLCBmdW5jdGlvbigkbm9kZSwgb3B0aW9ucykge1xuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy50b29sdGlwKSB7XG4gICAgICAgICRub2RlLmF0dHIoe1xuICAgICAgICAgIHRpdGxlOiBvcHRpb25zLnRvb2x0aXAsXG4gICAgICAgICAgJ2FyaWEtbGFiZWwnOiBvcHRpb25zLnRvb2x0aXAsXG4gICAgICAgIH0pLnRvb2x0aXAoe1xuICAgICAgICAgIGNvbnRhaW5lcjogKG9wdGlvbnMuY29udGFpbmVyICE9PSB1bmRlZmluZWQpID8gb3B0aW9ucy5jb250YWluZXIgOiAnYm9keScsXG4gICAgICAgICAgdHJpZ2dlcjogJ2hvdmVyJyxcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICB9KS5vbignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICAgICQoZS5jdXJyZW50VGFyZ2V0KS50b29sdGlwKCdoaWRlJyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pKCRub2RlLCBvcHRpb25zKTtcbiAgfSxcblxuICB0b2dnbGVCdG46IGZ1bmN0aW9uKCRidG4sIGlzRW5hYmxlKSB7XG4gICAgJGJ0bi50b2dnbGVDbGFzcygnZGlzYWJsZWQnLCAhaXNFbmFibGUpO1xuICAgICRidG4uYXR0cignZGlzYWJsZWQnLCAhaXNFbmFibGUpO1xuICB9LFxuXG4gIHRvZ2dsZUJ0bkFjdGl2ZTogZnVuY3Rpb24oJGJ0biwgaXNBY3RpdmUpIHtcbiAgICAkYnRuLnRvZ2dsZUNsYXNzKCdhY3RpdmUnLCBpc0FjdGl2ZSk7XG4gIH0sXG5cbiAgb25EaWFsb2dTaG93bjogZnVuY3Rpb24oJGRpYWxvZywgaGFuZGxlcikge1xuICAgICRkaWFsb2cub25lKCdzaG93bi5icy5tb2RhbCcsIGhhbmRsZXIpO1xuICB9LFxuXG4gIG9uRGlhbG9nSGlkZGVuOiBmdW5jdGlvbigkZGlhbG9nLCBoYW5kbGVyKSB7XG4gICAgJGRpYWxvZy5vbmUoJ2hpZGRlbi5icy5tb2RhbCcsIGhhbmRsZXIpO1xuICB9LFxuXG4gIHNob3dEaWFsb2c6IGZ1bmN0aW9uKCRkaWFsb2cpIHtcbiAgICAkZGlhbG9nLm1vZGFsKCdzaG93Jyk7XG4gIH0sXG5cbiAgaGlkZURpYWxvZzogZnVuY3Rpb24oJGRpYWxvZykge1xuICAgICRkaWFsb2cubW9kYWwoJ2hpZGUnKTtcbiAgfSxcblxuICBjcmVhdGVMYXlvdXQ6IGZ1bmN0aW9uKCRub3RlLCBvcHRpb25zKSB7XG4gICAgY29uc3QgJGVkaXRvciA9IChvcHRpb25zLmFpck1vZGUgPyB1aS5haXJFZGl0b3IoW1xuICAgICAgdWkuZWRpdGluZ0FyZWEoW1xuICAgICAgICB1aS5haXJFZGl0YWJsZSgpLFxuICAgICAgXSksXG4gICAgXSkgOiB1aS5lZGl0b3IoW1xuICAgICAgdWkudG9vbGJhcigpLFxuICAgICAgdWkuZWRpdGluZ0FyZWEoW1xuICAgICAgICB1aS5jb2RhYmxlKCksXG4gICAgICAgIHVpLmVkaXRhYmxlKCksXG4gICAgICBdKSxcbiAgICAgIHVpLnN0YXR1c2JhcigpLFxuICAgIF0pKS5yZW5kZXIoKTtcblxuICAgICRlZGl0b3IuaW5zZXJ0QWZ0ZXIoJG5vdGUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5vdGU6ICRub3RlLFxuICAgICAgZWRpdG9yOiAkZWRpdG9yLFxuICAgICAgdG9vbGJhcjogJGVkaXRvci5maW5kKCcubm90ZS10b29sYmFyJyksXG4gICAgICBlZGl0aW5nQXJlYTogJGVkaXRvci5maW5kKCcubm90ZS1lZGl0aW5nLWFyZWEnKSxcbiAgICAgIGVkaXRhYmxlOiAkZWRpdG9yLmZpbmQoJy5ub3RlLWVkaXRhYmxlJyksXG4gICAgICBjb2RhYmxlOiAkZWRpdG9yLmZpbmQoJy5ub3RlLWNvZGFibGUnKSxcbiAgICAgIHN0YXR1c2JhcjogJGVkaXRvci5maW5kKCcubm90ZS1zdGF0dXNiYXInKSxcbiAgICB9O1xuICB9LFxuXG4gIHJlbW92ZUxheW91dDogZnVuY3Rpb24oJG5vdGUsIGxheW91dEluZm8pIHtcbiAgICAkbm90ZS5odG1sKGxheW91dEluZm8uZWRpdGFibGUuaHRtbCgpKTtcbiAgICBsYXlvdXRJbmZvLmVkaXRvci5yZW1vdmUoKTtcbiAgICAkbm90ZS5zaG93KCk7XG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCB1aTtcbiJdfQ==
|