@worktile/theia 17.3.2 → 17.4.0

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 (32) hide show
  1. package/components/text/text.component.d.ts +2 -2
  2. package/editor.component.d.ts +3 -6
  3. package/esm2022/components/text/text.component.mjs +7 -8
  4. package/esm2022/core/with-theia.mjs +1 -1
  5. package/esm2022/editor.component.mjs +10 -25
  6. package/esm2022/interfaces/editor.mjs +1 -1
  7. package/esm2022/interfaces/plugins/index.mjs +2 -2
  8. package/esm2022/plugins/code/code.component.mjs +2 -2
  9. package/esm2022/plugins/code/code.plugin.mjs +7 -6
  10. package/esm2022/plugins/common/insert-data-by-invalid-type.mjs +6 -6
  11. package/esm2022/plugins/deserialize/deserialize-html.plugin.mjs +20 -18
  12. package/esm2022/plugins/deserialize/deserialize-md.plugin.mjs +10 -10
  13. package/esm2022/plugins/image/image.component.mjs +2 -3
  14. package/esm2022/plugins/image/image.plugin.mjs +5 -4
  15. package/esm2022/plugins/index.mjs +2 -2
  16. package/esm2022/plugins/link/link.plugin.mjs +28 -13
  17. package/esm2022/plugins/list/list.plugin.mjs +17 -27
  18. package/esm2022/plugins/public-api.mjs +2 -1
  19. package/esm2022/plugins/quick-insert/index.mjs +4 -0
  20. package/esm2022/plugins/table/components/toolbar/table-toolbar.component.mjs +1 -1
  21. package/esm2022/plugins/table/table.plugin.mjs +48 -54
  22. package/esm2022/utils/copy-node.mjs +29 -34
  23. package/esm2022/utils/fragment.mjs +11 -11
  24. package/fesm2022/worktile-theia.mjs +311 -333
  25. package/fesm2022/worktile-theia.mjs.map +1 -1
  26. package/interfaces/editor.d.ts +5 -7
  27. package/interfaces/plugins/index.d.ts +1 -1
  28. package/package.json +2 -1
  29. package/plugins/public-api.d.ts +1 -0
  30. package/plugins/quick-insert/index.d.ts +3 -0
  31. package/utils/copy-node.d.ts +4 -3
  32. package/utils/fragment.d.ts +1 -1
@@ -187,7 +187,7 @@ export class TheCode extends TheBaseElement {
187
187
  }
188
188
  onCopy(event) {
189
189
  event.preventDefault();
190
- copyNode(this.editor, this.element, this.thyNotifyService, this.codemirror.editor);
190
+ copyNode(this.editor, this.element, this.thyNotifyService);
191
191
  }
192
192
  focusChange(codeMirrorFocused) {
193
193
  if (codeMirrorFocused) {
@@ -268,4 +268,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
268
268
  type: ViewChild,
269
269
  args: [TheToolbarDropdown, { read: TheToolbarDropdown, static: false }]
270
270
  }] } });
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29kZS9jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUtULFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUscUJBQXFCLEVBQWtCLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNE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RW5CLGVBQWUsa0xBQ2Ysa0JBQWtCLGlFQUNsQiwwQkFBMEI7OzJGQUdyQixPQUFPO2tCQTVCbkIsU0FBUzsrQkFDSSxjQUFjLG1CQUVQLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0YsS0FBSyxFQUFFLG9CQUFvQjtxQkFDOUIsY0FDVyxJQUFJLFdBQ1A7d0JBQ0wscUJBQXFCO3dCQUNyQixPQUFPO3dCQUNQLElBQUk7d0JBQ0osT0FBTzt3QkFDUCxPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxnQkFBZ0I7d0JBQ2hCLFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQiwwQkFBMEI7cUJBQzdCO2tQQW9DRCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl6RCxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSXJFLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29kZU1pcnJvckNvbXBvbmVudCwgQ29kZW1pcnJvck1vZHVsZSB9IGZyb20gJ25nLWNvZGVtaXJyb3InO1xuaW1wb3J0IHsgVGh5QWN0aW9uLCBUaHlBY3Rpb25zIH0gZnJvbSAnbmd4LXRldGh5cy9hY3Rpb24nO1xuaW1wb3J0IHsgVGh5RGl2aWRlciB9IGZyb20gJ25neC10ZXRoeXMvZGl2aWRlcic7XG5pbXBvcnQgeyBUaHlOb3RpZnlTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9ub3RpZnknO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlSZXNpemFibGVEaXJlY3RpdmUsIFRoeVJlc2l6ZUV2ZW50LCBUaHlSZXNpemVIYW5kbGUgfSBmcm9tICduZ3gtdGV0aHlzL3Jlc2l6YWJsZSc7XG5pbXBvcnQgeyBUaHlTd2l0Y2ggfSBmcm9tICduZ3gtdGV0aHlzL3N3aXRjaCc7XG5pbXBvcnQgeyBUaHlUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy90b29sdGlwJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXksIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVkaXRvciwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IsIFNsYXRlTW9kdWxlIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUaGVUb29sYmFyRHJvcGRvd24gfSBmcm9tICcuLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IFRoZVByZXZlbnREZWZhdWx0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9hY3Rpb24vcHJldmVudC1kZWZhdWx0JztcbmltcG9ydCB7IENPREVNSVJST1JfUEFERElOR19UT1AsIENPREVfTU9ERVMsIERyb3Bkb3duTW9kZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb2RlRWxlbWVudCB9IGZyb20gJy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBEZWZhdWx0VG9vbGJhckl0ZW0sIFRoZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgY29weU5vZGUsIHRvcExlZnRQb3NpdGlvbiwgdXBkYXRlUG9wb3ZlclBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgaXNNb2JpbGVNb2RlLCBpc1ByaW50TW9kZSB9IGZyb20gJy4uLy4uL3V0aWxzL2dldC1tb2RlJztcbmltcG9ydCB7IENvZGVFZGl0b3IgfSBmcm9tICcuL2NvZGUuZWRpdG9yJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkaXZbdGhlQ29kZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2RlLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGhlLWNvZGUtY29udGFpbmVyJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRoeVJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFNsYXRlTW9kdWxlLFxuICAgICAgICBDb2RlbWlycm9yTW9kdWxlLFxuICAgICAgICBUaHlTd2l0Y2gsXG4gICAgICAgIFRoeUFjdGlvbixcbiAgICAgICAgVGh5RGl2aWRlcixcbiAgICAgICAgVGh5QWN0aW9ucyxcbiAgICAgICAgVGh5VG9vbHRpcERpcmVjdGl2ZSxcbiAgICAgICAgVGh5UmVzaXphYmxlRGlyZWN0aXZlLFxuICAgICAgICBUaHlSZXNpemVIYW5kbGUsXG4gICAgICAgIFRoZVRvb2xiYXJEcm9wZG93bixcbiAgICAgICAgVGhlUHJldmVudERlZmF1bHREaXJlY3RpdmVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoZUNvZGUgZXh0ZW5kcyBUaGVCYXNlRWxlbWVudDxDb2RlRWxlbWVudCwgRWRpdG9yPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGFydFJlbmRlckNvZGVtaXJyb3IgPSBmYWxzZTtcblxuICAgIGRyb3Bkb3duTW9kZSA9IERyb3Bkb3duTW9kZTtcblxuICAgIG1heEhlaWdodCA9IDA7XG5cbiAgICBtZW51cyA9IENPREVfTU9ERVMubWFwKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4geyBrZXk6IGl0ZW0udmFsdWUsIG5hbWU6IGl0ZW0uc2hvd05hbWUgfTtcbiAgICB9KTtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGlzSGlnaHRMaWdodCA9IGZhbHNlO1xuXG4gICAgcmVzaXplSGVpZ2h0OiBudW1iZXIgPSBudWxsO1xuXG4gICAgb3B0aW9ucyA9IHtcbiAgICAgICAgbW9kZTogdGhpcy5tZW51c1swXS5rZXksXG4gICAgICAgIGxpbmVOdW1iZXJzOiBmYWxzZSxcbiAgICAgICAgcmVhZE9ubHk6IGZhbHNlLFxuICAgICAgICBhdXRvZm9jdXM6IGZhbHNlLFxuICAgICAgICBsaW5lV2lzZUNvcHlDdXQ6IHRydWUsXG4gICAgICAgIGxpbmVXcmFwcGluZzogZmFsc2UsXG4gICAgICAgIGN1cnNvckJsaW5rUmF0ZTogNTAwXG4gICAgfTtcblxuICAgIGFjdGl2ZUxhbmd1YWdlOiBEZWZhdWx0VG9vbGJhckl0ZW0gPSB0aGlzLm1lbnVzWzBdO1xuXG4gICAgcmVzaXplQm91bmRzID0gbnVsbDtcblxuICAgIHRvb2xiYXJQb3BvdmVyUmVmOiBUaHlQb3BvdmVyUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCd0b29sYmFyJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgdG9vbGJhcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvZGVtaXJyb3InLCB7IHJlYWQ6IENvZGVNaXJyb3JDb21wb25lbnQsIHN0YXRpYzogZmFsc2UgfSlcbiAgICBjb2RlbWlycm9yOiBDb2RlTWlycm9yQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZChUaGVUb29sYmFyRHJvcGRvd24sIHsgcmVhZDogVGhlVG9vbGJhckRyb3Bkb3duLCBzdGF0aWM6IGZhbHNlIH0pXG4gICAgdG9vbGJhckRyb3Bkb3duOiBUaGVUb29sYmFyRHJvcGRvd247XG5cbiAgICBnZXQgY29kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jb250ZW50O1xuICAgIH1cblxuICAgIGdldCBpc1Rvb2xiYXJPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b29sYmFyUG9wb3ZlclJlZiAmJiB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKSAmJiB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKS5oYXNBdHRhY2hlZCgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgdGh5Tm90aWZ5U2VydmljZTogVGh5Tm90aWZ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlKCkge1xuICAgICAgICBzdXBlci5vbkNvbnRleHRDaGFuZ2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJiAhaXNNb2JpbGVNb2RlKHRoaXMuZWRpdG9yKSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuVG9vbGJhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVRvb2xiYXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlYWRPbmx5ICE9PSB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VSZWFkb25seSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5tb2RlICE9PSB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZU1vZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGluZVdyYXBwaW5nICE9PSB0aGlzLmVsZW1lbnQuYXV0b1dyYXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yZXNpemVIZWlnaHQgIT09IHRoaXMuZWxlbWVudC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUhlaWdodCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuaW5pdE1heEhlaWdodCgpO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbGFzc05hbWUuaW5jbHVkZXMoJ3RoeS1yZXNpemFibGUtaGFuZGxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQmxvY2tPcGVyYXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudGhlLWNvZGUtYmxvY2stb3BlcmF0aW9uJyk/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0NvZGVtaXJyb3IgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5nLWNvZGVtaXJyb3InKT8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gIWlzQ29kZW1pcnJvciAmJiAhaXNCbG9ja09wZXJhdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICAvLyBkZWxheSAyMG1zXG4gICAgICAgICAgICAvLyBjY29kZW1pcnJvciBpcyB0b28gc2xvd1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpLCBkZWxheSgyMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJDb2RlbWlycm9yKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGVkaXQgbW9kZSBjYW4gbm90IGRlbGF5XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJDb2RlbWlycm9yKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQ29kZW1pcnJvckZvY3VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVCb3VuZHMgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hdGl2ZUVsZW1lbnQ6IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0RWRpdGFibGVFbGVtZW50KClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRNYXhIZWlnaHQoKSB7XG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gaXNQcmludE1vZGUodGhpcy5lZGl0b3IpID8gMCA6IDM1MCAtIENPREVNSVJST1JfUEFERElOR19UT1AgKiAyO1xuICAgIH1cblxuICAgIG9wZW5Ub29sYmFyKCkge1xuICAgICAgICBpZiAoIVRoZVF1ZXJpZXMuaXNHbG9iYWxDb2xsYXBzZWQodGhpcy5lZGl0b3IpIHx8IHRoaXMuaXNUb29sYmFyT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9vbGJhclBvcG92ZXJSZWYgPSB0aGlzLnRoeVBvcG92ZXIub3Blbih0aGlzLnRvb2xiYXIsIHtcbiAgICAgICAgICAgIG9yaWdpbjogdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3RoZS1wbHVnaW4tdG9vbGJhci1wb3BvdmVyJ10sXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWUsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBvdXRzaWRlQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMudG9vbGJhclBvcG92ZXJSZWY/LmdldE92ZXJsYXlSZWYoKTtcbiAgICAgICAgdXBkYXRlUG9wb3ZlclBvc2l0aW9uKG92ZXJsYXlSZWYsIG9yaWdpbiwgW3RvcExlZnRQb3NpdGlvbl0pO1xuICAgIH1cblxuICAgIGNsb3NlVG9vbGJhcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNUb29sYmFyT3Blbikge1xuICAgICAgICAgICAgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyQ29kZW1pcnJvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFJlbmRlckNvZGVtaXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnVzZVJlYWRvbmx5KCk7XG4gICAgICAgIHRoaXMudXNlTW9kZSgpO1xuICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgIHRoaXMudXNlSGVpZ2h0KCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ29kZW1pcnJvckZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmIHRoaXMuY29kZW1pcnJvciAmJiB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yICYmICF0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLmhhc0ZvY3VzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5ibHVyKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2RlbWlycm9yLmVkaXRvci5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29kZUNoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0hpZ2h0TGlnaHQgPSBmYWxzZTtcbiAgICAgICAgQ29kZUVkaXRvci5zZXRDb2RlQXR0cmlidXRlKHRoaXMuZWRpdG9yLCB7IGNvbnRlbnQ6ICRldmVudCB9LCB0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIENvZGVFZGl0b3IucmVtb3ZlQ29kZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbkNvcHkoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29weU5vZGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgdGhpcy50aHlOb3RpZnlTZXJ2aWNlLCB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yKTtcbiAgICB9XG5cbiAgICBmb2N1c0NoYW5nZShjb2RlTWlycm9yRm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoY29kZU1pcnJvckZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNoYW5nZUxhbmd1YWdlID0gaXRlbSA9PiB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zLCBtb2RlOiBpdGVtLmtleSB9O1xuICAgICAgICB0aGlzLmFjdGl2ZUxhbmd1YWdlID0gaXRlbTtcbiAgICAgICAgQ29kZUVkaXRvci5zZXRDb2RlQXR0cmlidXRlKHRoaXMuZWRpdG9yLCB7IGxhbmd1YWdlOiBpdGVtLmtleSB9LCB0aGlzLmVsZW1lbnQpO1xuICAgIH07XG5cbiAgICB1c2VNb2RlKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbW9kZTogdGhpcy5lbGVtZW50Lmxhbmd1YWdlIH07XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtID0gdGhpcy5tZW51cy5maW5kKGkgPT4gaS5rZXkgPT09IHRoaXMuZWxlbWVudC5sYW5ndWFnZSk7XG4gICAgICAgIGlmIChtZW51SXRlbSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZSA9IG1lbnVJdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXNlQXV0b1dyYXAoKSB7XG4gICAgICAgIGNvbnN0IGlzUHJpbnQgPSBpc1ByaW50TW9kZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IGxpbmVXcmFwcGluZyA9IGlzUHJpbnQgPyB0cnVlIDogdGhpcy5lbGVtZW50LmF1dG9XcmFwIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nIH07XG4gICAgfVxuXG4gICAgdXNlSGVpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50LmhlaWdodCAmJiAhaXNQcmludE1vZGUodGhpcy5lZGl0b3IpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VSZWFkb25seSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIHJlYWRPbmx5OiB0aGlzLnJlYWRvbmx5LCBjdXJzb3JCbGlua1JhdGU6IHRoaXMucmVhZG9ubHkgPyAtMSA6IDUwMCB9O1xuICAgIH1cblxuICAgIG9uUmVzaXplKHsgaGVpZ2h0IH06IFRoeVJlc2l6ZUV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzaXplSGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IGhlaWdodDtcbiAgICB9XG5cbiAgICBvbkVuZFJlc2l6ZSgpIHtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCkpO1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHsgaGVpZ2h0OiB0aGlzLnJlc2l6ZUhlaWdodCB9LCB0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlV3JhcCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzSGlnaHRMaWdodCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nOiB2YWx1ZSB8fCBmYWxzZSB9O1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHsgYXV0b1dyYXA6IHZhbHVlID8gdmFsdWUgOiBudWxsIH0sIHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPCEtLSDlj6ror7vmqKHlvI/kuItDb2RlTWlycm9yLXNpemVy6auY5bqm5q+U57yW6L6R5qih5byP5LiL5aSaMnB477yM6K6+572udGh5TWluSGVpZ2h05Li6NDZweOmYsuatouaLluaLveWIsOacgOWwj+mrmOW6puaXtuWPquivu+aooeW8j+S4i+WHuueOsOa7muWKqOadoSAgLS0+XG48ZGl2XG4gIHRoeVJlc2l6YWJsZVxuICBbdGh5TWluSGVpZ2h0XT1cIjQ2XCJcbiAgW3RoeUJvdW5kc109XCJyZXNpemVCb3VuZHNcIlxuICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJlc2l6ZUhlaWdodFwiXG4gICh0aHlSZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiXG4gICh0aHlSZXNpemVFbmQpPVwib25FbmRSZXNpemUoKVwiXG4gIGNsYXNzPVwicmVzaXplLWNvZGUtY29udGFpbmVyXCJcbiAgW25nQ2xhc3NdPVwieyBmb2N1czogaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSwgcmVhZG9ubHk6IG9wdGlvbnMucmVhZE9ubHksIGFjdGl2ZTogaXNIaWdodExpZ2h0ICYmIGlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHkgfVwiXG4+XG4gIDxuZy1jb2RlbWlycm9yXG4gICAgKm5nSWY9XCJzdGFydFJlbmRlckNvZGVtaXJyb3JcIlxuICAgICNjb2RlbWlycm9yXG4gICAgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIlxuICAgIGNsYXNzPVwibmctY29kZW1pcnJvci13cmFwcGVyXCJcbiAgICBbbmdTdHlsZV09XCJ7IG1heEhlaWdodDogbWF4SGVpZ2h0ID4gMCA/IG1heEhlaWdodCArICdweCcgOiAnYXV0bycgfVwiXG4gICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgW25nTW9kZWxdPVwiY29kZVwiXG4gICAgW2RlbGF5UmVmcmVzaFRpbWVdPVwiMzAwXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJjb2RlQ2hhbmdlKCRldmVudClcIlxuICAgIChmb2N1c0NoYW5nZSk9XCJmb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgICBbYXV0b01heEhlaWdodF09XCJtYXhIZWlnaHRcIlxuICA+XG4gIDwvbmctY29kZW1pcnJvcj5cbiAgPHRoeS1yZXNpemUtaGFuZGxlIHRoeURpcmVjdGlvbj1cImJvdHRvbVwiIGNsYXNzPVwiY29kZS1yZXNpemUtaWNvblwiICpuZ0lmPVwiaXNDb2xsYXBzZWRBbmROb25SZWFkb25seVwiPjwvdGh5LXJlc2l6ZS1oYW5kbGU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0b29sYmFyPlxuICA8dGh5LWFjdGlvbnMgdGh5U2l6ZT1cInh4c1wiIHRoZVByZXZlbnREZWZhdWx0PlxuICAgIDx0aGUtdG9vbGJhci1kcm9wZG93blxuICAgICAgW21lbnVzXT1cIm1lbnVzXCJcbiAgICAgIFt0b29sYmFySXRlbV09XCJhY3RpdmVMYW5ndWFnZVwiXG4gICAgICBbZHJvcGRvd25JdGVtS2V5XT1cImFjdGl2ZUxhbmd1YWdlPy5rZXlcIlxuICAgICAgW2l0ZW1Nb3VzZWRvd25IYW5kbGVdPVwib25DaGFuZ2VMYW5ndWFnZVwiXG4gICAgPlxuICAgIDwvdGhlLXRvb2xiYXItZHJvcGRvd24+XG4gICAgPHNwYW4gY2xhc3M9XCJhdXRvLXdyYXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC0yIHRleHQtc2Vjb25kYXJ5XCI+XG4gICAgICA8c3Bhbj7oh6rliqjmjaLooYw8L3NwYW4+XG4gICAgICA8dGh5LXN3aXRjaFxuICAgICAgICBjbGFzcz1cImF1dG8td3JhcC1idG4gZC1mbGV4IG1sLTFcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIm9wdGlvbnMubGluZVdyYXBwaW5nXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VXcmFwKCRldmVudClcIlxuICAgICAgICB0aHlTaXplPVwic21cIlxuICAgICAgPjwvdGh5LXN3aXRjaD5cbiAgICA8L3NwYW4+XG4gICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRoeUFjdGlvbiB0aHlBY3Rpb25JY29uPVwiY29weVwiIHRoeVRvb2x0aXA9XCLlpI3liLZcIiB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCIgKGNsaWNrKT1cIm9uQ29weSgkZXZlbnQpXCI+PC9hPlxuICAgIDx0aHktZGl2aWRlciBjbGFzcz1cIm1yLTIgbWwtMSBhbGlnbi1zZWxmLWNlbnRlclwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCIgdGh5Q29sb3I9XCJsaWdodFwiPjwvdGh5LWRpdmlkZXI+XG4gICAgPGFcbiAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgdGh5QWN0aW9uXG4gICAgICB0aHlUeXBlPVwiZGFuZ2VyXCJcbiAgICAgIHRoeUFjdGlvbkljb249XCJ0cmFzaFwiXG4gICAgICB0aHlUb29sdGlwPVwi5Yig6ZmkXCJcbiAgICAgIHRoeVRvb2x0aXBQbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKCRldmVudClcIlxuICAgID48L2E+XG4gIDwvdGh5LWFjdGlvbnM+XG48L25nLXRlbXBsYXRlPlxuIl19
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29kZS9jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUtULFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUscUJBQXFCLEVBQWtCLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNE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QkFBMEI7OzJGQUdyQixPQUFPO2tCQTVCbkIsU0FBUzsrQkFDSSxjQUFjLG1CQUVQLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0YsS0FBSyxFQUFFLG9CQUFvQjtxQkFDOUIsY0FDVyxJQUFJLFdBQ1A7d0JBQ0wscUJBQXFCO3dCQUNyQixPQUFPO3dCQUNQLElBQUk7d0JBQ0osT0FBTzt3QkFDUCxPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxnQkFBZ0I7d0JBQ2hCLFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQiwwQkFBMEI7cUJBQzdCO2tQQW9DRCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl6RCxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSXJFLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29kZU1pcnJvckNvbXBvbmVudCwgQ29kZW1pcnJvck1vZHVsZSB9IGZyb20gJ25nLWNvZGVtaXJyb3InO1xuaW1wb3J0IHsgVGh5QWN0aW9uLCBUaHlBY3Rpb25zIH0gZnJvbSAnbmd4LXRldGh5cy9hY3Rpb24nO1xuaW1wb3J0IHsgVGh5RGl2aWRlciB9IGZyb20gJ25neC10ZXRoeXMvZGl2aWRlcic7XG5pbXBvcnQgeyBUaHlOb3RpZnlTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9ub3RpZnknO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlSZXNpemFibGVEaXJlY3RpdmUsIFRoeVJlc2l6ZUV2ZW50LCBUaHlSZXNpemVIYW5kbGUgfSBmcm9tICduZ3gtdGV0aHlzL3Jlc2l6YWJsZSc7XG5pbXBvcnQgeyBUaHlTd2l0Y2ggfSBmcm9tICduZ3gtdGV0aHlzL3N3aXRjaCc7XG5pbXBvcnQgeyBUaHlUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy90b29sdGlwJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXksIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVkaXRvciwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IsIFNsYXRlTW9kdWxlIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUaGVUb29sYmFyRHJvcGRvd24gfSBmcm9tICcuLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IFRoZVByZXZlbnREZWZhdWx0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9hY3Rpb24vcHJldmVudC1kZWZhdWx0JztcbmltcG9ydCB7IENPREVNSVJST1JfUEFERElOR19UT1AsIENPREVfTU9ERVMsIERyb3Bkb3duTW9kZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb2RlRWxlbWVudCB9IGZyb20gJy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBEZWZhdWx0VG9vbGJhckl0ZW0sIFRoZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgY29weU5vZGUsIHRvcExlZnRQb3NpdGlvbiwgdXBkYXRlUG9wb3ZlclBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgaXNNb2JpbGVNb2RlLCBpc1ByaW50TW9kZSB9IGZyb20gJy4uLy4uL3V0aWxzL2dldC1tb2RlJztcbmltcG9ydCB7IENvZGVFZGl0b3IgfSBmcm9tICcuL2NvZGUuZWRpdG9yJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkaXZbdGhlQ29kZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2RlLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGhlLWNvZGUtY29udGFpbmVyJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRoeVJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFNsYXRlTW9kdWxlLFxuICAgICAgICBDb2RlbWlycm9yTW9kdWxlLFxuICAgICAgICBUaHlTd2l0Y2gsXG4gICAgICAgIFRoeUFjdGlvbixcbiAgICAgICAgVGh5RGl2aWRlcixcbiAgICAgICAgVGh5QWN0aW9ucyxcbiAgICAgICAgVGh5VG9vbHRpcERpcmVjdGl2ZSxcbiAgICAgICAgVGh5UmVzaXphYmxlRGlyZWN0aXZlLFxuICAgICAgICBUaHlSZXNpemVIYW5kbGUsXG4gICAgICAgIFRoZVRvb2xiYXJEcm9wZG93bixcbiAgICAgICAgVGhlUHJldmVudERlZmF1bHREaXJlY3RpdmVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoZUNvZGUgZXh0ZW5kcyBUaGVCYXNlRWxlbWVudDxDb2RlRWxlbWVudCwgRWRpdG9yPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGFydFJlbmRlckNvZGVtaXJyb3IgPSBmYWxzZTtcblxuICAgIGRyb3Bkb3duTW9kZSA9IERyb3Bkb3duTW9kZTtcblxuICAgIG1heEhlaWdodCA9IDA7XG5cbiAgICBtZW51cyA9IENPREVfTU9ERVMubWFwKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4geyBrZXk6IGl0ZW0udmFsdWUsIG5hbWU6IGl0ZW0uc2hvd05hbWUgfTtcbiAgICB9KTtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGlzSGlnaHRMaWdodCA9IGZhbHNlO1xuXG4gICAgcmVzaXplSGVpZ2h0OiBudW1iZXIgPSBudWxsO1xuXG4gICAgb3B0aW9ucyA9IHtcbiAgICAgICAgbW9kZTogdGhpcy5tZW51c1swXS5rZXksXG4gICAgICAgIGxpbmVOdW1iZXJzOiBmYWxzZSxcbiAgICAgICAgcmVhZE9ubHk6IGZhbHNlLFxuICAgICAgICBhdXRvZm9jdXM6IGZhbHNlLFxuICAgICAgICBsaW5lV2lzZUNvcHlDdXQ6IHRydWUsXG4gICAgICAgIGxpbmVXcmFwcGluZzogZmFsc2UsXG4gICAgICAgIGN1cnNvckJsaW5rUmF0ZTogNTAwXG4gICAgfTtcblxuICAgIGFjdGl2ZUxhbmd1YWdlOiBEZWZhdWx0VG9vbGJhckl0ZW0gPSB0aGlzLm1lbnVzWzBdO1xuXG4gICAgcmVzaXplQm91bmRzID0gbnVsbDtcblxuICAgIHRvb2xiYXJQb3BvdmVyUmVmOiBUaHlQb3BvdmVyUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCd0b29sYmFyJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgdG9vbGJhcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvZGVtaXJyb3InLCB7IHJlYWQ6IENvZGVNaXJyb3JDb21wb25lbnQsIHN0YXRpYzogZmFsc2UgfSlcbiAgICBjb2RlbWlycm9yOiBDb2RlTWlycm9yQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZChUaGVUb29sYmFyRHJvcGRvd24sIHsgcmVhZDogVGhlVG9vbGJhckRyb3Bkb3duLCBzdGF0aWM6IGZhbHNlIH0pXG4gICAgdG9vbGJhckRyb3Bkb3duOiBUaGVUb29sYmFyRHJvcGRvd247XG5cbiAgICBnZXQgY29kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jb250ZW50O1xuICAgIH1cblxuICAgIGdldCBpc1Rvb2xiYXJPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b29sYmFyUG9wb3ZlclJlZiAmJiB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKSAmJiB0aGlzLnRvb2xiYXJQb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKS5oYXNBdHRhY2hlZCgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgdGh5Tm90aWZ5U2VydmljZTogVGh5Tm90aWZ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlKCkge1xuICAgICAgICBzdXBlci5vbkNvbnRleHRDaGFuZ2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJiAhaXNNb2JpbGVNb2RlKHRoaXMuZWRpdG9yKSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuVG9vbGJhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVRvb2xiYXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlYWRPbmx5ICE9PSB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VSZWFkb25seSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5tb2RlICE9PSB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZU1vZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGluZVdyYXBwaW5nICE9PSB0aGlzLmVsZW1lbnQuYXV0b1dyYXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yZXNpemVIZWlnaHQgIT09IHRoaXMuZWxlbWVudC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUhlaWdodCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuaW5pdE1heEhlaWdodCgpO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbGFzc05hbWUuaW5jbHVkZXMoJ3RoeS1yZXNpemFibGUtaGFuZGxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQmxvY2tPcGVyYXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudGhlLWNvZGUtYmxvY2stb3BlcmF0aW9uJyk/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0NvZGVtaXJyb3IgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5nLWNvZGVtaXJyb3InKT8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gIWlzQ29kZW1pcnJvciAmJiAhaXNCbG9ja09wZXJhdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICAvLyBkZWxheSAyMG1zXG4gICAgICAgICAgICAvLyBjY29kZW1pcnJvciBpcyB0b28gc2xvd1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpLCBkZWxheSgyMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJDb2RlbWlycm9yKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGVkaXQgbW9kZSBjYW4gbm90IGRlbGF5XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJDb2RlbWlycm9yKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQ29kZW1pcnJvckZvY3VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVCb3VuZHMgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hdGl2ZUVsZW1lbnQ6IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0RWRpdGFibGVFbGVtZW50KClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRNYXhIZWlnaHQoKSB7XG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gaXNQcmludE1vZGUodGhpcy5lZGl0b3IpID8gMCA6IDM1MCAtIENPREVNSVJST1JfUEFERElOR19UT1AgKiAyO1xuICAgIH1cblxuICAgIG9wZW5Ub29sYmFyKCkge1xuICAgICAgICBpZiAoIVRoZVF1ZXJpZXMuaXNHbG9iYWxDb2xsYXBzZWQodGhpcy5lZGl0b3IpIHx8IHRoaXMuaXNUb29sYmFyT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9vbGJhclBvcG92ZXJSZWYgPSB0aGlzLnRoeVBvcG92ZXIub3Blbih0aGlzLnRvb2xiYXIsIHtcbiAgICAgICAgICAgIG9yaWdpbjogdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3RoZS1wbHVnaW4tdG9vbGJhci1wb3BvdmVyJ10sXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWUsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBvdXRzaWRlQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMudG9vbGJhclBvcG92ZXJSZWY/LmdldE92ZXJsYXlSZWYoKTtcbiAgICAgICAgdXBkYXRlUG9wb3ZlclBvc2l0aW9uKG92ZXJsYXlSZWYsIG9yaWdpbiwgW3RvcExlZnRQb3NpdGlvbl0pO1xuICAgIH1cblxuICAgIGNsb3NlVG9vbGJhcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNUb29sYmFyT3Blbikge1xuICAgICAgICAgICAgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyQ29kZW1pcnJvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFJlbmRlckNvZGVtaXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnVzZVJlYWRvbmx5KCk7XG4gICAgICAgIHRoaXMudXNlTW9kZSgpO1xuICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgIHRoaXMudXNlSGVpZ2h0KCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ29kZW1pcnJvckZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmIHRoaXMuY29kZW1pcnJvciAmJiB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yICYmICF0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLmhhc0ZvY3VzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5ibHVyKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2RlbWlycm9yLmVkaXRvci5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29kZUNoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0hpZ2h0TGlnaHQgPSBmYWxzZTtcbiAgICAgICAgQ29kZUVkaXRvci5zZXRDb2RlQXR0cmlidXRlKHRoaXMuZWRpdG9yLCB7IGNvbnRlbnQ6ICRldmVudCB9LCB0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIENvZGVFZGl0b3IucmVtb3ZlQ29kZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbkNvcHkoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29weU5vZGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgdGhpcy50aHlOb3RpZnlTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBmb2N1c0NoYW5nZShjb2RlTWlycm9yRm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoY29kZU1pcnJvckZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNoYW5nZUxhbmd1YWdlID0gaXRlbSA9PiB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zLCBtb2RlOiBpdGVtLmtleSB9O1xuICAgICAgICB0aGlzLmFjdGl2ZUxhbmd1YWdlID0gaXRlbTtcbiAgICAgICAgQ29kZUVkaXRvci5zZXRDb2RlQXR0cmlidXRlKHRoaXMuZWRpdG9yLCB7IGxhbmd1YWdlOiBpdGVtLmtleSB9LCB0aGlzLmVsZW1lbnQpO1xuICAgIH07XG5cbiAgICB1c2VNb2RlKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbW9kZTogdGhpcy5lbGVtZW50Lmxhbmd1YWdlIH07XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtID0gdGhpcy5tZW51cy5maW5kKGkgPT4gaS5rZXkgPT09IHRoaXMuZWxlbWVudC5sYW5ndWFnZSk7XG4gICAgICAgIGlmIChtZW51SXRlbSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZSA9IG1lbnVJdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXNlQXV0b1dyYXAoKSB7XG4gICAgICAgIGNvbnN0IGlzUHJpbnQgPSBpc1ByaW50TW9kZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IGxpbmVXcmFwcGluZyA9IGlzUHJpbnQgPyB0cnVlIDogdGhpcy5lbGVtZW50LmF1dG9XcmFwIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nIH07XG4gICAgfVxuXG4gICAgdXNlSGVpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50LmhlaWdodCAmJiAhaXNQcmludE1vZGUodGhpcy5lZGl0b3IpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VSZWFkb25seSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIHJlYWRPbmx5OiB0aGlzLnJlYWRvbmx5LCBjdXJzb3JCbGlua1JhdGU6IHRoaXMucmVhZG9ubHkgPyAtMSA6IDUwMCB9O1xuICAgIH1cblxuICAgIG9uUmVzaXplKHsgaGVpZ2h0IH06IFRoeVJlc2l6ZUV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzaXplSGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IGhlaWdodDtcbiAgICB9XG5cbiAgICBvbkVuZFJlc2l6ZSgpIHtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCkpO1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHsgaGVpZ2h0OiB0aGlzLnJlc2l6ZUhlaWdodCB9LCB0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlV3JhcCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzSGlnaHRMaWdodCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nOiB2YWx1ZSB8fCBmYWxzZSB9O1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHsgYXV0b1dyYXA6IHZhbHVlID8gdmFsdWUgOiBudWxsIH0sIHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPCEtLSDlj6ror7vmqKHlvI/kuItDb2RlTWlycm9yLXNpemVy6auY5bqm5q+U57yW6L6R5qih5byP5LiL5aSaMnB477yM6K6+572udGh5TWluSGVpZ2h05Li6NDZweOmYsuatouaLluaLveWIsOacgOWwj+mrmOW6puaXtuWPquivu+aooeW8j+S4i+WHuueOsOa7muWKqOadoSAgLS0+XG48ZGl2XG4gIHRoeVJlc2l6YWJsZVxuICBbdGh5TWluSGVpZ2h0XT1cIjQ2XCJcbiAgW3RoeUJvdW5kc109XCJyZXNpemVCb3VuZHNcIlxuICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJlc2l6ZUhlaWdodFwiXG4gICh0aHlSZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiXG4gICh0aHlSZXNpemVFbmQpPVwib25FbmRSZXNpemUoKVwiXG4gIGNsYXNzPVwicmVzaXplLWNvZGUtY29udGFpbmVyXCJcbiAgW25nQ2xhc3NdPVwieyBmb2N1czogaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSwgcmVhZG9ubHk6IG9wdGlvbnMucmVhZE9ubHksIGFjdGl2ZTogaXNIaWdodExpZ2h0ICYmIGlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHkgfVwiXG4+XG4gIDxuZy1jb2RlbWlycm9yXG4gICAgKm5nSWY9XCJzdGFydFJlbmRlckNvZGVtaXJyb3JcIlxuICAgICNjb2RlbWlycm9yXG4gICAgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIlxuICAgIGNsYXNzPVwibmctY29kZW1pcnJvci13cmFwcGVyXCJcbiAgICBbbmdTdHlsZV09XCJ7IG1heEhlaWdodDogbWF4SGVpZ2h0ID4gMCA/IG1heEhlaWdodCArICdweCcgOiAnYXV0bycgfVwiXG4gICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgW25nTW9kZWxdPVwiY29kZVwiXG4gICAgW2RlbGF5UmVmcmVzaFRpbWVdPVwiMzAwXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJjb2RlQ2hhbmdlKCRldmVudClcIlxuICAgIChmb2N1c0NoYW5nZSk9XCJmb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgICBbYXV0b01heEhlaWdodF09XCJtYXhIZWlnaHRcIlxuICA+XG4gIDwvbmctY29kZW1pcnJvcj5cbiAgPHRoeS1yZXNpemUtaGFuZGxlIHRoeURpcmVjdGlvbj1cImJvdHRvbVwiIGNsYXNzPVwiY29kZS1yZXNpemUtaWNvblwiICpuZ0lmPVwiaXNDb2xsYXBzZWRBbmROb25SZWFkb25seVwiPjwvdGh5LXJlc2l6ZS1oYW5kbGU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0b29sYmFyPlxuICA8dGh5LWFjdGlvbnMgdGh5U2l6ZT1cInh4c1wiIHRoZVByZXZlbnREZWZhdWx0PlxuICAgIDx0aGUtdG9vbGJhci1kcm9wZG93blxuICAgICAgW21lbnVzXT1cIm1lbnVzXCJcbiAgICAgIFt0b29sYmFySXRlbV09XCJhY3RpdmVMYW5ndWFnZVwiXG4gICAgICBbZHJvcGRvd25JdGVtS2V5XT1cImFjdGl2ZUxhbmd1YWdlPy5rZXlcIlxuICAgICAgW2l0ZW1Nb3VzZWRvd25IYW5kbGVdPVwib25DaGFuZ2VMYW5ndWFnZVwiXG4gICAgPlxuICAgIDwvdGhlLXRvb2xiYXItZHJvcGRvd24+XG4gICAgPHNwYW4gY2xhc3M9XCJhdXRvLXdyYXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC0yIHRleHQtc2Vjb25kYXJ5XCI+XG4gICAgICA8c3Bhbj7oh6rliqjmjaLooYw8L3NwYW4+XG4gICAgICA8dGh5LXN3aXRjaFxuICAgICAgICBjbGFzcz1cImF1dG8td3JhcC1idG4gZC1mbGV4IG1sLTFcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIm9wdGlvbnMubGluZVdyYXBwaW5nXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VXcmFwKCRldmVudClcIlxuICAgICAgICB0aHlTaXplPVwic21cIlxuICAgICAgPjwvdGh5LXN3aXRjaD5cbiAgICA8L3NwYW4+XG4gICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRoeUFjdGlvbiB0aHlBY3Rpb25JY29uPVwiY29weVwiIHRoeVRvb2x0aXA9XCLlpI3liLZcIiB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCIgKGNsaWNrKT1cIm9uQ29weSgkZXZlbnQpXCI+PC9hPlxuICAgIDx0aHktZGl2aWRlciBjbGFzcz1cIm1yLTIgbWwtMSBhbGlnbi1zZWxmLWNlbnRlclwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCIgdGh5Q29sb3I9XCJsaWdodFwiPjwvdGh5LWRpdmlkZXI+XG4gICAgPGFcbiAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgdGh5QWN0aW9uXG4gICAgICB0aHlUeXBlPVwiZGFuZ2VyXCJcbiAgICAgIHRoeUFjdGlvbkljb249XCJ0cmFzaFwiXG4gICAgICB0aHlUb29sdGlwPVwi5Yig6ZmkXCJcbiAgICAgIHRoeVRvb2x0aXBQbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKCRldmVudClcIlxuICAgID48L2E+XG4gIDwvdGh5LWFjdGlvbnM+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,8 +1,9 @@
1
1
  import { Editor } from 'slate';
2
2
  import { ElementKinds, PluginMenuIcons, ThePluginMenuItemType } from '../../constants';
3
- import { createPluginFactory } from '../../core';
4
3
  import { PluginKeys } from '../../interfaces';
4
+ import { createPluginFactory } from '../../core';
5
5
  import * as TheQueries from '../../queries';
6
+ import { setClipboardDataByDom } from '../../utils';
6
7
  import { TheCode } from './code.component';
7
8
  import { CodeEditor } from './code.editor';
8
9
  export const withCode = (editor) => {
@@ -22,15 +23,15 @@ export const withCode = (editor) => {
22
23
  }
23
24
  return renderElement(element);
24
25
  };
25
- editor.setFragmentData = unit => {
26
- setFragmentData(unit);
26
+ editor.setFragmentData = (data, originEvent) => {
27
27
  const { selection } = editor;
28
28
  const [start] = Editor.edges(editor, selection);
29
29
  if (TheQueries.isNodeTypeIn(editor, [ElementKinds.code], { at: start })) {
30
30
  const [codeNode] = TheQueries.getAboveByType(editor, ElementKinds.code);
31
- unit.setData('text/plain', codeNode.content.trim());
32
- return unit;
31
+ setClipboardDataByDom(editor, codeNode, data);
32
+ return;
33
33
  }
34
+ setFragmentData(data, originEvent);
34
35
  };
35
36
  return editor;
36
37
  };
@@ -63,4 +64,4 @@ export const createCodePlugin = createPluginFactory({
63
64
  allowParentTypes: [ElementKinds.tableCell]
64
65
  }
65
66
  });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVcsTUFBTSxPQUFPLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFtQixNQUFTLEVBQUssRUFBRTtJQUN2RCxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRXZFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUU7UUFDakMsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUU7UUFDdEMsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUU7UUFDeEMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQyxPQUFPLE9BQU8sQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDO0lBRUYsTUFBTSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsRUFBRTtRQUM1QixlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEQsSUFBSSxVQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDdEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRyxRQUF3QixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQztJQUNoRCxHQUFHLEVBQUUsVUFBVSxDQUFDLElBQUk7SUFDcEIsYUFBYSxFQUFFLFFBQVE7SUFDdkIsWUFBWSxFQUFFO1FBQ1Y7WUFDSSxHQUFHLEVBQUUsWUFBWSxDQUFDLElBQUk7WUFDdEIsSUFBSSxFQUFFLGFBQWE7WUFDbkIsSUFBSSxFQUFFLEtBQUs7WUFDWCxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3JFLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1NBQ25EO0tBQ0o7SUFDRCxTQUFTLEVBQUU7UUFDUDtZQUNJLEdBQUcsRUFBRSxZQUFZLENBQUMsSUFBSTtZQUN0QixJQUFJLEVBQUUscUJBQXFCLENBQUMsS0FBSztZQUNqQyxRQUFRLEVBQUUsd0JBQXdCO1lBQ2xDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDckUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEQsSUFBSSxFQUFFLEtBQUs7WUFDWCxXQUFXLEVBQUUsYUFBYTtZQUMxQixRQUFRLEVBQUUsZUFBZSxDQUFDLElBQUk7WUFDOUIsVUFBVSxFQUFFLE1BQU07U0FDckI7S0FDSjtJQUNELE9BQU8sRUFBRTtRQUNMLGdCQUFnQixFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztLQUM3QztDQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciwgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEVsZW1lbnRLaW5kcywgUGx1Z2luTWVudUljb25zLCBUaGVQbHVnaW5NZW51SXRlbVR5cGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgQ29kZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgUGx1Z2luS2V5cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZUNvZGUgfSBmcm9tICcuL2NvZGUuY29tcG9uZW50JztcbmltcG9ydCB7IENvZGVFZGl0b3IgfSBmcm9tICcuL2NvZGUuZWRpdG9yJztcblxuZXhwb3J0IGNvbnN0IHdpdGhDb2RlID0gPFQgZXh0ZW5kcyBFZGl0b3I+KGVkaXRvcjogVCk6IFQgPT4ge1xuICAgIGNvbnN0IHsgaXNWb2lkLCBpc0Jsb2NrQ2FyZCwgcmVuZGVyRWxlbWVudCwgc2V0RnJhZ21lbnREYXRhIH0gPSBlZGl0b3I7XG5cbiAgICBlZGl0b3IuaXNWb2lkID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudHlwZSA9PT0gRWxlbWVudEtpbmRzLmNvZGUgPyB0cnVlIDogaXNWb2lkKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBlZGl0b3IuaXNCbG9ja0NhcmQgPSAoZWxlbWVudDogRWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5jb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNCbG9ja0NhcmQoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGVkaXRvci5yZW5kZXJFbGVtZW50ID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gRWxlbWVudEtpbmRzLmNvZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBUaGVDb2RlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZW5kZXJFbGVtZW50KGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBlZGl0b3Iuc2V0RnJhZ21lbnREYXRhID0gdW5pdCA9PiB7XG4gICAgICAgIHNldEZyYWdtZW50RGF0YSh1bml0KTtcbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGVkaXRvcjtcbiAgICAgICAgY29uc3QgW3N0YXJ0XSA9IEVkaXRvci5lZGdlcyhlZGl0b3IsIHNlbGVjdGlvbik7XG4gICAgICAgIGlmIChUaGVRdWVyaWVzLmlzTm9kZVR5cGVJbihlZGl0b3IsIFtFbGVtZW50S2luZHMuY29kZV0sIHsgYXQ6IHN0YXJ0IH0pKSB7XG4gICAgICAgICAgICBjb25zdCBbY29kZU5vZGVdID0gVGhlUXVlcmllcy5nZXRBYm92ZUJ5VHlwZShlZGl0b3IsIEVsZW1lbnRLaW5kcy5jb2RlKTtcbiAgICAgICAgICAgIHVuaXQuc2V0RGF0YSgndGV4dC9wbGFpbicsIChjb2RlTm9kZSBhcyBDb2RlRWxlbWVudCkuY29udGVudC50cmltKCkpO1xuICAgICAgICAgICAgcmV0dXJuIHVuaXQ7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb2RlUGx1Z2luID0gY3JlYXRlUGx1Z2luRmFjdG9yeSh7XG4gICAga2V5OiBQbHVnaW5LZXlzLmNvZGUsXG4gICAgd2l0aE92ZXJyaWRlczogd2l0aENvZGUsXG4gICAgdG9vbGJhckl0ZW1zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogRWxlbWVudEtpbmRzLmNvZGUsXG4gICAgICAgICAgICBpY29uOiAnY29kZS1zeW50YXgnLFxuICAgICAgICAgICAgbmFtZTogJ+S7o+eggeWdlycsXG4gICAgICAgICAgICBhY3RpdmU6IGVkaXRvciA9PiBUaGVRdWVyaWVzLmlzQmxvY2tBY3RpdmUoZWRpdG9yLCBFbGVtZW50S2luZHMuY29kZSksXG4gICAgICAgICAgICBleGVjdXRlOiBlZGl0b3IgPT4gQ29kZUVkaXRvci5pbnNlcnRDb2RlKGVkaXRvcilcbiAgICAgICAgfVxuICAgIF0sXG4gICAgbWVudUl0ZW1zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogRWxlbWVudEtpbmRzLmNvZGUsXG4gICAgICAgICAgICB0eXBlOiBUaGVQbHVnaW5NZW51SXRlbVR5cGUuZ3JvdXAsXG4gICAgICAgICAgICBrZXl3b3JkczogJ2RtayxkYWltYWt1YWksY29kZSzku6PnoIHlnZcnLFxuICAgICAgICAgICAgYWN0aXZlOiBlZGl0b3IgPT4gVGhlUXVlcmllcy5pc0Jsb2NrQWN0aXZlKGVkaXRvciwgRWxlbWVudEtpbmRzLmNvZGUpLFxuICAgICAgICAgICAgZXhlY3V0ZTogZWRpdG9yID0+IENvZGVFZGl0b3IuaW5zZXJ0Q29kZShlZGl0b3IpLFxuICAgICAgICAgICAgbmFtZTogJ+S7o+eggeWdlycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ+aUr+aMgeaPkuWFpeivreazlemrmOS6rueahOS7o+eggScsXG4gICAgICAgICAgICBtZW51SWNvbjogUGx1Z2luTWVudUljb25zLmNvZGUsXG4gICAgICAgICAgICBkaXNwbGF5S2V5OiAnL2RtaydcbiAgICAgICAgfVxuICAgIF0sXG4gICAgb3B0aW9uczoge1xuICAgICAgICBhbGxvd1BhcmVudFR5cGVzOiBbRWxlbWVudEtpbmRzLnRhYmxlQ2VsbF1cbiAgICB9XG59KTtcbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVcsTUFBTSxPQUFPLENBQUM7QUFFeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBbUIsTUFBUyxFQUFLLEVBQUU7SUFDdkQsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUV2RSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RSxDQUFDLENBQUM7SUFFRixNQUFNLENBQUMsV0FBVyxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFO1FBQ3RDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUM7SUFFRixNQUFNLENBQUMsYUFBYSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFO1FBQ3hDLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckMsT0FBTyxPQUFPLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFrQixFQUFFLFdBQXlCLEVBQUUsRUFBRTtRQUN2RSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRCxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN0RSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hFLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxRQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3pELE9BQU87UUFDWCxDQUFDO1FBQ0QsZUFBZSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQztJQUNoRCxHQUFHLEVBQUUsVUFBVSxDQUFDLElBQUk7SUFDcEIsYUFBYSxFQUFFLFFBQVE7SUFDdkIsWUFBWSxFQUFFO1FBQ1Y7WUFDSSxHQUFHLEVBQUUsWUFBWSxDQUFDLElBQUk7WUFDdEIsSUFBSSxFQUFFLGFBQWE7WUFDbkIsSUFBSSxFQUFFLEtBQUs7WUFDWCxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3JFLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1NBQ25EO0tBQ0o7SUFDRCxTQUFTLEVBQUU7UUFDUDtZQUNJLEdBQUcsRUFBRSxZQUFZLENBQUMsSUFBSTtZQUN0QixJQUFJLEVBQUUscUJBQXFCLENBQUMsS0FBSztZQUNqQyxRQUFRLEVBQUUsd0JBQXdCO1lBQ2xDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDckUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEQsSUFBSSxFQUFFLEtBQUs7WUFDWCxXQUFXLEVBQUUsYUFBYTtZQUMxQixRQUFRLEVBQUUsZUFBZSxDQUFDLElBQUk7WUFDOUIsVUFBVSxFQUFFLE1BQU07U0FDckI7S0FDSjtJQUNELE9BQU8sRUFBRTtRQUNMLGdCQUFnQixFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztLQUM3QztDQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciwgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IE9yaWdpbkV2ZW50IH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMsIFBsdWdpbk1lbnVJY29ucywgVGhlUGx1Z2luTWVudUl0ZW1UeXBlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFBsdWdpbktleXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGNyZWF0ZVBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBzZXRDbGlwYm9hcmREYXRhQnlEb20gfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBUaGVDb2RlIH0gZnJvbSAnLi9jb2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2RlRWRpdG9yIH0gZnJvbSAnLi9jb2RlLmVkaXRvcic7XG5cbmV4cG9ydCBjb25zdCB3aXRoQ29kZSA9IDxUIGV4dGVuZHMgRWRpdG9yPihlZGl0b3I6IFQpOiBUID0+IHtcbiAgICBjb25zdCB7IGlzVm9pZCwgaXNCbG9ja0NhcmQsIHJlbmRlckVsZW1lbnQsIHNldEZyYWdtZW50RGF0YSB9ID0gZWRpdG9yO1xuXG4gICAgZWRpdG9yLmlzVm9pZCA9IChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5jb2RlID8gdHJ1ZSA6IGlzVm9pZChlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmlzQmxvY2tDYXJkID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC50eXBlID09PSBFbGVtZW50S2luZHMuY29kZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQmxvY2tDYXJkKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBlZGl0b3IucmVuZGVyRWxlbWVudCA9IChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5jb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gVGhlQ29kZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLnNldEZyYWdtZW50RGF0YSA9IChkYXRhOiBEYXRhVHJhbnNmZXIsIG9yaWdpbkV2ZW50PzogT3JpZ2luRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGVkaXRvcjtcbiAgICAgICAgY29uc3QgW3N0YXJ0XSA9IEVkaXRvci5lZGdlcyhlZGl0b3IsIHNlbGVjdGlvbik7XG4gICAgICAgIGlmIChUaGVRdWVyaWVzLmlzTm9kZVR5cGVJbihlZGl0b3IsIFtFbGVtZW50S2luZHMuY29kZV0sIHsgYXQ6IHN0YXJ0IH0pKSB7XG4gICAgICAgICAgICBjb25zdCBbY29kZU5vZGVdID0gVGhlUXVlcmllcy5nZXRBYm92ZUJ5VHlwZShlZGl0b3IsIEVsZW1lbnRLaW5kcy5jb2RlKTtcbiAgICAgICAgICAgIHNldENsaXBib2FyZERhdGFCeURvbShlZGl0b3IsIGNvZGVOb2RlIGFzIEVsZW1lbnQsIGRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldEZyYWdtZW50RGF0YShkYXRhLCBvcmlnaW5FdmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBlZGl0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29kZVBsdWdpbiA9IGNyZWF0ZVBsdWdpbkZhY3Rvcnkoe1xuICAgIGtleTogUGx1Z2luS2V5cy5jb2RlLFxuICAgIHdpdGhPdmVycmlkZXM6IHdpdGhDb2RlLFxuICAgIHRvb2xiYXJJdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IEVsZW1lbnRLaW5kcy5jb2RlLFxuICAgICAgICAgICAgaWNvbjogJ2NvZGUtc3ludGF4JyxcbiAgICAgICAgICAgIG5hbWU6ICfku6PnoIHlnZcnLFxuICAgICAgICAgICAgYWN0aXZlOiBlZGl0b3IgPT4gVGhlUXVlcmllcy5pc0Jsb2NrQWN0aXZlKGVkaXRvciwgRWxlbWVudEtpbmRzLmNvZGUpLFxuICAgICAgICAgICAgZXhlY3V0ZTogZWRpdG9yID0+IENvZGVFZGl0b3IuaW5zZXJ0Q29kZShlZGl0b3IpXG4gICAgICAgIH1cbiAgICBdLFxuICAgIG1lbnVJdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IEVsZW1lbnRLaW5kcy5jb2RlLFxuICAgICAgICAgICAgdHlwZTogVGhlUGx1Z2luTWVudUl0ZW1UeXBlLmdyb3VwLFxuICAgICAgICAgICAga2V5d29yZHM6ICdkbWssZGFpbWFrdWFpLGNvZGUs5Luj56CB5Z2XJyxcbiAgICAgICAgICAgIGFjdGl2ZTogZWRpdG9yID0+IFRoZVF1ZXJpZXMuaXNCbG9ja0FjdGl2ZShlZGl0b3IsIEVsZW1lbnRLaW5kcy5jb2RlKSxcbiAgICAgICAgICAgIGV4ZWN1dGU6IGVkaXRvciA9PiBDb2RlRWRpdG9yLmluc2VydENvZGUoZWRpdG9yKSxcbiAgICAgICAgICAgIG5hbWU6ICfku6PnoIHlnZcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICfmlK/mjIHmj5LlhaXor63ms5Xpq5jkuq7nmoTku6PnoIEnLFxuICAgICAgICAgICAgbWVudUljb246IFBsdWdpbk1lbnVJY29ucy5jb2RlLFxuICAgICAgICAgICAgZGlzcGxheUtleTogJy9kbWsnXG4gICAgICAgIH1cbiAgICBdLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgICAgYWxsb3dQYXJlbnRUeXBlczogW0VsZW1lbnRLaW5kcy50YWJsZUNlbGxdXG4gICAgfVxufSk7XG4iXX0=
@@ -3,16 +3,16 @@ import { createPluginFactory } from '../../core';
3
3
  import { extractFragment } from '../../utils/fragment';
4
4
  import { insertDataByInvalidType } from '../../utils';
5
5
  export const withInsertDataByInvalidType = (editor) => {
6
- const { insertData } = editor;
7
- editor.insertData = (data) => {
8
- const fragment = extractFragment(data);
6
+ const { insertFragmentData } = editor;
7
+ editor.insertFragmentData = async (data) => {
8
+ const fragment = await extractFragment(data);
9
9
  if (fragment) {
10
10
  const isContinue = insertDataByInvalidType(editor, fragment);
11
11
  if (!isContinue) {
12
- return;
12
+ return true;
13
13
  }
14
14
  }
15
- insertData(data);
15
+ return insertFragmentData(data);
16
16
  };
17
17
  return editor;
18
18
  };
@@ -20,4 +20,4 @@ export const createInsertDataByInvalidTypePlugin = createPluginFactory({
20
20
  key: PluginKeys.insertDataByInvalidType,
21
21
  withOverrides: withInsertDataByInvalidType
22
22
  });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LWRhdGEtYnktaW52YWxpZC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29tbW9uL2luc2VydC1kYXRhLWJ5LWludmFsaWQtdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBbUIsTUFBUyxFQUFLLEVBQUU7SUFDMUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUU5QixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBa0IsRUFBRSxFQUFFO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsTUFBTSxVQUFVLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDZCxPQUFPO1lBQ1gsQ0FBQztRQUNMLENBQUM7UUFDRCxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsbUJBQW1CLENBQUM7SUFDbkUsR0FBRyxFQUFFLFVBQVUsQ0FBQyx1QkFBdUI7SUFDdkMsYUFBYSxFQUFFLDJCQUEyQjtDQUM3QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjcmVhdGVQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBleHRyYWN0RnJhZ21lbnQgfSBmcm9tICcuLi8uLi91dGlscy9mcmFnbWVudCc7XG5pbXBvcnQgeyBpbnNlcnREYXRhQnlJbnZhbGlkVHlwZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IHdpdGhJbnNlcnREYXRhQnlJbnZhbGlkVHlwZSA9IDxUIGV4dGVuZHMgRWRpdG9yPihlZGl0b3I6IFQpOiBUID0+IHtcbiAgICBjb25zdCB7IGluc2VydERhdGEgfSA9IGVkaXRvcjtcblxuICAgIGVkaXRvci5pbnNlcnREYXRhID0gKGRhdGE6IERhdGFUcmFuc2ZlcikgPT4ge1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGV4dHJhY3RGcmFnbWVudChkYXRhKTtcbiAgICAgICAgaWYgKGZyYWdtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBpc0NvbnRpbnVlID0gaW5zZXJ0RGF0YUJ5SW52YWxpZFR5cGUoZWRpdG9yLCBmcmFnbWVudCk7XG4gICAgICAgICAgICBpZiAoIWlzQ29udGludWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0RGF0YShkYXRhKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVJbnNlcnREYXRhQnlJbnZhbGlkVHlwZVBsdWdpbiA9IGNyZWF0ZVBsdWdpbkZhY3Rvcnkoe1xuICAgIGtleTogUGx1Z2luS2V5cy5pbnNlcnREYXRhQnlJbnZhbGlkVHlwZSxcbiAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoSW5zZXJ0RGF0YUJ5SW52YWxpZFR5cGVcbn0pO1xuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LWRhdGEtYnktaW52YWxpZC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29tbW9uL2luc2VydC1kYXRhLWJ5LWludmFsaWQtdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBbUIsTUFBUyxFQUFLLEVBQUU7SUFDMUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRXRDLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLEVBQUUsSUFBa0IsRUFBRSxFQUFFO1FBQ3JELE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDWCxNQUFNLFVBQVUsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNkLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyxtQkFBbUIsQ0FBQztJQUNuRSxHQUFHLEVBQUUsVUFBVSxDQUFDLHVCQUF1QjtJQUN2QyxhQUFhLEVBQUUsMkJBQTJCO0NBQzdDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IFBsdWdpbktleXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGNyZWF0ZVBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IGV4dHJhY3RGcmFnbWVudCB9IGZyb20gJy4uLy4uL3V0aWxzL2ZyYWdtZW50JztcbmltcG9ydCB7IGluc2VydERhdGFCeUludmFsaWRUeXBlIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5leHBvcnQgY29uc3Qgd2l0aEluc2VydERhdGFCeUludmFsaWRUeXBlID0gPFQgZXh0ZW5kcyBFZGl0b3I+KGVkaXRvcjogVCk6IFQgPT4ge1xuICAgIGNvbnN0IHsgaW5zZXJ0RnJhZ21lbnREYXRhIH0gPSBlZGl0b3I7XG5cbiAgICBlZGl0b3IuaW5zZXJ0RnJhZ21lbnREYXRhID0gYXN5bmMgKGRhdGE6IERhdGFUcmFuc2ZlcikgPT4ge1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGF3YWl0IGV4dHJhY3RGcmFnbWVudChkYXRhKTtcbiAgICAgICAgaWYgKGZyYWdtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBpc0NvbnRpbnVlID0gaW5zZXJ0RGF0YUJ5SW52YWxpZFR5cGUoZWRpdG9yLCBmcmFnbWVudCk7XG4gICAgICAgICAgICBpZiAoIWlzQ29udGludWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5zZXJ0RnJhZ21lbnREYXRhKGRhdGEpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZWRpdG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUluc2VydERhdGFCeUludmFsaWRUeXBlUGx1Z2luID0gY3JlYXRlUGx1Z2luRmFjdG9yeSh7XG4gICAga2V5OiBQbHVnaW5LZXlzLmluc2VydERhdGFCeUludmFsaWRUeXBlLFxuICAgIHdpdGhPdmVycmlkZXM6IHdpdGhJbnNlcnREYXRhQnlJbnZhbGlkVHlwZVxufSk7XG4iXX0=
@@ -1,30 +1,32 @@
1
1
  import { TheiaConverter } from '@atinc/selene';
2
+ import isUrl from 'is-url';
2
3
  import { Element, Transforms } from 'slate';
3
- import { CLIPBOARD_FORMAT_KEY, ElementKinds } from '../../constants';
4
- import { createPluginFactory } from '../../core';
4
+ import { getClipboardData } from 'slate-angular';
5
+ import { ElementKinds } from '../../constants';
5
6
  import { PluginKeys } from '../../interfaces';
7
+ import { createPluginFactory } from '../../core';
6
8
  import { isLogicEmptyParagraphElement } from '../../queries/is-empty-paragraph';
7
- import { insertDataByInvalidType } from '../../utils';
8
- import { filterTextFormat, recursionNodes } from '../../utils/fragment';
9
+ import { insertDataByInvalidType, filterTextFormat, recursionNodes } from '../../utils';
9
10
  import { ImageEditor } from '../image/image.editor';
10
11
  export const withDeserializeHTML = (editor) => {
11
- const { insertData } = editor;
12
- editor.insertData = (data) => {
13
- const html = data.getData(`text/html`);
14
- const slateFragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);
15
- if (html && !slateFragment) {
16
- const htmlDom = new DOMParser().parseFromString(html, 'text/html');
12
+ const { insertFragmentData } = editor;
13
+ editor.insertFragmentData = async (data) => {
14
+ const clipboardData = await getClipboardData(data);
15
+ if (!clipboardData?.elements && clipboardData?.html) {
16
+ const htmlDom = new DOMParser().parseFromString(clipboardData?.html, 'text/html');
17
17
  const fragment = TheiaConverter.convertToTheia(Array.from(htmlDom.body.children));
18
+ // 识别粘贴的 HTML 只有纯链接, 跳至 link
19
+ if (fragment.length === 1 && fragment.every(block => isUrl(block?.children?.[0]?.['text']))) {
20
+ return insertFragmentData(data);
21
+ }
18
22
  // 无法识别HTML内容时后退一下:识别纯文本
19
23
  if (fragment.every(block => block.type === ElementKinds.paragraph && isLogicEmptyParagraphElement(editor, block))) {
20
- insertData(data);
21
- return;
24
+ return insertFragmentData(data);
22
25
  }
23
26
  // 识出纯图片并且粘贴板中存在文件则不进行处理, hook 直接右键复制图片的场景,流转到上传图片流程
24
27
  // 后续需要做识别html图片后自动上传处理
25
28
  if (fragment.length === 1 && fragment[0].type === ElementKinds.image && data.files.length > 0) {
26
- insertData(data);
27
- return;
29
+ return insertFragmentData(data);
28
30
  }
29
31
  // 过滤 text 节点的 color/background-color 属性
30
32
  fragment.forEach(node => filterTextFormat(node));
@@ -43,12 +45,12 @@ export const withDeserializeHTML = (editor) => {
43
45
  });
44
46
  const isContinue = insertDataByInvalidType(editor, fragment);
45
47
  if (!isContinue) {
46
- return;
48
+ return true;
47
49
  }
48
50
  Transforms.insertFragment(editor, fragment);
49
- return;
51
+ return true;
50
52
  }
51
- insertData(data);
53
+ return insertFragmentData(data);
52
54
  };
53
55
  return editor;
54
56
  };
@@ -56,4 +58,4 @@ export const createDeserializeHTMLPlugin = createPluginFactory({
56
58
  key: PluginKeys.deserializeHtml,
57
59
  withOverrides: withDeserializeHTML
58
60
  });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzZXJpYWxpemUtaHRtbC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9kZXNlcmlhbGl6ZS9kZXNlcmlhbGl6ZS1odG1sLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBVSxPQUFPLEVBQVEsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQW1CLE1BQVMsRUFBSyxFQUFFO0lBQ2xFLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFOUIsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQWtCLEVBQUUsRUFBRTtRQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFFMUUsSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDbkUsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQWMsQ0FBQztZQUMvRix3QkFBd0I7WUFDeEIsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsU0FBUyxJQUFJLDRCQUE0QixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hILFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakIsT0FBTztZQUNYLENBQUM7WUFFRCxvREFBb0Q7WUFDcEQsdUJBQXVCO1lBQ3ZCLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM1RixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pCLE9BQU87WUFDWCxDQUFDO1lBRUQsd0NBQXdDO1lBQ3hDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRWpELGVBQWU7WUFDZixjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBVSxFQUFFLEVBQUU7Z0JBQ3BDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsS0FBSyxDQUFDO2dCQUU1RSxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNWLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO29CQUN2RCxJQUFJLFFBQVEsRUFBRSxDQUFDO3dCQUNYLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3ZELENBQUM7eUJBQU0sQ0FBQzt3QkFDSixXQUFXLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUN6RCxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sVUFBVSxHQUFHLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2QsT0FBTztZQUNYLENBQUM7WUFDRCxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM1QyxPQUFPO1FBQ1gsQ0FBQztRQUVELFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQixDQUFDLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxtQkFBbUIsQ0FBQztJQUMzRCxHQUFHLEVBQUUsVUFBVSxDQUFDLGVBQWU7SUFDL0IsYUFBYSxFQUFFLG1CQUFtQjtDQUNyQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaGVpYUNvbnZlcnRlciB9IGZyb20gJ0BhdGluYy9zZWxlbmUnO1xuaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50LCBOb2RlLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQ0xJUEJPQVJEX0ZPUk1BVF9LRVksIEVsZW1lbnRLaW5kcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjcmVhdGVQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBpc0xvZ2ljRW1wdHlQYXJhZ3JhcGhFbGVtZW50IH0gZnJvbSAnLi4vLi4vcXVlcmllcy9pcy1lbXB0eS1wYXJhZ3JhcGgnO1xuaW1wb3J0IHsgaW5zZXJ0RGF0YUJ5SW52YWxpZFR5cGUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBmaWx0ZXJUZXh0Rm9ybWF0LCByZWN1cnNpb25Ob2RlcyB9IGZyb20gJy4uLy4uL3V0aWxzL2ZyYWdtZW50JztcbmltcG9ydCB7IEltYWdlRWRpdG9yIH0gZnJvbSAnLi4vaW1hZ2UvaW1hZ2UuZWRpdG9yJztcblxuZXhwb3J0IGNvbnN0IHdpdGhEZXNlcmlhbGl6ZUhUTUwgPSA8VCBleHRlbmRzIEVkaXRvcj4oZWRpdG9yOiBUKTogVCA9PiB7XG4gICAgY29uc3QgeyBpbnNlcnREYXRhIH0gPSBlZGl0b3I7XG5cbiAgICBlZGl0b3IuaW5zZXJ0RGF0YSA9IChkYXRhOiBEYXRhVHJhbnNmZXIpID0+IHtcbiAgICAgICAgY29uc3QgaHRtbCA9IGRhdGEuZ2V0RGF0YShgdGV4dC9odG1sYCk7XG4gICAgICAgIGNvbnN0IHNsYXRlRnJhZ21lbnQgPSBkYXRhLmdldERhdGEoYGFwcGxpY2F0aW9uLyR7Q0xJUEJPQVJEX0ZPUk1BVF9LRVl9YCk7XG5cbiAgICAgICAgaWYgKGh0bWwgJiYgIXNsYXRlRnJhZ21lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGh0bWxEb20gPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGh0bWwsICd0ZXh0L2h0bWwnKTtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50ID0gVGhlaWFDb252ZXJ0ZXIuY29udmVydFRvVGhlaWEoQXJyYXkuZnJvbShodG1sRG9tLmJvZHkuY2hpbGRyZW4pKSBhcyBFbGVtZW50W107XG4gICAgICAgICAgICAvLyDml6Dms5Xor4bliKtIVE1M5YaF5a655pe25ZCO6YCA5LiA5LiL77ya6K+G5Yir57qv5paH5pysXG4gICAgICAgICAgICBpZiAoZnJhZ21lbnQuZXZlcnkoYmxvY2sgPT4gYmxvY2sudHlwZSA9PT0gRWxlbWVudEtpbmRzLnBhcmFncmFwaCAmJiBpc0xvZ2ljRW1wdHlQYXJhZ3JhcGhFbGVtZW50KGVkaXRvciwgYmxvY2spKSkge1xuICAgICAgICAgICAgICAgIGluc2VydERhdGEoZGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyDor4blh7rnuq/lm77niYflubbkuJTnspjotLTmnb/kuK3lrZjlnKjmlofku7bliJnkuI3ov5vooYzlpITnkIYsIGhvb2sg55u05o6l5Y+z6ZSu5aSN5Yi25Zu+54mH55qE5Zy65pmv77yM5rWB6L2s5Yiw5LiK5Lyg5Zu+54mH5rWB56iLXG4gICAgICAgICAgICAvLyDlkI7nu63pnIDopoHlgZror4bliKtodG1s5Zu+54mH5ZCO6Ieq5Yqo5LiK5Lyg5aSE55CGXG4gICAgICAgICAgICBpZiAoZnJhZ21lbnQubGVuZ3RoID09PSAxICYmIGZyYWdtZW50WzBdLnR5cGUgPT09IEVsZW1lbnRLaW5kcy5pbWFnZSAmJiBkYXRhLmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpbnNlcnREYXRhKGRhdGEpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8g6L+H5rukIHRleHQg6IqC54K555qEIGNvbG9yL2JhY2tncm91bmQtY29sb3Ig5bGe5oCnXG4gICAgICAgICAgICBmcmFnbWVudC5mb3JFYWNoKG5vZGUgPT4gZmlsdGVyVGV4dEZvcm1hdChub2RlKSk7XG5cbiAgICAgICAgICAgIC8vIGJhc2UgNjQg5Zu+54mH5aSE55CGXG4gICAgICAgICAgICByZWN1cnNpb25Ob2RlcyhmcmFnbWVudCwgKG5vZGU6IE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0ltYWdlID0gRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMuaW1hZ2U7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNJbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Jhc2U2NCA9IEltYWdlRWRpdG9yLmlzQmFzZTY0KG5vZGU/Lm9yaWdpblVybCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0Jhc2U2NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VFZGl0b3IuaGFuZGxlQmFzZTY0SW1hZ2VFbGVtZW50KGVkaXRvciwgbm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBJbWFnZUVkaXRvci5oYW5kbGVFeHRlcm5hbEltYWdlRWxlbWVudChlZGl0b3IsIG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBpc0NvbnRpbnVlID0gaW5zZXJ0RGF0YUJ5SW52YWxpZFR5cGUoZWRpdG9yLCBmcmFnbWVudCk7XG4gICAgICAgICAgICBpZiAoIWlzQ29udGludWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydEZyYWdtZW50KGVkaXRvciwgZnJhZ21lbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5zZXJ0RGF0YShkYXRhKTtcbiAgICB9O1xuICAgIHJldHVybiBlZGl0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVzZXJpYWxpemVIVE1MUGx1Z2luID0gY3JlYXRlUGx1Z2luRmFjdG9yeSh7XG4gICAga2V5OiBQbHVnaW5LZXlzLmRlc2VyaWFsaXplSHRtbCxcbiAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoRGVzZXJpYWxpemVIVE1MXG59KTtcbiJdfQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzZXJpYWxpemUtaHRtbC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9kZXNlcmlhbGl6ZS9kZXNlcmlhbGl6ZS1odG1sLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sS0FBSyxNQUFNLFFBQVEsQ0FBQztBQUMzQixPQUFPLEVBQVUsT0FBTyxFQUFRLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBbUIsTUFBUyxFQUFLLEVBQUU7SUFDbEUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRXRDLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLEVBQUUsSUFBa0IsRUFBRSxFQUFFO1FBQ3JELE1BQU0sYUFBYSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLElBQUksYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2xELE1BQU0s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cnRlciB9IGZyb20gJ0BhdGluYy9zZWxlbmUnO1xuaW1wb3J0IGlzVXJsIGZyb20gJ2lzLXVybCc7XG5pbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQsIE5vZGUsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBnZXRDbGlwYm9hcmREYXRhIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGx1Z2luS2V5cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgaXNMb2dpY0VtcHR5UGFyYWdyYXBoRWxlbWVudCB9IGZyb20gJy4uLy4uL3F1ZXJpZXMvaXMtZW1wdHktcGFyYWdyYXBoJztcbmltcG9ydCB7IGluc2VydERhdGFCeUludmFsaWRUeXBlLCBmaWx0ZXJUZXh0Rm9ybWF0LCByZWN1cnNpb25Ob2RlcyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEltYWdlRWRpdG9yIH0gZnJvbSAnLi4vaW1hZ2UvaW1hZ2UuZWRpdG9yJztcblxuZXhwb3J0IGNvbnN0IHdpdGhEZXNlcmlhbGl6ZUhUTUwgPSA8VCBleHRlbmRzIEVkaXRvcj4oZWRpdG9yOiBUKTogVCA9PiB7XG4gICAgY29uc3QgeyBpbnNlcnRGcmFnbWVudERhdGEgfSA9IGVkaXRvcjtcblxuICAgIGVkaXRvci5pbnNlcnRGcmFnbWVudERhdGEgPSBhc3luYyAoZGF0YTogRGF0YVRyYW5zZmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsaXBib2FyZERhdGEgPSBhd2FpdCBnZXRDbGlwYm9hcmREYXRhKGRhdGEpO1xuXG4gICAgICAgIGlmICghY2xpcGJvYXJkRGF0YT8uZWxlbWVudHMgJiYgY2xpcGJvYXJkRGF0YT8uaHRtbCkge1xuICAgICAgICAgICAgY29uc3QgaHRtbERvbSA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoY2xpcGJvYXJkRGF0YT8uaHRtbCwgJ3RleHQvaHRtbCcpO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBUaGVpYUNvbnZlcnRlci5jb252ZXJ0VG9UaGVpYShBcnJheS5mcm9tKGh0bWxEb20uYm9keS5jaGlsZHJlbikpIGFzIEVsZW1lbnRbXTtcblxuICAgICAgICAgICAgLy8g6K+G5Yir57KY6LS055qEIEhUTUwg5Y+q5pyJ57qv6ZO+5o6lLCDot7Poh7MgbGlua1xuICAgICAgICAgICAgaWYgKGZyYWdtZW50Lmxlbmd0aCA9PT0gMSAmJiBmcmFnbWVudC5ldmVyeShibG9jayA9PiBpc1VybChibG9jaz8uY2hpbGRyZW4/LlswXT8uWyd0ZXh0J10pKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbnNlcnRGcmFnbWVudERhdGEoZGF0YSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOaXoOazleivhuWIq0hUTUzlhoXlrrnml7blkI7pgIDkuIDkuIvvvJror4bliKvnuq/mlofmnKxcbiAgICAgICAgICAgIGlmIChmcmFnbWVudC5ldmVyeShibG9jayA9PiBibG9jay50eXBlID09PSBFbGVtZW50S2luZHMucGFyYWdyYXBoICYmIGlzTG9naWNFbXB0eVBhcmFncmFwaEVsZW1lbnQoZWRpdG9yLCBibG9jaykpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluc2VydEZyYWdtZW50RGF0YShkYXRhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8g6K+G5Ye657qv5Zu+54mH5bm25LiU57KY6LS05p2/5Lit5a2Y5Zyo5paH5Lu25YiZ5LiN6L+b6KGM5aSE55CGLCBob29rIOebtOaOpeWPs+mUruWkjeWItuWbvueJh+eahOWcuuaZr++8jOa1gei9rOWIsOS4iuS8oOWbvueJh+a1geeoi1xuICAgICAgICAgICAgLy8g5ZCO57ut6ZyA6KaB5YGa6K+G5YiraHRtbOWbvueJh+WQjuiHquWKqOS4iuS8oOWkhOeQhlxuICAgICAgICAgICAgaWYgKGZyYWdtZW50Lmxlbmd0aCA9PT0gMSAmJiBmcmFnbWVudFswXS50eXBlID09PSBFbGVtZW50S2luZHMuaW1hZ2UgJiYgZGF0YS5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluc2VydEZyYWdtZW50RGF0YShkYXRhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8g6L+H5rukIHRleHQg6IqC54K555qEIGNvbG9yL2JhY2tncm91bmQtY29sb3Ig5bGe5oCnXG4gICAgICAgICAgICBmcmFnbWVudC5mb3JFYWNoKG5vZGUgPT4gZmlsdGVyVGV4dEZvcm1hdChub2RlKSk7XG5cbiAgICAgICAgICAgIC8vIGJhc2UgNjQg5Zu+54mH5aSE55CGXG4gICAgICAgICAgICByZWN1cnNpb25Ob2RlcyhmcmFnbWVudCwgKG5vZGU6IE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0ltYWdlID0gRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMuaW1hZ2U7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNJbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Jhc2U2NCA9IEltYWdlRWRpdG9yLmlzQmFzZTY0KG5vZGU/Lm9yaWdpblVybCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0Jhc2U2NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VFZGl0b3IuaGFuZGxlQmFzZTY0SW1hZ2VFbGVtZW50KGVkaXRvciwgbm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBJbWFnZUVkaXRvci5oYW5kbGVFeHRlcm5hbEltYWdlRWxlbWVudChlZGl0b3IsIG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBpc0NvbnRpbnVlID0gaW5zZXJ0RGF0YUJ5SW52YWxpZFR5cGUoZWRpdG9yLCBmcmFnbWVudCk7XG4gICAgICAgICAgICBpZiAoIWlzQ29udGludWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0RnJhZ21lbnQoZWRpdG9yLCBmcmFnbWVudCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbnNlcnRGcmFnbWVudERhdGEoZGF0YSk7XG4gICAgfTtcbiAgICByZXR1cm4gZWRpdG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZURlc2VyaWFsaXplSFRNTFBsdWdpbiA9IGNyZWF0ZVBsdWdpbkZhY3Rvcnkoe1xuICAgIGtleTogUGx1Z2luS2V5cy5kZXNlcmlhbGl6ZUh0bWwsXG4gICAgd2l0aE92ZXJyaWRlczogd2l0aERlc2VyaWFsaXplSFRNTFxufSk7XG4iXX0=
@@ -4,9 +4,9 @@ import { TheiaConverter } from '@atinc/selene';
4
4
  import { marked } from 'marked';
5
5
  import { ThyPopover } from 'ngx-tethys/popover';
6
6
  import { Element, Text, Transforms } from 'slate';
7
- import { AngularEditor } from 'slate-angular';
7
+ import { AngularEditor, getClipboardData } from 'slate-angular';
8
8
  import { TheConversionHint } from '../../components';
9
- import { CLIPBOARD_FORMAT_KEY, ElementKinds } from '../../constants';
9
+ import { ElementKinds } from '../../constants';
10
10
  import { createPluginFactory } from '../../core';
11
11
  import { PluginKeys } from '../../interfaces';
12
12
  import { THE_EDITOR_CONVERSION_HINT_REF, getToolbarClass, recursionNodes } from '../../utils';
@@ -18,20 +18,20 @@ export const closeConversionHint = (editor) => {
18
18
  }
19
19
  };
20
20
  export const withDeserializeMd = (editor) => {
21
- const { insertData, onKeydown } = editor;
21
+ const { insertFragmentData, onKeydown } = editor;
22
22
  editor.onKeydown = (event) => {
23
23
  closeConversionHint(editor);
24
24
  onKeydown(event);
25
25
  };
26
- editor.insertData = (data) => {
26
+ editor.insertFragmentData = async (data) => {
27
27
  const popover = editor.injector.get(ThyPopover);
28
28
  const viewContainerRef = editor.injector.get(ViewContainerRef);
29
29
  const cdr = editor.injector.get(ChangeDetectorRef);
30
- const plainFragment = data.getData('text/plain');
31
- const slateFragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);
32
30
  const oldRange = editor.selection;
31
+ const clipboardData = await getClipboardData(data);
32
+ const plainFragment = clipboardData?.text;
33
33
  closeConversionHint(editor);
34
- if (plainFragment && isMarkdownSyntax(plainFragment) && !slateFragment) {
34
+ if (plainFragment && isMarkdownSyntax(plainFragment) && !clipboardData?.elements) {
35
35
  setTimeout(() => {
36
36
  const overlay = editor.injector.get(Overlay);
37
37
  const bodyElement = document.body;
@@ -68,7 +68,7 @@ export const withDeserializeMd = (editor) => {
68
68
  Transforms.insertFragment(editor, fragment);
69
69
  AngularEditor.focus(editor);
70
70
  });
71
- return;
71
+ return true;
72
72
  }
73
73
  else {
74
74
  closeConversionHint(editor);
@@ -94,7 +94,7 @@ export const withDeserializeMd = (editor) => {
94
94
  cdr.markForCheck();
95
95
  });
96
96
  }
97
- insertData(data);
97
+ return insertFragmentData(data);
98
98
  };
99
99
  return editor;
100
100
  };
@@ -139,4 +139,4 @@ const isMarkdownSyntax = content => {
139
139
  ];
140
140
  return regexps.some(regexp => regexp.test(content));
141
141
  };
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzZXJpYWxpemUtbWQucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvZGVzZXJpYWxpemUvZGVzZXJpYWxpemUtbWQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQVUsT0FBTyxFQUFRLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtJQUNsRCxNQUFNLE9BQU8sR0FBRyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7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TSxTQUFTLEdBQUcsMkJBQTJCLENBQUM7SUFDOUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO0lBQ3BDLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUM7SUFDN0MsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUM1QyxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztJQUMzQyxNQUFNLG1CQUFtQixHQUFHLHVCQUF1QixDQUFDO0lBQ3BELE1BQU0sa0JBQWtCLEdBQUcsc0JBQXNCLENBQUM7SUFDbEQsTUFBTSxnQkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQztJQUNuRCxNQUFNLGNBQWMsR0FBRyxtRUFBbUUsQ0FBQztJQUMzRixjQUFjO0lBQ2QsTUFBTSxLQUFLLEdBQ1AsK0lBQStJLENBQUM7SUFDcEosTUFBTSxPQUFPLEdBQUc7UUFDWixlQUFlO1FBQ2YsVUFBVTtRQUNWLFNBQVM7UUFDVCxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsbUJBQW1CO1FBQ25CLGtCQUFrQjtRQUNsQixnQkFBZ0I7UUFDaEIsS0FBSztLQUNSLENBQUM7SUFDRixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVpYUNvbnZlcnRlciB9IGZyb20gJ0BhdGluYy9zZWxlbmUnO1xuaW1wb3J0IHsgbWFya2VkIH0gZnJvbSAnbWFya2VkJztcbmltcG9ydCB7IFRoeVBvcG92ZXIgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50LCBOb2RlLCBUZXh0LCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgVGhlQ29udmVyc2lvbkhpbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IENMSVBCT0FSRF9GT1JNQVRfS0VZLCBFbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUGx1Z2luS2V5cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVEhFX0VESVRPUl9DT05WRVJTSU9OX0hJTlRfUkVGLCBnZXRUb29sYmFyQ2xhc3MsIHJlY3Vyc2lvbk5vZGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgSW1hZ2VFZGl0b3IgfSBmcm9tICcuLi9pbWFnZS9pbWFnZS5lZGl0b3InO1xuXG5leHBvcnQgY29uc3QgY2xvc2VDb252ZXJzaW9uSGludCA9IChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgIGNvbnN0IGhpbnRSZWYgPSBUSEVfRURJVE9SX0NPTlZFUlNJT05fSElOVF9SRUYuZ2V0KGVkaXRvcik7XG4gICAgaWYgKGhpbnRSZWYpIHtcbiAgICAgICAgaGludFJlZi5jbG9zZSgpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3aXRoRGVzZXJpYWxpemVNZCA9IDxUIGV4dGVuZHMgRWRpdG9yPihlZGl0b3I6IFQpOiBUID0+IHtcbiAgICBjb25zdCB7IGluc2VydERhdGEsIG9uS2V5ZG93biB9ID0gZWRpdG9yO1xuXG4gICAgZWRpdG9yLm9uS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjbG9zZUNvbnZlcnNpb25IaW50KGVkaXRvcik7XG4gICAgICAgIG9uS2V5ZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGVkaXRvci5pbnNlcnREYXRhID0gKGRhdGE6IERhdGFUcmFuc2ZlcikgPT4ge1xuICAgICAgICBjb25zdCBwb3BvdmVyID0gZWRpdG9yLmluamVjdG9yLmdldChUaHlQb3BvdmVyKTtcbiAgICAgICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IGVkaXRvci5pbmplY3Rvci5nZXQoVmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIGNvbnN0IGNkciA9IGVkaXRvci5pbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgICAgIGNvbnN0IHBsYWluRnJhZ21lbnQgPSBkYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKTtcbiAgICAgICAgY29uc3Qgc2xhdGVGcmFnbWVudCA9IGRhdGEuZ2V0RGF0YShgYXBwbGljYXRpb24vJHtDTElQQk9BUkRfRk9STUFUX0tFWX1gKTtcbiAgICAgICAgY29uc3Qgb2xkUmFuZ2UgPSBlZGl0b3Iuc2VsZWN0aW9uO1xuICAgICAgICBjbG9zZUNvbnZlcnNpb25IaW50KGVkaXRvcik7XG5cbiAgICAgICAgaWYgKHBsYWluRnJhZ21lbnQgJiYgaXNNYXJrZG93blN5bnRheChwbGFpbkZyYWdtZW50KSAmJiAhc2xhdGVGcmFnbWVudCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmxheSA9IGVkaXRvci5pbmplY3Rvci5nZXQoT3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2xiYXJDbGFzcyA9IGdldFRvb2xiYXJDbGFzcyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2xiYXJFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7dG9vbGJhckNsYXNzfWApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbiA9IHRvb2xiYXJFbGVtZW50ID8gdG9vbGJhckVsZW1lbnQgOiBib2R5RWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZW1lbnQgPSB0b29sYmFyRWxlbWVudCA/ICd0b3AnIDogJ3RvcFJpZ2h0JztcblxuICAgICAgICAgICAgICAgIGNvbnN0IGhpbnRQb3BvdmVyUmVmID0gcG9wb3Zlci5vcGVuKFRoZUNvbnZlcnNpb25IaW50LCB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udmVyc2lvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGh0bWwgPSBtYXJrZWQocGxhaW5GcmFnbWVudC5yZXBsYWNlKC9cXG5gYGAvZywgJ1xcblxcbmBgYCcpLCB7IGdmbTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaHRtbERvbSA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmcmFnbWVudCA9IFRoZWlhQ29udmVydGVyLmNvbnZlcnRUb1RoZWlhKEFycmF5LmZyb20oaHRtbERvbS5ib2R5LmNoaWxkcmVuKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1VuZm9ybWF0dGVkKGZyYWdtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VDb252ZXJzaW9uSGludChlZGl0b3IpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IudW5kbygpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIG9sZFJhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYXNlIDY0IOWbvueJh+WkhOeQhlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Vyc2lvbk5vZGVzKGZyYWdtZW50LCAobm9kZTogTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0ltYWdlID0gRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMuaW1hZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0ltYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Jhc2U2NCA9IEltYWdlRWRpdG9yLmlzQmFzZTY0KG5vZGU/Lm9yaWdpblVybCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNCYXNlNjQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZUVkaXRvci5oYW5kbGVCYXNlNjRJbWFnZUVsZW1lbnQoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VFZGl0b3IuaGFuZGxlRXh0ZXJuYWxJbWFnZUVsZW1lbnQoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0RnJhZ21lbnQoZWRpdG9yLCBmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5mb2N1cyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUNvbnZlcnNpb25IaW50KGVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUNvbnZlcnNpb25IaW50KGVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAtMTAwLFxuICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcENsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBvdXRzaWRlQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiBvdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgVEhFX0VESVRPUl9DT05WRVJTSU9OX0hJTlRfUkVGLnNldChlZGl0b3IsIGhpbnRQb3BvdmVyUmVmKTtcbiAgICAgICAgICAgICAgICBjZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluc2VydERhdGEoZGF0YSk7XG4gICAgfTtcbiAgICByZXR1cm4gZWRpdG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZURlc2VyaWFsaXplTWRQbHVnaW4gPSBjcmVhdGVQbHVnaW5GYWN0b3J5KHtcbiAgICBrZXk6IFBsdWdpbktleXMuZGVzZXJpYWxpemVNZCxcbiAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoRGVzZXJpYWxpemVNZFxufSk7XG5cbmNvbnN0IGlzVW5mb3JtYXR0ZWQgPSAoZWxlbWVudHM6IEVsZW1lbnRbXSkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50cy5ldmVyeShcbiAgICAgICAgZWxlbWVudCA9PlxuICAgICAgICAgICAgZWxlbWVudC50eXBlID09PSBFbGVtZW50S2luZHMuZGVmYXVsdCAmJlxuICAgICAgICAgICAgZWxlbWVudC5jaGlsZHJlbi5ldmVyeSgobm9kZTogTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBUZXh0LmlzVGV4dChub2RlKSAmJiBPYmplY3Qua2V5cyhub2RlKS5sZW5ndGggPT09IDE7XG4gICAgICAgICAgICB9KVxuICAgICk7XG59O1xuXG5jb25zdCBpc01hcmtkb3duU3ludGF4ID0gY29udGVudCA9PiB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0NoYWxhcmFuZ2Vsby9wYXJzZS1tZC1qcy9ibG9iL21hc3Rlci9wYXJzZW1kLmpzXG4gICAgY29uc3QgY29kZUJsb2NrUmVnZXggPSAvKChcXG5cXHQpKC4qKSkrL2c7XG4gICAgY29uc3QgaW5saW5lQ29kZVJlZ2V4ID0gLyhgKSguKj8pXFwxL2c7XG4gICAgY29uc3QgaW1hZ2VSZWdleCA9IC8hXFxbKFteXFxbXSspXFxdXFwoKFteXFwpXSspXFwpL2c7XG4gICAgY29uc3QgbGlua1JlZ2V4ID0gL1xcWyhbXlxcW10rKVxcXVxcKChbXlxcKV0rKVxcKS9nO1xuICAgIGNvbnN0IGhlYWRpbmdSZWdleCA9IC8oIytcXHMqKSguKikvZztcbiAgICBjb25zdCBib2xkSXRhbGljc1JlZ2V4ID0gLyhcXCp7MSwyfSkoXFxTKylcXDEvZztcbiAgICBjb25zdCBzdHJpa2V0aHJvdWdoUmVnZXggPSAvKFxcflxcfikoLio/KVxcMS9nO1xuICAgIGNvbnN0IGJsb2NrcXVvdGVSZWdleCA9IC9cXG4oJmd0O3xcXD4pKC4qKS9nO1xuICAgIGNvbnN0IGhvcml6b250YWxSdWxlUmVnZXggPSAvXFxuKChcXC17Myx9KXwoPXszLH0pKS9nO1xuICAgIGNvbnN0IHVub3JkZXJlZExpc3RSZWdleCA9IC8oXFxuXFxzKihcXC18XFwrKVxccy4qKSsvZztcbiAgICBjb25zdCBvcmRlcmVkTGlzdFJlZ2V4ID0gLyhcXG5cXHMqKFswLTldK1xcLilcXHMuKikrL2c7XG4gICAgY29uc3QgcGFyYWdyYXBoUmVnZXggPSAvXFxuKyg/ITxwcmU+KSg/ITxoKSg/ITx1bD4pKD8hPGJsb2NrcXVvdGUpKD8hPGhyKSg/IVxcdCkoW15cXG5dKylcXG4vZztcbiAgICAvLyBmcm9tIG1hcmtlZFxuICAgIGNvbnN0IHRhYmxlID1cbiAgICAgICAgL15cXHMqKFteXFxzXS4qXFx8LiopXFxzezAsM30oPzpcXHxcXHMqKT8oOj8tKzo/XFxzKig/OlxcfFxccyo6Py0rOj9cXHMqKSopXFx8Pyg/OlxccyooKD86KD8hfGhyfGhlYWRpbmd8YmxvY2txdW90ZXxjb2RlfGZlbmNlc3xsaXN0fGh0bWwpLiooPzp8JCkpKikqfCQpL2c7XG4gICAgY29uc3QgcmVnZXhwcyA9IFtcbiAgICAgICAgaW5saW5lQ29kZVJlZ2V4LFxuICAgICAgICBpbWFnZVJlZ2V4LFxuICAgICAgICBsaW5rUmVnZXgsXG4gICAgICAgIGhlYWRpbmdSZWdleCxcbiAgICAgICAgYm9sZEl0YWxpY3NSZWdleCxcbiAgICAgICAgc3RyaWtldGhyb3VnaFJlZ2V4LFxuICAgICAgICBibG9ja3F1b3RlUmVnZXgsXG4gICAgICAgIGhvcml6b250YWxSdWxlUmVnZXgsXG4gICAgICAgIHVub3JkZXJlZExpc3RSZWdleCxcbiAgICAgICAgb3JkZXJlZExpc3RSZWdleCxcbiAgICAgICAgdGFibGVcbiAgICBdO1xuICAgIHJldHVybiByZWdleHBzLnNvbWUocmVnZXhwID0+IHJlZ2V4cC50ZXN0KGNvbnRlbnQpKTtcbn07XG4iXX0=
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzZXJpYWxpemUtbWQucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvZGVzZXJpYWxpemUvZGVzZXJpYWxpemUtbWQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQVUsT0FBTyxFQUFRLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtJQUNsRCxNQUFNLE9BQU8sR0FBRyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7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Q2hELE1BQU0sU0FBUyxHQUFHLDJCQUEyQixDQUFDO0lBQzlDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztJQUNwQyxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDO0lBQzdDLE1BQU0sa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUM7SUFDNUMsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUM7SUFDM0MsTUFBTSxtQkFBbUIsR0FBRyx1QkFBdUIsQ0FBQztJQUNwRCxNQUFNLGtCQUFrQixHQUFHLHNCQUFzQixDQUFDO0lBQ2xELE1BQU0sZ0JBQWdCLEdBQUcseUJBQXlCLENBQUM7SUFDbkQsTUFBTSxjQUFjLEdBQUcsbUVBQW1FLENBQUM7SUFDM0YsY0FBYztJQUNkLE1BQU0sS0FBSyxHQUNQLCtJQUErSSxDQUFDO0lBQ3BKLE1BQU0sT0FBTyxHQUFHO1FBQ1osZUFBZTtRQUNmLFVBQVU7UUFDVixTQUFTO1FBQ1QsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixrQkFBa0I7UUFDbEIsZUFBZTtRQUNmLG1CQUFtQjtRQUNuQixrQkFBa0I7UUFDbEIsZ0JBQWdCO1FBQ2hCLEtBQUs7S0FDUixDQUFDO0lBQ0YsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGhlaWFDb252ZXJ0ZXIgfSBmcm9tICdAYXRpbmMvc2VsZW5lJztcbmltcG9ydCB7IG1hcmtlZCB9IGZyb20gJ21hcmtlZCc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCB7IEVkaXRvciwgRWxlbWVudCwgTm9kZSwgVGV4dCwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IsIGdldENsaXBib2FyZERhdGEgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRoZUNvbnZlcnNpb25IaW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUGx1Z2luS2V5cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVEhFX0VESVRPUl9DT05WRVJTSU9OX0hJTlRfUkVGLCBnZXRUb29sYmFyQ2xhc3MsIHJlY3Vyc2lvbk5vZGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgSW1hZ2VFZGl0b3IgfSBmcm9tICcuLi9pbWFnZS9pbWFnZS5lZGl0b3InO1xuXG5leHBvcnQgY29uc3QgY2xvc2VDb252ZXJzaW9uSGludCA9IChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgIGNvbnN0IGhpbnRSZWYgPSBUSEVfRURJVE9SX0NPTlZFUlNJT05fSElOVF9SRUYuZ2V0KGVkaXRvcik7XG4gICAgaWYgKGhpbnRSZWYpIHtcbiAgICAgICAgaGludFJlZi5jbG9zZSgpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3aXRoRGVzZXJpYWxpemVNZCA9IDxUIGV4dGVuZHMgRWRpdG9yPihlZGl0b3I6IFQpOiBUID0+IHtcbiAgICBjb25zdCB7IGluc2VydEZyYWdtZW50RGF0YSwgb25LZXlkb3duIH0gPSBlZGl0b3I7XG5cbiAgICBlZGl0b3Iub25LZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNsb3NlQ29udmVyc2lvbkhpbnQoZWRpdG9yKTtcbiAgICAgICAgb25LZXlkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmluc2VydEZyYWdtZW50RGF0YSA9IGFzeW5jIChkYXRhOiBEYXRhVHJhbnNmZXIpID0+IHtcbiAgICAgICAgY29uc3QgcG9wb3ZlciA9IGVkaXRvci5pbmplY3Rvci5nZXQoVGh5UG9wb3Zlcik7XG4gICAgICAgIGNvbnN0IHZpZXdDb250YWluZXJSZWYgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KFZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICBjb25zdCBjZHIgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICAgICAgY29uc3Qgb2xkUmFuZ2UgPSBlZGl0b3Iuc2VsZWN0aW9uO1xuICAgICAgICBjb25zdCBjbGlwYm9hcmREYXRhID0gYXdhaXQgZ2V0Q2xpcGJvYXJkRGF0YShkYXRhKTtcbiAgICAgICAgY29uc3QgcGxhaW5GcmFnbWVudCA9IGNsaXBib2FyZERhdGE/LnRleHQ7XG5cbiAgICAgICAgY2xvc2VDb252ZXJzaW9uSGludChlZGl0b3IpO1xuICAgICAgICBpZiAocGxhaW5GcmFnbWVudCAmJiBpc01hcmtkb3duU3ludGF4KHBsYWluRnJhZ21lbnQpICYmICFjbGlwYm9hcmREYXRhPy5lbGVtZW50cykge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmxheSA9IGVkaXRvci5pbmplY3Rvci5nZXQoT3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2xiYXJDbGFzcyA9IGdldFRvb2xiYXJDbGFzcyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2xiYXJFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7dG9vbGJhckNsYXNzfWApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbiA9IHRvb2xiYXJFbGVtZW50ID8gdG9vbGJhckVsZW1lbnQgOiBib2R5RWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZW1lbnQgPSB0b29sYmFyRWxlbWVudCA/ICd0b3AnIDogJ3RvcFJpZ2h0JztcblxuICAgICAgICAgICAgICAgIGNvbnN0IGhpbnRQb3BvdmVyUmVmID0gcG9wb3Zlci5vcGVuKFRoZUNvbnZlcnNpb25IaW50LCB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udmVyc2lvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGh0bWwgPSBtYXJrZWQocGxhaW5GcmFnbWVudC5yZXBsYWNlKC9cXG5gYGAvZywgJ1xcblxcbmBgYCcpLCB7IGdmbTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaHRtbERvbSA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmcmFnbWVudCA9IFRoZWlhQ29udmVydGVyLmNvbnZlcnRUb1RoZWlhKEFycmF5LmZyb20oaHRtbERvbS5ib2R5LmNoaWxkcmVuKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1VuZm9ybWF0dGVkKGZyYWdtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VDb252ZXJzaW9uSGludChlZGl0b3IpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IudW5kbygpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIG9sZFJhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYXNlIDY0IOWbvueJh+WkhOeQhlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Vyc2lvbk5vZGVzKGZyYWdtZW50LCAobm9kZTogTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0ltYWdlID0gRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMuaW1hZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0ltYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Jhc2U2NCA9IEltYWdlRWRpdG9yLmlzQmFzZTY0KG5vZGU/Lm9yaWdpblVybCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNCYXNlNjQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZUVkaXRvci5oYW5kbGVCYXNlNjRJbWFnZUVsZW1lbnQoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VFZGl0b3IuaGFuZGxlRXh0ZXJuYWxJbWFnZUVsZW1lbnQoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0RnJhZ21lbnQoZWRpdG9yLCBmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5mb2N1cyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlQ29udmVyc2lvbkhpbnQoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlQ29udmVyc2lvbkhpbnQoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IC0xMDAsXG4gICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiAwLFxuICAgICAgICAgICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG91dHNpZGVDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKClcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBUSEVfRURJVE9SX0NPTlZFUlNJT05fSElOVF9SRUYuc2V0KGVkaXRvciwgaGludFBvcG92ZXJSZWYpO1xuICAgICAgICAgICAgICAgIGNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnNlcnRGcmFnbWVudERhdGEoZGF0YSk7XG4gICAgfTtcbiAgICByZXR1cm4gZWRpdG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZURlc2VyaWFsaXplTWRQbHVnaW4gPSBjcmVhdGVQbHVnaW5GYWN0b3J5KHtcbiAgICBrZXk6IFBsdWdpbktleXMuZGVzZXJpYWxpemVNZCxcbiAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoRGVzZXJpYWxpemVNZFxufSk7XG5cbmNvbnN0IGlzVW5mb3JtYXR0ZWQgPSAoZWxlbWVudHM6IEVsZW1lbnRbXSkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50cy5ldmVyeShcbiAgICAgICAgZWxlbWVudCA9PlxuICAgICAgICAgICAgZWxlbWVudC50eXBlID09PSBFbGVtZW50S2luZHMuZGVmYXVsdCAmJlxuICAgICAgICAgICAgZWxlbWVudC5jaGlsZHJlbi5ldmVyeSgobm9kZTogTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBUZXh0LmlzVGV4dChub2RlKSAmJiBPYmplY3Qua2V5cyhub2RlKS5sZW5ndGggPT09IDE7XG4gICAgICAgICAgICB9KVxuICAgICk7XG59O1xuXG5jb25zdCBpc01hcmtkb3duU3ludGF4ID0gY29udGVudCA9PiB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0NoYWxhcmFuZ2Vsby9wYXJzZS1tZC1qcy9ibG9iL21hc3Rlci9wYXJzZW1kLmpzXG4gICAgY29uc3QgY29kZUJsb2NrUmVnZXggPSAvKChcXG5cXHQpKC4qKSkrL2c7XG4gICAgY29uc3QgaW5saW5lQ29kZVJlZ2V4ID0gLyhgKSguKj8pXFwxL2c7XG4gICAgY29uc3QgaW1hZ2VSZWdleCA9IC8hXFxbKFteXFxbXSspXFxdXFwoKFteXFwpXSspXFwpL2c7XG4gICAgY29uc3QgbGlua1JlZ2V4ID0gL1xcWyhbXlxcW10rKVxcXVxcKChbXlxcKV0rKVxcKS9nO1xuICAgIGNvbnN0IGhlYWRpbmdSZWdleCA9IC8oIytcXHMqKSguKikvZztcbiAgICBjb25zdCBib2xkSXRhbGljc1JlZ2V4ID0gLyhcXCp7MSwyfSkoXFxTKylcXDEvZztcbiAgICBjb25zdCBzdHJpa2V0aHJvdWdoUmVnZXggPSAvKFxcflxcfikoLio/KVxcMS9nO1xuICAgIGNvbnN0IGJsb2NrcXVvdGVSZWdleCA9IC9cXG4oJmd0O3xcXD4pKC4qKS9nO1xuICAgIGNvbnN0IGhvcml6b250YWxSdWxlUmVnZXggPSAvXFxuKChcXC17Myx9KXwoPXszLH0pKS9nO1xuICAgIGNvbnN0IHVub3JkZXJlZExpc3RSZWdleCA9IC8oXFxuXFxzKihcXC18XFwrKVxccy4qKSsvZztcbiAgICBjb25zdCBvcmRlcmVkTGlzdFJlZ2V4ID0gLyhcXG5cXHMqKFswLTldK1xcLilcXHMuKikrL2c7XG4gICAgY29uc3QgcGFyYWdyYXBoUmVnZXggPSAvXFxuKyg/ITxwcmU+KSg/ITxoKSg/ITx1bD4pKD8hPGJsb2NrcXVvdGUpKD8hPGhyKSg/IVxcdCkoW15cXG5dKylcXG4vZztcbiAgICAvLyBmcm9tIG1hcmtlZFxuICAgIGNvbnN0IHRhYmxlID1cbiAgICAgICAgL15cXHMqKFteXFxzXS4qXFx8LiopXFxzezAsM30oPzpcXHxcXHMqKT8oOj8tKzo/XFxzKig/OlxcfFxccyo6Py0rOj9cXHMqKSopXFx8Pyg/OlxccyooKD86KD8hfGhyfGhlYWRpbmd8YmxvY2txdW90ZXxjb2RlfGZlbmNlc3xsaXN0fGh0bWwpLiooPzp8JCkpKikqfCQpL2c7XG4gICAgY29uc3QgcmVnZXhwcyA9IFtcbiAgICAgICAgaW5saW5lQ29kZVJlZ2V4LFxuICAgICAgICBpbWFnZVJlZ2V4LFxuICAgICAgICBsaW5rUmVnZXgsXG4gICAgICAgIGhlYWRpbmdSZWdleCxcbiAgICAgICAgYm9sZEl0YWxpY3NSZWdleCxcbiAgICAgICAgc3RyaWtldGhyb3VnaFJlZ2V4LFxuICAgICAgICBibG9ja3F1b3RlUmVnZXgsXG4gICAgICAgIGhvcml6b250YWxSdWxlUmVnZXgsXG4gICAgICAgIHVub3JkZXJlZExpc3RSZWdleCxcbiAgICAgICAgb3JkZXJlZExpc3RSZWdleCxcbiAgICAgICAgdGFibGVcbiAgICBdO1xuICAgIHJldHVybiByZWdleHBzLnNvbWUocmVnZXhwID0+IHJlZ2V4cC50ZXN0KGNvbnRlbnQpKTtcbn07XG4iXX0=