@wizishop/wizi-block 4.2.2-beta → 4.2.23-beta

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.
Files changed (46) hide show
  1. package/assets/i18n/en.json +1 -1
  2. package/assets/i18n/fr.json +1 -1
  3. package/bundles/wizishop-wizi-block.umd.js +602 -385
  4. package/bundles/wizishop-wizi-block.umd.js.map +1 -1
  5. package/bundles/wizishop-wizi-block.umd.min.js +1 -1
  6. package/bundles/wizishop-wizi-block.umd.min.js.map +1 -1
  7. package/esm2015/lib/components/configs/configs.component.js +2 -2
  8. package/esm2015/lib/dtos/blocks/parent-block.dto.js +3 -2
  9. package/esm2015/lib/dtos/blocks/witness/witness-background-one.dto.js +2 -2
  10. package/esm2015/lib/dtos/forms/forms.dto.js +2 -2
  11. package/esm2015/lib/shared/components/editorjs/editorjs.component.js +27 -7
  12. package/esm2015/lib/shared/components/editorjs/tools/inline/link-tool.component.js +76 -15
  13. package/esm2015/lib/shared/components/editorjs/tools/inline/text-background-color-tool.component.js +5 -7
  14. package/esm2015/lib/shared/components/editorjs/tools/inline/text-color-tool.component.js +4 -2
  15. package/esm2015/lib/shared/components/editorjs/tools/inline/text-size-tool.component.js +4 -3
  16. package/esm2015/lib/shared/components/editorjs/tools/inline/tool-type/inline-style-tool.component.js +51 -20
  17. package/esm2015/lib/shared/components/editorjs/tools/paragraph/text-type-tool.component.js +3 -2
  18. package/esm2015/lib/shared/components/editorjs/tools/paragraph/tool-type/paragraph-style-tool.component.js +35 -7
  19. package/esm2015/lib/shared/components/editorjs/tools/paragraph/tool-type/text-edition.component.js +5 -6
  20. package/esm2015/lib/shared/components/editorjs/tools/utils/editorjs-conversion.service.js +13 -1
  21. package/esm2015/lib/shared/components/editorjs/tools/utils/editorjs-tool.component.js +35 -2
  22. package/esm2015/lib/shared/components/editorjs/tools/utils/editorjs-translation.service.js +20 -0
  23. package/esm2015/lib/structures/text-backgrounds/four-rows-icon-text/text-backgrounds-four-rows-icon-text.component.js +7 -2
  24. package/esm2015/lib/structures/text-backgrounds/three-rows-icon-text/text-backgrounds-three-rows-icon-text.component.js +2 -2
  25. package/esm2015/lib/structures/text-backgrounds/two-rows-icon-text/text-backgrounds-two-rows-icon-text.component.js +2 -2
  26. package/esm2015/lib/structures/texts/quadruple-numbers/texts-quadruple-numbers.component.js +2 -2
  27. package/esm2015/lib/structures/timer/airport/timer-airport.component.js +2 -2
  28. package/esm2015/lib/structures/timer/background/timer-background.component.js +2 -2
  29. package/esm2015/lib/structures/timer/clock/timer-clock.component.js +2 -2
  30. package/esm2015/lib/structures/timer/multiple-img/timer-multiple-img.component.js +2 -2
  31. package/esm2015/lib/structures/timer/simple/timer-simple.component.js +2 -2
  32. package/esm2015/lib/wizi-block.component.js +4 -4
  33. package/esm2015/wizishop-wizi-block.js +227 -226
  34. package/fesm2015/wizishop-wizi-block.js +276 -74
  35. package/fesm2015/wizishop-wizi-block.js.map +1 -1
  36. package/lib/shared/components/editorjs/editorjs.component.d.ts +5 -1
  37. package/lib/shared/components/editorjs/tools/inline/link-tool.component.d.ts +1 -0
  38. package/lib/shared/components/editorjs/tools/inline/tool-type/inline-style-tool.component.d.ts +2 -2
  39. package/lib/shared/components/editorjs/tools/paragraph/tool-type/paragraph-style-tool.component.d.ts +5 -0
  40. package/lib/shared/components/editorjs/tools/utils/editorjs-tool.component.d.ts +2 -0
  41. package/lib/shared/components/editorjs/tools/utils/editorjs-translation.service.d.ts +7 -0
  42. package/lib/structures/text-backgrounds/four-rows-icon-text/text-backgrounds-four-rows-icon-text.component.d.ts +1 -0
  43. package/package.json +1 -1
  44. package/wizi-block.scss +2133 -1869
  45. package/wizishop-wizi-block.d.ts +226 -225
  46. package/wizishop-wizi-block.metadata.json +1 -1
@@ -28,6 +28,8 @@ export class ParagraphStyleTool extends EditorJSTool {
28
28
  if ((this.classToApply && this.classToApply.length > 0) || (this.classes && this.classes.length > 0)) {
29
29
  this.changeCurrentClass(parentModifier);
30
30
  }
31
+ this.saveUserSelection();
32
+ this.resetUserSelection();
31
33
  });
32
34
  }
33
35
  checkOrderedListValue() {
@@ -62,8 +64,18 @@ export class ParagraphStyleTool extends EditorJSTool {
62
64
  currentIndex++;
63
65
  }
64
66
  }
67
+ getCurrentParagraph(anchorNode) {
68
+ if (anchorNode.nodeType === Node.ELEMENT_NODE && anchorNode.classList.contains('ce-paragraph')) {
69
+ return anchorNode;
70
+ }
71
+ if (anchorNode.parentElement.classList.contains('ce-paragraph')) {
72
+ return anchorNode.parentElement;
73
+ }
74
+ return anchorNode.parentElement.closest('.ce-paragraph');
75
+ }
65
76
  changeContainerTag(container, selection) {
66
77
  const range = this.getRangeObject(selection);
78
+ let currentParagraph = this.getCurrentParagraph(selection.anchorNode);
67
79
  let tagToCreate = this.tag;
68
80
  if (container.tagName.toLowerCase() === this.tag.toLowerCase() && this.removableModifiers.indexOf(this.tag.toLowerCase()) > -1) {
69
81
  tagToCreate = 'p';
@@ -74,13 +86,13 @@ export class ParagraphStyleTool extends EditorJSTool {
74
86
  }
75
87
  let containerToCopy = container;
76
88
  if (container.tagName.toLowerCase() === 'ul' || container.tagName.toLowerCase() === 'ol') {
77
- this.parentEditor.querySelector('.ce-block--focused .ce-paragraph').removeEventListener('keydown', onEditList, true);
89
+ currentParagraph.removeEventListener('keydown', onEditList, true);
78
90
  containerToCopy = container.firstElementChild;
79
91
  }
80
92
  if (newContainer.tagName.toLowerCase() === 'ul' || newContainer.tagName.toLowerCase() === 'ol') {
81
93
  listApi = this.api;
82
94
  listEditor = this.parentEditor;
83
- this.parentEditor.querySelector('.ce-block--focused .ce-paragraph').addEventListener('keydown', onEditList, true);
95
+ currentParagraph.addEventListener('keydown', onEditList, true);
84
96
  }
85
97
  if ((this.tag.toLowerCase() === 'ul' || this.tag.toLowerCase() === 'ol') &&
86
98
  container.tagName.toLowerCase() !== this.tag.toLowerCase()) {
@@ -157,9 +169,13 @@ export class ParagraphStyleTool extends EditorJSTool {
157
169
  return currentElement;
158
170
  }
159
171
  }
160
- var listApi = null;
161
- var listEditor = null;
162
- function onEditList(event) {
172
+ export var listApi = null;
173
+ export var listEditor = null;
174
+ export function setlistApiEditor(api, editor) {
175
+ listApi = api;
176
+ listEditor = editor;
177
+ }
178
+ export function onEditList(event) {
163
179
  let focusedBlock = event.target;
164
180
  if (LIST_EDIT_KEY_CODES.indexOf(event.code) > -1) {
165
181
  if (event.code === 'Backspace') {
@@ -182,7 +198,19 @@ function onEditList(event) {
182
198
  let listElement = document.createElement(previousBlock.querySelector('.ce-paragraph').firstElementChild.tagName);
183
199
  listElement.appendChild(document.createElement('li'));
184
200
  if (listElement.tagName.toLowerCase() === 'ol') {
185
- listElement.firstElementChild.setAttribute('value', (parseInt(previousBlock.querySelector('li').getAttribute('value')) + 1).toString());
201
+ let value = parseInt(previousBlock.querySelector('li').getAttribute('value')) + 1;
202
+ let nextListElement = true;
203
+ listElement.firstElementChild.setAttribute('value', value.toString());
204
+ for (var i = listApi.blocks.getCurrentBlockIndex() + 1; i < listEditor.querySelectorAll('.ce-block').length && nextListElement; ++i) {
205
+ let followingOlBlock = listEditor.querySelectorAll('.ce-block')[i];
206
+ if (followingOlBlock.querySelector('ol')) {
207
+ ++value;
208
+ followingOlBlock.querySelector('li').setAttribute('value', value.toString());
209
+ }
210
+ else {
211
+ nextListElement = false;
212
+ }
213
+ }
186
214
  }
187
215
  currentParagraph.appendChild(listElement);
188
216
  currentParagraph.addEventListener('keydown', onEditList, true);
@@ -198,4 +226,4 @@ function onEditList(event) {
198
226
  }
199
227
  }
200
228
  }
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWdyYXBoLXN0eWxlLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3BhdWxpbmUvRG9jdW1lbnRzL3dvcmtzcGFjZS93aXppLWJsb2NrL3Byb2plY3RzL3dpemktYmxvY2svc3JjLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9jb21wb25lbnRzL2VkaXRvcmpzL3Rvb2xzL3BhcmFncmFwaC90b29sLXR5cGUvcGFyYWdyYXBoLXN0eWxlLXRvb2wuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFbkUsTUFBTSxPQUFnQixrQkFBbUIsU0FBUSxZQUFZO0lBQTdEOztRQVNJLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsY0FBUyxHQUFHLHNDQUFzQyxDQUFDO1FBRW5ELHVCQUFrQixHQUFHLGtCQUFrQixDQUFDO0lBNko1QyxDQUFDO0lBekpTLGdCQUFnQixDQUFDLE1BQWM7O1lBQ2pDLE1BQU0sU0FBUyxHQUFxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hHLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ1osT0FBTzthQUNWO1lBQ0QsTUFBTSxVQUFVLEdBQVMsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUU5QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUMvQztZQUVELElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2IsT0FBTzthQUNWO1lBQ0QsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxh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RUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQy9ELFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUM5SDtpQkFBTTtnQkFDSCxJQUFJLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztnQkFDM0csZ0JBQWdCLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztnQkFDaEMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDMUQsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbEUsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzVIO1NBQ0o7S0FDSjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMSVNUX0VESVRfS0VZX0NPREVTIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0b3JKU1Rvb2wgfSBmcm9tICcuLi8uLi91dGlscy9lZGl0b3Jqcy10b29sLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQYXJhZ3JhcGhTdHlsZVRvb2wgZXh0ZW5kcyBFZGl0b3JKU1Rvb2wge1xuICAgIHRhZzogc3RyaW5nO1xuXG4gICAgY2xhc3NUb0FwcGx5Pzogc3RyaW5nO1xuXG4gICAgY2xhc3Nlcz86IHN0cmluZztcblxuICAgIGlucHV0PzogbnVtYmVyO1xuXG4gICAgY29udGFpbmVycyA9ICdkaXYnO1xuXG4gICAgbW9kaWZpZXJzID0gJ2gxLGgyLGgzLGg0LGg1LGg2LHAsdWwsb2wsYmxvY2txdW90ZSc7XG5cbiAgICByZW1vdmFibGVNb2RpZmllcnMgPSAndWwsb2wsYmxvY2txdW90ZSc7XG5cbiAgICBhcGk6IGFueTtcblxuICAgIGFzeW5jIGV4ZWNDb21tYW5kU3R5bGUoYWN0aW9uOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uOiBTZWxlY3Rpb24gfCBudWxsID0gdGhpcy5jdXJyZW50U2VsZWN0aW9uID8gdGhpcy5jdXJyZW50U2VsZWN0aW9uIDogdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgaWYgKCFzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbmNob3JOb2RlOiBOb2RlID0gc2VsZWN0aW9uLmFuY2hvck5vZGU7XG5cbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudEVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYW5jaG9yTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwYXJlbnRNb2RpZmllciA9IHRoaXMuZmluZFBhcmVudE1vZGlmaWVyKGFuY2hvck5vZGUucGFyZW50RWxlbWVudCk7XG5cbiAgICAgICAgaWYgKHRoaXMudGFnLnRvTG93ZXJDYXNlKCkgIT09ICdzcGFuJykge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VDb250YWluZXJUYWcocGFyZW50TW9kaWZpZXIsIHNlbGVjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0aGlzLmNsYXNzVG9BcHBseSAmJiB0aGlzLmNsYXNzVG9BcHBseS5sZW5ndGggPiAwKSB8fCAodGhpcy5jbGFzc2VzICYmIHRoaXMuY2xhc3Nlcy5sZW5ndGggPiAwKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VDdXJyZW50Q2xhc3MocGFyZW50TW9kaWZpZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja09yZGVyZWRMaXN0VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHZhbHVlID0gMTtcbiAgICAgICAgbGV0IGN1cnJlbnRJbmRleCA9IHRoaXMuYXBpLmJsb2Nrcy5nZXRDdXJyZW50QmxvY2tJbmRleCgpO1xuICAgICAgICBpZiAoY3VycmVudEluZGV4ID4gMCkge1xuICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNQYXJhZ3JhcGggPSB0aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuY2UtcGFyYWdyYXBoJylbY3VycmVudEluZGV4IC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzUGFyYWdyYXBoLmZpcnN0RWxlbWVudENoaWxkLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29sJykge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSsrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50SW5kZXgtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tGb2xsb3dpbmdMaXN0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IGN1cnJlbnRJbmRleCA9IHRoaXMuYXBpLmJsb2Nrcy5nZXRDdXJyZW50QmxvY2tJbmRleCgpICsgMTtcbiAgICAgICAgbGV0IGJsb2NrcyA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZS1ibG9jaycpO1xuICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gcGFyc2VJbnQodmFsdWUpO1xuICAgICAgICB3aGlsZSAoYmxvY2tzW2N1cnJlbnRJbmRleF0pIHtcbiAgICAgICAgICAgIGxldCBwYXJhZ3JhcGggPSBibG9ja3NbY3VycmVudEluZGV4XS5xdWVyeVNlbGVjdG9yKCcuY2UtcGFyYWdyYXBoJyk7XG4gICAgICAgICAgICBpZiAocGFyYWdyYXBoLmZpcnN0RWxlbWVudENoaWxkLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29sJykge1xuICAgICAgICAgICAgICAgIHBhcmFncmFwaC5maXJzdEVsZW1lbnRDaGlsZC5maXJzdEVsZW1lbnRDaGlsZC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgKCsrY3VycmVudFZhbHVlKS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudEluZGV4Kys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZUNvbnRhaW5lclRhZyhjb250YWluZXI6IEhUTUxFbGVtZW50LCBzZWxlY3Rpb246IFNlbGVjdGlvbikge1xuICAgICAgICBjb25zdCByYW5nZTogUmFuZ2UgPSB0aGlzLmdldFJhbmdlT2JqZWN0KHNlbGVjdGlvbik7XG4gICAgICAgIGxldCB0YWdUb0NyZWF0ZSA9IHRoaXMudGFnO1xuICAgICAgICBpZiAoY29udGFpbmVyLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy50YWcudG9Mb3dlckNhc2UoKSAmJiB0aGlzLnJlbW92YWJsZU1vZGlmaWVycy5pbmRleE9mKHRoaXMudGFnLnRvTG93ZXJDYXNlKCkpID4gLTEpIHtcbiAgICAgICAgICAgIHRhZ1RvQ3JlYXRlID0gJ3AnO1xuICAgICAgICB9XG4gICAgICAgIGxldCBuZXdDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ1RvQ3JlYXRlKTtcbiAgICAgICAgaWYgKGNvbnRhaW5lci5jbGFzc05hbWUpIHtcbiAgICAgICAgICAgIG5ld0NvbnRhaW5lci5jbGFzc05hbWUgPSBjb250YWluZXIuY2xhc3NOYW1lO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb250YWluZXJUb0NvcHkgPSBjb250YWluZXI7XG4gICAgICAgIGlmIChjb250YWluZXIudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAndWwnIHx8IGNvbnRhaW5lci50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvbCcpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJy5jZS1ibG9jay0tZm9jdXNlZCAuY2UtcGFyYWdyYXBoJykucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRWRpdExpc3QsIHRydWUpO1xuICAgICAgICAgICAgY29udGFpbmVyVG9Db3B5ID0gPEhUTUxFbGVtZW50PmNvbnRhaW5lci5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3Q29udGFpbmVyLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3VsJyB8fCBuZXdDb250YWluZXIudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnb2wnKSB7XG4gICAgICAgICAgICBsaXN0QXBpID0gdGhpcy5hcGk7XG4gICAgICAgICAgICBsaXN0RWRpdG9yID0gdGhpcy5wYXJlbnRFZGl0b3I7XG4gICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcuY2UtYmxvY2stLWZvY3VzZWQgLmNlLXBhcmFncmFwaCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbkVkaXRMaXN0LCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAodGhpcy50YWcudG9Mb3dlckNhc2UoKSA9PT0gJ3VsJyB8fCB0aGlzLnRhZy50b0xvd2VyQ2FzZSgpID09PSAnb2wnKSAmJlxuICAgICAgICAgICAgY29udGFpbmVyLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gdGhpcy50YWcudG9Mb3dlckNhc2UoKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGxldCBuZXdDaGlsZENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7XG4gICAgICAgICAgICBpZiAodGhpcy50YWcudG9Mb3dlckNhc2UoKSA9PT0gJ29sJykge1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY2hlY2tPcmRlcmVkTGlzdFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRDb250YWluZXIuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRm9sbG93aW5nTGlzdCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoY29udGFpbmVyVG9Db3B5LmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudENsb25lID0gY29udGFpbmVyVG9Db3B5LmZpcnN0Q2hpbGQuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgICAgICAgIG5ld0NoaWxkQ29udGFpbmVyLmFwcGVuZENoaWxkKGVsZW1lbnRDbG9uZSk7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyVG9Db3B5LmZpcnN0Q2hpbGQucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdDb250YWluZXIuYXBwZW5kQ2hpbGQobmV3Q2hpbGRDb250YWluZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2hpbGUgKGNvbnRhaW5lclRvQ29weS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRDbG9uZSA9IGNvbnRhaW5lclRvQ29weS5maXJzdENoaWxkLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgICAgICAgICAgICBuZXdDb250YWluZXIuYXBwZW5kQ2hpbGQoZWxlbWVudENsb25lKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXJUb0NvcHkuZmlyc3RDaGlsZC5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXIucGFyZW50RWxlbWVudC5yZXBsYWNlQ2hpbGQobmV3Q29udGFpbmVyLCBjb250YWluZXIpO1xuXG4gICAgICAgIHJhbmdlLmluc2VydE5vZGUobmV3Q29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZUN1cnJlbnRDbGFzcyhjb250YWluZXI6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNsYXNzZXMuaW5kZXhPZigne3tpbnB1dH19JykgPiAtMSkge1xuICAgICAgICAgICAgbGV0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy5jbGFzc2VzLnJlcGxhY2UoJ3t7aW5wdXR9fScsICcnKSk7XG4gICAgICAgICAgICBsZXQgZm91bmQgPSAtMTtcbiAgICAgICAgICAgIGxldCBuZXdJbmRleCA9IHRoaXMuaW5wdXQ7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbnRhaW5lci5jbGFzc0xpc3QubGVuZ3RoICYmIGZvdW5kID09PSAtMTsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lci5jbGFzc0xpc3RbaV0ubWF0Y2gocmVnZXhwKSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdJbmRleCArPSBwYXJzZUludChjb250YWluZXIuY2xhc3NMaXN0W2ldLnJlcGxhY2UodGhpcy5jbGFzc2VzLnJlcGxhY2UoJ3t7aW5wdXR9fScsICcnKSwgJycpKTtcbiAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld0luZGV4ID0gbmV3SW5kZXggPCAwID8gMCA6IG5ld0luZGV4ID4gMTAgPyAxMCA6IG5ld0luZGV4O1xuICAgICAgICAgICAgaWYgKGZvdW5kID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChuZXdJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc2VzLnJlcGxhY2UoJ3t7aW5wdXR9fScsIG5ld0luZGV4LnRvU3RyaW5nKCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKGNvbnRhaW5lci5jbGFzc0xpc3RbZm91bmRdKTtcbiAgICAgICAgICAgICAgICBpZiAobmV3SW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3Nlcy5yZXBsYWNlKCd7e2lucHV0fX0nLCBuZXdJbmRleC50b1N0cmluZygpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xhc3Nlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xhc3Nlcy5zcGxpdCgnLCcpLmZvckVhY2goKGVsZW1lbnRDbGFzcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShlbGVtZW50Q2xhc3MpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTmFtZSArPSAoY29udGFpbmVyLmNsYXNzTmFtZS5sZW5ndGggPiAwID8gJyAnIDogJycpICsgdGhpcy5jbGFzc1RvQXBwbHk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kUGFyZW50TW9kaWZpZXIoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgICAgICBsZXQgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZGl2Jykge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnY2UtcGFyYWdyYXBoJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gPEhUTUxFbGVtZW50PmN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNlLXBhcmFncmFwaCcpLmNoaWxkcmVuWzBdO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlICh0aGlzLm1vZGlmaWVycy5zcGxpdCgnLCcpLmluZGV4T2YoY3VycmVudEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdkaXYnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRFbGVtZW50O1xuICAgIH1cbn1cblxudmFyIGxpc3RBcGkgPSBudWxsO1xudmFyIGxpc3RFZGl0b3IgPSBudWxsO1xuXG5mdW5jdGlvbiBvbkVkaXRMaXN0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgbGV0IGZvY3VzZWRCbG9jayA9IDxIVE1MRWxlbWVudD5ldmVudC50YXJnZXQ7XG4gICAgaWYgKExJU1RfRURJVF9LRVlfQ09ERVMuaW5kZXhPZihldmVudC5jb2RlKSA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5jb2RlID09PSAnQmFja3NwYWNlJykge1xuICAgICAgICAgICAgaWYgKGZvY3VzZWRCbG9jay5pbm5lclRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRQYXJhZ3JhcGggPSBsaXN0RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZS1wYXJhZ3JhcGgnKVtsaXN0QXBpLmJsb2Nrcy5nZXRDdXJyZW50QmxvY2tJbmRleCgpXTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFyYWdyYXBoLmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFyYWdyYXBoLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbkVkaXRMaXN0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGN1cnJlbnRQYXJhZ3JhcGgucXVlcnlTZWxlY3RvcigncCcpLCAwLCBjdXJyZW50UGFyYWdyYXBoLnF1ZXJ5U2VsZWN0b3IoJ3AnKSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBpZiAoZm9jdXNlZEJsb2NrLmlubmVyVGV4dCAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICBsaXN0QXBpLmJsb2Nrcy5pbnNlcnQoJ3BhcmFncmFwaCcsIGxpc3RBcGkuYmxvY2tzLmdldEN1cnJlbnRCbG9ja0luZGV4KCkpO1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50QmxvY2sgPSBsaXN0RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZS1ibG9jaycpW2xpc3RBcGkuYmxvY2tzLmdldEN1cnJlbnRCbG9ja0luZGV4KCldO1xuICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c0Jsb2NrID0gbGlzdEVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuY2UtYmxvY2snKVtsaXN0QXBpLmJsb2Nrcy5nZXRDdXJyZW50QmxvY2tJbmRleCgpIC0gMV07XG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRQYXJhZ3JhcGggPSBjdXJyZW50QmxvY2sucXVlcnlTZWxlY3RvcignLmNlLXBhcmFncmFwaCcpO1xuICAgICAgICAgICAgICAgIGxldCBsaXN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocHJldmlvdXNCbG9jay5xdWVyeVNlbGVjdG9yKCcuY2UtcGFyYWdyYXBoJykuZmlyc3RFbGVtZW50Q2hpbGQudGFnTmFtZSk7XG4gICAgICAgICAgICAgICAgbGlzdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKSk7XG4gICAgICAgICAgICAgICAgaWYgKGxpc3RFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29sJykge1xuICAgICAgICAgICAgICAgICAgICBsaXN0RWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHBhcnNlSW50KHByZXZpb3VzQmxvY2sucXVlcnlTZWxlY3RvcignbGknKS5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpICsgMSkudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50UGFyYWdyYXBoLmFwcGVuZENoaWxkKGxpc3RFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFyYWdyYXBoLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbkVkaXRMaXN0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGN1cnJlbnRQYXJhZ3JhcGgucXVlcnlTZWxlY3RvcignbGknKSwgMCwgY3VycmVudFBhcmFncmFwaC5xdWVyeVNlbGVjdG9yKCdsaScpLCAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRQYXJhZ3JhcGggPSBsaXN0RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZS1wYXJhZ3JhcGgnKVtsaXN0QXBpLmJsb2Nrcy5nZXRDdXJyZW50QmxvY2tJbmRleCgpXTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFyYWdyYXBoLmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFyYWdyYXBoLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbkVkaXRMaXN0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGN1cnJlbnRQYXJhZ3JhcGgucXVlcnlTZWxlY3RvcigncCcpLCAwLCBjdXJyZW50UGFyYWdyYXBoLnF1ZXJ5U2VsZWN0b3IoJ3AnKSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWdyYXBoLXN0eWxlLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3BhdWxpbmUvRG9jdW1lbnRzL3dvcmtzcGFjZS93aXppLWJsb2NrL3Byb2plY3RzL3dpemktYmxvY2svc3JjLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9jb21wb25lbnRzL2VkaXRvcmpzL3Rvb2xzL3BhcmFncmFwaC90b29sLXR5cGUvcGFyYWdyYXBoLXN0eWxlLXRvb2wuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFbkUsTUFBTSxPQUFnQixrQkFBbUIsU0FBUSxZQUFZO0lBQTdEOztRQVNJLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsY0FBUyxHQUFHLHNDQUFzQyxDQUFDO1FBRW5ELHVCQUFrQixHQUFHLGtCQUFrQixDQUFDO0lBMEs1QyxDQUFDO0lBdEtTLGdCQUFnQixDQUFDLE1BQWM7O1lBQ2pDLE1BQU0sU0FBUyxHQUFxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hHLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ1osT0FBTzthQUNWO1lBQ0QsTUFBTSxVQUFVLEdBQVMsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUU5QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUMvQztZQUVELElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2IsT0FBTzthQUNWO1lBQ0QsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxh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QUFHLEtBQUssQ0FBQzt5QkFDM0I7cUJBQ0o7aUJBQ0o7Z0JBQ0QsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMxQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMvRCxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDOUg7aUJBQU07Z0JBQ0gsSUFBSSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7Z0JBQzNHLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2xFLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUM1SDtTQUNKO0tBQ0o7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTElTVF9FRElUX0tFWV9DT0RFUyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbG9ycy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWRpdG9ySlNUb29sIH0gZnJvbSAnLi4vLi4vdXRpbHMvZWRpdG9yanMtdG9vbC5jb21wb25lbnQnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFyYWdyYXBoU3R5bGVUb29sIGV4dGVuZHMgRWRpdG9ySlNUb29sIHtcbiAgICB0YWc6IHN0cmluZztcblxuICAgIGNsYXNzVG9BcHBseT86IHN0cmluZztcblxuICAgIGNsYXNzZXM/OiBzdHJpbmc7XG5cbiAgICBpbnB1dD86IG51bWJlcjtcblxuICAgIGNvbnRhaW5lcnMgPSAnZGl2JztcblxuICAgIG1vZGlmaWVycyA9ICdoMSxoMixoMyxoNCxoNSxoNixwLHVsLG9sLGJsb2NrcXVvdGUnO1xuXG4gICAgcmVtb3ZhYmxlTW9kaWZpZXJzID0gJ3VsLG9sLGJsb2NrcXVvdGUnO1xuXG4gICAgYXBpOiBhbnk7XG5cbiAgICBhc3luYyBleGVjQ29tbWFuZFN0eWxlKGFjdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbCA9IHRoaXMuY3VycmVudFNlbGVjdGlvbiA/IHRoaXMuY3VycmVudFNlbGVjdGlvbiA6IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGlmICghc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW5jaG9yTm9kZTogTm9kZSA9IHNlbGVjdGlvbi5hbmNob3JOb2RlO1xuXG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRFZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50RWRpdG9yID0gdGhpcy5maW5kUGFyZW50RWRpdG9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWFuY2hvck5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcGFyZW50TW9kaWZpZXIgPSB0aGlzLmZpbmRQYXJlbnRNb2RpZmllcihhbmNob3JOb2RlLnBhcmVudEVsZW1lbnQpO1xuXG4gICAgICAgIGlmICh0aGlzLnRhZy50b0xvd2VyQ2FzZSgpICE9PSAnc3BhbicpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQ29udGFpbmVyVGFnKHBhcmVudE1vZGlmaWVyLCBzZWxlY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIGlmICgodGhpcy5jbGFzc1RvQXBwbHkgJiYgdGhpcy5jbGFzc1RvQXBwbHkubGVuZ3RoID4gMCkgfHwgKHRoaXMuY2xhc3NlcyAmJiB0aGlzLmNsYXNzZXMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQ3VycmVudENsYXNzKHBhcmVudE1vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNhdmVVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMucmVzZXRVc2VyU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja09yZGVyZWRMaXN0VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHZhbHVlID0gMTtcbiAgICAgICAgbGV0IGN1cnJlbnRJbmRleCA9IHRoaXMuYXBpLmJsb2Nrcy5nZXRDdXJyZW50QmxvY2tJbmRleCgpO1xuICAgICAgICBpZiAoY3VycmVudEluZGV4ID4gMCkge1xuICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNQYXJhZ3JhcGggPSB0aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuY2UtcGFyYWdyYXBoJylbY3VycmVudEluZGV4IC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzUGFyYWdyYXBoLmZpcnN0RWxlbWVudENoaWxkLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29sJykge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSsrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50SW5kZXgtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tGb2xsb3dpbmdMaXN0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IGN1cnJlbnRJbmRleCA9IHRoaXMuYXBpLmJsb2Nrcy5nZXRDdXJyZW50QmxvY2tJbmRleCgpICsgMTtcbiAgICAgICAgbGV0IGJsb2NrcyA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZS1ibG9jaycpO1xuICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gcGFyc2VJbnQodmFsdWUpO1xuICAgICAgICB3aGlsZSAoYmxvY2tzW2N1cnJlbnRJbmRleF0pIHtcbiAgICAgICAgICAgIGxldCBwYXJhZ3JhcGggPSBibG9ja3NbY3VycmVudEluZGV4XS5xdWVyeVNlbGVjdG9yKCcuY2UtcGFyYWdyYXBoJyk7XG4gICAgICAgICAgICBpZiAocGFyYWdyYXBoLmZpcnN0RWxlbWVudENoaWxkLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29sJykge1xuICAgICAgICAgICAgICAgIHBhcmFncmFwaC5maXJzdEVsZW1lbnRDaGlsZC5maXJzdEVsZW1lbnRDaGlsZC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgKCsrY3VycmVudFZhbHVlKS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudEluZGV4Kys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEN1cnJlbnRQYXJhZ3JhcGgoYW5jaG9yTm9kZTogTm9kZSk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgaWYgKGFuY2hvck5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmICg8SFRNTEVsZW1lbnQ+YW5jaG9yTm9kZSkuY2xhc3NMaXN0LmNvbnRhaW5zKCdjZS1wYXJhZ3JhcGgnKSkge1xuICAgICAgICAgICAgcmV0dXJuIDxIVE1MRWxlbWVudD5hbmNob3JOb2RlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbmNob3JOb2RlLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjZS1wYXJhZ3JhcGgnKSkge1xuICAgICAgICAgICAgcmV0dXJuIGFuY2hvck5vZGUucGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYW5jaG9yTm9kZS5wYXJlbnRFbGVtZW50LmNsb3Nlc3QoJy5jZS1wYXJhZ3JhcGgnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZUNvbnRhaW5lclRhZyhjb250YWluZXI6IEhUTUxFbGVtZW50LCBzZWxlY3Rpb246IFNlbGVjdGlvbikge1xuICAgICAgICBjb25zdCByYW5nZTogUmFuZ2UgPSB0aGlzLmdldFJhbmdlT2JqZWN0KHNlbGVjdGlvbik7XG4gICAgICAgIGxldCBjdXJyZW50UGFyYWdyYXBoID0gdGhpcy5nZXRDdXJyZW50UGFyYWdyYXBoKHNlbGVjdGlvbi5hbmNob3JOb2RlKTtcbiAgICAgICAgbGV0IHRhZ1RvQ3JlYXRlID0gdGhpcy50YWc7XG4gICAgICAgIGlmIChjb250YWluZXIudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0aGlzLnRhZy50b0xvd2VyQ2FzZSgpICYmIHRoaXMucmVtb3ZhYmxlTW9kaWZpZXJzLmluZGV4T2YodGhpcy50YWcudG9Mb3dlckNhc2UoKSkgPiAtMSkge1xuICAgICAgICAgICAgdGFnVG9DcmVhdGUgPSAncCc7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5ld0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnVG9DcmVhdGUpO1xuICAgICAgICBpZiAoY29udGFpbmVyLmNsYXNzTmFtZSkge1xuICAgICAgICAgICAgbmV3Q29udGFpbmVyLmNsYXNzTmFtZSA9IGNvbnRhaW5lci5jbGFzc05hbWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvbnRhaW5lclRvQ29weSA9IGNvbnRhaW5lcjtcbiAgICAgICAgaWYgKGNvbnRhaW5lci50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICd1bCcgfHwgY29udGFpbmVyLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29sJykge1xuICAgICAgICAgICAgY3VycmVudFBhcmFncmFwaC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25FZGl0TGlzdCwgdHJ1ZSk7XG4gICAgICAgICAgICBjb250YWluZXJUb0NvcHkgPSA8SFRNTEVsZW1lbnQ+Y29udGFpbmVyLmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdDb250YWluZXIudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAndWwnIHx8IG5ld0NvbnRhaW5lci50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvbCcpIHtcbiAgICAgICAgICAgIGxpc3RBcGkgPSB0aGlzLmFwaTtcbiAgICAgICAgICAgIGxpc3RFZGl0b3IgPSB0aGlzLnBhcmVudEVkaXRvcjtcbiAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGguYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRWRpdExpc3QsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0aGlzLnRhZy50b0xvd2VyQ2FzZSgpID09PSAndWwnIHx8IHRoaXMudGFnLnRvTG93ZXJDYXNlKCkgPT09ICdvbCcpICYmXG4gICAgICAgICAgICBjb250YWluZXIudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSB0aGlzLnRhZy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICkge1xuICAgICAgICAgICAgbGV0IG5ld0NoaWxkQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnRhZy50b0xvd2VyQ2FzZSgpID09PSAnb2wnKSB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jaGVja09yZGVyZWRMaXN0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICBuZXdDaGlsZENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tGb2xsb3dpbmdMaXN0KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChjb250YWluZXJUb0NvcHkuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50Q2xvbmUgPSBjb250YWluZXJUb0NvcHkuZmlyc3RDaGlsZC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRDb250YWluZXIuYXBwZW5kQ2hpbGQoZWxlbWVudENsb25lKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXJUb0NvcHkuZmlyc3RDaGlsZC5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld0NvbnRhaW5lci5hcHBlbmRDaGlsZChuZXdDaGlsZENvbnRhaW5lcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3aGlsZSAoY29udGFpbmVyVG9Db3B5LmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudENsb25lID0gY29udGFpbmVyVG9Db3B5LmZpcnN0Q2hpbGQuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgICAgICAgIG5ld0NvbnRhaW5lci5hcHBlbmRDaGlsZChlbGVtZW50Q2xvbmUpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lclRvQ29weS5maXJzdENoaWxkLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lci5wYXJlbnRFbGVtZW50LnJlcGxhY2VDaGlsZChuZXdDb250YWluZXIsIGNvbnRhaW5lcik7XG5cbiAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShuZXdDb250YWluZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlQ3VycmVudENsYXNzKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuY2xhc3Nlcy5pbmRleE9mKCd7e2lucHV0fX0nKSA+IC0xKSB7XG4gICAgICAgICAgICBsZXQgcmVnZXhwID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLmNsYXNzZXMucmVwbGFjZSgne3tpbnB1dH19JywgJycpKTtcbiAgICAgICAgICAgIGxldCBmb3VuZCA9IC0xO1xuICAgICAgICAgICAgbGV0IG5ld0luZGV4ID0gdGhpcy5pbnB1dDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29udGFpbmVyLmNsYXNzTGlzdC5sZW5ndGggJiYgZm91bmQgPT09IC0xOyArK2kpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyLmNsYXNzTGlzdFtpXS5tYXRjaChyZWdleHApKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0luZGV4ICs9IHBhcnNlSW50KGNvbnRhaW5lci5jbGFzc0xpc3RbaV0ucmVwbGFjZSh0aGlzLmNsYXNzZXMucmVwbGFjZSgne3tpbnB1dH19JywgJycpLCAnJykpO1xuICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3SW5kZXggPSBuZXdJbmRleCA8IDAgPyAwIDogbmV3SW5kZXggPiAxMCA/IDEwIDogbmV3SW5kZXg7XG4gICAgICAgICAgICBpZiAoZm91bmQgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0luZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzZXMucmVwbGFjZSgne3tpbnB1dH19JywgbmV3SW5kZXgudG9TdHJpbmcoKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoY29udGFpbmVyLmNsYXNzTGlzdFtmb3VuZF0pO1xuICAgICAgICAgICAgICAgIGlmIChuZXdJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc2VzLnJlcGxhY2UoJ3t7aW5wdXR9fScsIG5ld0luZGV4LnRvU3RyaW5nKCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jbGFzc2VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGFzc2VzLnNwbGl0KCcsJykuZm9yRWFjaCgoZWxlbWVudENsYXNzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKGVsZW1lbnRDbGFzcyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250YWluZXIuY2xhc3NOYW1lICs9IChjb250YWluZXIuY2xhc3NOYW1lLmxlbmd0aCA+IDAgPyAnICcgOiAnJykgKyB0aGlzLmNsYXNzVG9BcHBseTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmRQYXJlbnRNb2RpZmllcihlbGVtZW50OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIGlmIChjdXJyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdkaXYnKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjZS1wYXJhZ3JhcGgnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50RWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiA8SFRNTEVsZW1lbnQ+Y3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY2UtcGFyYWdyYXBoJykuY2hpbGRyZW5bMF07XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHRoaXMubW9kaWZpZXJzLnNwbGl0KCcsJykuaW5kZXhPZihjdXJyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpID09PSAtMSkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2RpdicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudEVsZW1lbnQ7XG4gICAgfVxufVxuXG5leHBvcnQgdmFyIGxpc3RBcGkgPSBudWxsO1xuZXhwb3J0IHZhciBsaXN0RWRpdG9yID0gbnVsbDtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldGxpc3RBcGlFZGl0b3IoYXBpLCBlZGl0b3IpIHtcbiAgICBsaXN0QXBpID0gYXBpO1xuICAgIGxpc3RFZGl0b3IgPSBlZGl0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvbkVkaXRMaXN0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgbGV0IGZvY3VzZWRCbG9jayA9IDxIVE1MRWxlbWVudD5ldmVudC50YXJnZXQ7XG4gICAgaWYgKExJU1RfRURJVF9LRVlfQ09ERVMuaW5kZXhPZihldmVudC5jb2RlKSA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5jb2RlID09PSAnQmFja3NwYWNlJykge1xuICAgICAgICAgICAgaWYgKGZvY3VzZWRCbG9jay5pbm5lclRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRQYXJhZ3JhcGggPSBsaXN0RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZS1wYXJhZ3JhcGgnKVtsaXN0QXBpLmJsb2Nrcy5nZXRDdXJyZW50QmxvY2tJbmRleCgpXTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFyYWdyYXBoLmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFyYWdyYXBoLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbkVkaXRMaXN0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGN1cnJlbnRQYXJhZ3JhcGgucXVlcnlTZWxlY3RvcigncCcpLCAwLCBjdXJyZW50UGFyYWdyYXBoLnF1ZXJ5U2VsZWN0b3IoJ3AnKSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBpZiAoZm9jdXNlZEJsb2NrLmlubmVyVGV4dCAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICBsaXN0QXBpLmJsb2Nrcy5pbnNlcnQoJ3BhcmFncmFwaCcsIGxpc3RBcGkuYmxvY2tzLmdldEN1cnJlbnRCbG9ja0luZGV4KCkpO1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50QmxvY2sgPSBsaXN0RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZS1ibG9jaycpW2xpc3RBcGkuYmxvY2tzLmdldEN1cnJlbnRCbG9ja0luZGV4KCldO1xuICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c0Jsb2NrID0gbGlzdEVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuY2UtYmxvY2snKVtsaXN0QXBpLmJsb2Nrcy5nZXRDdXJyZW50QmxvY2tJbmRleCgpIC0gMV07XG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRQYXJhZ3JhcGggPSBjdXJyZW50QmxvY2sucXVlcnlTZWxlY3RvcignLmNlLXBhcmFncmFwaCcpO1xuICAgICAgICAgICAgICAgIGxldCBsaXN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocHJldmlvdXNCbG9jay5xdWVyeVNlbGVjdG9yKCcuY2UtcGFyYWdyYXBoJykuZmlyc3RFbGVtZW50Q2hpbGQudGFnTmFtZSk7XG4gICAgICAgICAgICAgICAgbGlzdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKSk7XG4gICAgICAgICAgICAgICAgaWYgKGxpc3RFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29sJykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUludChwcmV2aW91c0Jsb2NrLnF1ZXJ5U2VsZWN0b3IoJ2xpJykuZ2V0QXR0cmlidXRlKCd2YWx1ZScpKSArIDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXh0TGlzdEVsZW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBsaXN0RWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGxpc3RBcGkuYmxvY2tzLmdldEN1cnJlbnRCbG9ja0luZGV4KCkgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgaSA8IGxpc3RFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLmNlLWJsb2NrJykubGVuZ3RoICYmIG5leHRMaXN0RWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICsraVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb2xsb3dpbmdPbEJsb2NrID0gbGlzdEVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuY2UtYmxvY2snKVtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb2xsb3dpbmdPbEJsb2NrLnF1ZXJ5U2VsZWN0b3IoJ29sJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3ZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZ09sQmxvY2sucXVlcnlTZWxlY3RvcignbGknKS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRMaXN0RWxlbWVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kQ2hpbGQobGlzdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGguYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRWRpdExpc3QsIHRydWUpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoY3VycmVudFBhcmFncmFwaC5xdWVyeVNlbGVjdG9yKCdsaScpLCAwLCBjdXJyZW50UGFyYWdyYXBoLnF1ZXJ5U2VsZWN0b3IoJ2xpJyksIDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudFBhcmFncmFwaCA9IGxpc3RFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLmNlLXBhcmFncmFwaCcpW2xpc3RBcGkuYmxvY2tzLmdldEN1cnJlbnRCbG9ja0luZGV4KCldO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGguaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGgucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRWRpdExpc3QsIHRydWUpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoY3VycmVudFBhcmFncmFwaC5xdWVyeVNlbGVjdG9yKCdwJyksIDAsIGN1cnJlbnRQYXJhZ3JhcGgucXVlcnlTZWxlY3RvcigncCcpLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { ParagraphStyleTool } from './paragraph-style-tool.component';
2
2
  import * as monaco from 'monaco-editor';
3
3
  import { LIST_EDIT_KEY_CODES } from '../../utils/colors.component';
4
+ import { editorJSI18nDictionnary } from '../../utils/editorjs-translation.service';
4
5
  export class TextEditionTool extends ParagraphStyleTool {
5
6
  constructor() {
6
7
  super(...arguments);
@@ -67,8 +68,8 @@ export class TextEditionTool extends ParagraphStyleTool {
67
68
  let buttonContainer = document.createElement('div');
68
69
  let cancelButton = document.createElement('button');
69
70
  let saveButton = document.createElement('button');
70
- cancelButton.innerText = this.api.i18n.t('Cancel');
71
- saveButton.innerText = this.api.i18n.t('Save');
71
+ cancelButton.innerText = editorJSI18nDictionnary.messages.tools.codeEdit['Cancel'];
72
+ saveButton.innerText = editorJSI18nDictionnary.messages.tools.codeEdit['Save'];
72
73
  cancelButton.addEventListener('click', closeCodeEditModal, true);
73
74
  saveButton.addEventListener('click', () => {
74
75
  let content = monacoEditor.getValue();
@@ -130,9 +131,7 @@ export class TextEditionTool extends ParagraphStyleTool {
130
131
  const isTagNext = !isBrTag && !isOpeningTag && !isClosingTag && isTagEnd && code.substr(pos, code.substr(pos).indexOf('<')).trim() === '';
131
132
  if (isBrTag) {
132
133
  // If opening tag, add newline character and indention
133
- result += newlineChar;
134
- currentIndent--;
135
- pos += 4;
134
+ result += newlineChar + whitespace.repeat(currentIndent);
136
135
  }
137
136
  if (isOpeningTag) {
138
137
  // If opening tag, add newline character and indention
@@ -265,4 +264,4 @@ function onEditList(event) {
265
264
  }
266
265
  }
267
266
  }
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9wYXVsaW5lL0RvY3VtZW50cy93b3Jrc3BhY2Uvd2l6aS1ibG9jay9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY29tcG9uZW50cy9lZGl0b3Jqcy90b29scy9wYXJhZ3JhcGgvdG9vbC10eXBlL3RleHQtZWRpdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkUsTUFBTSxPQUFnQixlQUFnQixTQUFRLGtCQUFrQjtJQUFoRTs7UUFLSSxtQkFBYyxHQUFHLHFCQUFxQixDQUFDO1FBQ3ZDLGVBQVUsR0FBRyw0QkFBNEIsQ0FBQztRQUMxQyxnQkFBVyxHQUFHLG9DQUFvQyxDQUFDO1FBQ25ELGdCQUFXLEdBQUcscUNBQXFDLENBQUM7SUEwS3hELENBQUM7SUF4S0csSUFBSTtRQUNBLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDNUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1QsSUFBSSxlQUFlLEdBQWtCLEVBQUUsQ0FBQztRQUN4QyxJQUFJ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L3BhcmFncmFwaC1zdHlsZS10b29sLmNvbXBvbmVudCc7XG5pbXBvcnQgKiBhcyBtb25hY28gZnJvbSAnbW9uYWNvLWVkaXRvcic7XG5pbXBvcnQgeyBMSVNUX0VESVRfS0VZX0NPREVTIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JzLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUZXh0RWRpdGlvblRvb2wgZXh0ZW5kcyBQYXJhZ3JhcGhTdHlsZVRvb2wge1xuICAgIG5vZGVzOiB7IGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgfTtcblxuICAgIENTUzogYW55O1xuXG4gICAgY29udGFpbmVyQ2xhc3MgPSAnY29kZUVkaXRfX2NvbnRhaW5lcic7XG4gICAgbW9kYWxDbGFzcyA9ICdjb2RlRWRpdF9fY29udGFpbmVyX19tb2RhbCc7XG4gICAgZWRpdG9yQ2xhc3MgPSAnY29kZUVkaXRfX2NvbnRhaW5lcl9fbW9kYWxfX2VkaXRvcic7XG4gICAgYnV0dG9uQ2xhc3MgPSAnY29kZUVkaXRfX2NvbnRhaW5lcl9fbW9kYWxfX2J1dHRvbnMnO1xuXG4gICAgdW5kbygpIHtcbiAgICAgICAgbGV0IGVkaXRvciA9IHRoaXMuZmluZFBhcmVudEVkaXRvcigpO1xuICAgICAgICBsZXQgc2F2ZWREYXRhID0gdGhpcy5nZXRTYXZlZEVkaXRvckNvbnRlbnQoZWRpdG9yLmlkKTtcbiAgICAgICAgbGV0IHNhdmVkRGF0YUluZGV4ID0gdGhpcy5nZXRTYXZlZEVkaXRvckNvbnRlbnQoZWRpdG9yLmlkICsgJy1pbmRleCcpXG4gICAgICAgICAgICA/IHBhcnNlSW50KHRoaXMuZ2V0U2F2ZWRFZGl0b3JDb250ZW50KGVkaXRvci5pZCArICctaW5kZXgnKSlcbiAgICAgICAgICAgIDogLTE7XG4gICAgICAgIGxldCBwYXJzZWRTYXZlZERhdGE6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICAgICAgaWYgKCFzYXZlZERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZWRTYXZlZERhdGEgPSBKU09OLnBhcnNlKHNhdmVkRGF0YSk7XG4gICAgICAgIC0tc2F2ZWREYXRhSW5kZXg7XG4gICAgICAgIHNhdmVkRGF0YUluZGV4ID0gc2F2ZWREYXRhSW5kZXggPCAwID8gMCA6IHNhdmVkRGF0YUluZGV4O1xuICAgICAgICBjb2RlRWRpdEVkaXRvciA9IHRoaXMuZmluZFBhcmVudEVkaXRvcigpO1xuICAgICAgICBjb2RlRWRpdEFwaSA9IHRoaXMuYXBpO1xuICAgICAgICBzYXZlQ29kZUVkaXRNb2RhbChwYXJzZWRTYXZlZERhdGFbc2F2ZWREYXRhSW5kZXhdKTtcbiAgICAgICAgdGhpcy5zZXRTYXZlZEVkaXRvckNvbnRlbnQoZWRpdG9yLmlkICsgJy1pbmRleCcsIHNhdmVkRGF0YUluZGV4LnRvU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIHJlZG8oKSB7XG4gICAgICAgIGxldCBlZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcblxuICAgICAgICBsZXQgc2F2ZWREYXRhID0gdGhpcy5nZXRTYXZlZEVkaXRvckNvbnRlbnQoZWRpdG9yLmlkKTtcbiAgICAgICAgbGV0IHNhdmVkRGF0YUluZGV4ID0gdGhpcy5nZXRTYXZlZEVkaXRvckNvbnRlbnQoZWRpdG9yLmlkICsgJy1pbmRleCcpXG4gICAgICAgICAgICA/IHBhcnNlSW50KHRoaXMuZ2V0U2F2ZWRFZGl0b3JDb250ZW50KGVkaXRvci5pZCArICctaW5kZXgnKSlcbiAgICAgICAgICAgIDogLTE7XG4gICAgICAgIGxldCBwYXJzZWRTYXZlZERhdGE6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICAgICAgaWYgKCFzYXZlZERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZWRTYXZlZERhdGEgPSBKU09OLnBhcnNlKHNhdmVkRGF0YSk7XG4gICAgICAgICsrc2F2ZWREYXRhSW5kZXg7XG4gICAgICAgIHNhdmVkRGF0YUluZGV4ID0gc2F2ZWREYXRhSW5kZXggPiBwYXJzZWRTYXZlZERhdGEubGVuZ3RoID8gcGFyc2VkU2F2ZWREYXRhLmxlbmd0aCA6IHNhdmVkRGF0YUluZGV4O1xuICAgICAgICBjb2RlRWRpdEVkaXRvciA9IHRoaXMuZmluZFBhcmVudEVkaXRvcigpO1xuICAgICAgICBjb2RlRWRpdEFwaSA9IHRoaXMuYXBpO1xuICAgICAgICBzYXZlQ29kZUVkaXRNb2RhbChwYXJzZWRTYXZlZERhdGFbc2F2ZWREYXRhSW5kZXhdKTtcbiAgICAgICAgdGhpcy5zZXRTYXZlZEVkaXRvckNvbnRlbnQoZWRpdG9yLmlkICsgJy1pbmRleCcsIHNhdmVkRGF0YUluZGV4LnRvU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIGVkaXRIVE1MKCkge1xuICAgICAgICBsZXQgY29udGVudCA9IHRoaXMuZ2V0RWRpdG9yQ29udGVudCgpO1xuICAgICAgICBsZXQgbW9kYWwgPSB0aGlzLmNyZWF0ZUhUTUxFZGl0TW9kYWwoY29udGVudCk7XG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKS5hcHBlbmRDaGlsZChtb2RhbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVIVE1MRWRpdE1vZGFsKGNvbnRlbnQ6IHN0cmluZykge1xuICAgICAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKHRoaXMuY29udGFpbmVyQ2xhc3MpO1xuICAgICAgICBsZXQgbW9kYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgbW9kYWwuY2xhc3NMaXN0LmFkZCh0aGlzLm1vZGFsQ2xhc3MpO1xuICAgICAgICBsZXQgZWRpdG9yQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGVkaXRvckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKHRoaXMuZWRpdG9yQ2xhc3MpO1xuICAgICAgICB2YXIgbW9uYWNvRWRpdG9yID0gbW9uYWNvLmVkaXRvci5jcmVhdGUoZWRpdG9yQ29udGFpbmVyLCB7XG4gICAgICAgICAgICB2YWx1ZTogY29udGVudCxcbiAgICAgICAgICAgIGxhbmd1YWdlOiAnaHRtbCcsXG4gICAgICAgICAgICBhdXRvbWF0aWNMYXlvdXQ6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb2RlRWRpdEVkaXRvciA9IHRoaXMuZmluZFBhcmVudEVkaXRvcigpO1xuICAgICAgICBjb2RlRWRpdEFwaSA9IHRoaXMuYXBpO1xuXG4gICAgICAgIGxldCBidXR0b25Db250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgbGV0IGNhbmNlbEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICAgICAgICBsZXQgc2F2ZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICAgICAgICBjYW5jZWxCdXR0b24uaW5uZXJUZXh0ID0gdGhpcy5hcGkuaTE4bi50KCdDYW5jZWwnKTtcbiAgICAgICAgc2F2ZUJ1dHRvbi5pbm5lclRleHQgPSB0aGlzLmFwaS5pMThuLnQoJ1NhdmUnKTtcbiAgICAgICAgY2FuY2VsQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VDb2RlRWRpdE1vZGFsLCB0cnVlKTtcbiAgICAgICAgc2F2ZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9IG1vbmFjb0VkaXRvci5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIHNhdmVDb2RlRWRpdE1vZGFsKGNvbnRlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgYnV0dG9uQ29udGFpbmVyLmFwcGVuZENoaWxkKGNhbmNlbEJ1dHRvbik7XG4gICAgICAgIGJ1dHRvbkNvbnRhaW5lci5hcHBlbmRDaGlsZChzYXZlQnV0dG9uKTtcbiAgICAgICAgYnV0dG9uQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5idXR0b25DbGFzcyk7XG5cbiAgICAgICAgbW9kYWwuYXBwZW5kQ2hpbGQoZWRpdG9yQ29udGFpbmVyKTtcbiAgICAgICAgbW9kYWwuYXBwZW5kQ2hpbGQoYnV0dG9uQ29udGFpbmVyKTtcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKG1vZGFsKTtcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNhdmVkRWRpdG9yQ29udGVudChuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2F2ZWRFZGl0b3JDb250ZW50KG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShuYW1lLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFZGl0b3JDb250ZW50KCk6IHN0cmluZyB7XG4gICAgICAgIGxldCBjdXJyZW50RWRpdG9yID0gdGhpcy5maW5kUGFyZW50RWRpdG9yKCk7XG4gICAgICAgIGxldCBlZGl0b3JCbG9ja3MgPSBjdXJyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jb2RleC1lZGl0b3JfX3JlZGFjdG9yIC5jZS1wYXJhZ3JhcGgnKTtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSAnJztcbiAgICAgICAgZWRpdG9yQmxvY2tzLmZvckVhY2goKGJsb2NrKSA9PiB7XG4gICAgICAgICAgICBsZXQgY2xvc2luZ1RhZyA9ICc8LycgKyBibG9jay5jaGlsZHJlblswXT8udGFnTmFtZS50b0xvd2VyQ2FzZSgpICsgJz4nO1xuICAgICAgICAgICAgbGV0IHJlZ2V4cCA9IC8oKDxcXC8pXFx3Kyg+KSkoPyFbXFxzXFxTXSooKDxcXC8pXFx3Kyg+KSlbXFxzXFxTXSokKS9pO1xuICAgICAgICAgICAgbGV0IGxhc3RDb250ZW50Q2xvc2luZ1RhZyA9IGNvbnRlbnQubWF0Y2gocmVnZXhwKSA/IGNvbnRlbnQubWF0Y2gocmVnZXhwKVswXSA6ICcnO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChibG9jay5jaGlsZHJlblswXT8udGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAndWwnIHx8IGJsb2NrLmNoaWxkcmVuWzBdPy50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvbCcpICYmXG4gICAgICAgICAgICAgICAgbGFzdENvbnRlbnRDbG9zaW5nVGFnID09PSBjbG9zaW5nVGFnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgY29udGVudC5sZW5ndGggLSBjbG9zaW5nVGFnLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgY29udGVudCArPSBibG9jay5pbm5lckhUTUwuc3Vic3RyaW5nKGNsb3NpbmdUYWcucmVwbGFjZSgnLycsICcnKS5sZW5ndGgsIGJsb2NrLmlubmVySFRNTC5sZW5ndGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50ICs9IGJsb2NrLmlubmVySFRNTDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLkZvcm1hdEhUTUxTdHJpbmdJbmRlbnRhdGlvbihjb250ZW50KTtcbiAgICB9XG5cbiAgICAvLyBBZGFwdGVkIEZST00ganNmaWRkbGUgaGVyZTogaHR0cHM6Ly9qc2ZpZGRsZS5uZXQvYnVrc3kvcnh1Y2cxZ2QvXG4gICAgcHJpdmF0ZSBGb3JtYXRIVE1MU3RyaW5nSW5kZW50YXRpb24oY29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHN0cmlwV2hpdGVTcGFjZXMgPSB0cnVlO1xuICAgICAgICBsZXQgc3RyaXBFbXB0eUxpbmVzID0gdHJ1ZTtcbiAgICAgICAgY29uc3Qgd2hpdGVzcGFjZSA9ICcgJy5yZXBlYXQoMik7IC8vIERlZmF1bHQgaW5kZW50aW5nIDQgd2hpdGVzcGFjZXNcbiAgICAgICAgbGV0IGN1cnJlbnRJbmRlbnQgPSAwO1xuICAgICAgICBjb25zdCBuZXdsaW5lQ2hhciA9ICdcXG4nO1xuICAgICAgICBsZXQgcHJldkNoYXIgPSBudWxsO1xuICAgICAgICBsZXQgY2hhciA9IG51bGw7XG4gICAgICAgIGxldCBuZXh0Q2hhciA9IG51bGw7XG5cbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICBmb3IgKGxldCBwb3MgPSAwOyBwb3MgPD0gY29kZS5sZW5ndGg7IHBvcysrKSB7XG4gICAgICAgICAgICBwcmV2Q2hhciA9IGNoYXI7XG4gICAgICAgICAgICBjaGFyID0gY29kZS5zdWJzdHIocG9zLCAxKTtcbiAgICAgICAgICAgIG5leHRDaGFyID0gY29kZS5zdWJzdHIocG9zICsgMSwgMSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzQnJUYWcgPSBjb2RlLnN1YnN0cihwb3MsIDQpID09PSAnPGJyPic7XG4gICAgICAgICAgICBjb25zdCBpc09wZW5pbmdUYWcgPSBjaGFyID09PSAnPCcgJiYgbmV4dENoYXIgIT09ICcvJyAmJiAhaXNCclRhZztcbiAgICAgICAgICAgIGNvbnN0IGlzQ2xvc2luZ1RhZyA9IGNoYXIgPT09ICc8JyAmJiBuZXh0Q2hhciA9PT0gJy8nICYmICFpc0JyVGFnO1xuICAgICAgICAgICAgY29uc3QgaXNUYWdFbmQgPSBwcmV2Q2hhciA9PT0gJz4nICYmIGNoYXIgIT09ICc8JyAmJiBjdXJyZW50SW5kZW50ID4gMDtcbiAgICAgICAgICAgIGNvbnN0IGlzVGFnTmV4dCA9XG4gICAgICAgICAgICAgICAgIWlzQnJUYWcgJiYgIWlzT3BlbmluZ1RhZyAmJiAhaXNDbG9zaW5nVGFnICYmIGlzVGFnRW5kICYmIGNvZGUuc3Vic3RyKHBvcywgY29kZS5zdWJzdHIocG9zKS5pbmRleE9mKCc8JykpLnRyaW0oKSA9PT0gJyc7XG4gICAgICAgICAgICBpZiAoaXNCclRhZykge1xuICAgICAgICAgICAgICAgIC8vIElmIG9wZW5pbmcgdGFnLCBhZGQgbmV3bGluZSBjaGFyYWN0ZXIgYW5kIGluZGVudGlvblxuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBuZXdsaW5lQ2hhcjtcbiAgICAgICAgICAgICAgICBjdXJyZW50SW5kZW50LS07XG4gICAgICAgICAgICAgICAgcG9zICs9IDQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNPcGVuaW5nVGFnKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgb3BlbmluZyB0YWcsIGFkZCBuZXdsaW5lIGNoYXJhY3RlciBhbmQgaW5kZW50aW9uXG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IChwb3MgPT09IDAgPyAnJyA6IG5ld2xpbmVDaGFyKSArIHdoaXRlc3BhY2UucmVwZWF0KGN1cnJlbnRJbmRlbnQpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRlbnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIENsb3NpbmcgdGFnLCBhZGQgbmV3bGluZSBhbmQgaW5kZW50aW9uXG4gICAgICAgICAgICBlbHNlIGlmIChpc0Nsb3NpbmdUYWcpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdyZSBtb3JlIGNsb3NpbmcgdGFncyB0aGFuIG9wZW5pbmdcbiAgICAgICAgICAgICAgICBpZiAoLS1jdXJyZW50SW5kZW50IDwgMCkgY3VycmVudEluZGVudCA9IDA7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IG5ld2xpbmVDaGFyICsgd2hpdGVzcGFjZS5yZXBlYXQoY3VycmVudEluZGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyByZW1vdmUgbXVsdGlwbGUgd2hpdGVzcGFjZXNcbiAgICAgICAgICAgIGVsc2UgaWYgKHN0cmlwV2hpdGVTcGFjZXMgPT09IHRydWUgJiYgY2hhciA9PT0gJyAnICYmIG5leHRDaGFyID09PSAnICcpIGNoYXIgPSAnJztcbiAgICAgICAgICAgIC8vIHJlbW92ZSBlbXB0eSBsaW5lc1xuICAgICAgICAgICAgZWxzZSBpZiAoc3RyaXBFbXB0eUxpbmVzID09PSB0cnVlICYmIGNoYXIgPT09IG5ld2xpbmVDaGFyKSB7XG4gICAgICAgICAgICAgICAgLy9kZWJ1Z2dlcjtcbiAgICAgICAgICAgICAgICBpZiAoY29kZS5zdWJzdHIocG9zLCBjb2RlLnN1YnN0cihwb3MpLmluZGV4T2YoJzwnKSkudHJpbSgpID09PSAnJykgY2hhciA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzVGFnRW5kICYmICFpc1RhZ05leHQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gbmV3bGluZUNoYXIgKyB3aGl0ZXNwYWNlLnJlcGVhdChjdXJyZW50SW5kZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0ICs9IGNoYXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5cbnZhciBjb2RlRWRpdEVkaXRvciA9IG51bGw7XG52YXIgY29kZUVkaXRBcGkgPSBudWxsO1xuXG5mdW5jdGlvbiBjbG9zZUNvZGVFZGl0TW9kYWwoKSB7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvZGVFZGl0X19jb250YWluZXInKT8ucmVtb3ZlKCk7XG59XG5cbmZ1bmN0aW9uIHNhdmVDb2RlRWRpdE1vZGFsKGNvbnRlbnQpIHtcbiAgICBsZXQgdG1wRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRtcEVsZW1lbnQuaW5uZXJIVE1MID0gY29udGVudDtcblxuICAgIGNvZGVFZGl0QXBpLmJsb2Nrcy5jbGVhcigpO1xuICAgIGxldCBwYXJhZ3JhcGggPSBjb2RlRWRpdEVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuY2UtcGFyYWdyYXBoJyk7XG4gICAgbGV0IGkgPSAwO1xuXG4gICAgd2hpbGUgKHRtcEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQpIHtcbiAgICAgICAgaWYgKHRtcEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAndWwnIHx8IHRtcEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnb2wnKSB7XG4gICAgICAgICAgICBsZXQgbGlzdE1hcmtlciA9IDE7XG4gICAgICAgICAgICBsZXQgcHJldmlvdXNDb250YWluZXJXYXNPbCA9IGZhbHNlO1xuICAgICAgICAgICAgd2hpbGUgKHRtcEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZmlyc3RFbGVtZW50Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0bXBFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLnRhZ05hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0bXBFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmZpcnN0RWxlbWVudENoaWxkLmNsb25lTm9kZSh0cnVlKSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lci50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c0NvbnRhaW5lcldhc09sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0TWFya2VyID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZmlyc3RFbGVtZW50Q2hpbGQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGxpc3RNYXJrZXIudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzQ29udGFpbmVyV2FzT2wgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICArK2xpc3RNYXJrZXI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNDb250YWluZXJXYXNPbCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaSA+PSBwYXJhZ3JhcGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGVFZGl0QXBpLmJsb2Nrcy5pbnNlcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRtcFBhcmFncmFwaCA9IGNvZGVFZGl0RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZS1wYXJhZ3JhcGgnKTtcbiAgICAgICAgICAgICAgICAgICAgdG1wUGFyYWdyYXBoW3RtcFBhcmFncmFwaC5sZW5ndGggLSAxXS5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgdG1wUGFyYWdyYXBoW3RtcFBhcmFncmFwaC5sZW5ndGggLSAxXS5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICB0bXBQYXJhZ3JhcGhbdG1wUGFyYWdyYXBoLmxlbmd0aCAtIDFdLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbkVkaXRMaXN0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhbaV0uaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaFtpXS5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhbaV0uYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRWRpdExpc3QsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0bXBFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmZpcnN0RWxlbWVudENoaWxkLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICsraTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpID49IHBhcmFncmFwaC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb2RlRWRpdEFwaS5ibG9ja3MuaW5zZXJ0KCk7XG4gICAgICAgICAgICAgICAgbGV0IHRtcFBhcmFncmFwaCA9IGNvZGVFZGl0RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZS1wYXJhZ3JhcGgnKTtcbiAgICAgICAgICAgICAgICB0bXBQYXJhZ3JhcGhbdG1wUGFyYWdyYXBoLmxlbmd0aCAtIDFdLmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgIHRtcFBhcmFncmFwaFt0bXBQYXJhZ3JhcGgubGVuZ3RoIC0gMV0uYXBwZW5kQ2hpbGQodG1wRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbG9uZU5vZGUodHJ1ZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhZ3JhcGhbaV0uaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICAgICAgcGFyYWdyYXBoW2ldLmFwcGVuZENoaWxkKHRtcEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xvbmVOb2RlKHRydWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICsraTtcbiAgICAgICAgfVxuICAgICAgICB0bXBFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIGNsb3NlQ29kZUVkaXRNb2RhbCgpO1xufVxuXG5mdW5jdGlvbiBvbkVkaXRMaXN0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgbGV0IGZvY3VzZWRCbG9jayA9IDxIVE1MRWxlbWVudD5ldmVudC50YXJnZXQ7XG4gICAgaWYgKExJU1RfRURJVF9LRVlfQ09ERVMuaW5kZXhPZihldmVudC5jb2RlKSA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5jb2RlID09PSAnQmFja3NwYWNlJykge1xuICAgICAgICAgICAgaWYgKGZvY3VzZWRCbG9jay5pbm5lclRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRQYXJhZ3JhcGggPSBjb2RlRWRpdEVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuY2UtcGFyYWdyYXBoJylbY29kZUVkaXRBcGkuYmxvY2tzLmdldEN1cnJlbnRCbG9ja0luZGV4KCldO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGguaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGgucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRWRpdExpc3QsIHRydWUpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoY3VycmVudFBhcmFncmFwaC5xdWVyeVNlbGVjdG9yKCdwJyksIDAsIGN1cnJlbnRQYXJhZ3JhcGgucXVlcnlTZWxlY3RvcigncCcpLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGlmIChmb2N1c2VkQmxvY2suaW5uZXJUZXh0ICE9PSAnJykge1xuICAgICAgICAgICAgICAgIGNvZGVFZGl0QXBpLmJsb2Nrcy5pbnNlcnQoJ3BhcmFncmFwaCcsIGNvZGVFZGl0QXBpLmJsb2Nrcy5nZXRDdXJyZW50QmxvY2tJbmRleCgpKTtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudEJsb2NrID0gY29kZUVkaXRFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLmNlLWJsb2NrJylbY29kZUVkaXRBcGkuYmxvY2tzLmdldEN1cnJlbnRCbG9ja0luZGV4KCldO1xuICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c0Jsb2NrID0gY29kZUVkaXRFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLmNlLWJsb2NrJylbY29kZUVkaXRBcGkuYmxvY2tzLmdldEN1cnJlbnRCbG9ja0luZGV4KCkgLSAxXTtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudFBhcmFncmFwaCA9IGN1cnJlbnRCbG9jay5xdWVyeVNlbGVjdG9yKCcuY2UtcGFyYWdyYXBoJyk7XG4gICAgICAgICAgICAgICAgbGV0IGxpc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChwcmV2aW91c0Jsb2NrLnF1ZXJ5U2VsZWN0b3IoJy5jZS1wYXJhZ3JhcGgnKS5maXJzdEVsZW1lbnRDaGlsZC50YWdOYW1lKTtcbiAgICAgICAgICAgICAgICBsaXN0RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpKTtcbiAgICAgICAgICAgICAgICBpZiAobGlzdEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnb2wnKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAocGFyc2VJbnQocHJldmlvdXNCbG9jay5xdWVyeVNlbGVjdG9yKCdsaScpLmdldEF0dHJpYnV0ZSgndmFsdWUnKSkgKyAxKS50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kQ2hpbGQobGlzdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGguYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRWRpdExpc3QsIHRydWUpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoY3VycmVudFBhcmFncmFwaC5xdWVyeVNlbGVjdG9yKCdsaScpLCAwLCBjdXJyZW50UGFyYWdyYXBoLnF1ZXJ5U2VsZWN0b3IoJ2xpJyksIDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudFBhcmFncmFwaCA9IGNvZGVFZGl0RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZS1wYXJhZ3JhcGgnKVtjb2RlRWRpdEFwaS5ibG9ja3MuZ2V0Q3VycmVudEJsb2NrSW5kZXgoKV07XG4gICAgICAgICAgICAgICAgY3VycmVudFBhcmFncmFwaC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFyYWdyYXBoLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKSk7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhcmFncmFwaC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25FZGl0TGlzdCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChjdXJyZW50UGFyYWdyYXBoLnF1ZXJ5U2VsZWN0b3IoJ3AnKSwgMCwgY3VycmVudFBhcmFncmFwaC5xdWVyeVNlbGVjdG9yKCdwJyksIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9wYXVsaW5lL0RvY3VtZW50cy93b3Jrc3BhY2Uvd2l6aS1ibG9jay9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY29tcG9uZW50cy9lZGl0b3Jqcy90b29scy9wYXJhZ3JhcGgvdG9vbC10eXBlL3RleHQtZWRpdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFbkYsTUFBTSxPQUFnQixlQUFnQixTQUFRLGtCQUFrQjtJQUFoRTs7UUFLSSxtQkFBYyxHQUFHLHFCQUFxQixDQUFDO1FBQ3ZDLGVBQVUsR0FBRyw0QkFBNEIsQ0FBQztRQUMxQyxnQkFBVyxHQUFHLG9DQUFvQyxDQUFDO1FBQ25ELGdCQUFXLEdBQUcscUNBQXFDLENBQUM7SUF3S3hELENBQUM7SUF0S0csSUFBSTtRQUNBLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDNUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxD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bXBvcnQgeyBQYXJhZ3JhcGhTdHlsZVRvb2wgfSBmcm9tICcuL3BhcmFncmFwaC1zdHlsZS10b29sLmNvbXBvbmVudCc7XG5pbXBvcnQgKiBhcyBtb25hY28gZnJvbSAnbW9uYWNvLWVkaXRvcic7XG5pbXBvcnQgeyBMSVNUX0VESVRfS0VZX0NPREVTIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBlZGl0b3JKU0kxOG5EaWN0aW9ubmFyeSB9IGZyb20gJy4uLy4uL3V0aWxzL2VkaXRvcmpzLXRyYW5zbGF0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGV4dEVkaXRpb25Ub29sIGV4dGVuZHMgUGFyYWdyYXBoU3R5bGVUb29sIHtcbiAgICBub2RlczogeyBidXR0b246IEhUTUxCdXR0b25FbGVtZW50IH07XG5cbiAgICBDU1M6IGFueTtcblxuICAgIGNvbnRhaW5lckNsYXNzID0gJ2NvZGVFZGl0X19jb250YWluZXInO1xuICAgIG1vZGFsQ2xhc3MgPSAnY29kZUVkaXRfX2NvbnRhaW5lcl9fbW9kYWwnO1xuICAgIGVkaXRvckNsYXNzID0gJ2NvZGVFZGl0X19jb250YWluZXJfX21vZGFsX19lZGl0b3InO1xuICAgIGJ1dHRvbkNsYXNzID0gJ2NvZGVFZGl0X19jb250YWluZXJfX21vZGFsX19idXR0b25zJztcblxuICAgIHVuZG8oKSB7XG4gICAgICAgIGxldCBlZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcbiAgICAgICAgbGV0IHNhdmVkRGF0YSA9IHRoaXMuZ2V0U2F2ZWRFZGl0b3JDb250ZW50KGVkaXRvci5pZCk7XG4gICAgICAgIGxldCBzYXZlZERhdGFJbmRleCA9IHRoaXMuZ2V0U2F2ZWRFZGl0b3JDb250ZW50KGVkaXRvci5pZCArICctaW5kZXgnKVxuICAgICAgICAgICAgPyBwYXJzZUludCh0aGlzLmdldFNhdmVkRWRpdG9yQ29udGVudChlZGl0b3IuaWQgKyAnLWluZGV4JykpXG4gICAgICAgICAgICA6IC0xO1xuICAgICAgICBsZXQgcGFyc2VkU2F2ZWREYXRhOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgICAgIGlmICghc2F2ZWREYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VkU2F2ZWREYXRhID0gSlNPTi5wYXJzZShzYXZlZERhdGEpO1xuICAgICAgICAtLXNhdmVkRGF0YUluZGV4O1xuICAgICAgICBzYXZlZERhdGFJbmRleCA9IHNhdmVkRGF0YUluZGV4IDwgMCA/IDAgOiBzYXZlZERhdGFJbmRleDtcbiAgICAgICAgY29kZUVkaXRFZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcbiAgICAgICAgY29kZUVkaXRBcGkgPSB0aGlzLmFwaTtcbiAgICAgICAgc2F2ZUNvZGVFZGl0TW9kYWwocGFyc2VkU2F2ZWREYXRhW3NhdmVkRGF0YUluZGV4XSk7XG4gICAgICAgIHRoaXMuc2V0U2F2ZWRFZGl0b3JDb250ZW50KGVkaXRvci5pZCArICctaW5kZXgnLCBzYXZlZERhdGFJbmRleC50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICByZWRvKCkge1xuICAgICAgICBsZXQgZWRpdG9yID0gdGhpcy5maW5kUGFyZW50RWRpdG9yKCk7XG5cbiAgICAgICAgbGV0IHNhdmVkRGF0YSA9IHRoaXMuZ2V0U2F2ZWRFZGl0b3JDb250ZW50KGVkaXRvci5pZCk7XG4gICAgICAgIGxldCBzYXZlZERhdGFJbmRleCA9IHRoaXMuZ2V0U2F2ZWRFZGl0b3JDb250ZW50KGVkaXRvci5pZCArICctaW5kZXgnKVxuICAgICAgICAgICAgPyBwYXJzZUludCh0aGlzLmdldFNhdmVkRWRpdG9yQ29udGVudChlZGl0b3IuaWQgKyAnLWluZGV4JykpXG4gICAgICAgICAgICA6IC0xO1xuICAgICAgICBsZXQgcGFyc2VkU2F2ZWREYXRhOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgICAgIGlmICghc2F2ZWREYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VkU2F2ZWREYXRhID0gSlNPTi5wYXJzZShzYXZlZERhdGEpO1xuICAgICAgICArK3NhdmVkRGF0YUluZGV4O1xuICAgICAgICBzYXZlZERhdGFJbmRleCA9IHNhdmVkRGF0YUluZGV4ID4gcGFyc2VkU2F2ZWREYXRhLmxlbmd0aCA/IHBhcnNlZFNhdmVkRGF0YS5sZW5ndGggOiBzYXZlZERhdGFJbmRleDtcbiAgICAgICAgY29kZUVkaXRFZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcbiAgICAgICAgY29kZUVkaXRBcGkgPSB0aGlzLmFwaTtcbiAgICAgICAgc2F2ZUNvZGVFZGl0TW9kYWwocGFyc2VkU2F2ZWREYXRhW3NhdmVkRGF0YUluZGV4XSk7XG4gICAgICAgIHRoaXMuc2V0U2F2ZWRFZGl0b3JDb250ZW50KGVkaXRvci5pZCArICctaW5kZXgnLCBzYXZlZERhdGFJbmRleC50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICBlZGl0SFRNTCgpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSB0aGlzLmdldEVkaXRvckNvbnRlbnQoKTtcbiAgICAgICAgbGV0IG1vZGFsID0gdGhpcy5jcmVhdGVIVE1MRWRpdE1vZGFsKGNvbnRlbnQpO1xuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JykuYXBwZW5kQ2hpbGQobW9kYWwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSFRNTEVkaXRNb2RhbChjb250ZW50OiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbnRhaW5lckNsYXNzKTtcbiAgICAgICAgbGV0IG1vZGFsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIG1vZGFsLmNsYXNzTGlzdC5hZGQodGhpcy5tb2RhbENsYXNzKTtcbiAgICAgICAgbGV0IGVkaXRvckNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBlZGl0b3JDb250YWluZXIuY2xhc3NMaXN0LmFkZCh0aGlzLmVkaXRvckNsYXNzKTtcbiAgICAgICAgdmFyIG1vbmFjb0VkaXRvciA9IG1vbmFjby5lZGl0b3IuY3JlYXRlKGVkaXRvckNvbnRhaW5lciwge1xuICAgICAgICAgICAgdmFsdWU6IGNvbnRlbnQsXG4gICAgICAgICAgICBsYW5ndWFnZTogJ2h0bWwnLFxuICAgICAgICAgICAgYXV0b21hdGljTGF5b3V0OiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29kZUVkaXRFZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcbiAgICAgICAgY29kZUVkaXRBcGkgPSB0aGlzLmFwaTtcblxuICAgICAgICBsZXQgYnV0dG9uQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGxldCBjYW5jZWxCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcbiAgICAgICAgbGV0IHNhdmVCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcbiAgICAgICAgY2FuY2VsQnV0dG9uLmlubmVyVGV4dCA9IGVkaXRvckpTSTE4bkRpY3Rpb25uYXJ5Lm1lc3NhZ2VzLnRvb2xzLmNvZGVFZGl0WydDYW5jZWwnXTtcbiAgICAgICAgc2F2ZUJ1dHRvbi5pbm5lclRleHQgPSBlZGl0b3JKU0kxOG5EaWN0aW9ubmFyeS5tZXNzYWdlcy50b29scy5jb2RlRWRpdFsnU2F2ZSddO1xuICAgICAgICBjYW5jZWxCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZUNvZGVFZGl0TW9kYWwsIHRydWUpO1xuICAgICAgICBzYXZlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAnY2xpY2snLFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID0gbW9uYWNvRWRpdG9yLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgc2F2ZUNvZGVFZGl0TW9kYWwoY29udGVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICBidXR0b25Db250YWluZXIuYXBwZW5kQ2hpbGQoY2FuY2VsQnV0dG9uKTtcbiAgICAgICAgYnV0dG9uQ29udGFpbmVyLmFwcGVuZENoaWxkKHNhdmVCdXR0b24pO1xuICAgICAgICBidXR0b25Db250YWluZXIuY2xhc3NMaXN0LmFkZCh0aGlzLmJ1dHRvbkNsYXNzKTtcblxuICAgICAgICBtb2RhbC5hcHBlbmRDaGlsZChlZGl0b3JDb250YWluZXIpO1xuICAgICAgICBtb2RhbC5hcHBlbmRDaGlsZChidXR0b25Db250YWluZXIpO1xuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobW9kYWwpO1xuICAgICAgICByZXR1cm4gY29udGFpbmVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2F2ZWRFZGl0b3JDb250ZW50KG5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTYXZlZEVkaXRvckNvbnRlbnQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG5hbWUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEVkaXRvckNvbnRlbnQoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGN1cnJlbnRFZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcbiAgICAgICAgbGV0IGVkaXRvckJsb2NrcyA9IGN1cnJlbnRFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLmNvZGV4LWVkaXRvcl9fcmVkYWN0b3IgLmNlLXBhcmFncmFwaCcpO1xuICAgICAgICBsZXQgY29udGVudCA9ICcnO1xuICAgICAgICBlZGl0b3JCbG9ja3MuZm9yRWFjaCgoYmxvY2spID0+IHtcbiAgICAgICAgICAgIGxldCBjbG9zaW5nVGFnID0gJzwvJyArIGJsb2NrLmNoaWxkcmVuWzBdPy50YWdOYW1lLnRvTG93ZXJDYXNlKCkgKyAnPic7XG4gICAgICAgICAgICBsZXQgcmVnZXhwID0gLygoPFxcLylcXHcrKD4pKSg/IVtcXHNcXFNdKigoPFxcLylcXHcrKD4pKVtcXHNcXFNdKiQpL2k7XG4gICAgICAgICAgICBsZXQgbGFzdENvbnRlbnRDbG9zaW5nVGFnID0gY29udGVudC5tYXRjaChyZWdleHApID8gY29udGVudC5tYXRjaChyZWdleHApWzBdIDogJyc7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKGJsb2NrLmNoaWxkcmVuWzBdPy50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICd1bCcgfHwgYmxvY2suY2hpbGRyZW5bMF0/LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29sJykgJiZcbiAgICAgICAgICAgICAgICBsYXN0Q29udGVudENsb3NpbmdUYWcgPT09IGNsb3NpbmdUYWdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZygwLCBjb250ZW50Lmxlbmd0aCAtIGNsb3NpbmdUYWcubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBjb250ZW50ICs9IGJsb2NrLmlubmVySFRNTC5zdWJzdHJpbmcoY2xvc2luZ1RhZy5yZXBsYWNlKCcvJywgJycpLmxlbmd0aCwgYmxvY2suaW5uZXJIVE1MLmxlbmd0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0gYmxvY2suaW5uZXJIVE1MO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuRm9ybWF0SFRNTFN0cmluZ0luZGVudGF0aW9uKGNvbnRlbnQpO1xuICAgIH1cblxuICAgIC8vIEFkYXB0ZWQgRlJPTSBqc2ZpZGRsZSBoZXJlOiBodHRwczovL2pzZmlkZGxlLm5ldC9idWtzeS9yeHVjZzFnZC9cbiAgICBwcml2YXRlIEZvcm1hdEhUTUxTdHJpbmdJbmRlbnRhdGlvbihjb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgc3RyaXBXaGl0ZVNwYWNlcyA9IHRydWU7XG4gICAgICAgIGxldCBzdHJpcEVtcHR5TGluZXMgPSB0cnVlO1xuICAgICAgICBjb25zdCB3aGl0ZXNwYWNlID0gJyAnLnJlcGVhdCgyKTsgLy8gRGVmYXVsdCBpbmRlbnRpbmcgNCB3aGl0ZXNwYWNlc1xuICAgICAgICBsZXQgY3VycmVudEluZGVudCA9IDA7XG4gICAgICAgIGNvbnN0IG5ld2xpbmVDaGFyID0gJ1xcbic7XG4gICAgICAgIGxldCBwcmV2Q2hhciA9IG51bGw7XG4gICAgICAgIGxldCBjaGFyID0gbnVsbDtcbiAgICAgICAgbGV0IG5leHRDaGFyID0gbnVsbDtcblxuICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgICAgIGZvciAobGV0IHBvcyA9IDA7IHBvcyA8PSBjb2RlLmxlbmd0aDsgcG9zKyspIHtcbiAgICAgICAgICAgIHByZXZDaGFyID0gY2hhcjtcbiAgICAgICAgICAgIGNoYXIgPSBjb2RlLnN1YnN0cihwb3MsIDEpO1xuICAgICAgICAgICAgbmV4dENoYXIgPSBjb2RlLnN1YnN0cihwb3MgKyAxLCAxKTtcblxuICAgICAgICAgICAgY29uc3QgaXNCclRhZyA9IGNvZGUuc3Vic3RyKHBvcywgNCkgPT09ICc8YnI+JztcbiAgICAgICAgICAgIGNvbnN0IGlzT3BlbmluZ1RhZyA9IGNoYXIgPT09ICc8JyAmJiBuZXh0Q2hhciAhPT0gJy8nICYmICFpc0JyVGFnO1xuICAgICAgICAgICAgY29uc3QgaXNDbG9zaW5nVGFnID0gY2hhciA9PT0gJzwnICYmIG5leHRDaGFyID09PSAnLycgJiYgIWlzQnJUYWc7XG4gICAgICAgICAgICBjb25zdCBpc1RhZ0VuZCA9IHByZXZDaGFyID09PSAnPicgJiYgY2hhciAhPT0gJzwnICYmIGN1cnJlbnRJbmRlbnQgPiAwO1xuICAgICAgICAgICAgY29uc3QgaXNUYWdOZXh0ID1cbiAgICAgICAgICAgICAgICAhaXNCclRhZyAmJiAhaXNPcGVuaW5nVGFnICYmICFpc0Nsb3NpbmdUYWcgJiYgaXNUYWdFbmQgJiYgY29kZS5zdWJzdHIocG9zLCBjb2RlLnN1YnN0cihwb3MpLmluZGV4T2YoJzwnKSkudHJpbSgpID09PSAnJztcbiAgICAgICAgICAgIGlmIChpc0JyVGFnKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgb3BlbmluZyB0YWcsIGFkZCBuZXdsaW5lIGNoYXJhY3RlciBhbmQgaW5kZW50aW9uXG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IG5ld2xpbmVDaGFyICsgd2hpdGVzcGFjZS5yZXBlYXQoY3VycmVudEluZGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNPcGVuaW5nVGFnKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgb3BlbmluZyB0YWcsIGFkZCBuZXdsaW5lIGNoYXJhY3RlciBhbmQgaW5kZW50aW9uXG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IChwb3MgPT09IDAgPyAnJyA6IG5ld2xpbmVDaGFyKSArIHdoaXRlc3BhY2UucmVwZWF0KGN1cnJlbnRJbmRlbnQpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRlbnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIENsb3NpbmcgdGFnLCBhZGQgbmV3bGluZSBhbmQgaW5kZW50aW9uXG4gICAgICAgICAgICBlbHNlIGlmIChpc0Nsb3NpbmdUYWcpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdyZSBtb3JlIGNsb3NpbmcgdGFncyB0aGFuIG9wZW5pbmdcbiAgICAgICAgICAgICAgICBpZiAoLS1jdXJyZW50SW5kZW50IDwgMCkgY3VycmVudEluZGVudCA9IDA7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IG5ld2xpbmVDaGFyICsgd2hpdGVzcGFjZS5yZXBlYXQoY3VycmVudEluZGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyByZW1vdmUgbXVsdGlwbGUgd2hpdGVzcGFjZXNcbiAgICAgICAgICAgIGVsc2UgaWYgKHN0cmlwV2hpdGVTcGFjZXMgPT09IHRydWUgJiYgY2hhciA9PT0gJyAnICYmIG5leHRDaGFyID09PSAnICcpIGNoYXIgPSAnJztcbiAgICAgICAgICAgIC8vIHJlbW92ZSBlbXB0eSBsaW5lc1xuICAgICAgICAgICAgZWxzZSBpZiAoc3RyaXBFbXB0eUxpbmVzID09PSB0cnVlICYmIGNoYXIgPT09IG5ld2xpbmVDaGFyKSB7XG4gICAgICAgICAgICAgICAgLy9kZWJ1Z2dlcjtcbiAgICAgICAgICAgICAgICBpZiAoY29kZS5zdWJzdHIocG9zLCBjb2RlLnN1YnN0cihwb3MpLmluZGV4T2YoJzwnKSkudHJpbSgpID09PSAnJykgY2hhciA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzVGFnRW5kICYmICFpc1RhZ05leHQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gbmV3bGluZUNoYXIgKyB3aGl0ZXNwYWNlLnJlcGVhdChjdXJyZW50SW5kZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0ICs9IGNoYXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5cbnZhciBjb2RlRWRpdEVkaXRvciA9IG51bGw7XG52YXIgY29kZUVkaXRBcGkgPSBudWxsO1xuXG5mdW5jdGlvbiBjbG9zZUNvZGVFZGl0TW9kYWwoKSB7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvZGVFZGl0X19jb250YWluZXInKT8ucmVtb3ZlKCk7XG59XG5cbmZ1bmN0aW9uIHNhdmVDb2RlRWRpdE1vZGFsKGNvbnRlbnQpIHtcbiAgICBsZXQgdG1wRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRtcEVsZW1lbnQuaW5uZXJIVE1MID0gY29udGVudDtcblxuICAgIGNvZGVFZGl0QXBpLmJsb2Nrcy5jbGVhcigpO1xuICAgIGxldCBwYXJhZ3JhcGggPSBjb2RlRWRpdEVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuY2UtcGFyYWdyYXBoJyk7XG4gICAgbGV0IGkgPSAwO1xuXG4gICAgd2hpbGUgKHRtcEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQpIHtcbiAgICAgICAgaWYgKHRtcEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAndWwnIHx8IHRtcEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnb2wnKSB7XG4gICAgICAgICAgICBsZXQgbGlzdE1hcmtlciA9IDE7XG4gICAgICAgICAgICBsZXQgcHJldmlvdXNDb250YWluZXJXYXNPbCA9IGZhbHNlO1xuICAgICAgICAgICAgd2hpbGUgKHRtcEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuZmlyc3RFbGVtZW50Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0bXBFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLnRhZ05hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0bXBFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmZpcnN0RWxlbWVudENoaWxkLmNsb25lTm9kZSh0cnVlKSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lci50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c0NvbnRhaW5lcldhc09sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0TWFya2VyID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZmlyc3RFbGVtZW50Q2hpbGQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGxpc3RNYXJrZXIudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzQ29udGFpbmVyV2FzT2wgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICArK2xpc3RNYXJrZXI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNDb250YWluZXJXYXNPbCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaSA+PSBwYXJhZ3JhcGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGVFZGl0QXBpLmJsb2Nrcy5pbnNlcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRtcFBhcmFncmFwaCA9IGNvZGVFZGl0RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZS1wYXJhZ3JhcGgnKTtcbiAgICAgICAgICAgICAgICAgICAgdG1wUGFyYWdyYXBoW3RtcFBhcmFncmFwaC5sZW5ndGggLSAxXS5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgdG1wUGFyYWdyYXBoW3RtcFBhcmFncmFwaC5sZW5ndGggLSAxXS5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICB0bXBQYXJhZ3JhcGhbdG1wUGFyYWdyYXBoLmxlbmd0aCAtIDFdLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbkVkaXRMaXN0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhbaV0uaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaFtpXS5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhbaV0uYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRWRpdExpc3QsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0bXBFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmZpcnN0RWxlbWVudENoaWxkLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICsraTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpID49IHBhcmFncmFwaC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb2RlRWRpdEFwaS5ibG9ja3MuaW5zZXJ0KCk7XG4gICAgICAgICAgICAgICAgbGV0IHRtcFBhcmFncmFwaCA9IGNvZGVFZGl0RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZS1wYXJhZ3JhcGgnKTtcbiAgICAgICAgICAgICAgICB0bXBQYXJhZ3JhcGhbdG1wUGFyYWdyYXBoLmxlbmd0aCAtIDFdLmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgICAgIHRtcFBhcmFncmFwaFt0bXBQYXJhZ3JhcGgubGVuZ3RoIC0gMV0uYXBwZW5kQ2hpbGQodG1wRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbG9uZU5vZGUodHJ1ZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhZ3JhcGhbaV0uaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICAgICAgcGFyYWdyYXBoW2ldLmFwcGVuZENoaWxkKHRtcEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xvbmVOb2RlKHRydWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICsraTtcbiAgICAgICAgfVxuICAgICAgICB0bXBFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIGNsb3NlQ29kZUVkaXRNb2RhbCgpO1xufVxuXG5mdW5jdGlvbiBvbkVkaXRMaXN0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgbGV0IGZvY3VzZWRCbG9jayA9IDxIVE1MRWxlbWVudD5ldmVudC50YXJnZXQ7XG4gICAgaWYgKExJU1RfRURJVF9LRVlfQ09ERVMuaW5kZXhPZihldmVudC5jb2RlKSA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5jb2RlID09PSAnQmFja3NwYWNlJykge1xuICAgICAgICAgICAgaWYgKGZvY3VzZWRCbG9jay5pbm5lclRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRQYXJhZ3JhcGggPSBjb2RlRWRpdEVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuY2UtcGFyYWdyYXBoJylbY29kZUVkaXRBcGkuYmxvY2tzLmdldEN1cnJlbnRCbG9ja0luZGV4KCldO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGguaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGgucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRWRpdExpc3QsIHRydWUpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoY3VycmVudFBhcmFncmFwaC5xdWVyeVNlbGVjdG9yKCdwJyksIDAsIGN1cnJlbnRQYXJhZ3JhcGgucXVlcnlTZWxlY3RvcigncCcpLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGlmIChmb2N1c2VkQmxvY2suaW5uZXJUZXh0ICE9PSAnJykge1xuICAgICAgICAgICAgICAgIGNvZGVFZGl0QXBpLmJsb2Nrcy5pbnNlcnQoJ3BhcmFncmFwaCcsIGNvZGVFZGl0QXBpLmJsb2Nrcy5nZXRDdXJyZW50QmxvY2tJbmRleCgpKTtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudEJsb2NrID0gY29kZUVkaXRFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLmNlLWJsb2NrJylbY29kZUVkaXRBcGkuYmxvY2tzLmdldEN1cnJlbnRCbG9ja0luZGV4KCldO1xuICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c0Jsb2NrID0gY29kZUVkaXRFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLmNlLWJsb2NrJylbY29kZUVkaXRBcGkuYmxvY2tzLmdldEN1cnJlbnRCbG9ja0luZGV4KCkgLSAxXTtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudFBhcmFncmFwaCA9IGN1cnJlbnRCbG9jay5xdWVyeVNlbGVjdG9yKCcuY2UtcGFyYWdyYXBoJyk7XG4gICAgICAgICAgICAgICAgbGV0IGxpc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChwcmV2aW91c0Jsb2NrLnF1ZXJ5U2VsZWN0b3IoJy5jZS1wYXJhZ3JhcGgnKS5maXJzdEVsZW1lbnRDaGlsZC50YWdOYW1lKTtcbiAgICAgICAgICAgICAgICBsaXN0RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpKTtcbiAgICAgICAgICAgICAgICBpZiAobGlzdEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnb2wnKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAocGFyc2VJbnQocHJldmlvdXNCbG9jay5xdWVyeVNlbGVjdG9yKCdsaScpLmdldEF0dHJpYnV0ZSgndmFsdWUnKSkgKyAxKS50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kQ2hpbGQobGlzdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJhZ3JhcGguYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uRWRpdExpc3QsIHRydWUpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoY3VycmVudFBhcmFncmFwaC5xdWVyeVNlbGVjdG9yKCdsaScpLCAwLCBjdXJyZW50UGFyYWdyYXBoLnF1ZXJ5U2VsZWN0b3IoJ2xpJyksIDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudFBhcmFncmFwaCA9IGNvZGVFZGl0RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZS1wYXJhZ3JhcGgnKVtjb2RlRWRpdEFwaS5ibG9ja3MuZ2V0Q3VycmVudEJsb2NrSW5kZXgoKV07XG4gICAgICAgICAgICAgICAgY3VycmVudFBhcmFncmFwaC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFyYWdyYXBoLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKSk7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhcmFncmFwaC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25FZGl0TGlzdCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChjdXJyZW50UGFyYWdyYXBoLnF1ZXJ5U2VsZWN0b3IoJ3AnKSwgMCwgY3VycmVudFBhcmFncmFwaC5xdWVyeVNlbGVjdG9yKCdwJyksIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -24,11 +24,13 @@ export class EditorJSConversionService {
24
24
  });
25
25
  }
26
26
  convertCurrentElement(element, firstCall = false) {
27
+ var _a;
27
28
  return __awaiter(this, void 0, void 0, function* () {
28
29
  if (!element) {
29
30
  return;
30
31
  }
31
32
  const children = element.children;
33
+ let isOrderedListChildren = element.tagName.toLowerCase() === 'ol';
32
34
  for (var currentElement = children[0]; currentElement; currentElement = currentElement.nextElementSibling) {
33
35
  for (const [quillClass, editorJSClass] of Object.entries(this.classesToReplace)) {
34
36
  if (quillClass.indexOf('{input}') > -1) {
@@ -57,6 +59,9 @@ export class EditorJSConversionService {
57
59
  if (currentElement.tagName.toLowerCase() === 'u') {
58
60
  let newElement = document.createElement('span');
59
61
  newElement.innerHTML = currentElement.innerHTML;
62
+ if (currentElement.classList && currentElement.classList.length > 0) {
63
+ newElement.className = currentElement.className;
64
+ }
60
65
  newElement = this.setInlineStyle(currentElement, newElement);
61
66
  if (currentElement.classList.length > 0) {
62
67
  newElement.className = currentElement.className;
@@ -68,6 +73,9 @@ export class EditorJSConversionService {
68
73
  if (currentElement.tagName.toLowerCase() === 'a' && currentElement.hasAttribute('data-htap')) {
69
74
  let newLink = document.createElement('span');
70
75
  newLink.innerHTML = currentElement.innerHTML;
76
+ if (currentElement.classList && currentElement.classList.length > 0) {
77
+ newLink.className = currentElement.className;
78
+ }
71
79
  newLink = this.setInlineStyle(currentElement, newLink);
72
80
  if (currentElement.classList.length > 0) {
73
81
  newLink.className = currentElement.className;
@@ -79,6 +87,10 @@ export class EditorJSConversionService {
79
87
  currentElement.parentElement.replaceChild(newLink, currentElement);
80
88
  currentElement = newLink;
81
89
  }
90
+ if (isOrderedListChildren && currentElement.tagName.toLowerCase() === 'li') {
91
+ let value = (_a = currentElement.previousElementSibling) === null || _a === void 0 ? void 0 : _a.getAttribute('value');
92
+ currentElement.setAttribute('value', value ? (parseInt(value) + 1).toString() : '1');
93
+ }
82
94
  if (currentElement.children.length > 0) {
83
95
  yield this.convertCurrentElement(currentElement);
84
96
  }
@@ -103,4 +115,4 @@ EditorJSConversionService.decorators = [
103
115
  },] }
104
116
  ];
105
117
  EditorJSConversionService.ctorParameters = () => [];
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yanMtY29udmVyc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3BhdWxpbmUvRG9jdW1lbnRzL3dvcmtzcGFjZS93aXppLWJsb2NrL3Byb2plY3RzL3dpemktYmxvY2svc3JjLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9jb21wb25lbnRzL2VkaXRvcmpzL3Rvb2xzL3V0aWxzL2VkaXRvcmpzLWNvbnZlcnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLHlCQUF5QjtJQWNsQztRQWJBLGNBQVMsR0FBdUIsSUFBSSxDQUFDO1FBRXJDLHFCQUFnQixHQUFHO1lBQ2YsZUFBZSxFQUFFLGVBQWU7WUFDaEMsZUFBZSxFQUFFLGVBQWU7WUFDaEMsY0FBYyxFQUFFLGNBQWM7WUFDOUIsZUFBZSxFQUFFLGVBQWU7WUFDaEMsaUJBQWlCLEVBQUUsaUJBQWlCO1lBQ3BDLGdCQUFnQixFQUFFLGdCQUFnQjtZQUNsQyxrQkFBa0IsRUFBRSxrQkFBa0I7WUFDdEMsbUJBQW1CLEVBQUUsbUJBQW1CO1NBQzNDLENBQUM7SUFFYSxDQUFDO0lBRVYsT0FBTyxDQUFDLE9BQWU7O1lBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7WUFFbkMsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUV2RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQ3BDLENBQUM7S0FBQTtJQUVhLHFCQUFxQixDQUFDLE9BQW9CLEVBQUUsWUFBcUIsS0FBSzs7WUFDaEYsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDVixPQUFPO2FB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YyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQWEsRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUM5RyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDUCxLQUFLLE1BQU0sUUFBUSxJQUFJLHlCQUF5QixFQUFFO1lBQzlDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDckU7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDOzs7O1lBMUdKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRWRpdG9ySlNDb252ZXJzaW9uU2VydmljZSB7XG4gICAgY29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgY2xhc3Nlc1RvUmVwbGFjZSA9IHtcbiAgICAgICAgJ3FsLXNpemUtc21hbGwnOiAnd2Utc2l6ZS1zbWFsbCcsXG4gICAgICAgICdxbC1zaXplLWxhcmdlJzogJ3dlLXNpemUtbGFyZ2UnLFxuICAgICAgICAncWwtc2l6ZS1odWdlJzogJ3dlLXNpemUtaHVnZScsXG4gICAgICAgICdxbC1hbGlnbi1sZWZ0JzogJ3dlLWFsaWduLWxlZnQnLFxuICAgICAgICAncWwtYWxpZ24tY2VudGVyJzogJ3dlLWFsaWduLWNlbnRlcicsXG4gICAgICAgICdxbC1hbGlnbi1yaWdodCc6ICd3ZS1hbGlnbi1yaWdodCcsXG4gICAgICAgICdxbC1hbGlnbi1qdXN0aWZ5JzogJ3dlLWFsaWduLWp1c3RpZnknLFxuICAgICAgICAncWwtaW5kZW50LXtpbnB1dH0nOiAnd2UtaW5kZW50LXtpbnB1dH0nLFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBhc3luYyBjb252ZXJ0KGNvbnRlbnQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLmlubmVySFRNTCA9IGNvbnRlbnQ7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jb252ZXJ0Q3VycmVudEVsZW1lbnQodGhpcy5jb250YWluZXIsIHRydWUpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5pbm5lckhUTUw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0Q3VycmVudEVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGZpcnN0Q2FsbDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2hpbGRyZW46IEhUTUxDb2xsZWN0aW9uID0gZWxlbWVudC5jaGlsZHJlbjtcbiAgICAgICAgZm9yICh2YXIgY3VycmVudEVsZW1lbnQgPSBjaGlsZHJlblswXTsgY3VycmVudEVsZW1lbnQ7IGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtxdWlsbENsYXNzLCBlZGl0b3JKU0NsYXNzXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmNsYXNzZXNUb1JlcGxhY2UpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHF1aWxsQ2xhc3MuaW5kZXhPZigne2lucHV0fScpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwbGllZENsYXNzID0gQXJyYXkuZnJvbShjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QpLnNvbWUoKGMpID0+IGMuc3RhcnRzV2l0aChxdWlsbENsYXNzLnJlcGxhY2UoJ3tpbnB1dH0nLCAnJykpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGxpZWRDbGFzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmZvckVhY2goKGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGFzc05hbWUuaW5kZXhPZihxdWlsbENsYXNzLnJlcGxhY2UoJ3tpbnB1dH0nLCAnJykpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gY2xhc3NOYW1lLnJlcGxhY2UocXVpbGxDbGFzcy5yZXBsYWNlKCd7aW5wdXR9JywgJycpLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZChlZGl0b3JKU0NsYXNzLnJlcGxhY2UoJ3tpbnB1dH0nLCAnJykgKyBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKHF1aWxsQ2xhc3MpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHF1aWxsQ2xhc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZChlZGl0b3JKU0NsYXNzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEFycmF5LmZyb20oY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0KS5zb21lKChjKSA9PiBjLnN0YXJ0c1dpdGgoJ3FsLWN1c3RvbS11cHBlcmNhc2UnKSkpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdxbC1jdXN0b20tdXBwZXJjYXNlJyk7XG4gICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD5jdXJyZW50RWxlbWVudCkuc3R5bGUudGV4dFRyYW5zZm9ybSA9ICd1cHBlcmNhc2UnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAndScpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmlubmVySFRNTCA9IGN1cnJlbnRFbGVtZW50LmlubmVySFRNTDtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50ID0gdGhpcy5zZXRJbmxpbmVTdHlsZShjdXJyZW50RWxlbWVudCwgbmV3RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuY2xhc3NOYW1lID0gY3VycmVudEVsZW1lbnQuY2xhc3NOYW1lO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuc3R5bGUudGV4dERlY29yYXRpb24gPSAndW5kZXJsaW5lJztcblxuICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucmVwbGFjZUNoaWxkKG5ld0VsZW1lbnQsIGN1cnJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IG5ld0VsZW1lbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdhJyAmJiBjdXJyZW50RWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtaHRhcCcpKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld0xpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICAgICAgbmV3TGluay5pbm5lckhUTUwgPSBjdXJyZW50RWxlbWVudC5pbm5lckhUTUw7XG4gICAgICAgICAgICAgICAgbmV3TGluayA9IHRoaXMuc2V0SW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnQsIG5ld0xpbmspO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdMaW5rLmNsYXNzTmFtZSA9IGN1cnJlbnRFbGVtZW50LmNsYXNzTmFtZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBuZXdMaW5rLnNldEF0dHJpYnV0ZSgnZGF0YS1odGFwJywgY3VycmVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWh0YXAnKSk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgndGFyZ2V0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3TGluay5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsIGN1cnJlbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgndGFyZ2V0JykpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucmVwbGFjZUNoaWxkKG5ld0xpbmssIGN1cnJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IG5ld0xpbms7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb252ZXJ0Q3VycmVudEVsZW1lbnQoPEhUTUxFbGVtZW50PmN1cnJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnQsIG5leHRFbGVtZW50KTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudElubGluZVN0eWxlOiBPYmplY3QgPSBBcnJheS5mcm9tKGN1cnJlbnRFbGVtZW50LnN0eWxlKS5yZWR1Y2UoKHN0eWxlOiBzdHJpbmcsIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgc3R5bGVbbmFtZV0gPSBjdXJyZW50RWxlbWVudC5zdHlsZVtuYW1lXTtcbiAgICAgICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgICAgfSwge30pO1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGN1cnJlbnRFbGVtZW50SW5saW5lU3R5bGUpIHtcbiAgICAgICAgICAgIG5leHRFbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IGN1cnJlbnRFbGVtZW50SW5saW5lU3R5bGVbcHJvcGVydHldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0RWxlbWVudDtcbiAgICB9XG59XG4iXX0=
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yanMtY29udmVyc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3BhdWxpbmUvRG9jdW1lbnRzL3dvcmtzcGFjZS93aXppLWJsb2NrL3Byb2plY3RzL3dpemktYmxvY2svc3JjLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9jb21wb25lbnRzL2VkaXRvcmpzL3Rvb2xzL3V0aWxzL2VkaXRvcmpzLWNvbnZlcnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLHlCQUF5QjtJQWNsQztRQWJBLGNBQVMsR0FBdUIsSUFBSSxDQUFDO1FBRXJDLHFCQUFnQixHQUFHO1lBQ2YsZUFBZSxFQUFFLGVBQWU7WUFDaEMsZUFBZSxFQUFFLGVBQWU7WUFDaEMsY0FBYyxFQUFFLGNBQWM7WUFDOUIsZUFBZSxFQUFFLGVBQWU7WUFDaEMsaUJBQWlCLEVBQUUsaUJBQWlCO1lBQ3BDLGdCQUFnQixFQUFFLGdCQUFnQjtZQUNsQyxrQkFBa0IsRUFBRSxrQkFBa0I7WUFDdEMsbUJBQW1CLEVBQUUsbUJBQW1CO1NBQzNDLENBQUM7SUFFYSxDQUFDO0lBRVYsT0FBTyxDQUFDLE9BQWU7O1lBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7WUFDbkMsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUV2RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQ3BDLENBQUM7S0FBQTtJQUVhLHFCQUFxQixDQUFDLE9BQW9CLEVBQUUsWUFBcUIsS0FBSzs7O1lBQ2hGLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ1YsT0FBTzth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QVcsQ0FBQztJQUN2QixDQUFDOzs7O1lBbkhKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRWRpdG9ySlNDb252ZXJzaW9uU2VydmljZSB7XG4gICAgY29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgY2xhc3Nlc1RvUmVwbGFjZSA9IHtcbiAgICAgICAgJ3FsLXNpemUtc21hbGwnOiAnd2Utc2l6ZS1zbWFsbCcsXG4gICAgICAgICdxbC1zaXplLWxhcmdlJzogJ3dlLXNpemUtbGFyZ2UnLFxuICAgICAgICAncWwtc2l6ZS1odWdlJzogJ3dlLXNpemUtaHVnZScsXG4gICAgICAgICdxbC1hbGlnbi1sZWZ0JzogJ3dlLWFsaWduLWxlZnQnLFxuICAgICAgICAncWwtYWxpZ24tY2VudGVyJzogJ3dlLWFsaWduLWNlbnRlcicsXG4gICAgICAgICdxbC1hbGlnbi1yaWdodCc6ICd3ZS1hbGlnbi1yaWdodCcsXG4gICAgICAgICdxbC1hbGlnbi1qdXN0aWZ5JzogJ3dlLWFsaWduLWp1c3RpZnknLFxuICAgICAgICAncWwtaW5kZW50LXtpbnB1dH0nOiAnd2UtaW5kZW50LXtpbnB1dH0nLFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBhc3luYyBjb252ZXJ0KGNvbnRlbnQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLmlubmVySFRNTCA9IGNvbnRlbnQ7XG4gICAgICAgIGF3YWl0IHRoaXMuY29udmVydEN1cnJlbnRFbGVtZW50KHRoaXMuY29udGFpbmVyLCB0cnVlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIuaW5uZXJIVE1MO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY29udmVydEN1cnJlbnRFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBmaXJzdENhbGw6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZHJlbjogSFRNTENvbGxlY3Rpb24gPSBlbGVtZW50LmNoaWxkcmVuO1xuICAgICAgICBsZXQgaXNPcmRlcmVkTGlzdENoaWxkcmVuID0gZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvbCc7XG4gICAgICAgIGZvciAodmFyIGN1cnJlbnRFbGVtZW50ID0gY2hpbGRyZW5bMF07IGN1cnJlbnRFbGVtZW50OyBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50Lm5leHRFbGVtZW50U2libGluZykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbcXVpbGxDbGFzcywgZWRpdG9ySlNDbGFzc10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5jbGFzc2VzVG9SZXBsYWNlKSkge1xuICAgICAgICAgICAgICAgIGlmIChxdWlsbENsYXNzLmluZGV4T2YoJ3tpbnB1dH0nKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwcGxpZWRDbGFzcyA9IEFycmF5LmZyb20oY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0KS5zb21lKChjKSA9PiBjLnN0YXJ0c1dpdGgocXVpbGxDbGFzcy5yZXBsYWNlKCd7aW5wdXR9JywgJycpKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcHBsaWVkQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5mb3JFYWNoKChjbGFzc05hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xhc3NOYW1lLmluZGV4T2YocXVpbGxDbGFzcy5yZXBsYWNlKCd7aW5wdXR9JywgJycpKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IGNsYXNzTmFtZS5yZXBsYWNlKHF1aWxsQ2xhc3MucmVwbGFjZSgne2lucHV0fScsICcnKSwgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoZWRpdG9ySlNDbGFzcy5yZXBsYWNlKCd7aW5wdXR9JywgJycpICsgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhxdWlsbENsYXNzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShxdWlsbENsYXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoZWRpdG9ySlNDbGFzcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChBcnJheS5mcm9tKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdCkuc29tZSgoYykgPT4gYy5zdGFydHNXaXRoKCdxbC1jdXN0b20tdXBwZXJjYXNlJykpKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgncWwtY3VzdG9tLXVwcGVyY2FzZScpO1xuICAgICAgICAgICAgICAgICg8SFRNTEVsZW1lbnQ+Y3VycmVudEVsZW1lbnQpLnN0eWxlLnRleHRUcmFuc2Zvcm0gPSAndXBwZXJjYXNlJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3UnKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5pbm5lckhUTUwgPSBjdXJyZW50RWxlbWVudC5pbm5lckhUTUw7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdCAmJiBjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmNsYXNzTmFtZSA9IGN1cnJlbnRFbGVtZW50LmNsYXNzTmFtZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudCA9IHRoaXMuc2V0SW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnQsIG5ld0VsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmNsYXNzTmFtZSA9IGN1cnJlbnRFbGVtZW50LmNsYXNzTmFtZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnN0eWxlLnRleHREZWNvcmF0aW9uID0gJ3VuZGVybGluZSc7XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnJlcGxhY2VDaGlsZChuZXdFbGVtZW50LCBjdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQgPSBuZXdFbGVtZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYScgJiYgY3VycmVudEVsZW1lbnQuaGFzQXR0cmlidXRlKCdkYXRhLWh0YXAnKSkge1xuICAgICAgICAgICAgICAgIGxldCBuZXdMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgICAgIG5ld0xpbmsuaW5uZXJIVE1MID0gY3VycmVudEVsZW1lbnQuaW5uZXJIVE1MO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QgJiYgY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3TGluay5jbGFzc05hbWUgPSBjdXJyZW50RWxlbWVudC5jbGFzc05hbWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5ld0xpbmsgPSB0aGlzLnNldElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50LCBuZXdMaW5rKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3TGluay5jbGFzc05hbWUgPSBjdXJyZW50RWxlbWVudC5jbGFzc05hbWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbmV3TGluay5zZXRBdHRyaWJ1dGUoJ2RhdGEtaHRhcCcsIGN1cnJlbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1odGFwJykpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RhcmdldCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0xpbmsuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCBjdXJyZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RhcmdldCcpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnJlcGxhY2VDaGlsZChuZXdMaW5rLCBjdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQgPSBuZXdMaW5rO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzT3JkZXJlZExpc3RDaGlsZHJlbiAmJiBjdXJyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdsaScpIHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBjdXJyZW50RWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nPy5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHZhbHVlID8gKHBhcnNlSW50KHZhbHVlKSArIDEpLnRvU3RyaW5nKCkgOiAnMScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29udmVydEN1cnJlbnRFbGVtZW50KDxIVE1MRWxlbWVudD5jdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50LCBuZXh0RWxlbWVudCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZTogT2JqZWN0ID0gQXJyYXkuZnJvbShjdXJyZW50RWxlbWVudC5zdHlsZSkucmVkdWNlKChzdHlsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHN0eWxlW25hbWVdID0gY3VycmVudEVsZW1lbnQuc3R5bGVbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICAgIH0sIHt9KTtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBjdXJyZW50RWxlbWVudElubGluZVN0eWxlKSB7XG4gICAgICAgICAgICBuZXh0RWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBjdXJyZW50RWxlbWVudElubGluZVN0eWxlW3Byb3BlcnR5XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dEVsZW1lbnQ7XG4gICAgfVxufVxuIl19
@@ -5,6 +5,7 @@ export class AttributeObject {
5
5
  export class EditorJSTool {
6
6
  constructor() {
7
7
  this.parentEditor = null;
8
+ this.textContainers = 'h1,h2,h3,h4,h5,h6,p,li';
8
9
  this.selectedAnchorNode = null;
9
10
  this.selectedFocusNode = null;
10
11
  this.anchorOffset = -1;
@@ -43,8 +44,29 @@ export class EditorJSTool {
43
44
  this.focusOffset = this.currentSelection.focusOffset;
44
45
  }
45
46
  resetUserSelection() {
47
+ var _a;
48
+ if (this.selectedAnchorNode.nodeType === Node.ELEMENT_NODE && this.selectedAnchorNode.children) {
49
+ while (this.selectedAnchorNode.children &&
50
+ this.selectedAnchorNode.innerText === ((_a = this.selectedAnchorNode.children[0]) === null || _a === void 0 ? void 0 : _a.innerText) &&
51
+ this.selectedAnchorNode.children.length === 1) {
52
+ this.selectedAnchorNode = this.selectedAnchorNode.children[0];
53
+ this.selectedFocusNode = this.selectedAnchorNode;
54
+ this.anchorOffset = 0;
55
+ this.focusOffset = 1;
56
+ }
57
+ if (this.textContainers.split(',').indexOf(this.selectedAnchorNode.tagName.toLowerCase()) > -1) {
58
+ let childTextNodes = this.getTextNodes(this.selectedAnchorNode);
59
+ let focusNode = childTextNodes.length > 1
60
+ ? this.selectedAnchorNode.childNodes[childTextNodes.length - 1]
61
+ : this.selectedAnchorNode.childNodes[0];
62
+ let focusOffset = childTextNodes.length > 1 ? childTextNodes.length : childTextNodes[0].textContent.length;
63
+ this.selectedAnchorNode = this.selectedAnchorNode.childNodes[0];
64
+ this.anchorOffset = 0;
65
+ this.selectedFocusNode = focusNode;
66
+ this.focusOffset = focusOffset;
67
+ }
68
+ }
46
69
  document.getSelection().setBaseAndExtent(this.selectedAnchorNode, this.anchorOffset, this.selectedFocusNode, this.focusOffset);
47
- this.currentSelection = this.getSelection();
48
70
  }
49
71
  findParentEditor() {
50
72
  const selection = this.currentSelection ? this.currentSelection : this.getSelection();
@@ -53,6 +75,17 @@ export class EditorJSTool {
53
75
  clear() {
54
76
  resetBlockFocus(this.parentEditor);
55
77
  }
78
+ getTextNodes(container) {
79
+ let childTextNodes = [];
80
+ if (container.childNodes) {
81
+ for (var i = 0; i < container.childNodes.length; ++i) {
82
+ if (container.childNodes[i].nodeType === Node.TEXT_NODE) {
83
+ childTextNodes.push(container.childNodes[i]);
84
+ }
85
+ }
86
+ }
87
+ return childTextNodes;
88
+ }
56
89
  }
57
90
  export var isTextEditionTool = false;
58
91
  export var isBlockFocused = false;
@@ -82,4 +115,4 @@ export function resetBlockFocus(parentEditor) {
82
115
  containerToFocus.classList.remove('editorjs-focused');
83
116
  }
84
117
  }
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yanMtdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcGF1bGluZS9Eb2N1bWVudHMvd29ya3NwYWNlL3dpemktYmxvY2svcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvIiwic291cmNlcyI6WyJsaWIvc2hhcmVkL2NvbXBvbmVudHMvZWRpdG9yanMvdG9vbHMvdXRpbHMvZWRpdG9yanMtdG9vbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVc7Q0FNdkI7QUFFRCxNQUFNLE9BQU8sZUFBZTtDQUczQjtBQUVELE1BQU0sT0FBZ0IsWUFBWTtJQUFsQztRQUNJLGlCQUFZLEdBQW1CLElBQUksQ0FBQztRQUlwQyx1QkFBa0IsR0FBUyxJQUFJLENBQUM7UUFFaEMsc0JBQWlCLEdBQVMsSUFBSSxDQUFDO1FBRS9CLGlCQUFZLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFFMUIsZ0JBQVcsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUV6Qix1QkFBa0IsR0FBYSxLQUFLLENBQUM7UUFFckMsbUJBQWMsR0FBVywyQkFBMkIsQ0FBQztJQTZDekQsQ0FBQztJQTNDRyxZQUFZO1FBQ1IsSUFBSSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsWUFBWSxFQUFFO1lBQ3RCLE9BQU8sTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ2hDO2FBQU0sSUFBSSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsWUFBWSxFQUFFO1lBQy9CLE9BQU8sUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ2xDO2FBQU0sSUFBSSxRQUFRLElBQUssUUFBZ0IsQ0FBQyxTQUFTLEVBQUU7WUFDaEQsT0FBUSxRQUFnQixDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUM7U0FDekQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsY0FBYyxDQUFDLGVBQTBCO1FBQ3JDLElBQUks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LENBQUMsQ0FBQztJQUMxRCxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLCtCQUErQixDQUFDLEVBQUU7UUFDM0QsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQztLQUMzRDtJQUVELElBQUksZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RCxJQUFJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRTtRQUN6RCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FDekQ7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFN0eWxlT2JqZWN0IHtcbiAgICBwcm9wZXJ0eTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgZGVmYXVsdDogc3RyaW5nO1xuICAgIGlucHV0Pzogc3RyaW5nO1xuICAgIGNsYXNzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlT2JqZWN0IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVkaXRvckpTVG9vbCB7XG4gICAgcGFyZW50RWRpdG9yOiBIVE1MRGl2RWxlbWVudCA9IG51bGw7XG5cbiAgICBjdXJyZW50U2VsZWN0aW9uPzogU2VsZWN0aW9uO1xuXG4gICAgc2VsZWN0ZWRBbmNob3JOb2RlOiBOb2RlID0gbnVsbDtcblxuICAgIHNlbGVjdGVkRm9jdXNOb2RlOiBOb2RlID0gbnVsbDtcblxuICAgIGFuY2hvck9mZnNldDogbnVtYmVyID0gLTE7XG5cbiAgICBmb2N1c09mZnNldDogbnVtYmVyID0gLTE7XG5cbiAgICBoYXNTZXBhcmF0b3JCZWZvcmU/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBzZXBhcmF0b3JDbGFzczogc3RyaW5nID0gJ2NlLWlubGluZS10b29sLS1zZXBhcmF0b3InO1xuXG4gICAgZ2V0U2VsZWN0aW9uKCk6IFNlbGVjdGlvbiB7XG4gICAgICAgIGlmICh3aW5kb3c/LmdldFNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudD8uZ2V0U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQgJiYgKGRvY3VtZW50IGFzIGFueSkuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gKGRvY3VtZW50IGFzIGFueSkuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkudGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBnZXRSYW5nZU9iamVjdChzZWxlY3Rpb25PYmplY3Q6IFNlbGVjdGlvbik6IFJhbmdlIHtcbiAgICAgICAgaWYgKHNlbGVjdGlvbk9iamVjdC5nZXRSYW5nZUF0KSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0aW9uT2JqZWN0LmdldFJhbmdlQXQoMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgICAgICAgcmFuZ2Uuc2V0U3RhcnQoc2VsZWN0aW9uT2JqZWN0LmFuY2hvck5vZGUucGFyZW50RWxlbWVudCwgc2VsZWN0aW9uT2JqZWN0LmFuY2hvck9mZnNldCk7XG4gICAgICAgICAgICByYW5nZS5zZXRFbmQoc2VsZWN0aW9uT2JqZWN0LmZvY3VzTm9kZSwgc2VsZWN0aW9uT2JqZWN0LmZvY3VzT2Zmc2V0KTtcbiAgICAgICAgICAgIHJldHVybiByYW5nZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNhdmVVc2VyU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQW5jaG9yTm9kZSA9IHRoaXMuY3VycmVudFNlbGVjdGlvbi5hbmNob3JOb2RlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRm9jdXNOb2RlID0gdGhpcy5jdXJyZW50U2VsZWN0aW9uLmZvY3VzTm9kZTtcbiAgICAgICAgdGhpcy5hbmNob3JPZmZzZXQgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb24uYW5jaG9yT2Zmc2V0O1xuICAgICAgICB0aGlzLmZvY3VzT2Zmc2V0ID0gdGhpcy5jdXJyZW50U2VsZWN0aW9uLmZvY3VzT2Zmc2V0O1xuICAgIH1cblxuICAgIHJlc2V0VXNlclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudCh0aGlzLnNlbGVjdGVkQW5jaG9yTm9kZSwgdGhpcy5hbmNob3JPZmZzZXQsIHRoaXMuc2VsZWN0ZWRGb2N1c05vZGUsIHRoaXMuZm9jdXNPZmZzZXQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgIH1cblxuICAgIGZpbmRQYXJlbnRFZGl0b3IoKTogSFRNTERpdkVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uOiBTZWxlY3Rpb24gfCBudWxsID0gdGhpcy5jdXJyZW50U2VsZWN0aW9uID8gdGhpcy5jdXJyZW50U2VsZWN0aW9uIDogdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi5hbmNob3JOb2RlLnBhcmVudEVsZW1lbnQuY2xvc2VzdCgnLmVkaXRvckpzJyk7XG4gICAgfVxuXG4gICAgY2xlYXIoKSB7XG4gICAgICAgIHJlc2V0QmxvY2tGb2N1cyh0aGlzLnBhcmVudEVkaXRvcik7XG4gICAgfVxufVxuXG5leHBvcnQgdmFyIGlzVGV4dEVkaXRpb25Ub29sOiBib29sZWFuID0gZmFsc2U7XG5cbmV4cG9ydCB2YXIgaXNCbG9ja0ZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldElzVGV4dEVkaXRpb25Ub29sKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaXNUZXh0RWRpdGlvblRvb2wgPSB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldElzQmxvY2tGb2N1c2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaXNCbG9ja0ZvY3VzZWQgPSB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEJsb2NrRm9jdXMocGFyZW50RWRpdG9yOiBIVE1MRWxlbWVudCkge1xuICAgIGxldCBibG9jayA9IHBhcmVudEVkaXRvci5jbG9zZXN0KCcud2ItYmxvY2tzX19jb250YWluZXInKTtcbiAgICBpZiAoIWJsb2NrLmNsYXNzTGlzdC5jb250YWlucygnd2ItYmxvY2tzX19jb250YWluZXItLWZvY3VzZWQnKSkge1xuICAgICAgICBibG9jay5jbGFzc0xpc3QuYWRkKCd3Yi1ibG9ja3NfX2NvbnRhaW5lci0tZm9jdXNlZCcpO1xuICAgIH1cblxuICAgIGxldCBjb250YWluZXJUb0ZvY3VzID0gcGFyZW50RWRpdG9yLmNsb3Nlc3QoJy5jb2x1bW4nKTtcbiAgICBpZiAoIWNvbnRhaW5lclRvRm9jdXMuY2xhc3NMaXN0LmNvbnRhaW5zKCdlZGl0b3Jqcy1mb2N1c2VkJykpIHtcbiAgICAgICAgY29udGFpbmVyVG9Gb2N1cy5jbGFzc0xpc3QuYWRkKCdlZGl0b3Jqcy1mb2N1c2VkJyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRCbG9ja0ZvY3VzKHBhcmVudEVkaXRvcjogSFRNTEVsZW1lbnQpIHtcbiAgICBsZXQgYmxvY2sgPSBwYXJlbnRFZGl0b3IuY2xvc2VzdCgnLndiLWJsb2Nrc19fY29udGFpbmVyJyk7XG4gICAgaWYgKGJsb2NrLmNsYXNzTGlzdC5jb250YWlucygnd2ItYmxvY2tzX19jb250YWluZXItLWZvY3VzZWQnKSkge1xuICAgICAgICBibG9jay5jbGFzc0xpc3QucmVtb3ZlKCd3Yi1ibG9ja3NfX2NvbnRhaW5lci0tZm9jdXNlZCcpO1xuICAgIH1cblxuICAgIGxldCBjb250YWluZXJUb0ZvY3VzID0gcGFyZW50RWRpdG9yLmNsb3Nlc3QoJy5jb2x1bW4nKTtcbiAgICBpZiAoY29udGFpbmVyVG9Gb2N1cy5jbGFzc0xpc3QuY29udGFpbnMoJ2VkaXRvcmpzLWZvY3VzZWQnKSkge1xuICAgICAgICBjb250YWluZXJUb0ZvY3VzLmNsYXNzTGlzdC5yZW1vdmUoJ2VkaXRvcmpzLWZvY3VzZWQnKTtcbiAgICB9XG59XG4iXX0=
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yanMtdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcGF1bGluZS9Eb2N1bWVudHMvd29ya3NwYWNlL3dpemktYmxvY2svcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvIiwic291cmNlcyI6WyJsaWIvc2hhcmVkL2NvbXBvbmVudHMvZWRpdG9yanMvdG9vbHMvdXRpbHMvZWRpdG9yanMtdG9vbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVc7Q0FNdkI7QUFFRCxNQUFNLE9BQU8sZUFBZTtDQUczQjtBQUVELE1BQU0sT0FBZ0IsWUFBWTtJQUFsQztRQUNJLGlCQUFZLEdBQW1CLElBQUksQ0FBQztRQUVwQyxtQkFBYyxHQUFHLHdCQUF3QixDQUFDO1FBSTFDLHVCQUFrQixHQUFTLElBQUksQ0FBQztRQUVoQyxzQkFBaUIsR0FBUyxJQUFJLENBQUM7UUFFL0IsaUJBQVksR0FBVyxDQUFDLENBQUMsQ0FBQztRQUUxQixnQkFBVyxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBRXpCLHVCQUFrQixHQUFhLEtBQUssQ0FBQztRQUVyQyxtQkFBYyxHQUFXLDJCQUEyQixDQUFDO0lBaUZ6RCxDQUFDO0lBL0VHLFlBQVk7UUFDUixJQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLEVBQUU7WUFDdEIsT0FBTyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDaEM7YUFBTSxJQUFJLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxZQUFZLEVBQUU7WUFDL0IsT0FBTyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDbEM7YUFBTSxJQUFJLFFBQVEsSUFBSyxRQUFnQixDQUFDLFNBQVMsRUFBRTtZQUNoRCxPQUFRLFFBQWdCLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQztTQUN6RDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFF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QkFBa0IsQ0FBQyxFQUFFO1FBQ3pELGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQUN6RDtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU3R5bGVPYmplY3Qge1xuICAgIHByb3BlcnR5OiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBkZWZhdWx0OiBzdHJpbmc7XG4gICAgaW5wdXQ/OiBzdHJpbmc7XG4gICAgY2xhc3M/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGVPYmplY3Qge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRWRpdG9ySlNUb29sIHtcbiAgICBwYXJlbnRFZGl0b3I6IEhUTUxEaXZFbGVtZW50ID0gbnVsbDtcblxuICAgIHRleHRDb250YWluZXJzID0gJ2gxLGgyLGgzLGg0LGg1LGg2LHAsbGknO1xuXG4gICAgY3VycmVudFNlbGVjdGlvbj86IFNlbGVjdGlvbjtcblxuICAgIHNlbGVjdGVkQW5jaG9yTm9kZTogTm9kZSA9IG51bGw7XG5cbiAgICBzZWxlY3RlZEZvY3VzTm9kZTogTm9kZSA9IG51bGw7XG5cbiAgICBhbmNob3JPZmZzZXQ6IG51bWJlciA9IC0xO1xuXG4gICAgZm9jdXNPZmZzZXQ6IG51bWJlciA9IC0xO1xuXG4gICAgaGFzU2VwYXJhdG9yQmVmb3JlPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgc2VwYXJhdG9yQ2xhc3M6IHN0cmluZyA9ICdjZS1pbmxpbmUtdG9vbC0tc2VwYXJhdG9yJztcblxuICAgIGdldFNlbGVjdGlvbigpOiBTZWxlY3Rpb24ge1xuICAgICAgICBpZiAod2luZG93Py5nZXRTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQ/LmdldFNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmdldFNlbGVjdGlvbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50ICYmIChkb2N1bWVudCBhcyBhbnkpLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIChkb2N1bWVudCBhcyBhbnkpLnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpLnRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZ2V0UmFuZ2VPYmplY3Qoc2VsZWN0aW9uT2JqZWN0OiBTZWxlY3Rpb24pOiBSYW5nZSB7XG4gICAgICAgIGlmIChzZWxlY3Rpb25PYmplY3QuZ2V0UmFuZ2VBdCkge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbk9iamVjdC5nZXRSYW5nZUF0KDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0KHNlbGVjdGlvbk9iamVjdC5hbmNob3JOb2RlLnBhcmVudEVsZW1lbnQsIHNlbGVjdGlvbk9iamVjdC5hbmNob3JPZmZzZXQpO1xuICAgICAgICAgICAgcmFuZ2Uuc2V0RW5kKHNlbGVjdGlvbk9iamVjdC5mb2N1c05vZGUsIHNlbGVjdGlvbk9iamVjdC5mb2N1c09mZnNldCk7XG4gICAgICAgICAgICByZXR1cm4gcmFuZ2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzYXZlVXNlclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFuY2hvck5vZGUgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb24uYW5jaG9yTm9kZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZvY3VzTm9kZSA9IHRoaXMuY3VycmVudFNlbGVjdGlvbi5mb2N1c05vZGU7XG4gICAgICAgIHRoaXMuYW5jaG9yT2Zmc2V0ID0gdGhpcy5jdXJyZW50U2VsZWN0aW9uLmFuY2hvck9mZnNldDtcbiAgICAgICAgdGhpcy5mb2N1c09mZnNldCA9IHRoaXMuY3VycmVudFNlbGVjdGlvbi5mb2N1c09mZnNldDtcbiAgICB9XG5cbiAgICByZXNldFVzZXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQW5jaG9yTm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgKDxIVE1MRWxlbWVudD50aGlzLnNlbGVjdGVkQW5jaG9yTm9kZSkuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PnRoaXMuc2VsZWN0ZWRBbmNob3JOb2RlKS5jaGlsZHJlbiAmJlxuICAgICAgICAgICAgICAgICg8SFRNTEVsZW1lbnQ+dGhpcy5zZWxlY3RlZEFuY2hvck5vZGUpLmlubmVyVGV4dCA9PT1cbiAgICAgICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD4oPEhUTUxFbGVtZW50PnRoaXMuc2VsZWN0ZWRBbmNob3JOb2RlKS5jaGlsZHJlblswXSk/LmlubmVyVGV4dCAmJlxuICAgICAgICAgICAgICAgICg8SFRNTEVsZW1lbnQ+dGhpcy5zZWxlY3RlZEFuY2hvck5vZGUpLmNoaWxkcmVuLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFuY2hvck5vZGUgPSAoPEhUTUxFbGVtZW50PnRoaXMuc2VsZWN0ZWRBbmNob3JOb2RlKS5jaGlsZHJlblswXTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRm9jdXNOb2RlID0gdGhpcy5zZWxlY3RlZEFuY2hvck5vZGU7XG4gICAgICAgICAgICAgICAgdGhpcy5hbmNob3JPZmZzZXQgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPZmZzZXQgPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMudGV4dENvbnRhaW5lcnMuc3BsaXQoJywnKS5pbmRleE9mKCg8SFRNTEVsZW1lbnQ+dGhpcy5zZWxlY3RlZEFuY2hvck5vZGUpLnRhZ05hbWUudG9Mb3dlckNhc2UoKSkgPiAtMSkge1xuICAgICAgICAgICAgICAgIGxldCBjaGlsZFRleHROb2RlcyA9IHRoaXMuZ2V0VGV4dE5vZGVzKHRoaXMuc2VsZWN0ZWRBbmNob3JOb2RlKTtcbiAgICAgICAgICAgICAgICBsZXQgZm9jdXNOb2RlID1cbiAgICAgICAgICAgICAgICAgICAgY2hpbGRUZXh0Tm9kZXMubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoPEhUTUxFbGVtZW50PnRoaXMuc2VsZWN0ZWRBbmNob3JOb2RlKS5jaGlsZE5vZGVzW2NoaWxkVGV4dE5vZGVzLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICg8SFRNTEVsZW1lbnQ+dGhpcy5zZWxlY3RlZEFuY2hvck5vZGUpLmNoaWxkTm9kZXNbMF07XG4gICAgICAgICAgICAgICAgbGV0IGZvY3VzT2Zmc2V0ID0gY2hpbGRUZXh0Tm9kZXMubGVuZ3RoID4gMSA/IGNoaWxkVGV4dE5vZGVzLmxlbmd0aCA6IGNoaWxkVGV4dE5vZGVzWzBdLnRleHRDb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQW5jaG9yTm9kZSA9ICg8SFRNTEVsZW1lbnQ+dGhpcy5zZWxlY3RlZEFuY2hvck5vZGUpLmNoaWxkTm9kZXNbMF07XG4gICAgICAgICAgICAgICAgdGhpcy5hbmNob3JPZmZzZXQgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGb2N1c05vZGUgPSBmb2N1c05vZGU7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09mZnNldCA9IGZvY3VzT2Zmc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGhpcy5zZWxlY3RlZEFuY2hvck5vZGUsIHRoaXMuYW5jaG9yT2Zmc2V0LCB0aGlzLnNlbGVjdGVkRm9jdXNOb2RlLCB0aGlzLmZvY3VzT2Zmc2V0KTtcbiAgICB9XG5cbiAgICBmaW5kUGFyZW50RWRpdG9yKCk6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbCA9IHRoaXMuY3VycmVudFNlbGVjdGlvbiA/IHRoaXMuY3VycmVudFNlbGVjdGlvbiA6IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIHJldHVybiBzZWxlY3Rpb24uYW5jaG9yTm9kZS5wYXJlbnRFbGVtZW50LmNsb3Nlc3QoJy5lZGl0b3JKcycpO1xuICAgIH1cblxuICAgIGNsZWFyKCkge1xuICAgICAgICByZXNldEJsb2NrRm9jdXModGhpcy5wYXJlbnRFZGl0b3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGV4dE5vZGVzKGNvbnRhaW5lcik6IEFycmF5PE5vZGU+IHtcbiAgICAgICAgbGV0IGNoaWxkVGV4dE5vZGVzOiBBcnJheTxOb2RlPiA9IFtdO1xuICAgICAgICBpZiAoY29udGFpbmVyLmNoaWxkTm9kZXMpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29udGFpbmVyLmNoaWxkTm9kZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyLmNoaWxkTm9kZXNbaV0ubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkVGV4dE5vZGVzLnB1c2goY29udGFpbmVyLmNoaWxkTm9kZXNbaV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hpbGRUZXh0Tm9kZXM7XG4gICAgfVxufVxuXG5leHBvcnQgdmFyIGlzVGV4dEVkaXRpb25Ub29sOiBib29sZWFuID0gZmFsc2U7XG5cbmV4cG9ydCB2YXIgaXNCbG9ja0ZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldElzVGV4dEVkaXRpb25Ub29sKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaXNUZXh0RWRpdGlvblRvb2wgPSB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldElzQmxvY2tGb2N1c2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaXNCbG9ja0ZvY3VzZWQgPSB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEJsb2NrRm9jdXMocGFyZW50RWRpdG9yOiBIVE1MRWxlbWVudCkge1xuICAgIGxldCBibG9jayA9IHBhcmVudEVkaXRvci5jbG9zZXN0KCcud2ItYmxvY2tzX19jb250YWluZXInKTtcbiAgICBpZiAoIWJsb2NrLmNsYXNzTGlzdC5jb250YWlucygnd2ItYmxvY2tzX19jb250YWluZXItLWZvY3VzZWQnKSkge1xuICAgICAgICBibG9jay5jbGFzc0xpc3QuYWRkKCd3Yi1ibG9ja3NfX2NvbnRhaW5lci0tZm9jdXNlZCcpO1xuICAgIH1cblxuICAgIGxldCBjb250YWluZXJUb0ZvY3VzID0gcGFyZW50RWRpdG9yLmNsb3Nlc3QoJy5jb2x1bW4nKTtcbiAgICBpZiAoIWNvbnRhaW5lclRvRm9jdXMuY2xhc3NMaXN0LmNvbnRhaW5zKCdlZGl0b3Jqcy1mb2N1c2VkJykpIHtcbiAgICAgICAgY29udGFpbmVyVG9Gb2N1cy5jbGFzc0xpc3QuYWRkKCdlZGl0b3Jqcy1mb2N1c2VkJyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRCbG9ja0ZvY3VzKHBhcmVudEVkaXRvcjogSFRNTEVsZW1lbnQpIHtcbiAgICBsZXQgYmxvY2sgPSBwYXJlbnRFZGl0b3IuY2xvc2VzdCgnLndiLWJsb2Nrc19fY29udGFpbmVyJyk7XG4gICAgaWYgKGJsb2NrLmNsYXNzTGlzdC5jb250YWlucygnd2ItYmxvY2tzX19jb250YWluZXItLWZvY3VzZWQnKSkge1xuICAgICAgICBibG9jay5jbGFzc0xpc3QucmVtb3ZlKCd3Yi1ibG9ja3NfX2NvbnRhaW5lci0tZm9jdXNlZCcpO1xuICAgIH1cblxuICAgIGxldCBjb250YWluZXJUb0ZvY3VzID0gcGFyZW50RWRpdG9yLmNsb3Nlc3QoJy5jb2x1bW4nKTtcbiAgICBpZiAoY29udGFpbmVyVG9Gb2N1cy5jbGFzc0xpc3QuY29udGFpbnMoJ2VkaXRvcmpzLWZvY3VzZWQnKSkge1xuICAgICAgICBjb250YWluZXJUb0ZvY3VzLmNsYXNzTGlzdC5yZW1vdmUoJ2VkaXRvcmpzLWZvY3VzZWQnKTtcbiAgICB9XG59XG4iXX0=