@sd-angular/core 1.2.94 → 1.2.95

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.
@@ -5,17 +5,13 @@ import * as uuid from 'uuid';
5
5
  import { FormControl, NgForm, Validators } from '@angular/forms';
6
6
  import { Constants } from './constant';
7
7
  import { Subscription } from 'rxjs';
8
- import { SdApiService } from '@sd-angular/core/api';
9
8
  import 'quill-mention';
10
9
  import { SdLabelDefDirective } from '@sd-angular/core/common';
11
- import { SdLoadingService } from "@sd-angular/core/loading";
12
10
  import { EDITOR_CONFIG } from './editor.model';
13
11
  export class SdEditor {
14
- constructor(ngZone, ref, sdApiService, loadingService, configuration) {
12
+ constructor(ngZone, ref, configuration) {
15
13
  this.ngZone = ngZone;
16
14
  this.ref = ref;
17
- this.sdApiService = sdApiService;
18
- this.loadingService = loadingService;
19
15
  this.configuration = configuration;
20
16
  _name.set(this, `N${uuid.v4()}`);
21
17
  this.id = `I${uuid.v4()}`;
@@ -275,21 +271,14 @@ export class SdEditor {
275
271
  const toolbar = element.closest('.ql-formats').closest('.ql-toolbar'); // Lấy toolbar element
276
272
  const id = toolbar.closest('quill-editor').id; // Lấy id của editor để phục vụ loading
277
273
  const loadingId = `#box-${id}`; // id của editor;
278
- const func = action.click(e, {
274
+ action.click(e, {
279
275
  qlKey,
280
276
  element,
277
+ loadingId,
281
278
  cursorPosition: JSON.parse(cursorPosition),
282
279
  quill: __classPrivateFieldGet(this, _quill),
283
280
  args: this.args
284
281
  });
285
- if (func instanceof Promise) {
286
- __classPrivateFieldGet(this, _quill).enable(false);
287
- this.loadingService.start(loadingId);
288
- func.finally(() => {
289
- __classPrivateFieldGet(this, _quill).enable(true);
290
- this.loadingService.stop(loadingId);
291
- });
292
- }
293
282
  });
294
283
  }
295
284
  }
@@ -417,8 +406,6 @@ SdEditor.decorators = [
417
406
  SdEditor.ctorParameters = () => [
418
407
  { type: NgZone },
419
408
  { type: ChangeDetectorRef },
420
- { type: SdApiService },
421
- { type: SdLoadingService },
422
409
  { type: undefined, decorators: [{ type: Inject, args: [EDITOR_CONFIG,] }, { type: Optional }] }
423
410
  ];
424
411
  SdEditor.propDecorators = {
@@ -442,4 +429,4 @@ SdEditor.propDecorators = {
442
429
  sdLabelDef: [{ type: ContentChild, args: [SdLabelDefDirective,] }],
443
430
  sdChange: [{ type: Output }]
444
431
  };
445
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZWRpdG9yLyIsInNvdXJjZXMiOlsic3JjL2xpYi9lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBU3JFLE1BQU0sT0FBTyxRQUFRO0lBa0puQixZQUNVLE1BQWMsRUFDZCxHQUFzQixFQUN0QixZQUEwQixFQUMxQixjQUFnQyxFQUNHLGFBQW1DO1FBSnRFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDRyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUF0SmhGLGdCQUFRLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUM7UUFDeEIsT0FBRSxHQUFXLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDN0Isd0JBQWdCLElBQUksWUFBWSxFQUFFLEVBQUM7UUFHbkMseUJBQWU7UUFtQmYsYUFBUSxHQUFHLEtBQUssQ0FBQztRQXFCUCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFMUMsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFekIsV0FBTSxHQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBSTNDLGdCQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUV2QixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLHdCQUFpQjtRQVlSLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUNsQyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQU92QixnQkFBVyxHQUFHO1lBQ1osdUJBQXVCO1lBQ3ZCLE9BQU8sRUFBRTtnQkFDUCxTQUFTLEVBQUU7b0JBQ1QsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUM7b0JBQ3pDLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztvQkFFNUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDbEMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztvQkFDN0MsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztvQkFDNUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztvQkFDeEMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFFeEIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQy9DLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUV6QyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUN2QyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUNoQixDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUVqQixDQUFDLE9BQU8sQ0FBQztvQkFFVCxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQXlCLHdCQUF3QjtpQkFDNUU7YUFDRjtZQUNELE9BQU8sRUFBRTtnQkFDUCxZQUFZLEVBQUUsMkJBQTJCO2dCQUN6QyxzQkFBc0IsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7Z0JBQ2xDLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEVBQUU7b0JBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLFdBQVcsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksV0FBVyxLQUFLLEdBQUcsQ0FBQyxFQUFFO3dCQUM5RixJQUFJLE1BQU0sQ0FBQzt3QkFDWCxJQUFJLFdBQVcsS0FBSyxHQUFHLEVBQUU7NEJBQ3ZCLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO3lCQUM3Qjs2QkFBTSxJQUFJLFdBQVcsS0FBSyxHQUFHLEVBQUU7NEJBQzlCLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO3lCQUM3Qjs2QkFBTTs0QkFDTCxNQUFNLEdBQUcsRUFBRSxDQUFDO3lCQUNiO3dCQUVELElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7NEJBQzNCLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7eUJBQ2hDOzZCQUFNOzRCQUNMLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQzs0QkFDbkIseUNBQXlDOzRCQUN6QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQ0FDdEMsc0NBQXNDO2dDQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUU7b0NBQ3BFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUNBQ3pCOzZCQUNGOzRCQUNELFVBQVUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7eUJBQ2pDO3FCQUNGO2dCQUNILENBQUM7YUFDRjtZQUNELFFBQVEsRUFBRTtnQkFDUixRQUFRLEVBQUU7b0JBQ1IsS0FBSyxFQUFFO3dCQUNMLEdBQUcsRUFBRSxFQUFFO3dCQUNQLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTs0QkFDMUIsT0FBTyxJQUFJLENBQUM7d0JBQ2QsQ0FBQztxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztRQUNGLHdCQUFtQixHQUFHLDZZQUE2WSxDQUFDO1FBQzFaLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2hELDBCQUFxQixHQUFHLElBQUksQ0FBQztRQW9IN0IsMkJBQW1CLEdBQUcsRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFVBQVUsR0FBa0IsRUFBRSxDQUFDO1lBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDdEM7WUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFO2dCQUN0QixVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDdkQ7WUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFO2dCQUN0QixVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDdkQ7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDLEVBQUE7UUFDRCx5QkFBYztRQUNkLGVBQVUsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQzVCLHVCQUFBLElBQUksVUFBVSxLQUFLLEVBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDeEIsc0RBQXNEO1lBQ3RELDBCQUEwQjtZQUMxQiw2REFBNkQ7WUFDN0QsMERBQTBEO1lBQzFELHFEQUFxRDtZQUNyRCxvR0FBb0c7WUFDcEcscUVBQXFFO1lBRXJFLHNEQUFzRDtZQUN0RCxtQ0FBbUM7WUFFbkMsb0NBQW9DO1lBQ3BDLHlEQUF5RDtZQUN6RCxpREFBaUQ7WUFDakQsMEJBQTBCO1lBQzFCLGlEQUFpRDtZQUNqRCw4REFBOEQ7WUFDOUQsU0FBUztZQUNULHdDQUF3QztZQUN4QyxNQUFNO1lBQ04sTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLG9EQUFBLElBQUksRUFBa0IsS0FBSyxDQUFDLENBQUM7WUFDN0Isd0NBQXdDO1lBQ3hDLGlFQUFpRTtZQUNqRSxpRkFBaUY7WUFFakYsK0JBQStCO1lBQy9CLHFEQUFxRDtZQUNyRCx3REFBd0Q7WUFDeEQsdUdBQXVHO1lBQ3ZHLDZDQUE2QztZQUM3QyxxREFBcUQ7WUFDckQseUNBQXlDO1lBQ3pDLHVEQUF1RDtZQUN2RCx5Q0FBeUM7WUFDekMsb0JBQW9CO1lBQ3BCLFlBQVk7WUFFWiwyQ0FBMkM7WUFDM0MscURBQXFEO1lBRXJELG9DQUFvQztZQUVwQyxnRUFBZ0U7WUFDaEUsWUFBWTtZQUNaLCtDQUErQztZQUMvQyxRQUFRO1lBQ1IseUJBQXlCO1lBQ3pCLFFBQVE7WUFFUixNQUFNO1lBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUE7UUFFRCwyQkFBbUIsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pDLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRTtvQkFDN0MsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztvQkFDMUUsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO3dCQUNyQixTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDNUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMvQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSwyREFBMkQsQ0FBQyxDQUFDO3dCQUM5RixTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDcEMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7OzRCQUN4QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDOzRCQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDNUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0NBQzNCLE9BQU87NkJBQ1I7NEJBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQzs0QkFDaEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDekIsd0RBQXdEOzRCQUN4RCxNQUFBLElBQUksQ0FBQyxhQUFhLDBDQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0NBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO29DQUNqQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO29DQUNuQixzSEFBc0g7b0NBQ3RILEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSwyQkFBMkIsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7MENBQ3BHLGNBQWMsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxtQ0FBbUMsRUFBRSxNQUFNLENBQUMsQ0FBQztvQ0FDaEYsc0JBQXNCO29DQUN0QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7b0NBQ3BDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7b0NBQzNCLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7b0NBQzVDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dDQUN2QixDQUFDLENBQUMsQ0FBQzs0QkFDTCxDQUFDLEVBQUU7d0JBQ0wsQ0FBQyxDQUFDLENBQUM7d0JBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQ3ZDO29CQUNELFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLENBQUM7WUFFTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsRUFBQTtRQUVELGtCQUFhLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztZQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQTtRQUVELDBCQUFxQixHQUFHLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQTtJQXpPRCxDQUFDO0lBbkpELElBQWEsS0FBSyxDQUFDLEdBQVc7UUFDNUIsdUJBQUEsSUFBSSxVQUFVLEdBQUcsRUFBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsdUNBQWM7WUFDckMsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBYSxRQUFRLENBQUMsR0FBaUI7UUFDckMsR0FBRyxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUMxQixJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDNUI7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBSUQsSUFBYSxTQUFTLENBQUMsR0FBaUI7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDcEMsb0RBQUEsSUFBSSxDQUFtQixDQUFDO0lBQzFCLENBQUM7SUFJRCxJQUF3QixVQUFVLENBQUMsR0FBVztRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBQ3RCLG9EQUFBLElBQUksQ0FBbUIsQ0FBQztJQUMxQixDQUFDO0lBSUQsSUFBd0IsVUFBVSxDQUFDLEdBQVc7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUN0QixvREFBQSxJQUFJLENBQW1CLENBQUM7SUFDMUIsQ0FBQztJQWNELElBQWEsSUFBSSxDQUFDLEdBQXVCO1FBQ3ZDLElBQUksR0FBRyxFQUFFO1lBQ1AsSUFBSSxHQUFHLFlBQVksTUFBTSxFQUFFO2dCQUN6Qix1QkFBQSxJQUFJLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBQzthQUN2QjtpQkFBTTtnQkFDTCx1QkFBQSxJQUFJLFNBQVMsR0FBRyxFQUFDO2FBQ2xCO1NBQ0Y7SUFDSCxDQUFDO0lBMEZELFFBQVE7O1FBQ04sbUZBQVksVUFBVSxzQ0FBYSxJQUFJLENBQUMsV0FBVyxFQUFFO1FBRXJELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUNuRDtRQUVELEtBQUssTUFBTSxNQUFNLElBQUksQ0FBQyxPQUFBLElBQUksQ0FBQyxhQUFhLDBDQUFFLE9BQU8sS0FBSSxFQUFFLENBQUMsRUFBRTtZQUN4RCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN0RSxNQUFNLEtBQUssR0FBRyxhQUFhLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQTtnQkFDdkMsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtvQkFDaEMsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUNqQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3hCLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQzt3QkFDbkUsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDbkQsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsRUFBRTs0QkFDakQsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7NEJBQzNDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQ0FDM0MsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztnQ0FDMUQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLGFBQTRCLENBQUMsQ0FBQyxvQ0FBb0M7Z0NBQ3BGLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsc0JBQXNCO2dDQUM3RixNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLHVDQUF1QztnQ0FDdEYsTUFBTSxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQjtnQ0FDakQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0NBQzNCLEtBQUs7b0NBQ0wsT0FBTztvQ0FDUCxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7b0NBQzFDLEtBQUssc0NBQWE7b0NBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtpQ0FDaEIsQ0FBQyxDQUFDO2dDQUVILElBQUcsSUFBSSxZQUFZLE9BQU8sRUFBRTtvQ0FDMUIscUNBQVksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO29DQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztvQ0FDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7d0NBQ2hCLHFDQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3Q0FDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0NBQ3RDLENBQUMsQ0FBQyxDQUFDO2lDQUNKOzRCQUNILENBQUMsQ0FBQyxDQUFDO3lCQUNKO3FCQUNGO2dCQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNWO1NBQ0Y7UUFFRCw4RUFBOEU7UUFDOUUscURBQXFEO1FBQ3JELDREQUE0RDtRQUM1RCxtREFBbUQ7UUFDbkQsNkZBQTZGO1FBQzdGLDZFQUE2RTtRQUM3RSw2REFBNkQ7UUFDN0Qsc0RBQXNEO1FBQ3RELDBFQUEwRTtRQUMxRSxVQUFVO1FBQ1YsUUFBUTtRQUNSLGNBQWM7UUFDZCxJQUFJO1FBRUosSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsK0JBQStCO0lBQy9CLDBDQUEwQztJQUMxQyxxRkFBcUY7SUFDckYseURBQXlEO0lBQ3pELG9HQUFvRztJQUNwRyw2QkFBNkI7SUFDN0IsbURBQW1EO0lBQ25ELHNEQUFzRDtJQUN0RCw2Q0FBNkM7SUFDN0MsZ0RBQWdEO0lBQ2hELG1EQUFtRDtJQUNuRCx1Q0FBdUM7SUFDdkMsdUNBQXVDO0lBQ3ZDLGtCQUFrQjtJQUNsQixVQUFVO0lBRVYseUNBQXlDO0lBQ3pDLG1EQUFtRDtJQUNuRCx3REFBd0Q7SUFDeEQscUJBQXFCO0lBQ3JCLHFDQUFxQztJQUNyQyxVQUFVO0lBQ1YsdUNBQXVDO0lBQ3ZDLGdIQUFnSDtJQUNoSCxVQUFVO0lBQ1YsMkNBQTJDO0lBQzNDLE1BQU07SUFDTix1QkFBdUI7SUFDdkIsSUFBSTtJQUVKLGVBQWU7UUFDYiw0Q0FBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3JFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVzs7UUFDVCxtRkFBWSxhQUFhLHNDQUFhO1FBQ3RDLDRDQUFtQixXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBa0lELDBEQUEwRDtJQUMxRCxnQ0FBZ0M7SUFDaEMsMkVBQTJFO0lBQzNFLE1BQU07SUFDTiwwREFBMEQ7SUFDMUQsZ0ZBQWdGO0lBQ2hGLDRDQUE0QztJQUM1Qyw0QkFBNEI7SUFDNUIsK0hBQStIO0lBQy9ILDBLQUEwSztJQUMxSyxrSkFBa0o7SUFDbEosK0JBQStCO0lBQy9CLDZDQUE2QztJQUM3QyxvQ0FBb0M7SUFDcEMscURBQXFEO0lBQ3JELDhCQUE4QjtJQUM5QixVQUFVO0lBQ1YsUUFBUTtJQUNSLDZCQUE2QjtJQUM3QixJQUFJO0lBRUosb0VBQW9FO0lBQ3BFLCtCQUErQjtJQUMvQiwwRUFBMEU7SUFDMUUsTUFBTTtJQUNOLDBEQUEwRDtJQUMxRCxvREFBb0Q7SUFDcEQsK0VBQStFO0lBQy9FLDRDQUE0QztJQUM1Qyw0QkFBNEI7SUFDNUIsK0hBQStIO0lBQy9ILDBLQUEwSztJQUMxSywyR0FBMkc7SUFDM0csK0JBQStCO0lBQy9CLDZDQUE2QztJQUM3QyxvQ0FBb0M7SUFDcEMscURBQXFEO0lBQ3JELDhCQUE4QjtJQUM5QixVQUFVO0lBQ1YscURBQXFEO0lBQ3JELHVCQUF1QjtJQUN2QixxREFBcUQ7SUFDckQsUUFBUTtJQUNSLDZCQUE2QjtJQUM3QixJQUFJO0lBRUosa0JBQWtCLENBQUMsQ0FBa0I7UUFDbkMsNEhBQTRIO1FBQzVILFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsQ0FBZ0I7UUFDL0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNoRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVELE1BQU0sRUFBRSxDQUFDO1NBQ1YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDOzs7O1lBbmNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsV0FBVztnQkFDckIsNGtFQUFzQztnQkFFdEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUF4QkMsTUFBTTtZQU5OLGlCQUFpQjtZQWtCVixZQUFZO1lBR1osZ0JBQWdCOzRDQWlLcEIsTUFBTSxTQUFDLGFBQWEsY0FBRyxRQUFROzs7cUJBbkpqQyxTQUFTLFNBQUMsUUFBUTtvQkFDbEIsS0FBSztvQkFFTCxLQUFLO3VCQVNMLEtBQUs7d0JBV0wsS0FBSzt5QkFPTCxLQUFLLFNBQUMsV0FBVzt5QkFPakIsS0FBSyxTQUFDLFdBQVc7MEJBS2pCLE1BQU07MEJBRU4sS0FBSztxQkFFTCxLQUFLO21CQUVMLEtBQUs7cUJBSUwsS0FBSzttQkFFTCxLQUFLO3NCQVVMLEtBQUs7K0JBQ0wsS0FBSzs0QkFLTCxLQUFLOzRCQUNMLEtBQUs7eUJBQ0wsWUFBWSxTQUFDLG1CQUFtQjt1QkFvRWhDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE5nWm9uZSxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udGVudENoYW5nZSwgUXVpbGxFZGl0b3JDb21wb25lbnQsIFNlbGVjdGlvbkNoYW5nZSB9IGZyb20gJ25neC1xdWlsbCc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5nRm9ybSwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4vY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2RBcGlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9hcGknO1xyXG5pbXBvcnQgJ3F1aWxsLW1lbnRpb24nO1xyXG5pbXBvcnQgeyBTZExhYmVsRGVmRGlyZWN0aXZlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9jb21tb24nO1xyXG5pbXBvcnQgeyBTZExvYWRpbmdTZXJ2aWNlIH0gZnJvbSBcIkBzZC1hbmd1bGFyL2NvcmUvbG9hZGluZ1wiO1xyXG5pbXBvcnQgeyBFRElUT1JfQ09ORklHLCBJRWRpdG9yQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZWRpdG9yLm1vZGVsJztcclxuaW1wb3J0IFF1aWxsIGZyb20gJ3F1aWxsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RFZGl0b3IgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgI25hbWUgPSBgTiR7dXVpZC52NCgpfWA7XHJcbiAgaWQ6IHN0cmluZyA9IGBJJHt1dWlkLnY0KCl9YDtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvcicpIGVkaXRvcjogUXVpbGxFZGl0b3JDb21wb25lbnQ7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICAjbW9kZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBzZXQgbW9kZWwodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuI21vZGVsID0gdmFsO1xyXG4gICAgdGhpcy5tb2RlbEhUTUwgPSB2YWw7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuI21vZGVsLCB7XHJcbiAgICAgIGVtaXRFdmVudDogZmFsc2VcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB2YWwgPSAodmFsID09PSAnJykgfHwgdmFsO1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXF1aXJlZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzZXQgcFJlcXVpcmVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB0aGlzLnJlcXVpcmVkID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbWlubGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgnbWlubGVuZ3RoJykgc2V0IF9taW5sZW5ndGgodmFsOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWlubGVuZ3RoID0gK3ZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbWF4bGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgnbWF4bGVuZ3RoJykgc2V0IF9tYXhsZW5ndGgodmFsOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWF4bGVuZ3RoID0gK3ZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgc3R5bGVzOiBhbnkgPSB7IGhlaWdodDogJzI1MHB4JyB9O1xyXG5cclxuICBASW5wdXQoKSBhcmdzOiBhbnk7XHJcblxyXG4gIGZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcblxyXG4gIEBJbnB1dCgpIGRvbWFpbiA9ICcnO1xyXG4gICNmb3JtOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgc2V0IGZvcm0odmFsOiBOZ0Zvcm0gfCBGb3JtR3JvdXApIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIE5nRm9ybSkge1xyXG4gICAgICAgIHRoaXMuI2Zvcm0gPSB2YWwuZm9ybTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLiNmb3JtID0gdmFsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSB0b29sYmFyOiBhbnk7XHJcbiAgQElucHV0KCkgZW5hYmxlSFRNTEJ1dHRvbiA9IGZhbHNlO1xyXG4gIHNob3dIdG1sRWRpdG9yID0gZmFsc2U7XHJcbiAgbW9kZWxIVE1MOiBzdHJpbmc7XHJcblxyXG4gIHF1aWxsRXZlbnQ6IGFueTtcclxuICBASW5wdXQoKSBtZW50aW9uVmFsdWVzOiB7IGlkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGxpbms/OiBzdHJpbmcgfVtdO1xyXG4gIEBJbnB1dCgpIGhhc2hUYWdWYWx1ZXM6IHsgaWQ6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbGluaz86IHN0cmluZyB9W107XHJcbiAgQENvbnRlbnRDaGlsZChTZExhYmVsRGVmRGlyZWN0aXZlKSBzZExhYmVsRGVmOiBTZExhYmVsRGVmRGlyZWN0aXZlO1xyXG4gIHF1aWxsQ29uZmlnID0ge1xyXG4gICAgLy8gdG9vbGJhcjogJy50b29sYmFyJyxcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgY29udGFpbmVyOiBbXHJcbiAgICAgICAgWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnc3RyaWtlJ10sICAgICAgICAvLyB0b2dnbGVkIGJ1dHRvbnNcclxuICAgICAgICBbJ2Jsb2NrcXVvdGUnLCAnY29kZS1ibG9jayddLFxyXG5cclxuICAgICAgICBbeyAnaGVhZGVyJzogMSB9LCB7ICdoZWFkZXInOiAyIH1dLCAgICAgICAgICAgICAgIC8vIGN1c3RvbSBidXR0b24gdmFsdWVzXHJcbiAgICAgICAgW3sgJ2xpc3QnOiAnb3JkZXJlZCcgfSwgeyAnbGlzdCc6ICdidWxsZXQnIH1dLFxyXG4gICAgICAgIFt7ICdzY3JpcHQnOiAnc3ViJyB9LCB7ICdzY3JpcHQnOiAnc3VwZXInIH1dLCAgICAgIC8vIHN1cGVyc2NyaXB0L3N1YnNjcmlwdFxyXG4gICAgICAgIFt7ICdpbmRlbnQnOiAnLTEnIH0sIHsgJ2luZGVudCc6ICcrMScgfV0sICAgICAgICAgIC8vIG91dGRlbnQvaW5kZW50XHJcbiAgICAgICAgW3sgJ2RpcmVjdGlvbic6ICdydGwnIH1dLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXh0IGRpcmVjdGlvblxyXG5cclxuICAgICAgICBbeyAnc2l6ZSc6IFsnc21hbGwnLCBmYWxzZSwgJ2xhcmdlJywgJ2h1Z2UnXSB9XSwgIC8vIGN1c3RvbSBkcm9wZG93blxyXG4gICAgICAgIFt7ICdoZWFkZXInOiBbMSwgMiwgMywgNCwgNSwgNiwgZmFsc2VdIH1dLFxyXG5cclxuICAgICAgICBbeyAnY29sb3InOiBbXSB9LCB7ICdiYWNrZ3JvdW5kJzogW10gfV0sICAgICAgICAgIC8vIGRyb3Bkb3duIHdpdGggZGVmYXVsdHMgZnJvbSB0aGVtZVxyXG4gICAgICAgIFt7ICdmb250JzogW10gfV0sXHJcbiAgICAgICAgW3sgJ2FsaWduJzogW10gfV0sXHJcblxyXG4gICAgICAgIFsnY2xlYW4nXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBmb3JtYXR0aW5nIGJ1dHRvblxyXG5cclxuICAgICAgICBbJ2xpbmsnLCAnaW1hZ2UnLCAndmlkZW8nXSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW5rIGFuZCBpbWFnZSwgdmlkZW9cclxuICAgICAgXVxyXG4gICAgfSxcclxuICAgIG1lbnRpb246IHtcclxuICAgICAgYWxsb3dlZENoYXJzOiAvXltBLVphLXowLTlcXHPDhcOEw5bDpcOkw7YuXy1dKiQvLFxyXG4gICAgICBtZW50aW9uRGVub3RhdGlvbkNoYXJzOiBbJ0AnLCAnIyddLFxyXG4gICAgICBzb3VyY2U6IChzZWFyY2hUZXJtLCByZW5kZXJMaXN0LCBtZW50aW9uQ2hhcikgPT4ge1xyXG4gICAgICAgIGlmICgodGhpcy5tZW50aW9uVmFsdWVzICYmIG1lbnRpb25DaGFyID09PSAnQCcpIHx8ICh0aGlzLmhhc2hUYWdWYWx1ZXMgJiYgbWVudGlvbkNoYXIgPT09ICcjJykpIHtcclxuICAgICAgICAgIGxldCB2YWx1ZXM7XHJcbiAgICAgICAgICBpZiAobWVudGlvbkNoYXIgPT09ICdAJykge1xyXG4gICAgICAgICAgICB2YWx1ZXMgPSB0aGlzLm1lbnRpb25WYWx1ZXM7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lbnRpb25DaGFyID09PSAnIycpIHtcclxuICAgICAgICAgICAgdmFsdWVzID0gdGhpcy5oYXNoVGFnVmFsdWVzO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWVzID0gW107XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHNlYXJjaFRlcm0ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJlbmRlckxpc3QodmFsdWVzLCBzZWFyY2hUZXJtKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSBbXTtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICAgIGlmICh+dmFsdWVzW2ldLnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2godmFsdWVzW2ldKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVuZGVyTGlzdChtYXRjaGVzLCBzZWFyY2hUZXJtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAga2V5Ym9hcmQ6IHtcclxuICAgICAgYmluZGluZ3M6IHtcclxuICAgICAgICBlbnRlcjoge1xyXG4gICAgICAgICAga2V5OiAxMyxcclxuICAgICAgICAgIGhhbmRsZXI6IChyYW5nZSwgY29udGV4dCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGN1c3RvbUJ1dHRvbkZpbGVTVkcgPSAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDI0IDI0XCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0cHhcIiBmaWxsPVwiIzAwMDAwMFwiPjxnPjxyZWN0IGZpbGw9XCJub25lXCIgaGVpZ2h0PVwiMjRcIiB3aWR0aD1cIjI0XCIvPjxwYXRoIGQ9XCJNMjAuNDEsOC40MWwtNC44My00LjgzQzE1LjIxLDMuMjEsMTQuNywzLDE0LjE3LDNINUMzLjksMywzLDMuOSwzLDV2MTRjMCwxLjEsMC45LDIsMiwyaDE0YzEuMSwwLDItMC45LDItMlY5LjgzIEMyMSw5LjMsMjAuNzksOC43OSwyMC40MSw4LjQxeiBNNyw3aDd2Mkg3Vjd6IE0xNywxN0g3di0yaDEwVjE3eiBNMTcsMTNIN3YtMmgxMFYxM3pcIi8+PC9nPjwvc3ZnPic7XHJcbiAgQE91dHB1dCgpIHNkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgdGltZXJMb2FkUXVpbGxUb29sYmFyID0gbnVsbDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHNkQXBpU2VydmljZTogU2RBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZTogU2RMb2FkaW5nU2VydmljZSxcclxuICAgIEBJbmplY3QoRURJVE9SX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb25maWd1cmF0aW9uOiBJRWRpdG9yQ29uZmlndXJhdGlvbixcclxuICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuI2Zvcm0/LmFkZENvbnRyb2wodGhpcy4jbmFtZSwgdGhpcy5mb3JtQ29udHJvbCk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9vbGJhcikge1xyXG4gICAgICB0aGlzLnF1aWxsQ29uZmlnLnRvb2xiYXIuY29udGFpbmVyID0gdGhpcy50b29sYmFyO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgYWN0aW9uIG9mICh0aGlzLmNvbmZpZ3VyYXRpb24/LmFjdGlvbnMgfHwgW10pKSB7XHJcbiAgICAgIGlmICh0aGlzLnF1aWxsQ29uZmlnLnRvb2xiYXIuY29udGFpbmVyLnRvU3RyaW5nKCkuaW5jbHVkZXMoYWN0aW9uLmtleSkpIHtcclxuICAgICAgICBjb25zdCBxbEtleSA9IGBidXR0b24ucWwtJHthY3Rpb24ua2V5fWBcclxuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHFsS2V5KSkge1xyXG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcclxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihxbEtleSkuaW5uZXJIVE1MID0gdGhpcy5jdXN0b21CdXR0b25GaWxlU1ZHO1xyXG4gICAgICAgICAgICBjb25zdCBjdXN0b21BY3Rpb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHFsS2V5KTtcclxuICAgICAgICAgICAgaWYgKGN1c3RvbUFjdGlvbi5nZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJykgIT09ICcxJykge1xyXG4gICAgICAgICAgICAgIGN1c3RvbUFjdGlvbi5zZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJywgJzEnKTtcclxuICAgICAgICAgICAgICBjdXN0b21BY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncXVpbGxSYW5nZScpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDsgLy8gTOG6pXkgZWxlbWVudCBj4bunYSBhY3Rpb24gxJHGsOG7o2MgY2xpY2tcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2xiYXIgPSBlbGVtZW50LmNsb3Nlc3QoJy5xbC1mb3JtYXRzJykuY2xvc2VzdCgnLnFsLXRvb2xiYXInKTsgLy8gTOG6pXkgdG9vbGJhciBlbGVtZW50XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IHRvb2xiYXIuY2xvc2VzdCgncXVpbGwtZWRpdG9yJykuaWQ7IC8vIEzhuqV5IGlkIGPhu6dhIGVkaXRvciDEkeG7gyBwaOG7pWMgduG7pSBsb2FkaW5nXHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2FkaW5nSWQgPSBgI2JveC0ke2lkfWA7IC8vIGlkIGPhu6dhIGVkaXRvcjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBhY3Rpb24uY2xpY2soZSwge1xyXG4gICAgICAgICAgICAgICAgICBxbEtleSxcclxuICAgICAgICAgICAgICAgICAgZWxlbWVudCxcclxuICAgICAgICAgICAgICAgICAgY3Vyc29yUG9zaXRpb246IEpTT04ucGFyc2UoY3Vyc29yUG9zaXRpb24pLFxyXG4gICAgICAgICAgICAgICAgICBxdWlsbDogdGhpcy4jcXVpbGwsXHJcbiAgICAgICAgICAgICAgICAgIGFyZ3M6IHRoaXMuYXJnc1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmKGZ1bmMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuI3F1aWxsLmVuYWJsZShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQobG9hZGluZ0lkKTtcclxuICAgICAgICAgICAgICAgICAgZnVuYy5maW5hbGx5KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiNxdWlsbC5lbmFibGUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKGxvYWRpbmdJZCk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodGhpcy5xdWlsbENvbmZpZy50b29sYmFyLmNvbnRhaW5lci50b1N0cmluZygpLmluY2x1ZGVzKCdjdXN0b21GaWxlJykpIHtcclxuICAgIC8vICAgdGhpcy50aW1lckxvYWRRdWlsbFRvb2xiYXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5xbC1jdXN0b21GaWxlJykpIHtcclxuICAgIC8vICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lckxvYWRRdWlsbFRvb2xiYXIpO1xyXG4gICAgLy8gICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uLnFsLWN1c3RvbUZpbGUnKS5pbm5lckhUTUwgPSB0aGlzLmN1c3RvbUJ1dHRvbkZpbGVTVkc7XHJcbiAgICAvLyAgICAgICBjb25zdCBjdXN0b21CdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b24ucWwtY3VzdG9tRmlsZScpO1xyXG4gICAgLy8gICAgICAgaWYgKGN1c3RvbUJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJykgIT09ICcxJykge1xyXG4gICAgLy8gICAgICAgICBjdXN0b21CdXR0b24uc2V0QXR0cmlidXRlKCdsaXN0ZW5lcicsICcxJyk7XHJcbiAgICAvLyAgICAgICAgIGN1c3RvbUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY3VzdG9tRmlsZUhhbmRsZXIpO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSwgMTAwMCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyBjdXN0b21GaWxlSGFuZGxlciA9IChlKSA9PiB7XHJcbiAgLy8gICBjb25zdCBjdXN0b21CdXR0b24gPSBlLmN1cnJlbnRUYXJnZXQ7XHJcbiAgLy8gICBjb25zdCBxdWlsbFRvb2xiYXIgPSBjdXN0b21CdXR0b24uY2xvc2VzdCgnLnFsLWZvcm1hdHMnKS5jbG9zZXN0KCcucWwtdG9vbGJhcicpO1xyXG4gIC8vICAgY29uc3QgcXVpbGxCb3ggPSBxdWlsbFRvb2xiYXIuY2xvc2VzdCgnLnFsLWZvcm1hdHMnKVxyXG4gIC8vICAgbGV0IGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCA9IHF1aWxsVG9vbGJhci5xdWVyeVNlbGVjdG9yKCdpbnB1dC5xbC1jdXN0b21GaWxlW3R5cGU9ZmlsZV0nKTtcclxuICAvLyAgIGlmIChmaWxlSW5wdXQgPT0gbnVsbCkge1xyXG4gIC8vICAgICBmaWxlSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgQ29uc3RhbnRzLkZJTEUpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCAnKicpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuY2xhc3NMaXN0LmFkZCgncWwtY3VzdG9tRmlsZScpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gIC8vICAgICAgIGNvbnN0IGZpbGVzID0gZmlsZUlucHV0LmZpbGVzO1xyXG4gIC8vICAgICAgIGlmICghZmlsZXMgfHwgIWZpbGVzLmxlbmd0aCkge1xyXG4gIC8vICAgICAgICAgcmV0dXJuO1xyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAvLyAgICAgICBmb3JtRGF0YS5hcHBlbmQoQ29uc3RhbnRzLkZJTEUsIGZpbGVzWzBdKTtcclxuICAvLyAgICAgICBsZXQgcmFuZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncXVpbGxSYW5nZScpO1xyXG4gIC8vICAgICAgIGlmIChyYW5nZSkge1xyXG4gIC8vICAgICAgICAgcmFuZ2UgPSBKU09OLnBhcnNlKHJhbmdlKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgdGhpcy5xdWlsbEV2ZW50LmVuYWJsZShmYWxzZSk7XHJcbiAgLy8gICAgICAgdGhpcy4jdXBsb2FkRmlsZShmb3JtRGF0YSwgdGhpcy5xdWlsbEV2ZW50LCByYW5nZSwgZmlsZUlucHV0LCBxdWlsbFRvb2xiYXIuY2xvc2VzdCgncXVpbGwtZWRpdG9yJykuaWQpO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyAgICAgcXVpbGxUb29sYmFyLmFwcGVuZENoaWxkKGZpbGVJbnB1dCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBmaWxlSW5wdXQuY2xpY2soKTtcclxuICAvLyB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHZhbCk7XHJcbiAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh2YWwpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNmb3JtPy5yZW1vdmVDb250cm9sKHRoaXMuI25hbWUpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAjdXBkYXRlVmFsaWRhdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1pbmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMubWlubGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYXhsZW5ndGggPiAwKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heGxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcbiAgI3F1aWxsOiBRdWlsbDtcclxuICBlZGl0b3JJbml0ID0gKHF1aWxsOiBRdWlsbCkgPT4ge1xyXG4gICAgdGhpcy4jcXVpbGwgPSBxdWlsbDtcclxuICAgIHRoaXMucXVpbGxFdmVudCA9IHF1aWxsO1xyXG4gICAgLy8gY29uc3QgdHh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XHJcbiAgICAvLyB0eHRBcmVhLnN0eWxlLmNzc1RleHQgPVxyXG4gICAgLy8gICAnd2lkdGg6IDEwMCU7bWFyZ2luOiAwcHg7YmFja2dyb3VuZDogcmdiKDI5LCAyOSwgMjkpOycgK1xyXG4gICAgLy8gICAnYm94LXNpemluZzogYm9yZGVyLWJveDtjb2xvcjogcmdiKDIwNCwgMjA0LCAyMDQpOycgK1xyXG4gICAgLy8gICAnZm9udC1zaXplOiAxNXB4O291dGxpbmU6IG5vbmU7cGFkZGluZzogMjBweDsnICtcclxuICAgIC8vICAgJ2xpbmUtaGVpZ2h0OiAyNHB4O2ZvbnQtZmFtaWx5OiBDb25zb2xhcywgTWVubG8sIE1vbmFjbywgJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsnICtcclxuICAgIC8vICAgJ3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDA7Ym90dG9tOiAwO2JvcmRlcjogbm9uZTtkaXNwbGF5Om5vbmUnO1xyXG5cclxuICAgIC8vIGNvbnN0IGh0bWxFZGl0b3IgPSBxdWlsbC5hZGRDb250YWluZXIoJ3FsLWN1c3RvbScpO1xyXG4gICAgLy8gaHRtbEVkaXRvci5hcHBlbmRDaGlsZCh0eHRBcmVhKTtcclxuXHJcbiAgICAvLyBjb25zdCBteUVkaXRvciA9IHF1aWxsLmNvbnRhaW5lcjtcclxuICAgIC8vIHF1aWxsLm9uKCd0ZXh0LWNoYW5nZScsIChkZWx0YSwgb2xkRGVsdGEsIHNvdXJjZSkgPT4ge1xyXG4gICAgLy8gICBjb25zdCBodG1sID0gbXlFZGl0b3IuY2hpbGRyZW5bMF0uaW5uZXJIVE1MO1xyXG4gICAgLy8gICB0eHRBcmVhLnZhbHVlID0gaHRtbDtcclxuICAgIC8vICAgLy8gaWYgKHF1aWxsLmdldExlbmd0aCgpID4gdGhpcy5tYXhsZW5ndGgpIHtcclxuICAgIC8vICAgLy8gICBxdWlsbC5kZWxldGVUZXh0KHRoaXMubWF4bGVuZ3RoLCBxdWlsbC5nZXRMZW5ndGgoKSk7XHJcbiAgICAvLyAgIC8vIH1cclxuICAgIC8vICAgLy8gdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShodG1sKTtcclxuICAgIC8vIH0pO1xyXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICB0aGlzLiNpbml0VXBsb2FkSW1hZ2UocXVpbGwpO1xyXG4gICAgLy8gdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgLy8gICBxdWlsbC5nZXRNb2R1bGUoJ3Rvb2xiYXInKS5hZGRIYW5kbGVyKCdpbWFnZScsIGZ1bmN0aW9uICgpIHtcclxuICAgIC8vICAgICBsZXQgZmlsZUlucHV0ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXScpO1xyXG5cclxuICAgIC8vICAgICBpZiAoZmlsZUlucHV0ID09IG51bGwpIHtcclxuICAgIC8vICAgICAgIGZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgICAvLyAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgQ29uc3RhbnRzLkZJTEUpO1xyXG4gICAgLy8gICAgICAgZmlsZUlucHV0LnNldEF0dHJpYnV0ZSgnYWNjZXB0JywgJ2ltYWdlL3BuZywgaW1hZ2UvZ2lmLCBpbWFnZS9qcGVnLCBpbWFnZS9ibXAsIGltYWdlL3gtaWNvbicpO1xyXG4gICAgLy8gICAgICAgZmlsZUlucHV0LmNsYXNzTGlzdC5hZGQoJ3FsLWltYWdlJyk7XHJcbiAgICAvLyAgICAgICBmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgLy8gICAgICAgICBjb25zdCBmaWxlcyA9IGZpbGVJbnB1dC5maWxlcztcclxuICAgIC8vICAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbih0cnVlKTtcclxuICAgIC8vICAgICAgICAgaWYgKCFmaWxlcyB8fCAhZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAvLyAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgLy8gICAgICAgICB9XHJcblxyXG4gICAgLy8gICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgLy8gICAgICAgICBmb3JtRGF0YS5hcHBlbmQoQ29uc3RhbnRzLkZJTEUsIGZpbGVzWzBdKTtcclxuXHJcbiAgICAvLyAgICAgICAgIHRoaXMucXVpbGwuZW5hYmxlKGZhbHNlKTtcclxuXHJcbiAgICAvLyAgICAgICAgIHNlbGYuI3VwbG9hZEltYWdlKGZvcm1EYXRhLCBxdWlsbCwgcmFuZ2UsIGZpbGVJbnB1dCk7XHJcbiAgICAvLyAgICAgICB9KTtcclxuICAgIC8vICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKGZpbGVJbnB1dCk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGZpbGVJbnB1dC5jbGljaygpO1xyXG4gICAgLy8gICB9KTtcclxuXHJcbiAgICAvLyB9KTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgI2luaXRVcGxvYWRJbWFnZSA9IChxdWlsbDogUXVpbGwpID0+IHtcclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICBxdWlsbC5nZXRNb2R1bGUoJ3Rvb2xiYXInKS5hZGRIYW5kbGVyKCdpbWFnZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgZmlsZUlucHV0ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXScpO1xyXG4gICAgICAgIGlmIChmaWxlSW5wdXQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgZmlsZUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcclxuICAgICAgICAgIGZpbGVJbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCBDb25zdGFudHMuRklMRSk7XHJcbiAgICAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCAnaW1hZ2UvcG5nLCBpbWFnZS9naWYsIGltYWdlL2pwZWcsIGltYWdlL2JtcCwgaW1hZ2UveC1pY29uJyk7XHJcbiAgICAgICAgICBmaWxlSW5wdXQuY2xhc3NMaXN0LmFkZCgncWwtaW1hZ2UnKTtcclxuICAgICAgICAgIGZpbGVJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gZmlsZUlucHV0LmZpbGVzO1xyXG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoIWZpbGVzIHx8ICFmaWxlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKENvbnN0YW50cy5GSUxFLCBmaWxlc1swXSk7XHJcbiAgICAgICAgICAgIHRoaXMucXVpbGwuZW5hYmxlKGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gc2VsZi4jdXBsb2FkSW1hZ2UoZm9ybURhdGEsIHF1aWxsLCByYW5nZSwgZmlsZUlucHV0KTtcclxuICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uPy51cGxvYWRJbWFnZShmb3JtRGF0YSwgc2VsZi5hcmdzKS50aGVuKHVybCA9PiB7XHJcbiAgICAgICAgICAgICAgc2VsZi5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuZW5hYmxlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgLy8gcXVpbGwuZWRpdG9yLmluc2VydEVtYmVkKHJhbmdlLmluZGV4LCAnaW1hZ2UnLCByZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpO1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuZ2V0TW9kdWxlKCdjbGlwYm9hcmQnKS5kYW5nZXJvdXNseVBhc3RlSFRNTChyYW5nZS5pbmRleCwgJzxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCInICsgKHVybCB8fCAnJylcclxuICAgICAgICAgICAgICAgICAgKyAnXCI+PGltZyBzcmM9XCInICsgKHVybCB8fCAnJykgKyAnXCIgYWx0PVwiYy1pbWFnZS1lZGl0b3ItcXVpbGxcIj48L2E+JywgJ3VzZXInKTtcclxuICAgICAgICAgICAgICAgIC8vIHF1aWxsLmluc2VydFRleHQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuc2V0Q29udGVudHMoY29udGVudCk7XHJcbiAgICAgICAgICAgICAgICBxdWlsbC5zZXRTZWxlY3Rpb24ocmFuZ2UuaW5kZXggKyAxLCAndXNlcicpO1xyXG4gICAgICAgICAgICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZChmaWxlSW5wdXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWxlSW5wdXQuY2xpY2soKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbk1vZGVsQ2hhbmdlID0gKHZhbDogc3RyaW5nKSA9PiB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbCk7XHJcbiAgICB0aGlzLm1vZGVsSFRNTCA9IHZhbDtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja1Nob3dIdG1sRWRpdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zaG93SHRtbEVkaXRvciA9ICF0aGlzLnNob3dIdG1sRWRpdG9yO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyAjdXBsb2FkSW1hZ2UgPSAoZm9ybURhdGEsIHF1aWxsLCByYW5nZSwgZmlsZUlucHV0KSA9PiB7XHJcbiAgLy8gICBpZiAoIXRoaXMudXJsVXBsb2FkSW1hZ2UpIHtcclxuICAvLyAgICAgdGhpcy51cmxVcGxvYWRJbWFnZSA9ICcvcGFydG5lci92Mi9tZXJjaGFuZGlzZS9maWxlL3VwbG9hZHVzZXJmaWxlJztcclxuICAvLyAgIH1cclxuICAvLyAgIC8vIHRoaXMuZG9tYWluID0gJ2h0dHBzOi8vYXBpLWNvbW1lcmNlLXFjLnZpbmlkLmRldic7XHJcbiAgLy8gICB0aGlzLnNkQXBpU2VydmljZS5wb3N0KHRoaXMudXJsVXBsb2FkSW1hZ2UsIGZvcm1EYXRhKS50aGVuKChyZXNwOiBhbnkpID0+IHtcclxuICAvLyAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gIC8vICAgICAgIHF1aWxsLmVuYWJsZSh0cnVlKTtcclxuICAvLyAgICAgICAvLyBxdWlsbC5lZGl0b3IuaW5zZXJ0RW1iZWQocmFuZ2UuaW5kZXgsICdpbWFnZScsIHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJyk7XHJcbiAgLy8gICAgICAgcXVpbGwuZ2V0TW9kdWxlKCdjbGlwYm9hcmQnKS5kYW5nZXJvdXNseVBhc3RlSFRNTChyYW5nZS5pbmRleCwgJzxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCInICsgKHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJylcclxuICAvLyAgICAgICAgICsgJ1wiPjxpbWcgc3JjPVwiJyArIChyZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpICsgJ1wiIGFsdD1cImMtaW1hZ2UtZWRpdG9yLXF1aWxsXCI+PC9hPicsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuaW5zZXJ0VGV4dCgpO1xyXG4gIC8vICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldENvbnRlbnRzKGNvbnRlbnQpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihyYW5nZS5pbmRleCArIDEsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAvLyB9XHJcblxyXG4gIC8vICN1cGxvYWRGaWxlID0gKGZvcm1EYXRhLCBxdWlsbCwgcmFuZ2UsIGZpbGVJbnB1dCwgbG9hZGluZ0lEKSA9PiB7XHJcbiAgLy8gICBpZiAoIXRoaXMudXJsVXBsb2FkRmlsZSkge1xyXG4gIC8vICAgICB0aGlzLnVybFVwbG9hZEZpbGUgPSAnL3BhcnRuZXIvdjIvbWVyY2hhbmRpc2UvZmlsZS91cGxvYWR1c2VyZmlsZSc7XHJcbiAgLy8gICB9XHJcbiAgLy8gICAvLyB0aGlzLmRvbWFpbiA9ICdodHRwczovL2FwaS1jb21tZXJjZS1xYy52aW5pZC5kZXYnO1xyXG4gIC8vICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgnI2JveC0nICsgbG9hZGluZ0lEKTtcclxuICAvLyAgIHRoaXMuc2RBcGlTZXJ2aWNlLnBvc3QodGhpcy51cmxVcGxvYWRGaWxlLCBmb3JtRGF0YSkudGhlbigocmVzcDogYW55KSA9PiB7XHJcbiAgLy8gICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAvLyAgICAgICBxdWlsbC5lbmFibGUodHJ1ZSk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuZWRpdG9yLmluc2VydEVtYmVkKHJhbmdlLmluZGV4LCAnaW1hZ2UnLCByZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpO1xyXG4gIC8vICAgICAgIHF1aWxsLmdldE1vZHVsZSgnY2xpcGJvYXJkJykuZGFuZ2Vyb3VzbHlQYXN0ZUhUTUwocmFuZ2UuaW5kZXgsICc8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiJyArIChyZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpXHJcbiAgLy8gICAgICAgICArICdcIj4nICsgKHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJykgKyAnPC9hPicsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuaW5zZXJ0VGV4dCgpO1xyXG4gIC8vICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldENvbnRlbnRzKGNvbnRlbnQpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihyYW5nZS5pbmRleCArIDEsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3AoJyNib3gtJyArIGxvYWRpbmdJRCk7XHJcbiAgLy8gICB9KS5jYXRjaCgoZXIpID0+IHtcclxuICAvLyAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCcjYm94LScgKyBsb2FkaW5nSUQpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAvLyB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZChlOiBTZWxlY3Rpb25DaGFuZ2UpIHtcclxuICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdxdWlsbFJhbmdlJywgZS5yYW5nZSA/IEpTT04uc3RyaW5naWZ5KGUucmFuZ2UpIDogKGUub2xkUmFuZ2UgPyBKU09OLnN0cmluZ2lmeShlLm9sZFJhbmdlKSA6IG51bGwpKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdxdWlsbFJhbmdlJywgZS5lZGl0b3IuZ2V0U2VsZWN0aW9uKCkgPyBKU09OLnN0cmluZ2lmeShlLmVkaXRvci5nZXRTZWxlY3Rpb24oKSkgOiBudWxsKTtcclxuICB9XHJcblxyXG4gIG9uQ29udGVudENoYW5nZWQoZTogQ29udGVudENoYW5nZSkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3F1aWxsUmFuZ2UnLCBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIGluZGV4OiAoZS5lZGl0b3IuZ2V0TGVuZ3RoKCkgPyBlLmVkaXRvci5nZXRMZW5ndGgoKSAtIDEgOiAwKSxcclxuICAgICAgbGVuZ3RoOiAwXHJcbiAgICB9KSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
432
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZWRpdG9yLyIsInNvdXJjZXMiOlsic3JjL2xpYi9lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlELE9BQU8sRUFBRSxhQUFhLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFTckUsTUFBTSxPQUFPLFFBQVE7SUFrSm5CLFlBQ1UsTUFBYyxFQUNkLEdBQXNCLEVBQ2EsYUFBbUM7UUFGdEUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ2Esa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBcEpoRixnQkFBUSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFDO1FBQ3hCLE9BQUUsR0FBVyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzdCLHdCQUFnQixJQUFJLFlBQVksRUFB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O1lBQ2hELEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUQsTUFBTSxFQUFFLENBQUM7U0FDVixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Ozs7WUF6YkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQiw0a0VBQXNDO2dCQUV0QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQXhCQyxNQUFNO1lBTk4saUJBQWlCOzRDQW9MZCxNQUFNLFNBQUMsYUFBYSxjQUFHLFFBQVE7OztxQkFqSmpDLFNBQVMsU0FBQyxRQUFRO29CQUNsQixLQUFLO29CQUVMLEtBQUs7dUJBU0wsS0FBSzt3QkFXTCxLQUFLO3lCQU9MLEtBQUssU0FBQyxXQUFXO3lCQU9qQixLQUFLLFNBQUMsV0FBVzswQkFLakIsTUFBTTswQkFFTixLQUFLO3FCQUVMLEtBQUs7bUJBRUwsS0FBSztxQkFJTCxLQUFLO21CQUVMLEtBQUs7c0JBVUwsS0FBSzsrQkFDTCxLQUFLOzRCQUtMLEtBQUs7NEJBQ0wsS0FBSzt5QkFDTCxZQUFZLFNBQUMsbUJBQW1CO3VCQW9FaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Q2hhbmdlLCBRdWlsbEVkaXRvckNvbXBvbmVudCwgU2VsZWN0aW9uQ2hhbmdlIH0gZnJvbSAnbmd4LXF1aWxsJztcclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgTmdGb3JtLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi9jb25zdGFudCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTZEFwaVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2FwaSc7XHJcbmltcG9ydCAncXVpbGwtbWVudGlvbic7XHJcbmltcG9ydCB7IFNkTGFiZWxEZWZEaXJlY3RpdmUgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2NvbW1vbic7XHJcbmltcG9ydCB7IFNkTG9hZGluZ1NlcnZpY2UgfSBmcm9tIFwiQHNkLWFuZ3VsYXIvY29yZS9sb2FkaW5nXCI7XHJcbmltcG9ydCB7IEVESVRPUl9DT05GSUcsIElFZGl0b3JDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9lZGl0b3IubW9kZWwnO1xyXG5pbXBvcnQgUXVpbGwgZnJvbSAncXVpbGwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEVkaXRvciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAjbmFtZSA9IGBOJHt1dWlkLnY0KCl9YDtcclxuICBpZDogc3RyaW5nID0gYEkke3V1aWQudjQoKX1gO1xyXG4gICNzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdG9yJykgZWRpdG9yOiBRdWlsbEVkaXRvckNvbXBvbmVudDtcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xyXG4gICNtb2RlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNldCBtb2RlbCh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy4jbW9kZWwgPSB2YWw7XHJcbiAgICB0aGlzLm1vZGVsSFRNTCA9IHZhbDtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy4jbW9kZWwsIHtcclxuICAgICAgZW1pdEV2ZW50OiBmYWxzZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsOiBib29sZWFuIHwgJycpIHtcclxuICAgIHZhbCA9ICh2YWwgPT09ICcnKSB8fCB2YWw7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlcXVpcmVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBwUmVxdWlyZWQodmFsOiBib29sZWFuIHwgJycpIHtcclxuICAgIHRoaXMucmVxdWlyZWQgPSAodmFsID09PSAnJykgfHwgdmFsO1xyXG4gICAgdGhpcy4jdXBkYXRlVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBtaW5sZW5ndGg6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KCdtaW5sZW5ndGgnKSBzZXQgX21pbmxlbmd0aCh2YWw6IG51bWJlcikge1xyXG4gICAgdGhpcy5taW5sZW5ndGggPSArdmFsO1xyXG4gICAgdGhpcy4jdXBkYXRlVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBtYXhsZW5ndGg6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KCdtYXhsZW5ndGgnKSBzZXQgX21heGxlbmd0aCh2YWw6IG51bWJlcikge1xyXG4gICAgdGhpcy5tYXhsZW5ndGggPSArdmFsO1xyXG4gICAgdGhpcy4jdXBkYXRlVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBzdHlsZXM6IGFueSA9IHsgaGVpZ2h0OiAnMjUwcHgnIH07XHJcblxyXG4gIEBJbnB1dCgpIGFyZ3M6IGFueTtcclxuXHJcbiAgZm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgQElucHV0KCkgZG9tYWluID0gJyc7XHJcbiAgI2Zvcm06IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBzZXQgZm9ybSh2YWw6IE5nRm9ybSB8IEZvcm1Hcm91cCkge1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICBpZiAodmFsIGluc3RhbmNlb2YgTmdGb3JtKSB7XHJcbiAgICAgICAgdGhpcy4jZm9ybSA9IHZhbC5mb3JtO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuI2Zvcm0gPSB2YWw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHRvb2xiYXI6IGFueTtcclxuICBASW5wdXQoKSBlbmFibGVIVE1MQnV0dG9uID0gZmFsc2U7XHJcbiAgc2hvd0h0bWxFZGl0b3IgPSBmYWxzZTtcclxuICBtb2RlbEhUTUw6IHN0cmluZztcclxuXHJcbiAgcXVpbGxFdmVudDogYW55O1xyXG4gIEBJbnB1dCgpIG1lbnRpb25WYWx1ZXM6IHsgaWQ6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbGluaz86IHN0cmluZyB9W107XHJcbiAgQElucHV0KCkgaGFzaFRhZ1ZhbHVlczogeyBpZDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBsaW5rPzogc3RyaW5nIH1bXTtcclxuICBAQ29udGVudENoaWxkKFNkTGFiZWxEZWZEaXJlY3RpdmUpIHNkTGFiZWxEZWY6IFNkTGFiZWxEZWZEaXJlY3RpdmU7XHJcbiAgcXVpbGxDb25maWcgPSB7XHJcbiAgICAvLyB0b29sYmFyOiAnLnRvb2xiYXInLFxyXG4gICAgdG9vbGJhcjoge1xyXG4gICAgICBjb250YWluZXI6IFtcclxuICAgICAgICBbJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdzdHJpa2UnXSwgICAgICAgIC8vIHRvZ2dsZWQgYnV0dG9uc1xyXG4gICAgICAgIFsnYmxvY2txdW90ZScsICdjb2RlLWJsb2NrJ10sXHJcblxyXG4gICAgICAgIFt7ICdoZWFkZXInOiAxIH0sIHsgJ2hlYWRlcic6IDIgfV0sICAgICAgICAgICAgICAgLy8gY3VzdG9tIGJ1dHRvbiB2YWx1ZXNcclxuICAgICAgICBbeyAnbGlzdCc6ICdvcmRlcmVkJyB9LCB7ICdsaXN0JzogJ2J1bGxldCcgfV0sXHJcbiAgICAgICAgW3sgJ3NjcmlwdCc6ICdzdWInIH0sIHsgJ3NjcmlwdCc6ICdzdXBlcicgfV0sICAgICAgLy8gc3VwZXJzY3JpcHQvc3Vic2NyaXB0XHJcbiAgICAgICAgW3sgJ2luZGVudCc6ICctMScgfSwgeyAnaW5kZW50JzogJysxJyB9XSwgICAgICAgICAgLy8gb3V0ZGVudC9pbmRlbnRcclxuICAgICAgICBbeyAnZGlyZWN0aW9uJzogJ3J0bCcgfV0sICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRleHQgZGlyZWN0aW9uXHJcblxyXG4gICAgICAgIFt7ICdzaXplJzogWydzbWFsbCcsIGZhbHNlLCAnbGFyZ2UnLCAnaHVnZSddIH1dLCAgLy8gY3VzdG9tIGRyb3Bkb3duXHJcbiAgICAgICAgW3sgJ2hlYWRlcic6IFsxLCAyLCAzLCA0LCA1LCA2LCBmYWxzZV0gfV0sXHJcblxyXG4gICAgICAgIFt7ICdjb2xvcic6IFtdIH0sIHsgJ2JhY2tncm91bmQnOiBbXSB9XSwgICAgICAgICAgLy8gZHJvcGRvd24gd2l0aCBkZWZhdWx0cyBmcm9tIHRoZW1lXHJcbiAgICAgICAgW3sgJ2ZvbnQnOiBbXSB9XSxcclxuICAgICAgICBbeyAnYWxpZ24nOiBbXSB9XSxcclxuXHJcbiAgICAgICAgWydjbGVhbiddLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGZvcm1hdHRpbmcgYnV0dG9uXHJcblxyXG4gICAgICAgIFsnbGluaycsICdpbWFnZScsICd2aWRlbyddICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbmsgYW5kIGltYWdlLCB2aWRlb1xyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAgbWVudGlvbjoge1xyXG4gICAgICBhbGxvd2VkQ2hhcnM6IC9eW0EtWmEtejAtOVxcc8OFw4TDlsOlw6TDti5fLV0qJC8sXHJcbiAgICAgIG1lbnRpb25EZW5vdGF0aW9uQ2hhcnM6IFsnQCcsICcjJ10sXHJcbiAgICAgIHNvdXJjZTogKHNlYXJjaFRlcm0sIHJlbmRlckxpc3QsIG1lbnRpb25DaGFyKSA9PiB7XHJcbiAgICAgICAgaWYgKCh0aGlzLm1lbnRpb25WYWx1ZXMgJiYgbWVudGlvbkNoYXIgPT09ICdAJykgfHwgKHRoaXMuaGFzaFRhZ1ZhbHVlcyAmJiBtZW50aW9uQ2hhciA9PT0gJyMnKSkge1xyXG4gICAgICAgICAgbGV0IHZhbHVlcztcclxuICAgICAgICAgIGlmIChtZW50aW9uQ2hhciA9PT0gJ0AnKSB7XHJcbiAgICAgICAgICAgIHZhbHVlcyA9IHRoaXMubWVudGlvblZhbHVlcztcclxuICAgICAgICAgIH0gZWxzZSBpZiAobWVudGlvbkNoYXIgPT09ICcjJykge1xyXG4gICAgICAgICAgICB2YWx1ZXMgPSB0aGlzLmhhc2hUYWdWYWx1ZXM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZXMgPSBbXTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoc2VhcmNoVGVybS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmVuZGVyTGlzdCh2YWx1ZXMsIHNlYXJjaFRlcm0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IFtdO1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgICAgICAgaWYgKH52YWx1ZXNbaV0udmFsdWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaCh2YWx1ZXNbaV0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZW5kZXJMaXN0KG1hdGNoZXMsIHNlYXJjaFRlcm0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBrZXlib2FyZDoge1xyXG4gICAgICBiaW5kaW5nczoge1xyXG4gICAgICAgIGVudGVyOiB7XHJcbiAgICAgICAgICBrZXk6IDEzLFxyXG4gICAgICAgICAgaGFuZGxlcjogKHJhbmdlLCBjb250ZXh0KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgY3VzdG9tQnV0dG9uRmlsZVNWRyA9ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgMjQgMjRcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGZpbGw9XCIjMDAwMDAwXCI+PGc+PHJlY3QgZmlsbD1cIm5vbmVcIiBoZWlnaHQ9XCIyNFwiIHdpZHRoPVwiMjRcIi8+PHBhdGggZD1cIk0yMC40MSw4LjQxbC00LjgzLTQuODNDMTUuMjEsMy4yMSwxNC43LDMsMTQuMTcsM0g1QzMuOSwzLDMsMy45LDMsNXYxNGMwLDEuMSwwLjksMiwyLDJoMTRjMS4xLDAsMi0wLjksMi0yVjkuODMgQzIxLDkuMywyMC43OSw4Ljc5LDIwLjQxLDguNDF6IE03LDdoN3YySDdWN3ogTTE3LDE3SDd2LTJoMTBWMTd6IE0xNywxM0g3di0yaDEwVjEzelwiLz48L2c+PC9zdmc+JztcclxuICBAT3V0cHV0KCkgc2RDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICB0aW1lckxvYWRRdWlsbFRvb2xiYXIgPSBudWxsO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoRURJVE9SX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb25maWd1cmF0aW9uOiBJRWRpdG9yQ29uZmlndXJhdGlvbixcclxuICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuI2Zvcm0/LmFkZENvbnRyb2wodGhpcy4jbmFtZSwgdGhpcy5mb3JtQ29udHJvbCk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9vbGJhcikge1xyXG4gICAgICB0aGlzLnF1aWxsQ29uZmlnLnRvb2xiYXIuY29udGFpbmVyID0gdGhpcy50b29sYmFyO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgYWN0aW9uIG9mICh0aGlzLmNvbmZpZ3VyYXRpb24/LmFjdGlvbnMgfHwgW10pKSB7XHJcbiAgICAgIGlmICh0aGlzLnF1aWxsQ29uZmlnLnRvb2xiYXIuY29udGFpbmVyLnRvU3RyaW5nKCkuaW5jbHVkZXMoYWN0aW9uLmtleSkpIHtcclxuICAgICAgICBjb25zdCBxbEtleSA9IGBidXR0b24ucWwtJHthY3Rpb24ua2V5fWBcclxuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHFsS2V5KSkge1xyXG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcclxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihxbEtleSkuaW5uZXJIVE1MID0gdGhpcy5jdXN0b21CdXR0b25GaWxlU1ZHO1xyXG4gICAgICAgICAgICBjb25zdCBjdXN0b21BY3Rpb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHFsS2V5KTtcclxuICAgICAgICAgICAgaWYgKGN1c3RvbUFjdGlvbi5nZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJykgIT09ICcxJykge1xyXG4gICAgICAgICAgICAgIGN1c3RvbUFjdGlvbi5zZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJywgJzEnKTtcclxuICAgICAgICAgICAgICBjdXN0b21BY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncXVpbGxSYW5nZScpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDsgLy8gTOG6pXkgZWxlbWVudCBj4bunYSBhY3Rpb24gxJHGsOG7o2MgY2xpY2tcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2xiYXIgPSBlbGVtZW50LmNsb3Nlc3QoJy5xbC1mb3JtYXRzJykuY2xvc2VzdCgnLnFsLXRvb2xiYXInKTsgLy8gTOG6pXkgdG9vbGJhciBlbGVtZW50XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IHRvb2xiYXIuY2xvc2VzdCgncXVpbGwtZWRpdG9yJykuaWQ7IC8vIEzhuqV5IGlkIGPhu6dhIGVkaXRvciDEkeG7gyBwaOG7pWMgduG7pSBsb2FkaW5nXHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2FkaW5nSWQgPSBgI2JveC0ke2lkfWA7IC8vIGlkIGPhu6dhIGVkaXRvcjtcclxuICAgICAgICAgICAgICAgIGFjdGlvbi5jbGljayhlLCB7XHJcbiAgICAgICAgICAgICAgICAgIHFsS2V5LFxyXG4gICAgICAgICAgICAgICAgICBlbGVtZW50LFxyXG4gICAgICAgICAgICAgICAgICBsb2FkaW5nSWQsXHJcbiAgICAgICAgICAgICAgICAgIGN1cnNvclBvc2l0aW9uOiBKU09OLnBhcnNlKGN1cnNvclBvc2l0aW9uKSxcclxuICAgICAgICAgICAgICAgICAgcXVpbGw6IHRoaXMuI3F1aWxsLFxyXG4gICAgICAgICAgICAgICAgICBhcmdzOiB0aGlzLmFyZ3NcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodGhpcy5xdWlsbENvbmZpZy50b29sYmFyLmNvbnRhaW5lci50b1N0cmluZygpLmluY2x1ZGVzKCdjdXN0b21GaWxlJykpIHtcclxuICAgIC8vICAgdGhpcy50aW1lckxvYWRRdWlsbFRvb2xiYXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5xbC1jdXN0b21GaWxlJykpIHtcclxuICAgIC8vICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lckxvYWRRdWlsbFRvb2xiYXIpO1xyXG4gICAgLy8gICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uLnFsLWN1c3RvbUZpbGUnKS5pbm5lckhUTUwgPSB0aGlzLmN1c3RvbUJ1dHRvbkZpbGVTVkc7XHJcbiAgICAvLyAgICAgICBjb25zdCBjdXN0b21CdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b24ucWwtY3VzdG9tRmlsZScpO1xyXG4gICAgLy8gICAgICAgaWYgKGN1c3RvbUJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJykgIT09ICcxJykge1xyXG4gICAgLy8gICAgICAgICBjdXN0b21CdXR0b24uc2V0QXR0cmlidXRlKCdsaXN0ZW5lcicsICcxJyk7XHJcbiAgICAvLyAgICAgICAgIGN1c3RvbUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY3VzdG9tRmlsZUhhbmRsZXIpO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSwgMTAwMCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyBjdXN0b21GaWxlSGFuZGxlciA9IChlKSA9PiB7XHJcbiAgLy8gICBjb25zdCBjdXN0b21CdXR0b24gPSBlLmN1cnJlbnRUYXJnZXQ7XHJcbiAgLy8gICBjb25zdCBxdWlsbFRvb2xiYXIgPSBjdXN0b21CdXR0b24uY2xvc2VzdCgnLnFsLWZvcm1hdHMnKS5jbG9zZXN0KCcucWwtdG9vbGJhcicpO1xyXG4gIC8vICAgY29uc3QgcXVpbGxCb3ggPSBxdWlsbFRvb2xiYXIuY2xvc2VzdCgnLnFsLWZvcm1hdHMnKVxyXG4gIC8vICAgbGV0IGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCA9IHF1aWxsVG9vbGJhci5xdWVyeVNlbGVjdG9yKCdpbnB1dC5xbC1jdXN0b21GaWxlW3R5cGU9ZmlsZV0nKTtcclxuICAvLyAgIGlmIChmaWxlSW5wdXQgPT0gbnVsbCkge1xyXG4gIC8vICAgICBmaWxlSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgQ29uc3RhbnRzLkZJTEUpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCAnKicpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuY2xhc3NMaXN0LmFkZCgncWwtY3VzdG9tRmlsZScpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gIC8vICAgICAgIGNvbnN0IGZpbGVzID0gZmlsZUlucHV0LmZpbGVzO1xyXG4gIC8vICAgICAgIGlmICghZmlsZXMgfHwgIWZpbGVzLmxlbmd0aCkge1xyXG4gIC8vICAgICAgICAgcmV0dXJuO1xyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAvLyAgICAgICBmb3JtRGF0YS5hcHBlbmQoQ29uc3RhbnRzLkZJTEUsIGZpbGVzWzBdKTtcclxuICAvLyAgICAgICBsZXQgcmFuZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncXVpbGxSYW5nZScpO1xyXG4gIC8vICAgICAgIGlmIChyYW5nZSkge1xyXG4gIC8vICAgICAgICAgcmFuZ2UgPSBKU09OLnBhcnNlKHJhbmdlKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgdGhpcy5xdWlsbEV2ZW50LmVuYWJsZShmYWxzZSk7XHJcbiAgLy8gICAgICAgdGhpcy4jdXBsb2FkRmlsZShmb3JtRGF0YSwgdGhpcy5xdWlsbEV2ZW50LCByYW5nZSwgZmlsZUlucHV0LCBxdWlsbFRvb2xiYXIuY2xvc2VzdCgncXVpbGwtZWRpdG9yJykuaWQpO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyAgICAgcXVpbGxUb29sYmFyLmFwcGVuZENoaWxkKGZpbGVJbnB1dCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBmaWxlSW5wdXQuY2xpY2soKTtcclxuICAvLyB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHZhbCk7XHJcbiAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh2YWwpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNmb3JtPy5yZW1vdmVDb250cm9sKHRoaXMuI25hbWUpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAjdXBkYXRlVmFsaWRhdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1pbmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMubWlubGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYXhsZW5ndGggPiAwKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heGxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcbiAgI3F1aWxsOiBRdWlsbDtcclxuICBlZGl0b3JJbml0ID0gKHF1aWxsOiBRdWlsbCkgPT4ge1xyXG4gICAgdGhpcy4jcXVpbGwgPSBxdWlsbDtcclxuICAgIHRoaXMucXVpbGxFdmVudCA9IHF1aWxsO1xyXG4gICAgLy8gY29uc3QgdHh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XHJcbiAgICAvLyB0eHRBcmVhLnN0eWxlLmNzc1RleHQgPVxyXG4gICAgLy8gICAnd2lkdGg6IDEwMCU7bWFyZ2luOiAwcHg7YmFja2dyb3VuZDogcmdiKDI5LCAyOSwgMjkpOycgK1xyXG4gICAgLy8gICAnYm94LXNpemluZzogYm9yZGVyLWJveDtjb2xvcjogcmdiKDIwNCwgMjA0LCAyMDQpOycgK1xyXG4gICAgLy8gICAnZm9udC1zaXplOiAxNXB4O291dGxpbmU6IG5vbmU7cGFkZGluZzogMjBweDsnICtcclxuICAgIC8vICAgJ2xpbmUtaGVpZ2h0OiAyNHB4O2ZvbnQtZmFtaWx5OiBDb25zb2xhcywgTWVubG8sIE1vbmFjbywgJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsnICtcclxuICAgIC8vICAgJ3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDA7Ym90dG9tOiAwO2JvcmRlcjogbm9uZTtkaXNwbGF5Om5vbmUnO1xyXG5cclxuICAgIC8vIGNvbnN0IGh0bWxFZGl0b3IgPSBxdWlsbC5hZGRDb250YWluZXIoJ3FsLWN1c3RvbScpO1xyXG4gICAgLy8gaHRtbEVkaXRvci5hcHBlbmRDaGlsZCh0eHRBcmVhKTtcclxuXHJcbiAgICAvLyBjb25zdCBteUVkaXRvciA9IHF1aWxsLmNvbnRhaW5lcjtcclxuICAgIC8vIHF1aWxsLm9uKCd0ZXh0LWNoYW5nZScsIChkZWx0YSwgb2xkRGVsdGEsIHNvdXJjZSkgPT4ge1xyXG4gICAgLy8gICBjb25zdCBodG1sID0gbXlFZGl0b3IuY2hpbGRyZW5bMF0uaW5uZXJIVE1MO1xyXG4gICAgLy8gICB0eHRBcmVhLnZhbHVlID0gaHRtbDtcclxuICAgIC8vICAgLy8gaWYgKHF1aWxsLmdldExlbmd0aCgpID4gdGhpcy5tYXhsZW5ndGgpIHtcclxuICAgIC8vICAgLy8gICBxdWlsbC5kZWxldGVUZXh0KHRoaXMubWF4bGVuZ3RoLCBxdWlsbC5nZXRMZW5ndGgoKSk7XHJcbiAgICAvLyAgIC8vIH1cclxuICAgIC8vICAgLy8gdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShodG1sKTtcclxuICAgIC8vIH0pO1xyXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICB0aGlzLiNpbml0VXBsb2FkSW1hZ2UocXVpbGwpO1xyXG4gICAgLy8gdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgLy8gICBxdWlsbC5nZXRNb2R1bGUoJ3Rvb2xiYXInKS5hZGRIYW5kbGVyKCdpbWFnZScsIGZ1bmN0aW9uICgpIHtcclxuICAgIC8vICAgICBsZXQgZmlsZUlucHV0ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXScpO1xyXG5cclxuICAgIC8vICAgICBpZiAoZmlsZUlucHV0ID09IG51bGwpIHtcclxuICAgIC8vICAgICAgIGZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgICAvLyAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgQ29uc3RhbnRzLkZJTEUpO1xyXG4gICAgLy8gICAgICAgZmlsZUlucHV0LnNldEF0dHJpYnV0ZSgnYWNjZXB0JywgJ2ltYWdlL3BuZywgaW1hZ2UvZ2lmLCBpbWFnZS9qcGVnLCBpbWFnZS9ibXAsIGltYWdlL3gtaWNvbicpO1xyXG4gICAgLy8gICAgICAgZmlsZUlucHV0LmNsYXNzTGlzdC5hZGQoJ3FsLWltYWdlJyk7XHJcbiAgICAvLyAgICAgICBmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgLy8gICAgICAgICBjb25zdCBmaWxlcyA9IGZpbGVJbnB1dC5maWxlcztcclxuICAgIC8vICAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbih0cnVlKTtcclxuICAgIC8vICAgICAgICAgaWYgKCFmaWxlcyB8fCAhZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAvLyAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgLy8gICAgICAgICB9XHJcblxyXG4gICAgLy8gICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgLy8gICAgICAgICBmb3JtRGF0YS5hcHBlbmQoQ29uc3RhbnRzLkZJTEUsIGZpbGVzWzBdKTtcclxuXHJcbiAgICAvLyAgICAgICAgIHRoaXMucXVpbGwuZW5hYmxlKGZhbHNlKTtcclxuXHJcbiAgICAvLyAgICAgICAgIHNlbGYuI3VwbG9hZEltYWdlKGZvcm1EYXRhLCBxdWlsbCwgcmFuZ2UsIGZpbGVJbnB1dCk7XHJcbiAgICAvLyAgICAgICB9KTtcclxuICAgIC8vICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKGZpbGVJbnB1dCk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGZpbGVJbnB1dC5jbGljaygpO1xyXG4gICAgLy8gICB9KTtcclxuXHJcbiAgICAvLyB9KTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgI2luaXRVcGxvYWRJbWFnZSA9IChxdWlsbDogUXVpbGwpID0+IHtcclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICBxdWlsbC5nZXRNb2R1bGUoJ3Rvb2xiYXInKS5hZGRIYW5kbGVyKCdpbWFnZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgZmlsZUlucHV0ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXScpO1xyXG4gICAgICAgIGlmIChmaWxlSW5wdXQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgZmlsZUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcclxuICAgICAgICAgIGZpbGVJbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCBDb25zdGFudHMuRklMRSk7XHJcbiAgICAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCAnaW1hZ2UvcG5nLCBpbWFnZS9naWYsIGltYWdlL2pwZWcsIGltYWdlL2JtcCwgaW1hZ2UveC1pY29uJyk7XHJcbiAgICAgICAgICBmaWxlSW5wdXQuY2xhc3NMaXN0LmFkZCgncWwtaW1hZ2UnKTtcclxuICAgICAgICAgIGZpbGVJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gZmlsZUlucHV0LmZpbGVzO1xyXG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoIWZpbGVzIHx8ICFmaWxlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKENvbnN0YW50cy5GSUxFLCBmaWxlc1swXSk7XHJcbiAgICAgICAgICAgIHRoaXMucXVpbGwuZW5hYmxlKGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gc2VsZi4jdXBsb2FkSW1hZ2UoZm9ybURhdGEsIHF1aWxsLCByYW5nZSwgZmlsZUlucHV0KTtcclxuICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uPy51cGxvYWRJbWFnZShmb3JtRGF0YSwgc2VsZi5hcmdzKS50aGVuKHVybCA9PiB7XHJcbiAgICAgICAgICAgICAgc2VsZi5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuZW5hYmxlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgLy8gcXVpbGwuZWRpdG9yLmluc2VydEVtYmVkKHJhbmdlLmluZGV4LCAnaW1hZ2UnLCByZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpO1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuZ2V0TW9kdWxlKCdjbGlwYm9hcmQnKS5kYW5nZXJvdXNseVBhc3RlSFRNTChyYW5nZS5pbmRleCwgJzxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCInICsgKHVybCB8fCAnJylcclxuICAgICAgICAgICAgICAgICAgKyAnXCI+PGltZyBzcmM9XCInICsgKHVybCB8fCAnJykgKyAnXCIgYWx0PVwiYy1pbWFnZS1lZGl0b3ItcXVpbGxcIj48L2E+JywgJ3VzZXInKTtcclxuICAgICAgICAgICAgICAgIC8vIHF1aWxsLmluc2VydFRleHQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuc2V0Q29udGVudHMoY29udGVudCk7XHJcbiAgICAgICAgICAgICAgICBxdWlsbC5zZXRTZWxlY3Rpb24ocmFuZ2UuaW5kZXggKyAxLCAndXNlcicpO1xyXG4gICAgICAgICAgICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZChmaWxlSW5wdXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWxlSW5wdXQuY2xpY2soKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbk1vZGVsQ2hhbmdlID0gKHZhbDogc3RyaW5nKSA9PiB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbCk7XHJcbiAgICB0aGlzLm1vZGVsSFRNTCA9IHZhbDtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja1Nob3dIdG1sRWRpdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zaG93SHRtbEVkaXRvciA9ICF0aGlzLnNob3dIdG1sRWRpdG9yO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyAjdXBsb2FkSW1hZ2UgPSAoZm9ybURhdGEsIHF1aWxsLCByYW5nZSwgZmlsZUlucHV0KSA9PiB7XHJcbiAgLy8gICBpZiAoIXRoaXMudXJsVXBsb2FkSW1hZ2UpIHtcclxuICAvLyAgICAgdGhpcy51cmxVcGxvYWRJbWFnZSA9ICcvcGFydG5lci92Mi9tZXJjaGFuZGlzZS9maWxlL3VwbG9hZHVzZXJmaWxlJztcclxuICAvLyAgIH1cclxuICAvLyAgIC8vIHRoaXMuZG9tYWluID0gJ2h0dHBzOi8vYXBpLWNvbW1lcmNlLXFjLnZpbmlkLmRldic7XHJcbiAgLy8gICB0aGlzLnNkQXBpU2VydmljZS5wb3N0KHRoaXMudXJsVXBsb2FkSW1hZ2UsIGZvcm1EYXRhKS50aGVuKChyZXNwOiBhbnkpID0+IHtcclxuICAvLyAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gIC8vICAgICAgIHF1aWxsLmVuYWJsZSh0cnVlKTtcclxuICAvLyAgICAgICAvLyBxdWlsbC5lZGl0b3IuaW5zZXJ0RW1iZWQocmFuZ2UuaW5kZXgsICdpbWFnZScsIHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJyk7XHJcbiAgLy8gICAgICAgcXVpbGwuZ2V0TW9kdWxlKCdjbGlwYm9hcmQnKS5kYW5nZXJvdXNseVBhc3RlSFRNTChyYW5nZS5pbmRleCwgJzxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCInICsgKHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJylcclxuICAvLyAgICAgICAgICsgJ1wiPjxpbWcgc3JjPVwiJyArIChyZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpICsgJ1wiIGFsdD1cImMtaW1hZ2UtZWRpdG9yLXF1aWxsXCI+PC9hPicsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuaW5zZXJ0VGV4dCgpO1xyXG4gIC8vICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldENvbnRlbnRzKGNvbnRlbnQpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihyYW5nZS5pbmRleCArIDEsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAvLyB9XHJcblxyXG4gIC8vICN1cGxvYWRGaWxlID0gKGZvcm1EYXRhLCBxdWlsbCwgcmFuZ2UsIGZpbGVJbnB1dCwgbG9hZGluZ0lEKSA9PiB7XHJcbiAgLy8gICBpZiAoIXRoaXMudXJsVXBsb2FkRmlsZSkge1xyXG4gIC8vICAgICB0aGlzLnVybFVwbG9hZEZpbGUgPSAnL3BhcnRuZXIvdjIvbWVyY2hhbmRpc2UvZmlsZS91cGxvYWR1c2VyZmlsZSc7XHJcbiAgLy8gICB9XHJcbiAgLy8gICAvLyB0aGlzLmRvbWFpbiA9ICdodHRwczovL2FwaS1jb21tZXJjZS1xYy52aW5pZC5kZXYnO1xyXG4gIC8vICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgnI2JveC0nICsgbG9hZGluZ0lEKTtcclxuICAvLyAgIHRoaXMuc2RBcGlTZXJ2aWNlLnBvc3QodGhpcy51cmxVcGxvYWRGaWxlLCBmb3JtRGF0YSkudGhlbigocmVzcDogYW55KSA9PiB7XHJcbiAgLy8gICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAvLyAgICAgICBxdWlsbC5lbmFibGUodHJ1ZSk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuZWRpdG9yLmluc2VydEVtYmVkKHJhbmdlLmluZGV4LCAnaW1hZ2UnLCByZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpO1xyXG4gIC8vICAgICAgIHF1aWxsLmdldE1vZHVsZSgnY2xpcGJvYXJkJykuZGFuZ2Vyb3VzbHlQYXN0ZUhUTUwocmFuZ2UuaW5kZXgsICc8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiJyArIChyZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpXHJcbiAgLy8gICAgICAgICArICdcIj4nICsgKHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJykgKyAnPC9hPicsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuaW5zZXJ0VGV4dCgpO1xyXG4gIC8vICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldENvbnRlbnRzKGNvbnRlbnQpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihyYW5nZS5pbmRleCArIDEsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3AoJyNib3gtJyArIGxvYWRpbmdJRCk7XHJcbiAgLy8gICB9KS5jYXRjaCgoZXIpID0+IHtcclxuICAvLyAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCcjYm94LScgKyBsb2FkaW5nSUQpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAvLyB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZChlOiBTZWxlY3Rpb25DaGFuZ2UpIHtcclxuICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdxdWlsbFJhbmdlJywgZS5yYW5nZSA/IEpTT04uc3RyaW5naWZ5KGUucmFuZ2UpIDogKGUub2xkUmFuZ2UgPyBKU09OLnN0cmluZ2lmeShlLm9sZFJhbmdlKSA6IG51bGwpKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdxdWlsbFJhbmdlJywgZS5lZGl0b3IuZ2V0U2VsZWN0aW9uKCkgPyBKU09OLnN0cmluZ2lmeShlLmVkaXRvci5nZXRTZWxlY3Rpb24oKSkgOiBudWxsKTtcclxuICB9XHJcblxyXG4gIG9uQ29udGVudENoYW5nZWQoZTogQ29udGVudENoYW5nZSkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3F1aWxsUmFuZ2UnLCBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIGluZGV4OiAoZS5lZGl0b3IuZ2V0TGVuZ3RoKCkgPyBlLmVkaXRvci5nZXRMZW5ndGgoKSAtIDEgOiAwKSxcclxuICAgICAgbGVuZ3RoOiAwXHJcbiAgICB9KSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from "@angular/core";
2
2
  export const EDITOR_CONFIG = new InjectionToken('editor.configuration');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9lZGl0b3IvIiwic291cmNlcyI6WyJzcmMvbGliL2VkaXRvci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBc0IvQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQXVCLHNCQUFzQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCBRdWlsbCBmcm9tIFwicXVpbGxcIjtcclxuZXhwb3J0IGludGVyZmFjZSBTZEVkaXRvckFjdGlvbiB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgaWNvbjogc3RyaW5nO1xyXG4gIGNsaWNrOiAoZXZlbnQ6IGFueSwgYXJnczogU2RFZGl0b3JBY3Rpb25BcmdzKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPlxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RFZGl0b3JBY3Rpb25BcmdzIHtcclxuICBxbEtleTogc3RyaW5nO1xyXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG4gIHF1aWxsOiBRdWlsbDtcclxuICBjdXJzb3JQb3NpdGlvbjoge1xyXG4gICAgaW5kZXg6IG51bWJlcjtcclxuICAgIGxlbmd0aDogbnVtYmVyO1xyXG4gIH0sXHJcbiAgYXJncz86IGFueVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckNvbmZpZ3VyYXRpb24ge1xyXG4gIHVwbG9hZEltYWdlPzogKGZvcm1EYXRhOiBGb3JtRGF0YSwgYXJncz86IGFueSkgPT4gUHJvbWlzZTxzdHJpbmc+O1xyXG4gIGFjdGlvbnM/OiBTZEVkaXRvckFjdGlvbltdO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRURJVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJRWRpdG9yQ29uZmlndXJhdGlvbj4oJ2VkaXRvci5jb25maWd1cmF0aW9uJyk7Il19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9lZGl0b3IvIiwic291cmNlcyI6WyJzcmMvbGliL2VkaXRvci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBdUIvQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQXVCLHNCQUFzQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCBRdWlsbCBmcm9tIFwicXVpbGxcIjtcclxuZXhwb3J0IGludGVyZmFjZSBTZEVkaXRvckFjdGlvbiB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgaWNvbjogc3RyaW5nO1xyXG4gIGNsaWNrOiAoZXZlbnQ6IGFueSwgYXJnczogU2RFZGl0b3JBY3Rpb25BcmdzKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPlxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RFZGl0b3JBY3Rpb25BcmdzIHtcclxuICBxbEtleTogc3RyaW5nO1xyXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG4gIGxvYWRpbmdJZDogc3RyaW5nO1xyXG4gIHF1aWxsOiBRdWlsbDtcclxuICBjdXJzb3JQb3NpdGlvbjoge1xyXG4gICAgaW5kZXg6IG51bWJlcjtcclxuICAgIGxlbmd0aDogbnVtYmVyO1xyXG4gIH0sXHJcbiAgYXJncz86IGFueVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckNvbmZpZ3VyYXRpb24ge1xyXG4gIHVwbG9hZEltYWdlPzogKGZvcm1EYXRhOiBGb3JtRGF0YSwgYXJncz86IGFueSkgPT4gUHJvbWlzZTxzdHJpbmc+O1xyXG4gIGFjdGlvbnM/OiBTZEVkaXRvckFjdGlvbltdO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRURJVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJRWRpdG9yQ29uZmlndXJhdGlvbj4oJ2VkaXRvci5jb25maWd1cmF0aW9uJyk7Il19
@@ -4,14 +4,13 @@ import { FormControl, Validators, NgForm, FormsModule, ReactiveFormsModule } fro
4
4
  import { __classPrivateFieldSet, __classPrivateFieldGet } from 'tslib';
5
5
  import { v4 } from 'uuid';
6
6
  import { Subscription } from 'rxjs';
7
- import { SdApiService, SdApiModule } from '@sd-angular/core/api';
8
7
  import 'quill-mention';
9
8
  import { SdLabelDefDirective } from '@sd-angular/core/common';
10
- import { SdLoadingService } from '@sd-angular/core/loading';
11
9
  import { CommonModule } from '@angular/common';
12
10
  import { SdTranslateModule } from '@sd-angular/core/translate';
13
11
  import { SdButtonModule } from '@sd-angular/core/button';
14
12
  import { SdTextareaModule } from '@sd-angular/core/textarea';
13
+ import { SdApiModule } from '@sd-angular/core/api';
15
14
 
16
15
  const EDITOR_CONFIG = new InjectionToken('editor.configuration');
17
16
 
@@ -122,11 +121,9 @@ const PROMOTION_FORM = {
122
121
 
123
122
  var _name, _subscription, _model, _form, _updateValidator, _quill, _initUploadImage;
124
123
  class SdEditor {
125
- constructor(ngZone, ref, sdApiService, loadingService, configuration) {
124
+ constructor(ngZone, ref, configuration) {
126
125
  this.ngZone = ngZone;
127
126
  this.ref = ref;
128
- this.sdApiService = sdApiService;
129
- this.loadingService = loadingService;
130
127
  this.configuration = configuration;
131
128
  _name.set(this, `N${v4()}`);
132
129
  this.id = `I${v4()}`;
@@ -386,21 +383,14 @@ class SdEditor {
386
383
  const toolbar = element.closest('.ql-formats').closest('.ql-toolbar'); // Lấy toolbar element
387
384
  const id = toolbar.closest('quill-editor').id; // Lấy id của editor để phục vụ loading
388
385
  const loadingId = `#box-${id}`; // id của editor;
389
- const func = action.click(e, {
386
+ action.click(e, {
390
387
  qlKey,
391
388
  element,
389
+ loadingId,
392
390
  cursorPosition: JSON.parse(cursorPosition),
393
391
  quill: __classPrivateFieldGet(this, _quill),
394
392
  args: this.args
395
393
  });
396
- if (func instanceof Promise) {
397
- __classPrivateFieldGet(this, _quill).enable(false);
398
- this.loadingService.start(loadingId);
399
- func.finally(() => {
400
- __classPrivateFieldGet(this, _quill).enable(true);
401
- this.loadingService.stop(loadingId);
402
- });
403
- }
404
394
  });
405
395
  }
406
396
  }
@@ -528,8 +518,6 @@ SdEditor.decorators = [
528
518
  SdEditor.ctorParameters = () => [
529
519
  { type: NgZone },
530
520
  { type: ChangeDetectorRef },
531
- { type: SdApiService },
532
- { type: SdLoadingService },
533
521
  { type: undefined, decorators: [{ type: Inject, args: [EDITOR_CONFIG,] }, { type: Optional }] }
534
522
  ];
535
523
  SdEditor.propDecorators = {
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-editor.js","sources":["../../../../projects/sd-core/editor/src/lib/editor.model.ts","../../../../projects/sd-core/editor/src/lib/constant.ts","../../../../projects/sd-core/editor/src/lib/editor.component.ts","../../../../projects/sd-core/editor/src/lib/editor.module.ts","../../../../projects/sd-core/editor/src/public-api.ts","../../../../projects/sd-core/editor/sd-angular-core-editor.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\nimport Quill from \"quill\";\r\nexport interface SdEditorAction {\r\n key: string;\r\n icon: string;\r\n click: (event: any, args: SdEditorActionArgs) => void | Promise<void>\r\n}\r\nexport interface SdEditorActionArgs {\r\n qlKey: string;\r\n element: HTMLElement;\r\n quill: Quill;\r\n cursorPosition: {\r\n index: number;\r\n length: number;\r\n },\r\n args?: any\r\n}\r\nexport interface IEditorConfiguration {\r\n uploadImage?: (formData: FormData, args?: any) => Promise<string>;\r\n actions?: SdEditorAction[];\r\n}\r\n\r\nexport const EDITOR_CONFIG = new InjectionToken<IEditorConfiguration>('editor.configuration');","export const Constants = {\r\n ARE_YOU_WANT_TO_DELETE: 'Are you sure you want to delete?',\r\n ACTIVE: 'active',\r\n IN_ACTIVE: 'inactive',\r\n APPROVE: 'approve',\r\n UN_APPROVE: 'unapprove',\r\n ACCEPT_SIZE_IMAGE: 'Logo only accept image with size <= 2MB',\r\n ACCEPT_TYPE_IMAGE:\r\n 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon',\r\n PAGE_TYPE_NEW: 'new',\r\n PAGE_TYPE_EDIT: 'edit',\r\n SAVE: 'saveOb',\r\n SAVE_AND_CONTINUE: 'saveAndContOb',\r\n IMAGE_SIZE: 2048000,\r\n SUCCESS: 'Success',\r\n IMPORT_SUCCESSFULLY: 'Import successfully!',\r\n ERROR: 'Error',\r\n FAILED: 'fail',\r\n FILE: 'file',\r\n NONE: 'none',\r\n NOT_EXIST_ID_OR_LINK: 'This ID/Link is not existing',\r\n FEATURE_IS_PENDING: 'This feature is pending',\r\n NOT_SUPPORT_FILE_IMAGE: 'File upload is not supported.',\r\n NOT_SUPPORT_FILE_IMPORT: 'File import is not supported.',\r\n NETWORK_ERROR: 'Network Error',\r\n SORT_BY: [\r\n {\r\n value: 0,\r\n name: 'Created Date'\r\n },\r\n {\r\n value: 1,\r\n name: 'Title'\r\n }\r\n ],\r\n DESC: [\r\n {\r\n value: true,\r\n name: 'Descending'\r\n },\r\n {\r\n value: false,\r\n name: 'Ascending'\r\n }\r\n ],\r\n FORM_ERRORS: {\r\n Id: '',\r\n textSearch: '',\r\n ImportLogId: '',\r\n SortBy: '',\r\n Reverse: '',\r\n },\r\n VALIDATION_MESSAGES: {}\r\n};\r\n\r\nexport const PROMOTION_PERMISSIONS = ['ListPromotion', 'AddNewPromotion', 'EditPromotion',\r\n 'ActiveOrInactivePromotion', 'RemovePromotion', 'ImportPromotion', 'ExportPromotion'];\r\n\r\nexport const ValidateMessageConstants = {\r\n TITLE_REQUIRED: 'Title is required',\r\n TITLE_MAXLENGTH: 'Title is not more than 55 characters',\r\n TITLE_PATTERN: 'Title is required',\r\n\r\n CREATED_AT_REQUIRED: 'Created At is required',\r\n\r\n SHOW_ON_HOME_REQUIRED: 'Show On Home is required',\r\n\r\n DISPLAY_NUMBER_REQUIRED: 'Display Number is required',\r\n\r\n CONTENT_TYPE_REQUIRED: 'Content Type is required',\r\n\r\n DISCOUNT_PERCENT_REQUIRED: 'Discount percent is required',\r\n DISCOUNT_PERCENT_MAX: 'Max discount percent is 100, cannot input greater',\r\n DISCOUNT_PERCENT_MIN: 'Min discount percent is 0, cannot input lower'\r\n};\r\n\r\nexport const PROMOTION_FORM = {\r\n FORM_ERRORS: {\r\n title: '',\r\n createdAt: '',\r\n displayNumber: '',\r\n showOnHome: '',\r\n discountPercent: '',\r\n isActive: '',\r\n ctaLabelName: '',\r\n ctaDeepLink: '',\r\n tags: ''\r\n },\r\n VALIDATION_MESSAGES: {\r\n title: {\r\n required: ValidateMessageConstants.TITLE_REQUIRED,\r\n maxlength: ValidateMessageConstants.TITLE_MAXLENGTH,\r\n pattern: ValidateMessageConstants.TITLE_PATTERN\r\n },\r\n createdAt: {\r\n required: ValidateMessageConstants.CREATED_AT_REQUIRED\r\n },\r\n showOnHome: {\r\n required: ValidateMessageConstants.SHOW_ON_HOME_REQUIRED\r\n },\r\n displayNumber: {\r\n required: ValidateMessageConstants.DISPLAY_NUMBER_REQUIRED\r\n },\r\n discountPercent: {\r\n required: ValidateMessageConstants.DISCOUNT_PERCENT_REQUIRED,\r\n max: ValidateMessageConstants.DISCOUNT_PERCENT_MAX,\r\n min: ValidateMessageConstants.DISCOUNT_PERCENT_MIN\r\n },\r\n tags: {\r\n required: ValidateMessageConstants.CONTENT_TYPE_REQUIRED\r\n }\r\n }\r\n};\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ContentChange, QuillEditorComponent, SelectionChange } from 'ngx-quill';\r\nimport * as uuid from 'uuid';\r\nimport { FormControl, FormGroup, NgForm, ValidatorFn, Validators } from '@angular/forms';\r\nimport { Constants } from './constant';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdApiService } from '@sd-angular/core/api';\r\nimport 'quill-mention';\r\nimport { SdLabelDefDirective } from '@sd-angular/core/common';\r\nimport { SdLoadingService } from \"@sd-angular/core/loading\";\r\nimport { EDITOR_CONFIG, IEditorConfiguration } from './editor.model';\r\nimport Quill from 'quill';\r\n\r\n@Component({\r\n selector: 'sd-editor',\r\n templateUrl: './editor.component.html',\r\n styleUrls: ['./editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdEditor implements OnInit, AfterViewInit, OnDestroy {\r\n #name = `N${uuid.v4()}`;\r\n id: string = `I${uuid.v4()}`;\r\n #subscription = new Subscription();\r\n @ViewChild('editor') editor: QuillEditorComponent;\r\n @Input() label: string;\r\n #model: string;\r\n @Input() set model(val: string) {\r\n this.#model = val;\r\n this.modelHTML = val;\r\n this.formControl.setValue(this.#model, {\r\n emitEvent: false\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n\r\n required = false;\r\n\r\n @Input() set pRequired(val: boolean | '') {\r\n this.required = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n\r\n minlength: number;\r\n\r\n @Input('minlength') set _minlength(val: number) {\r\n this.minlength = +val;\r\n this.#updateValidator();\r\n }\r\n\r\n maxlength: number;\r\n\r\n @Input('maxlength') set _maxlength(val: number) {\r\n this.maxlength = +val;\r\n this.#updateValidator();\r\n }\r\n\r\n @Output() modelChange = new EventEmitter<string>();\r\n\r\n @Input() placeholder: string = '';\r\n\r\n @Input() styles: any = { height: '250px' };\r\n\r\n @Input() args: any;\r\n\r\n formControl = new FormControl();\r\n\r\n @Input() domain = '';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n\r\n @Input() toolbar: any;\r\n @Input() enableHTMLButton = false;\r\n showHtmlEditor = false;\r\n modelHTML: string;\r\n\r\n quillEvent: any;\r\n @Input() mentionValues: { id: string, value: string, link?: string }[];\r\n @Input() hashTagValues: { id: string, value: string, link?: string }[];\r\n @ContentChild(SdLabelDefDirective) sdLabelDef: SdLabelDefDirective;\r\n quillConfig = {\r\n // toolbar: '.toolbar',\r\n toolbar: {\r\n container: [\r\n ['bold', 'italic', 'underline', 'strike'], // toggled buttons\r\n ['blockquote', 'code-block'],\r\n\r\n [{ 'header': 1 }, { 'header': 2 }], // custom button values\r\n [{ 'list': 'ordered' }, { 'list': 'bullet' }],\r\n [{ 'script': 'sub' }, { 'script': 'super' }], // superscript/subscript\r\n [{ 'indent': '-1' }, { 'indent': '+1' }], // outdent/indent\r\n [{ 'direction': 'rtl' }], // text direction\r\n\r\n [{ 'size': ['small', false, 'large', 'huge'] }], // custom dropdown\r\n [{ 'header': [1, 2, 3, 4, 5, 6, false] }],\r\n\r\n [{ 'color': [] }, { 'background': [] }], // dropdown with defaults from theme\r\n [{ 'font': [] }],\r\n [{ 'align': [] }],\r\n\r\n ['clean'], // remove formatting button\r\n\r\n ['link', 'image', 'video'] // link and image, video\r\n ]\r\n },\r\n mention: {\r\n allowedChars: /^[A-Za-z0-9\\sÅÄÖåäö._-]*$/,\r\n mentionDenotationChars: ['@', '#'],\r\n source: (searchTerm, renderList, mentionChar) => {\r\n if ((this.mentionValues && mentionChar === '@') || (this.hashTagValues && mentionChar === '#')) {\r\n let values;\r\n if (mentionChar === '@') {\r\n values = this.mentionValues;\r\n } else if (mentionChar === '#') {\r\n values = this.hashTagValues;\r\n } else {\r\n values = [];\r\n }\r\n\r\n if (searchTerm.length === 0) {\r\n renderList(values, searchTerm);\r\n } else {\r\n const matches = [];\r\n // tslint:disable-next-line:prefer-for-of\r\n for (let i = 0; i < values.length; i++) {\r\n // tslint:disable-next-line:no-bitwise\r\n if (~values[i].value.toLowerCase().indexOf(searchTerm.toLowerCase())) {\r\n matches.push(values[i]);\r\n }\r\n }\r\n renderList(matches, searchTerm);\r\n }\r\n }\r\n },\r\n },\r\n keyboard: {\r\n bindings: {\r\n enter: {\r\n key: 13,\r\n handler: (range, context) => {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n customButtonFileSVG = '<svg xmlns=\"http://www.w3.org/2000/svg\" enable-background=\"new 0 0 24 24\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"#000000\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/><path d=\"M20.41,8.41l-4.83-4.83C15.21,3.21,14.7,3,14.17,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V9.83 C21,9.3,20.79,8.79,20.41,8.41z M7,7h7v2H7V7z M17,17H7v-2h10V17z M17,13H7v-2h10V13z\"/></g></svg>';\r\n @Output() sdChange = new EventEmitter<string>();\r\n timerLoadQuillToolbar = null;\r\n constructor(\r\n private ngZone: NgZone,\r\n private ref: ChangeDetectorRef,\r\n private sdApiService: SdApiService,\r\n private loadingService: SdLoadingService,\r\n @Inject(EDITOR_CONFIG) @Optional() private configuration: IEditorConfiguration,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.#form?.addControl(this.#name, this.formControl);\r\n\r\n if (this.toolbar) {\r\n this.quillConfig.toolbar.container = this.toolbar;\r\n }\r\n\r\n for (const action of (this.configuration?.actions || [])) {\r\n if (this.quillConfig.toolbar.container.toString().includes(action.key)) {\r\n const qlKey = `button.ql-${action.key}`\r\n const interval = setInterval(() => {\r\n if (document.querySelector(qlKey)) {\r\n clearInterval(interval);\r\n document.querySelector(qlKey).innerHTML = this.customButtonFileSVG;\r\n const customAction = document.querySelector(qlKey);\r\n if (customAction.getAttribute('listener') !== '1') {\r\n customAction.setAttribute('listener', '1');\r\n customAction.addEventListener('click', (e) => {\r\n const cursorPosition = localStorage.getItem('quillRange');\r\n const element = e.currentTarget as HTMLElement; // Lấy element của action được click\r\n const toolbar = element.closest('.ql-formats').closest('.ql-toolbar'); // Lấy toolbar element\r\n const id = toolbar.closest('quill-editor').id; // Lấy id của editor để phục vụ loading\r\n const loadingId = `#box-${id}`; // id của editor;\r\n const func = action.click(e, {\r\n qlKey,\r\n element,\r\n cursorPosition: JSON.parse(cursorPosition),\r\n quill: this.#quill,\r\n args: this.args\r\n });\r\n \r\n if(func instanceof Promise) {\r\n this.#quill.enable(false);\r\n this.loadingService.start(loadingId);\r\n func.finally(() => {\r\n this.#quill.enable(true);\r\n this.loadingService.stop(loadingId);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }, 1000);\r\n }\r\n }\r\n\r\n // if (this.quillConfig.toolbar.container.toString().includes('customFile')) {\r\n // this.timerLoadQuillToolbar = setInterval(() => {\r\n // if (document.querySelector('button.ql-customFile')) {\r\n // clearInterval(this.timerLoadQuillToolbar);\r\n // document.querySelector('button.ql-customFile').innerHTML = this.customButtonFileSVG;\r\n // const customButton = document.querySelector('button.ql-customFile');\r\n // if (customButton.getAttribute('listener') !== '1') {\r\n // customButton.setAttribute('listener', '1');\r\n // customButton.addEventListener('click', this.customFileHandler);\r\n // }\r\n // }\r\n // }, 1000);\r\n // }\r\n\r\n this.ref.markForCheck();\r\n }\r\n\r\n // customFileHandler = (e) => {\r\n // const customButton = e.currentTarget;\r\n // const quillToolbar = customButton.closest('.ql-formats').closest('.ql-toolbar');\r\n // const quillBox = quillToolbar.closest('.ql-formats')\r\n // let fileInput: HTMLInputElement = quillToolbar.querySelector('input.ql-customFile[type=file]');\r\n // if (fileInput == null) {\r\n // fileInput = document.createElement('input');\r\n // fileInput.setAttribute('type', Constants.FILE);\r\n // fileInput.setAttribute('accept', '*');\r\n // fileInput.classList.add('ql-customFile');\r\n // fileInput.addEventListener('change', () => {\r\n // const files = fileInput.files;\r\n // if (!files || !files.length) {\r\n // return;\r\n // }\r\n\r\n // const formData = new FormData();\r\n // formData.append(Constants.FILE, files[0]);\r\n // let range = localStorage.getItem('quillRange');\r\n // if (range) {\r\n // range = JSON.parse(range);\r\n // }\r\n // this.quillEvent.enable(false);\r\n // this.#uploadFile(formData, this.quillEvent, range, fileInput, quillToolbar.closest('quill-editor').id);\r\n // });\r\n // quillToolbar.appendChild(fileInput);\r\n // }\r\n // fileInput.click();\r\n // }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.valueChanges.subscribe((val) => {\r\n this.modelChange.emit(val);\r\n this.sdChange.emit(val);\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n if (this.required) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.minlength > 0) {\r\n validators.push(Validators.minLength(this.minlength));\r\n }\r\n if (this.maxlength > 0) {\r\n validators.push(Validators.maxLength(this.maxlength));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.updateValueAndValidity();\r\n this.ref.markForCheck();\r\n }\r\n #quill: Quill;\r\n editorInit = (quill: Quill) => {\r\n this.#quill = quill;\r\n this.quillEvent = quill;\r\n // const txtArea = document.createElement('textarea');\r\n // txtArea.style.cssText =\r\n // 'width: 100%;margin: 0px;background: rgb(29, 29, 29);' +\r\n // 'box-sizing: border-box;color: rgb(204, 204, 204);' +\r\n // 'font-size: 15px;outline: none;padding: 20px;' +\r\n // 'line-height: 24px;font-family: Consolas, Menlo, Monaco, &quot;Courier New&quot;, monospace;' +\r\n // 'position: absolute;top: 0;bottom: 0;border: none;display:none';\r\n\r\n // const htmlEditor = quill.addContainer('ql-custom');\r\n // htmlEditor.appendChild(txtArea);\r\n\r\n // const myEditor = quill.container;\r\n // quill.on('text-change', (delta, oldDelta, source) => {\r\n // const html = myEditor.children[0].innerHTML;\r\n // txtArea.value = html;\r\n // // if (quill.getLength() > this.maxlength) {\r\n // // quill.deleteText(this.maxlength, quill.getLength());\r\n // // }\r\n // // this.formControl.setValue(html);\r\n // });\r\n const self = this;\r\n this.#initUploadImage(quill);\r\n // this.ngZone.runOutsideAngular(() => {\r\n // quill.getModule('toolbar').addHandler('image', function () {\r\n // let fileInput = this.container.querySelector('input.ql-image[type=file]');\r\n\r\n // if (fileInput == null) {\r\n // fileInput = document.createElement('input');\r\n // fileInput.setAttribute('type', Constants.FILE);\r\n // fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\r\n // fileInput.classList.add('ql-image');\r\n // fileInput.addEventListener('change', () => {\r\n // const files = fileInput.files;\r\n // const range = this.quill.getSelection(true);\r\n // if (!files || !files.length) {\r\n // return;\r\n // }\r\n\r\n // const formData = new FormData();\r\n // formData.append(Constants.FILE, files[0]);\r\n\r\n // this.quill.enable(false);\r\n\r\n // self.#uploadImage(formData, quill, range, fileInput);\r\n // });\r\n // this.container.appendChild(fileInput);\r\n // }\r\n // fileInput.click();\r\n // });\r\n\r\n // });\r\n this.ref.markForCheck();\r\n }\r\n\r\n #initUploadImage = (quill: Quill) => {\r\n const self = this;\r\n this.ngZone.runOutsideAngular(() => {\r\n quill.getModule('toolbar').addHandler('image', function () {\r\n let fileInput = this.container.querySelector('input.ql-image[type=file]');\r\n if (fileInput == null) {\r\n fileInput = document.createElement('input');\r\n fileInput.setAttribute('type', Constants.FILE);\r\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\r\n fileInput.classList.add('ql-image');\r\n fileInput.addEventListener('change', () => {\r\n const files = fileInput.files;\r\n const range = this.quill.getSelection(true);\r\n if (!files || !files.length) {\r\n return;\r\n }\r\n const formData = new FormData();\r\n formData.append(Constants.FILE, files[0]);\r\n this.quill.enable(false);\r\n // self.#uploadImage(formData, quill, range, fileInput);\r\n self.configuration?.uploadImage(formData, self.args).then(url => {\r\n self.ngZone.runOutsideAngular(() => {\r\n quill.enable(true);\r\n // quill.editor.insertEmbed(range.index, 'image', resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '');\r\n quill.getModule('clipboard').dangerouslyPasteHTML(range.index, '<a target=\"_blank\" href=\"' + (url || '')\r\n + '\"><img src=\"' + (url || '') + '\" alt=\"c-image-editor-quill\"></a>', 'user');\r\n // quill.insertText();\r\n const content = quill.getContents();\r\n quill.setContents(content);\r\n quill.setSelection(range.index + 1, 'user');\r\n fileInput.value = '';\r\n });\r\n });\r\n });\r\n this.container.appendChild(fileInput);\r\n }\r\n fileInput.click();\r\n });\r\n\r\n });\r\n }\r\n\r\n onModelChange = (val: string) => {\r\n this.formControl.setValue(val);\r\n this.modelHTML = val;\r\n this.ref.markForCheck();\r\n }\r\n\r\n onClickShowHtmlEditor = () => {\r\n this.showHtmlEditor = !this.showHtmlEditor;\r\n this.ref.markForCheck();\r\n }\r\n\r\n // #uploadImage = (formData, quill, range, fileInput) => {\r\n // if (!this.urlUploadImage) {\r\n // this.urlUploadImage = '/partner/v2/merchandise/file/uploaduserfile';\r\n // }\r\n // // this.domain = 'https://api-commerce-qc.vinid.dev';\r\n // this.sdApiService.post(this.urlUploadImage, formData).then((resp: any) => {\r\n // this.ngZone.runOutsideAngular(() => {\r\n // quill.enable(true);\r\n // // quill.editor.insertEmbed(range.index, 'image', resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '');\r\n // quill.getModule('clipboard').dangerouslyPasteHTML(range.index, '<a target=\"_blank\" href=\"' + (resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '')\r\n // + '\"><img src=\"' + (resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '') + '\" alt=\"c-image-editor-quill\"></a>', 'user');\r\n // // quill.insertText();\r\n // const content = quill.getContents();\r\n // quill.setContents(content);\r\n // quill.setSelection(range.index + 1, 'user');\r\n // fileInput.value = '';\r\n // });\r\n // });\r\n // this.ref.markForCheck();\r\n // }\r\n\r\n // #uploadFile = (formData, quill, range, fileInput, loadingID) => {\r\n // if (!this.urlUploadFile) {\r\n // this.urlUploadFile = '/partner/v2/merchandise/file/uploaduserfile';\r\n // }\r\n // // this.domain = 'https://api-commerce-qc.vinid.dev';\r\n // this.loadingService.start('#box-' + loadingID);\r\n // this.sdApiService.post(this.urlUploadFile, formData).then((resp: any) => {\r\n // this.ngZone.runOutsideAngular(() => {\r\n // quill.enable(true);\r\n // // quill.editor.insertEmbed(range.index, 'image', resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '');\r\n // quill.getModule('clipboard').dangerouslyPasteHTML(range.index, '<a target=\"_blank\" href=\"' + (resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '')\r\n // + '\">' + (resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '') + '</a>', 'user');\r\n // // quill.insertText();\r\n // const content = quill.getContents();\r\n // quill.setContents(content);\r\n // quill.setSelection(range.index + 1, 'user');\r\n // fileInput.value = '';\r\n // });\r\n // this.loadingService.stop('#box-' + loadingID);\r\n // }).catch((er) => {\r\n // this.loadingService.stop('#box-' + loadingID);\r\n // });\r\n // this.ref.markForCheck();\r\n // }\r\n\r\n onSelectionChanged(e: SelectionChange) {\r\n // localStorage.setItem('quillRange', e.range ? JSON.stringify(e.range) : (e.oldRange ? JSON.stringify(e.oldRange) : null));\r\n localStorage.setItem('quillRange', e.editor.getSelection() ? JSON.stringify(e.editor.getSelection()) : null);\r\n }\r\n\r\n onContentChanged(e: ContentChange) {\r\n localStorage.setItem('quillRange', JSON.stringify({\r\n index: (e.editor.getLength() ? e.editor.getLength() - 1 : 0),\r\n length: 0\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { QuillModule } from 'ngx-quill';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SdEditor } from './editor.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport {SdButtonModule} from '@sd-angular/core/button';\r\nimport {SdTextareaModule} from '@sd-angular/core/textarea';\r\nimport {SdApiModule, SdApiService} from '@sd-angular/core/api';\r\n\r\n@NgModule({\r\n declarations: [SdEditor],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n QuillModule.forRoot(),\r\n SdTranslateModule,\r\n SdButtonModule,\r\n SdTextareaModule,\r\n SdApiModule\r\n ],\r\n exports: [SdEditor],\r\n providers: [],\r\n})\r\nexport class SdEditorModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/editor.model';\r\nexport * from './lib/editor.module';\r\nexport * from './lib/constant';\r\nexport * from './lib/editor.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-editor.js","sources":["../../../../projects/sd-core/editor/src/lib/editor.model.ts","../../../../projects/sd-core/editor/src/lib/constant.ts","../../../../projects/sd-core/editor/src/lib/editor.component.ts","../../../../projects/sd-core/editor/src/lib/editor.module.ts","../../../../projects/sd-core/editor/src/public-api.ts","../../../../projects/sd-core/editor/sd-angular-core-editor.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\nimport Quill from \"quill\";\r\nexport interface SdEditorAction {\r\n key: string;\r\n icon: string;\r\n click: (event: any, args: SdEditorActionArgs) => void | Promise<void>\r\n}\r\nexport interface SdEditorActionArgs {\r\n qlKey: string;\r\n element: HTMLElement;\r\n loadingId: string;\r\n quill: Quill;\r\n cursorPosition: {\r\n index: number;\r\n length: number;\r\n },\r\n args?: any\r\n}\r\nexport interface IEditorConfiguration {\r\n uploadImage?: (formData: FormData, args?: any) => Promise<string>;\r\n actions?: SdEditorAction[];\r\n}\r\n\r\nexport const EDITOR_CONFIG = new InjectionToken<IEditorConfiguration>('editor.configuration');","export const Constants = {\r\n ARE_YOU_WANT_TO_DELETE: 'Are you sure you want to delete?',\r\n ACTIVE: 'active',\r\n IN_ACTIVE: 'inactive',\r\n APPROVE: 'approve',\r\n UN_APPROVE: 'unapprove',\r\n ACCEPT_SIZE_IMAGE: 'Logo only accept image with size <= 2MB',\r\n ACCEPT_TYPE_IMAGE:\r\n 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon',\r\n PAGE_TYPE_NEW: 'new',\r\n PAGE_TYPE_EDIT: 'edit',\r\n SAVE: 'saveOb',\r\n SAVE_AND_CONTINUE: 'saveAndContOb',\r\n IMAGE_SIZE: 2048000,\r\n SUCCESS: 'Success',\r\n IMPORT_SUCCESSFULLY: 'Import successfully!',\r\n ERROR: 'Error',\r\n FAILED: 'fail',\r\n FILE: 'file',\r\n NONE: 'none',\r\n NOT_EXIST_ID_OR_LINK: 'This ID/Link is not existing',\r\n FEATURE_IS_PENDING: 'This feature is pending',\r\n NOT_SUPPORT_FILE_IMAGE: 'File upload is not supported.',\r\n NOT_SUPPORT_FILE_IMPORT: 'File import is not supported.',\r\n NETWORK_ERROR: 'Network Error',\r\n SORT_BY: [\r\n {\r\n value: 0,\r\n name: 'Created Date'\r\n },\r\n {\r\n value: 1,\r\n name: 'Title'\r\n }\r\n ],\r\n DESC: [\r\n {\r\n value: true,\r\n name: 'Descending'\r\n },\r\n {\r\n value: false,\r\n name: 'Ascending'\r\n }\r\n ],\r\n FORM_ERRORS: {\r\n Id: '',\r\n textSearch: '',\r\n ImportLogId: '',\r\n SortBy: '',\r\n Reverse: '',\r\n },\r\n VALIDATION_MESSAGES: {}\r\n};\r\n\r\nexport const PROMOTION_PERMISSIONS = ['ListPromotion', 'AddNewPromotion', 'EditPromotion',\r\n 'ActiveOrInactivePromotion', 'RemovePromotion', 'ImportPromotion', 'ExportPromotion'];\r\n\r\nexport const ValidateMessageConstants = {\r\n TITLE_REQUIRED: 'Title is required',\r\n TITLE_MAXLENGTH: 'Title is not more than 55 characters',\r\n TITLE_PATTERN: 'Title is required',\r\n\r\n CREATED_AT_REQUIRED: 'Created At is required',\r\n\r\n SHOW_ON_HOME_REQUIRED: 'Show On Home is required',\r\n\r\n DISPLAY_NUMBER_REQUIRED: 'Display Number is required',\r\n\r\n CONTENT_TYPE_REQUIRED: 'Content Type is required',\r\n\r\n DISCOUNT_PERCENT_REQUIRED: 'Discount percent is required',\r\n DISCOUNT_PERCENT_MAX: 'Max discount percent is 100, cannot input greater',\r\n DISCOUNT_PERCENT_MIN: 'Min discount percent is 0, cannot input lower'\r\n};\r\n\r\nexport const PROMOTION_FORM = {\r\n FORM_ERRORS: {\r\n title: '',\r\n createdAt: '',\r\n displayNumber: '',\r\n showOnHome: '',\r\n discountPercent: '',\r\n isActive: '',\r\n ctaLabelName: '',\r\n ctaDeepLink: '',\r\n tags: ''\r\n },\r\n VALIDATION_MESSAGES: {\r\n title: {\r\n required: ValidateMessageConstants.TITLE_REQUIRED,\r\n maxlength: ValidateMessageConstants.TITLE_MAXLENGTH,\r\n pattern: ValidateMessageConstants.TITLE_PATTERN\r\n },\r\n createdAt: {\r\n required: ValidateMessageConstants.CREATED_AT_REQUIRED\r\n },\r\n showOnHome: {\r\n required: ValidateMessageConstants.SHOW_ON_HOME_REQUIRED\r\n },\r\n displayNumber: {\r\n required: ValidateMessageConstants.DISPLAY_NUMBER_REQUIRED\r\n },\r\n discountPercent: {\r\n required: ValidateMessageConstants.DISCOUNT_PERCENT_REQUIRED,\r\n max: ValidateMessageConstants.DISCOUNT_PERCENT_MAX,\r\n min: ValidateMessageConstants.DISCOUNT_PERCENT_MIN\r\n },\r\n tags: {\r\n required: ValidateMessageConstants.CONTENT_TYPE_REQUIRED\r\n }\r\n }\r\n};\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ContentChange, QuillEditorComponent, SelectionChange } from 'ngx-quill';\r\nimport * as uuid from 'uuid';\r\nimport { FormControl, FormGroup, NgForm, ValidatorFn, Validators } from '@angular/forms';\r\nimport { Constants } from './constant';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdApiService } from '@sd-angular/core/api';\r\nimport 'quill-mention';\r\nimport { SdLabelDefDirective } from '@sd-angular/core/common';\r\nimport { SdLoadingService } from \"@sd-angular/core/loading\";\r\nimport { EDITOR_CONFIG, IEditorConfiguration } from './editor.model';\r\nimport Quill from 'quill';\r\n\r\n@Component({\r\n selector: 'sd-editor',\r\n templateUrl: './editor.component.html',\r\n styleUrls: ['./editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdEditor implements OnInit, AfterViewInit, OnDestroy {\r\n #name = `N${uuid.v4()}`;\r\n id: string = `I${uuid.v4()}`;\r\n #subscription = new Subscription();\r\n @ViewChild('editor') editor: QuillEditorComponent;\r\n @Input() label: string;\r\n #model: string;\r\n @Input() set model(val: string) {\r\n this.#model = val;\r\n this.modelHTML = val;\r\n this.formControl.setValue(this.#model, {\r\n emitEvent: false\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n\r\n required = false;\r\n\r\n @Input() set pRequired(val: boolean | '') {\r\n this.required = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n\r\n minlength: number;\r\n\r\n @Input('minlength') set _minlength(val: number) {\r\n this.minlength = +val;\r\n this.#updateValidator();\r\n }\r\n\r\n maxlength: number;\r\n\r\n @Input('maxlength') set _maxlength(val: number) {\r\n this.maxlength = +val;\r\n this.#updateValidator();\r\n }\r\n\r\n @Output() modelChange = new EventEmitter<string>();\r\n\r\n @Input() placeholder: string = '';\r\n\r\n @Input() styles: any = { height: '250px' };\r\n\r\n @Input() args: any;\r\n\r\n formControl = new FormControl();\r\n\r\n @Input() domain = '';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n\r\n @Input() toolbar: any;\r\n @Input() enableHTMLButton = false;\r\n showHtmlEditor = false;\r\n modelHTML: string;\r\n\r\n quillEvent: any;\r\n @Input() mentionValues: { id: string, value: string, link?: string }[];\r\n @Input() hashTagValues: { id: string, value: string, link?: string }[];\r\n @ContentChild(SdLabelDefDirective) sdLabelDef: SdLabelDefDirective;\r\n quillConfig = {\r\n // toolbar: '.toolbar',\r\n toolbar: {\r\n container: [\r\n ['bold', 'italic', 'underline', 'strike'], // toggled buttons\r\n ['blockquote', 'code-block'],\r\n\r\n [{ 'header': 1 }, { 'header': 2 }], // custom button values\r\n [{ 'list': 'ordered' }, { 'list': 'bullet' }],\r\n [{ 'script': 'sub' }, { 'script': 'super' }], // superscript/subscript\r\n [{ 'indent': '-1' }, { 'indent': '+1' }], // outdent/indent\r\n [{ 'direction': 'rtl' }], // text direction\r\n\r\n [{ 'size': ['small', false, 'large', 'huge'] }], // custom dropdown\r\n [{ 'header': [1, 2, 3, 4, 5, 6, false] }],\r\n\r\n [{ 'color': [] }, { 'background': [] }], // dropdown with defaults from theme\r\n [{ 'font': [] }],\r\n [{ 'align': [] }],\r\n\r\n ['clean'], // remove formatting button\r\n\r\n ['link', 'image', 'video'] // link and image, video\r\n ]\r\n },\r\n mention: {\r\n allowedChars: /^[A-Za-z0-9\\sÅÄÖåäö._-]*$/,\r\n mentionDenotationChars: ['@', '#'],\r\n source: (searchTerm, renderList, mentionChar) => {\r\n if ((this.mentionValues && mentionChar === '@') || (this.hashTagValues && mentionChar === '#')) {\r\n let values;\r\n if (mentionChar === '@') {\r\n values = this.mentionValues;\r\n } else if (mentionChar === '#') {\r\n values = this.hashTagValues;\r\n } else {\r\n values = [];\r\n }\r\n\r\n if (searchTerm.length === 0) {\r\n renderList(values, searchTerm);\r\n } else {\r\n const matches = [];\r\n // tslint:disable-next-line:prefer-for-of\r\n for (let i = 0; i < values.length; i++) {\r\n // tslint:disable-next-line:no-bitwise\r\n if (~values[i].value.toLowerCase().indexOf(searchTerm.toLowerCase())) {\r\n matches.push(values[i]);\r\n }\r\n }\r\n renderList(matches, searchTerm);\r\n }\r\n }\r\n },\r\n },\r\n keyboard: {\r\n bindings: {\r\n enter: {\r\n key: 13,\r\n handler: (range, context) => {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n customButtonFileSVG = '<svg xmlns=\"http://www.w3.org/2000/svg\" enable-background=\"new 0 0 24 24\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"#000000\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/><path d=\"M20.41,8.41l-4.83-4.83C15.21,3.21,14.7,3,14.17,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V9.83 C21,9.3,20.79,8.79,20.41,8.41z M7,7h7v2H7V7z M17,17H7v-2h10V17z M17,13H7v-2h10V13z\"/></g></svg>';\r\n @Output() sdChange = new EventEmitter<string>();\r\n timerLoadQuillToolbar = null;\r\n constructor(\r\n private ngZone: NgZone,\r\n private ref: ChangeDetectorRef,\r\n @Inject(EDITOR_CONFIG) @Optional() private configuration: IEditorConfiguration,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.#form?.addControl(this.#name, this.formControl);\r\n\r\n if (this.toolbar) {\r\n this.quillConfig.toolbar.container = this.toolbar;\r\n }\r\n\r\n for (const action of (this.configuration?.actions || [])) {\r\n if (this.quillConfig.toolbar.container.toString().includes(action.key)) {\r\n const qlKey = `button.ql-${action.key}`\r\n const interval = setInterval(() => {\r\n if (document.querySelector(qlKey)) {\r\n clearInterval(interval);\r\n document.querySelector(qlKey).innerHTML = this.customButtonFileSVG;\r\n const customAction = document.querySelector(qlKey);\r\n if (customAction.getAttribute('listener') !== '1') {\r\n customAction.setAttribute('listener', '1');\r\n customAction.addEventListener('click', (e) => {\r\n const cursorPosition = localStorage.getItem('quillRange');\r\n const element = e.currentTarget as HTMLElement; // Lấy element của action được click\r\n const toolbar = element.closest('.ql-formats').closest('.ql-toolbar'); // Lấy toolbar element\r\n const id = toolbar.closest('quill-editor').id; // Lấy id của editor để phục vụ loading\r\n const loadingId = `#box-${id}`; // id của editor;\r\n action.click(e, {\r\n qlKey,\r\n element,\r\n loadingId,\r\n cursorPosition: JSON.parse(cursorPosition),\r\n quill: this.#quill,\r\n args: this.args\r\n });\r\n });\r\n }\r\n }\r\n }, 1000);\r\n }\r\n }\r\n\r\n // if (this.quillConfig.toolbar.container.toString().includes('customFile')) {\r\n // this.timerLoadQuillToolbar = setInterval(() => {\r\n // if (document.querySelector('button.ql-customFile')) {\r\n // clearInterval(this.timerLoadQuillToolbar);\r\n // document.querySelector('button.ql-customFile').innerHTML = this.customButtonFileSVG;\r\n // const customButton = document.querySelector('button.ql-customFile');\r\n // if (customButton.getAttribute('listener') !== '1') {\r\n // customButton.setAttribute('listener', '1');\r\n // customButton.addEventListener('click', this.customFileHandler);\r\n // }\r\n // }\r\n // }, 1000);\r\n // }\r\n\r\n this.ref.markForCheck();\r\n }\r\n\r\n // customFileHandler = (e) => {\r\n // const customButton = e.currentTarget;\r\n // const quillToolbar = customButton.closest('.ql-formats').closest('.ql-toolbar');\r\n // const quillBox = quillToolbar.closest('.ql-formats')\r\n // let fileInput: HTMLInputElement = quillToolbar.querySelector('input.ql-customFile[type=file]');\r\n // if (fileInput == null) {\r\n // fileInput = document.createElement('input');\r\n // fileInput.setAttribute('type', Constants.FILE);\r\n // fileInput.setAttribute('accept', '*');\r\n // fileInput.classList.add('ql-customFile');\r\n // fileInput.addEventListener('change', () => {\r\n // const files = fileInput.files;\r\n // if (!files || !files.length) {\r\n // return;\r\n // }\r\n\r\n // const formData = new FormData();\r\n // formData.append(Constants.FILE, files[0]);\r\n // let range = localStorage.getItem('quillRange');\r\n // if (range) {\r\n // range = JSON.parse(range);\r\n // }\r\n // this.quillEvent.enable(false);\r\n // this.#uploadFile(formData, this.quillEvent, range, fileInput, quillToolbar.closest('quill-editor').id);\r\n // });\r\n // quillToolbar.appendChild(fileInput);\r\n // }\r\n // fileInput.click();\r\n // }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.valueChanges.subscribe((val) => {\r\n this.modelChange.emit(val);\r\n this.sdChange.emit(val);\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n if (this.required) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.minlength > 0) {\r\n validators.push(Validators.minLength(this.minlength));\r\n }\r\n if (this.maxlength > 0) {\r\n validators.push(Validators.maxLength(this.maxlength));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.updateValueAndValidity();\r\n this.ref.markForCheck();\r\n }\r\n #quill: Quill;\r\n editorInit = (quill: Quill) => {\r\n this.#quill = quill;\r\n this.quillEvent = quill;\r\n // const txtArea = document.createElement('textarea');\r\n // txtArea.style.cssText =\r\n // 'width: 100%;margin: 0px;background: rgb(29, 29, 29);' +\r\n // 'box-sizing: border-box;color: rgb(204, 204, 204);' +\r\n // 'font-size: 15px;outline: none;padding: 20px;' +\r\n // 'line-height: 24px;font-family: Consolas, Menlo, Monaco, &quot;Courier New&quot;, monospace;' +\r\n // 'position: absolute;top: 0;bottom: 0;border: none;display:none';\r\n\r\n // const htmlEditor = quill.addContainer('ql-custom');\r\n // htmlEditor.appendChild(txtArea);\r\n\r\n // const myEditor = quill.container;\r\n // quill.on('text-change', (delta, oldDelta, source) => {\r\n // const html = myEditor.children[0].innerHTML;\r\n // txtArea.value = html;\r\n // // if (quill.getLength() > this.maxlength) {\r\n // // quill.deleteText(this.maxlength, quill.getLength());\r\n // // }\r\n // // this.formControl.setValue(html);\r\n // });\r\n const self = this;\r\n this.#initUploadImage(quill);\r\n // this.ngZone.runOutsideAngular(() => {\r\n // quill.getModule('toolbar').addHandler('image', function () {\r\n // let fileInput = this.container.querySelector('input.ql-image[type=file]');\r\n\r\n // if (fileInput == null) {\r\n // fileInput = document.createElement('input');\r\n // fileInput.setAttribute('type', Constants.FILE);\r\n // fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\r\n // fileInput.classList.add('ql-image');\r\n // fileInput.addEventListener('change', () => {\r\n // const files = fileInput.files;\r\n // const range = this.quill.getSelection(true);\r\n // if (!files || !files.length) {\r\n // return;\r\n // }\r\n\r\n // const formData = new FormData();\r\n // formData.append(Constants.FILE, files[0]);\r\n\r\n // this.quill.enable(false);\r\n\r\n // self.#uploadImage(formData, quill, range, fileInput);\r\n // });\r\n // this.container.appendChild(fileInput);\r\n // }\r\n // fileInput.click();\r\n // });\r\n\r\n // });\r\n this.ref.markForCheck();\r\n }\r\n\r\n #initUploadImage = (quill: Quill) => {\r\n const self = this;\r\n this.ngZone.runOutsideAngular(() => {\r\n quill.getModule('toolbar').addHandler('image', function () {\r\n let fileInput = this.container.querySelector('input.ql-image[type=file]');\r\n if (fileInput == null) {\r\n fileInput = document.createElement('input');\r\n fileInput.setAttribute('type', Constants.FILE);\r\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\r\n fileInput.classList.add('ql-image');\r\n fileInput.addEventListener('change', () => {\r\n const files = fileInput.files;\r\n const range = this.quill.getSelection(true);\r\n if (!files || !files.length) {\r\n return;\r\n }\r\n const formData = new FormData();\r\n formData.append(Constants.FILE, files[0]);\r\n this.quill.enable(false);\r\n // self.#uploadImage(formData, quill, range, fileInput);\r\n self.configuration?.uploadImage(formData, self.args).then(url => {\r\n self.ngZone.runOutsideAngular(() => {\r\n quill.enable(true);\r\n // quill.editor.insertEmbed(range.index, 'image', resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '');\r\n quill.getModule('clipboard').dangerouslyPasteHTML(range.index, '<a target=\"_blank\" href=\"' + (url || '')\r\n + '\"><img src=\"' + (url || '') + '\" alt=\"c-image-editor-quill\"></a>', 'user');\r\n // quill.insertText();\r\n const content = quill.getContents();\r\n quill.setContents(content);\r\n quill.setSelection(range.index + 1, 'user');\r\n fileInput.value = '';\r\n });\r\n });\r\n });\r\n this.container.appendChild(fileInput);\r\n }\r\n fileInput.click();\r\n });\r\n\r\n });\r\n }\r\n\r\n onModelChange = (val: string) => {\r\n this.formControl.setValue(val);\r\n this.modelHTML = val;\r\n this.ref.markForCheck();\r\n }\r\n\r\n onClickShowHtmlEditor = () => {\r\n this.showHtmlEditor = !this.showHtmlEditor;\r\n this.ref.markForCheck();\r\n }\r\n\r\n // #uploadImage = (formData, quill, range, fileInput) => {\r\n // if (!this.urlUploadImage) {\r\n // this.urlUploadImage = '/partner/v2/merchandise/file/uploaduserfile';\r\n // }\r\n // // this.domain = 'https://api-commerce-qc.vinid.dev';\r\n // this.sdApiService.post(this.urlUploadImage, formData).then((resp: any) => {\r\n // this.ngZone.runOutsideAngular(() => {\r\n // quill.enable(true);\r\n // // quill.editor.insertEmbed(range.index, 'image', resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '');\r\n // quill.getModule('clipboard').dangerouslyPasteHTML(range.index, '<a target=\"_blank\" href=\"' + (resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '')\r\n // + '\"><img src=\"' + (resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '') + '\" alt=\"c-image-editor-quill\"></a>', 'user');\r\n // // quill.insertText();\r\n // const content = quill.getContents();\r\n // quill.setContents(content);\r\n // quill.setSelection(range.index + 1, 'user');\r\n // fileInput.value = '';\r\n // });\r\n // });\r\n // this.ref.markForCheck();\r\n // }\r\n\r\n // #uploadFile = (formData, quill, range, fileInput, loadingID) => {\r\n // if (!this.urlUploadFile) {\r\n // this.urlUploadFile = '/partner/v2/merchandise/file/uploaduserfile';\r\n // }\r\n // // this.domain = 'https://api-commerce-qc.vinid.dev';\r\n // this.loadingService.start('#box-' + loadingID);\r\n // this.sdApiService.post(this.urlUploadFile, formData).then((resp: any) => {\r\n // this.ngZone.runOutsideAngular(() => {\r\n // quill.enable(true);\r\n // // quill.editor.insertEmbed(range.index, 'image', resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '');\r\n // quill.getModule('clipboard').dangerouslyPasteHTML(range.index, '<a target=\"_blank\" href=\"' + (resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '')\r\n // + '\">' + (resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '') + '</a>', 'user');\r\n // // quill.insertText();\r\n // const content = quill.getContents();\r\n // quill.setContents(content);\r\n // quill.setSelection(range.index + 1, 'user');\r\n // fileInput.value = '';\r\n // });\r\n // this.loadingService.stop('#box-' + loadingID);\r\n // }).catch((er) => {\r\n // this.loadingService.stop('#box-' + loadingID);\r\n // });\r\n // this.ref.markForCheck();\r\n // }\r\n\r\n onSelectionChanged(e: SelectionChange) {\r\n // localStorage.setItem('quillRange', e.range ? JSON.stringify(e.range) : (e.oldRange ? JSON.stringify(e.oldRange) : null));\r\n localStorage.setItem('quillRange', e.editor.getSelection() ? JSON.stringify(e.editor.getSelection()) : null);\r\n }\r\n\r\n onContentChanged(e: ContentChange) {\r\n localStorage.setItem('quillRange', JSON.stringify({\r\n index: (e.editor.getLength() ? e.editor.getLength() - 1 : 0),\r\n length: 0\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { QuillModule } from 'ngx-quill';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SdEditor } from './editor.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport {SdButtonModule} from '@sd-angular/core/button';\r\nimport {SdTextareaModule} from '@sd-angular/core/textarea';\r\nimport {SdApiModule, SdApiService} from '@sd-angular/core/api';\r\n\r\n@NgModule({\r\n declarations: [SdEditor],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n QuillModule.forRoot(),\r\n SdTranslateModule,\r\n SdButtonModule,\r\n SdTextareaModule,\r\n SdApiModule\r\n ],\r\n exports: [SdEditor],\r\n providers: [],\r\n})\r\nexport class SdEditorModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/editor.model';\r\nexport * from './lib/editor.module';\r\nexport * from './lib/constant';\r\nexport * from './lib/editor.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sd-angular/core",
3
- "version": "1.2.94",
3
+ "version": "1.2.95",
4
4
  "homepage": "https://www.facebook.com/DarkP3ter",
5
5
  "author": {
6
6
  "name": "darkpeter",
index c5b9159..1584c3f 100644
Binary file