tnx-shared 5.1.147 → 5.1.151

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/bundles/tnx-shared.umd.js +189 -85
  2. package/bundles/tnx-shared.umd.js.map +1 -1
  3. package/bundles/tnx-shared.umd.min.js +1 -1
  4. package/bundles/tnx-shared.umd.min.js.map +1 -1
  5. package/classes/form-schema.d.ts +1 -0
  6. package/classes/form-schema.d.ts.map +1 -1
  7. package/components/add-news/add-news.component.d.ts +1 -0
  8. package/components/add-news/add-news.component.d.ts.map +1 -1
  9. package/components/file-explorer/file-manager/file-manager.component.d.ts +7 -1
  10. package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
  11. package/components/file-explorer/file-picker-dialog/file-picker-dialog.component.d.ts +7 -1
  12. package/components/file-explorer/file-picker-dialog/file-picker-dialog.component.d.ts.map +1 -1
  13. package/components/tn-tinymce/tn-tinymce.component.d.ts +1 -0
  14. package/components/tn-tinymce/tn-tinymce.component.d.ts.map +1 -1
  15. package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts.map +1 -1
  16. package/congviec/congviec/congviec-form/congviec-form.component.d.ts +1 -0
  17. package/congviec/congviec/congviec-form/congviec-form.component.d.ts.map +1 -1
  18. package/congviec/congviec/congviec.component.d.ts.map +1 -1
  19. package/esm2015/classes/form-schema.js +1 -1
  20. package/esm2015/components/add-news/add-news.component.js +10 -3
  21. package/esm2015/components/avatar-uploader/avatar-uploader.component.js +2 -2
  22. package/esm2015/components/chat/chat-box/chat-box.component.js +1 -1
  23. package/esm2015/components/chat/chat-send-message-box/chat-send-message-box.component.js +1 -1
  24. package/esm2015/components/crud/crud-form/crud-form.component.js +2 -2
  25. package/esm2015/components/file-explorer/file-manager/file-manager.component.js +46 -5
  26. package/esm2015/components/file-explorer/file-picker-dialog/file-picker-dialog.component.js +46 -8
  27. package/esm2015/components/tn-tinymce/tn-tinymce.component.js +6 -3
  28. package/esm2015/components/workflow/process-workflow-target/process-workflow-target.component.js +2 -22
  29. package/esm2015/congviec/congviec/congviec-form/congviec-form.component.js +3 -2
  30. package/esm2015/congviec/congviec/congviec.component.js +6 -2
  31. package/esm2015/models/file-type.js +14 -0
  32. package/esm2015/services/base.service.js +2 -2
  33. package/esm2015/services/file-manager.service.js +18 -0
  34. package/esm2015/tnx-shared.js +39 -38
  35. package/fesm2015/tnx-shared.js +142 -42
  36. package/fesm2015/tnx-shared.js.map +1 -1
  37. package/models/file-type.d.ts +11 -0
  38. package/models/file-type.d.ts.map +1 -0
  39. package/package.json +2 -2
  40. package/services/file-manager.service.d.ts +9 -0
  41. package/services/file-manager.service.d.ts.map +1 -0
  42. package/services/file-manager.service.ngfactory.d.ts.map +1 -0
  43. package/tnx-shared.d.ts +38 -37
  44. package/tnx-shared.d.ts.map +1 -1
  45. package/tnx-shared.metadata.json +1 -1
@@ -1,13 +1,18 @@
1
- import { Component, EventEmitter, Injector, Output } from '@angular/core';
1
+ import { Component, EventEmitter, Injector, Input, Output } from '@angular/core';
2
2
  import { ComponentContextService } from '../../../app-context/component-context.service';
3
3
  import { DataFormBase } from '../../../classes/base/data-form-base';
4
- import { CustomControlSchema } from '../../../classes/form-schema';
4
+ import { CustomControlSchema, DropdownControlSchema, LabelSchema } from '../../../classes/form-schema';
5
+ import { fileTypeSource } from '../../../models/file-type';
6
+ import { FileManagerService } from '../../../services/file-manager.service';
5
7
  import { FileObjectService } from '../services/file-object.service';
6
8
  export class FilePickerDialogComponent extends DataFormBase {
7
- constructor(_injector, _fileObjectService) {
9
+ constructor(_injector, _fileObjectService, _fileManagerService) {
8
10
  super(_injector);
9
11
  this._injector = _injector;
10
12
  this._fileObjectService = _fileObjectService;
13
+ this._fileManagerService = _fileManagerService;
14
+ this.isFilePicker = false;
15
+ this.multipleCheckWhenClickRow = true;
11
16
  this.selectedItems = [];
12
17
  this.onChanged = new EventEmitter();
13
18
  this.setting.baseService = this._fileObjectService;
@@ -15,6 +20,27 @@ export class FilePickerDialogComponent extends DataFormBase {
15
20
  }
16
21
  ngOnInit() {
17
22
  this.setting.schema = [
23
+ new LabelSchema({
24
+ field: 'emptyControl',
25
+ mdWidth: 9
26
+ }),
27
+ new DropdownControlSchema({
28
+ field: 'fileType',
29
+ showLabel: false,
30
+ placeholder: 'Chọn loại file',
31
+ dataSource: fileTypeSource,
32
+ mdWidth: 3,
33
+ onChanged: (evt) => {
34
+ if (evt.value != null) {
35
+ this.dataType = evt.value.id;
36
+ }
37
+ else {
38
+ this.dataType = null;
39
+ }
40
+ this.reloadData();
41
+ },
42
+ defaultValue: this.dataType
43
+ }),
18
44
  new CustomControlSchema({
19
45
  field: 'fileManager',
20
46
  showLabel: false,
@@ -26,14 +52,19 @@ export class FilePickerDialogComponent extends DataFormBase {
26
52
  }
27
53
  chooseFiles(data) {
28
54
  let result = '';
29
- for (const item of this.selectedItems) {
30
- result += this.renderHtml(item);
55
+ if (this.isFilePicker) {
56
+ result = this.selectedItems;
57
+ }
58
+ else {
59
+ for (const item of this.selectedItems) {
60
+ result += this.renderHtml(item);
61
+ }
31
62
  }
32
63
  this.onChanged.emit(result);
33
64
  }
34
65
  renderHtml(element) {
35
66
  let ressult = '';
36
- if (element.extension == '.PNG' || element.extension == '.JPG' || element.extension == '.JPEG') {
67
+ if (element.extension.toUpperCase() == '.PNG' || element.extension == '.JPG' || element.extension == '.JPEG') {
37
68
  ressult = '<div style="width:100%; margin-bottom: 15px"><img style="display:block; margin:auto" width="500" src="' + this._fileObjectService.endPoint + '/v5/FileObject/public/' + element.id + '/download" /></div>';
38
69
  }
39
70
  return ressult;
@@ -41,6 +72,9 @@ export class FilePickerDialogComponent extends DataFormBase {
41
72
  selectedFile(data) {
42
73
  this.selectedItems = data;
43
74
  }
75
+ reloadData() {
76
+ this._fileManagerService.onReload();
77
+ }
44
78
  }
45
79
  FilePickerDialogComponent.decorators = [
46
80
  { type: Component, args: [{
@@ -52,9 +86,13 @@ FilePickerDialogComponent.decorators = [
52
86
  ];
53
87
  FilePickerDialogComponent.ctorParameters = () => [
54
88
  { type: Injector },
55
- { type: FileObjectService }
89
+ { type: FileObjectService },
90
+ { type: FileManagerService }
56
91
  ];
57
92
  FilePickerDialogComponent.propDecorators = {
93
+ isFilePicker: [{ type: Input }],
94
+ multipleCheckWhenClickRow: [{ type: Input }],
95
+ dataType: [{ type: Input }],
58
96
  onChanged: [{ type: Output }]
59
97
  };
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXItZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2ZpbGUtZXhwbG9yZXIvZmlsZS1waWNrZXItZGlhbG9nL2ZpbGUtcGlja2VyLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFrQixNQUFNLDhCQUE4QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBUXBFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxZQUFZO0lBTXZELFlBQ2MsU0FBbUIsRUFDckIsa0JBQXFDO1FBRTdDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUhQLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDckIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQU5qRCxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUVkLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBTzFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNwRixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFxQjtZQUNwQyxJQUFJLG1CQUFtQixDQUFDO2dCQUNwQixLQUFLLEVBQUUsYUFBYTtnQkFDcEIsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLEtBQUssRUFBRSxXQUFXO2dCQUNsQixPQUFPLEVBQUUsRUFBRTthQUNkLENBQUM7U0FDTCxDQUFDO1FBQ0YsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBSTtRQUNaLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbkMsTUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQVk7UUFDbkIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLEVBQUU7WUFDNUYsT0FBTyxHQUFHLHdHQUF3RyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsd0JBQXdCLEdBQUcsT0FBTyxDQUFDLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQztTQUN6TjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBSTtRQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7OztZQW5ESixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsbTNCQUFrRDtnQkFFbEQsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBQ3ZDOzs7WUFYaUMsUUFBUTtZQUlqQyxpQkFBaUI7Ozt3QkFZckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcclxuaW1wb3J0IHsgQ3VzdG9tQ29udHJvbFNjaGVtYSwgRm9ybVNjaGVtYUJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgRmlsZU9iamVjdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9maWxlLW9iamVjdC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdmaWxlLXBpY2tlci1kaWFsb2cnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtcGlja2VyLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9maWxlLXBpY2tlci1kaWFsb2cuY29tcG9uZW50LmNzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlUGlja2VyRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgRGF0YUZvcm1CYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIGVudGl0eUtleTogYW55O1xyXG4gICAgc2VsZWN0ZWRJdGVtczogYW55ID0gW107XHJcblxyXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgX2ZpbGVPYmplY3RTZXJ2aWNlOiBGaWxlT2JqZWN0U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl9maWxlT2JqZWN0U2VydmljZTtcclxuICAgICAgICB0aGlzLmVudGl0eUtleSA9IChKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW50X3VzZXJfaW5mbycpKSkudXNlcklkO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSA8Rm9ybVNjaGVtYUJhc2VbXT5bXHJcbiAgICAgICAgICAgIG5ldyBDdXN0b21Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZmlsZU1hbmFnZXInLFxyXG4gICAgICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTXkgZm9sZGVyJyxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDEyXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgXTtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNob29zZUZpbGVzKGRhdGEpIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuc2VsZWN0ZWRJdGVtcykge1xyXG4gICAgICAgICAgICByZXN1bHQgKz0gdGhpcy5yZW5kZXJIdG1sKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uQ2hhbmdlZC5lbWl0KHJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVySHRtbChlbGVtZW50OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCByZXNzdWx0ID0gJyc7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuZXh0ZW5zaW9uID09ICcuUE5HJyB8fCBlbGVtZW50LmV4dGVuc2lvbiA9PSAnLkpQRycgfHwgZWxlbWVudC5leHRlbnNpb24gPT0gJy5KUEVHJykge1xyXG4gICAgICAgICAgICByZXNzdWx0ID0gJzxkaXYgc3R5bGU9XCJ3aWR0aDoxMDAlOyBtYXJnaW4tYm90dG9tOiAxNXB4XCI+PGltZyBzdHlsZT1cImRpc3BsYXk6YmxvY2s7IG1hcmdpbjphdXRvXCIgd2lkdGg9XCI1MDBcIiBzcmM9XCInICsgdGhpcy5fZmlsZU9iamVjdFNlcnZpY2UuZW5kUG9pbnQgKyAnL3Y1L0ZpbGVPYmplY3QvcHVibGljLycgKyBlbGVtZW50LmlkICsgJy9kb3dubG9hZFwiIC8+PC9kaXY+JztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3N1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0ZWRGaWxlKGRhdGEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBkYXRhO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXItZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2ZpbGUtZXhwbG9yZXIvZmlsZS1waWNrZXItZGlhbG9nL2ZpbGUtcGlja2VyLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBa0IsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBUXBFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxZQUFZO0lBU3ZELFlBQ2MsU0FBbUIsRUFDckIsa0JBQXFDLEVBQ3JDLG1CQUF1QztRQUUvQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFKUCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ3JCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQVgxQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5Qiw4QkFBeUIsR0FBWSxJQUFJLENBQUM7UUFHbkQsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFFZCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8s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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFGb3JtQmFzZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWZvcm0tYmFzZSc7XHJcbmltcG9ydCB7IEN1c3RvbUNvbnRyb2xTY2hlbWEsIERyb3Bkb3duQ29udHJvbFNjaGVtYSwgRm9ybVNjaGVtYUJhc2UsIExhYmVsU2NoZW1hIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IGZpbGVUeXBlU291cmNlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpbGUtdHlwZSc7XHJcbmltcG9ydCB7IEZpbGVNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpbGUtbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZU9iamVjdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9maWxlLW9iamVjdC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdmaWxlLXBpY2tlci1kaWFsb2cnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtcGlja2VyLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9maWxlLXBpY2tlci1kaWFsb2cuY29tcG9uZW50LmNzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlUGlja2VyRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgRGF0YUZvcm1CYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIGlzRmlsZVBpY2tlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbXVsdGlwbGVDaGVja1doZW5DbGlja1JvdzogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBkYXRhVHlwZTogYW55O1xyXG4gICAgZW50aXR5S2V5OiBhbnk7XHJcbiAgICBzZWxlY3RlZEl0ZW1zOiBhbnkgPSBbXTtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfZmlsZU9iamVjdFNlcnZpY2U6IEZpbGVPYmplY3RTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2ZpbGVNYW5hZ2VyU2VydmljZTogRmlsZU1hbmFnZXJTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX2ZpbGVPYmplY3RTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuZW50aXR5S2V5ID0gKEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbnRfdXNlcl9pbmZvJykpKS51c2VySWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNjaGVtYSA9IDxGb3JtU2NoZW1hQmFzZVtdPltcclxuICAgICAgICAgICAgbmV3IExhYmVsU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZW1wdHlDb250cm9sJyxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDlcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBEcm9wZG93bkNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdmaWxlVHlwZScsXHJcbiAgICAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdDaOG7jW4gbG/huqFpIGZpbGUnLFxyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogZmlsZVR5cGVTb3VyY2UsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAzLFxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2VkOiAoZXZ0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC52YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVR5cGUgPSBldnQudmFsdWUuaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFUeXBlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0aGlzLmRhdGFUeXBlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ3VzdG9tQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2ZpbGVNYW5hZ2VyJyxcclxuICAgICAgICAgICAgICAgIHNob3dMYWJlbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ015IGZvbGRlcicsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAxMlxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjaG9vc2VGaWxlcyhkYXRhKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xyXG4gICAgICAgIGlmICh0aGlzLmlzRmlsZVBpY2tlcikge1xyXG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLnNlbGVjdGVkSXRlbXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5zZWxlY3RlZEl0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gdGhpcy5yZW5kZXJIdG1sKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25DaGFuZ2VkLmVtaXQocmVzdWx0KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXJIdG1sKGVsZW1lbnQ6IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHJlc3N1bHQgPSAnJztcclxuICAgICAgICBpZiAoZWxlbWVudC5leHRlbnNpb24udG9VcHBlckNhc2UoKSA9PSAnLlBORycgfHwgZWxlbWVudC5leHRlbnNpb24gPT0gJy5KUEcnIHx8IGVsZW1lbnQuZXh0ZW5zaW9uID09ICcuSlBFRycpIHtcclxuICAgICAgICAgICAgcmVzc3VsdCA9ICc8ZGl2IHN0eWxlPVwid2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbTogMTVweFwiPjxpbWcgc3R5bGU9XCJkaXNwbGF5OmJsb2NrOyBtYXJnaW46YXV0b1wiIHdpZHRoPVwiNTAwXCIgc3JjPVwiJyArIHRoaXMuX2ZpbGVPYmplY3RTZXJ2aWNlLmVuZFBvaW50ICsgJy92NS9GaWxlT2JqZWN0L3B1YmxpYy8nICsgZWxlbWVudC5pZCArICcvZG93bmxvYWRcIiAvPjwvZGl2Pic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXNzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdGVkRmlsZShkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWREYXRhKCkge1xyXG4gICAgICAgIHRoaXMuX2ZpbGVNYW5hZ2VyU2VydmljZS5vblJlbG9hZCgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -188,6 +188,8 @@ export class TnTinymceComponent extends ComponentBase {
188
188
  imagetools_toolbar: 'rotateleft rotateright | flipv fliph | editimage imageoptions',
189
189
  language: 'vi_VN',
190
190
  statusbar: false,
191
+ relative_urls: false,
192
+ convert_urls: false,
191
193
  tabfocus_elements: ':prev,:next',
192
194
  init_instance_callback: callbackFunc,
193
195
  mobile: {
@@ -197,7 +199,7 @@ export class TnTinymceComponent extends ComponentBase {
197
199
  };
198
200
  if (mode == 'full') {
199
201
  config.plugins = [
200
- 'advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus editFileNew addNews'
202
+ 'advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus editFileNew addNews'
201
203
  ];
202
204
  config.toolbar = 'formatselect | bold italic Strikethrough forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | table link editFileNew addNews | print removeformat undo redo | fullscreen ';
203
205
  config.mobile.toolbar = 'bold italic Strikethrough forecolor backcolor | bullist numlist | fullscreen';
@@ -342,7 +344,7 @@ export class TnTinymceComponent extends ComponentBase {
342
344
  TnTinymceComponent.decorators = [
343
345
  { type: Component, args: [{
344
346
  selector: 'tn-tinymce',
345
- template: "<input *ngIf=\"!_deviceDetectorService.isDesktop()\" class=\"input-tab-trap\" (focus)=\"focusTrap($event)\" />\r\n<textarea class=\"tinymce-control\" id={{id}} [ngStyle]=\"{height: height+'px'}\">\r\n</textarea>\r\n<tn-dialog #dialog *ngIf=\"equationFormModel.show\" [closeOnEscape]=\"false\"\r\n [header]=\"'C\u00F4ng th\u1EE9c to\u00E1n h\u1ECDc (d\u00F9ng laTex)' | translate\" [popupSize]=\"popupSize\">\r\n <tn-custom-scrollbar #scrollbar>\r\n <equation-editor [data]=\"dataEquation\">\r\n </equation-editor>\r\n </tn-custom-scrollbar>\r\n <ng-template #footer>\r\n <button icon=\"fas fa-check\" [disabled]=\"model.submitting\" pButton type=\"button\" (click)=\"handleOk($event)\"\r\n [label]=\"'Ok' | translate\"></button>\r\n <button icon=\"fas fa-undo\" [disabled]=\"model.submitting\" pButton class=\"ui-button-secondary\" type=\"button\"\r\n (click)=\"equationFormModel.show = false\" [label]=\"'FORM.CANCEL' | translate\"></button>\r\n </ng-template>\r\n</tn-dialog>\r\n\r\n\r\n<tn-dialog *ngIf=\"isAddNews\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddNews = false\">\r\n <add-news #listBase (showChange)=\"showChanged($event)\"></add-news>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"isAddFile\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddFile = false\">\r\n <file-picker-dialog #formBase [parentModel]=\" model\" [parentContext]=\"context\" (closeForm)=\"isAddFile = false\"\r\n (onCancel)=\"handleRFCancel($event)\" (onChanged)=\"showChanged($event)\">\r\n </file-picker-dialog>\r\n</tn-dialog>\r\n",
347
+ template: "<input *ngIf=\"!_deviceDetectorService.isDesktop()\" class=\"input-tab-trap\" (focus)=\"focusTrap($event)\" />\r\n<textarea class=\"tinymce-control\" id={{id}} [ngStyle]=\"{height: height+'px'}\">\r\n</textarea>\r\n<tn-dialog #dialog *ngIf=\"equationFormModel.show\" [closeOnEscape]=\"false\"\r\n [header]=\"'C\u00F4ng th\u1EE9c to\u00E1n h\u1ECDc (d\u00F9ng laTex)' | translate\" [popupSize]=\"popupSize\">\r\n <tn-custom-scrollbar #scrollbar>\r\n <equation-editor [data]=\"dataEquation\">\r\n </equation-editor>\r\n </tn-custom-scrollbar>\r\n <ng-template #footer>\r\n <button icon=\"fas fa-check\" [disabled]=\"model.submitting\" pButton type=\"button\" (click)=\"handleOk($event)\"\r\n [label]=\"'Ok' | translate\"></button>\r\n <button icon=\"fas fa-undo\" [disabled]=\"model.submitting\" pButton class=\"ui-button-secondary\" type=\"button\"\r\n (click)=\"equationFormModel.show = false\" [label]=\"'FORM.CANCEL' | translate\"></button>\r\n </ng-template>\r\n</tn-dialog>\r\n\r\n\r\n<tn-dialog *ngIf=\"isAddNews\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddNews = false\">\r\n <add-news #listBase [languageCode]=\"languageCode\" (showChange)=\"showChanged($event)\"></add-news>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"isAddFile\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddFile = false\">\r\n <file-picker-dialog #formBase [parentModel]=\" model\" [parentContext]=\"context\" (closeForm)=\"isAddFile = false\"\r\n (onCancel)=\"handleRFCancel($event)\" (onChanged)=\"showChanged($event)\">\r\n </file-picker-dialog>\r\n</tn-dialog>\r\n",
346
348
  providers: [
347
349
  {
348
350
  provide: NG_VALUE_ACCESSOR,
@@ -367,8 +369,9 @@ TnTinymceComponent.propDecorators = {
367
369
  required: [{ type: Input }],
368
370
  height: [{ type: Input }],
369
371
  field: [{ type: Input }],
372
+ languageCode: [{ type: Input }],
370
373
  keydown: [{ type: Output }],
371
374
  onBlur: [{ type: Output }],
372
375
  onChanged: [{ type: Output }]
373
376
  };
374
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tdGlueW1jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90bi10aW55bWNlL3RuLXRpbnltY2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQWlCdEYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGFBQWE7SUFnQ2pELFlBQ0ksUUFBa0IsRUFDWCxzQkFBNkMsRUFDMUMsZ0JBQWlDLEVBQ2pDLFlBQWlDO1FBRTNDLEtBQUssQ0FBQyxRQUFRLENB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SSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7O1lBMVhKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsK3REQUEwQztnQkFFMUMsU0FBUyxFQUFFO29CQUNQO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7d0JBQ2pELEtBQUssRUFBRSxJQUFJO3FCQUNkO29CQUNELHVCQUF1QjtpQkFDMUI7O2FBQ0o7OztZQTNCNEQsUUFBUTtZQUc1RCxxQkFBcUI7WUFNckIsZUFBZTtZQUVmLG1CQUFtQjs7OzJCQW1CdkIsU0FBUyxTQUFDLHVCQUF1QjttQkFFakMsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUs7cUJBQ0wsS0FBSztvQkFDTCxLQUFLO3NCQUNMLE1BQU07cUJBQ04sTUFBTTt3QkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSAnbmFub2lkJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IEVNRkpTLCBSVEZKUywgV01GSlMgfSBmcm9tICdydGYuanMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuaW1wb3J0IHsgUG9wdXBTaXplIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IENvbUN0eENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbmZpZ3MvY29tcG9uZW50LWNvbnRleHQuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBOb3RpZmllclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmllci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXF1YXRpb25FZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9lcXVhdGlvbi1lZGl0b3IvZXF1YXRpb24tZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVFeHBsb3JlclNlcnZpY2UgfSBmcm9tICcuLi9maWxlLWV4cGxvcmVyL3NlcnZpY2VzL2ZpbGUtZXhwbG9yZXIuc2VydmljZSc7XHJcblxyXG5kZWNsYXJlIGxldCB0aW55bWNlOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndG4tdGlueW1jZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG4tdGlueW1jZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90bi10aW55bWNlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUblRpbnltY2VDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ29tcG9uZW50Q29udGV4dFNlcnZpY2VcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRuVGlueW1jZUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoRXF1YXRpb25FZGl0b3JDb21wb25lbnQpIGVxdWF0aW9uRm9ybTogRXF1YXRpb25FZGl0b3JDb21wb25lbnQ7XHJcblxyXG4gICAgQElucHV0KCkgbW9kZT86ICdiYXNpYycgfCAnbWVkaXVtJyB8ICdmdWxsJyB8ICdzaW1wbGUnID0gJ2Jhc2ljJztcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgaGVpZ2h0ID0gMjAwO1xyXG4gICAgQElucHV0KCkgZmllbGQgPSAnJztcclxuICAgIEBPdXRwdXQoKSBrZXlkb3duID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgbW9kZWw6IGFueSA9ICcnO1xyXG4gICAgb25DaGFuZ2U6IEZ1bmN0aW9uO1xyXG4gICAgb25Ub3VjaGVkOiBGdW5jdGlvbjtcclxuICAgIGlkID0gbmFub2lkKDgpO1xyXG4gICAgZWRpdG9yOiBhbnk7XHJcbiAgICBkYXRhRXF1YXRpb246IGFueSA9IHt9O1xyXG5cclxuICAgIGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgaXNBZGROZXdzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIG1vZGVzID0ge307XHJcbiAgICBpc0FkZEZpbGUgPSBmYWxzZTtcclxuICAgIGlzID0gZmFsc2U7XHJcbiAgICBoZWFkZXI6IHN0cmluZztcclxuICAgIGVxdWF0aW9uRm9ybU1vZGVsOiBhbnkgPSB7IHNob3c6IGZhbHNlIH07XHJcbiAgICBwb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKHtcclxuICAgICAgICB3aWR0aDogMTEwMCxcclxuICAgICAgICBoZWlnaHQ6IDY1MFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHB1YmxpYyBfZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9ub3RpZmllclNlcnZpY2U6IE5vdGlmaWVyU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2ZpbGVTZXJ2aWNlOiBGaWxlRXhwbG9yZXJTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcblxyXG4gICAgICAgIFJURkpTLmxvZ2dpbmdFbmFibGVkKGZhbHNlKTtcclxuICAgICAgICBXTUZKUy5sb2dnaW5nRW5hYmxlZChmYWxzZSk7XHJcbiAgICAgICAgRU1GSlMubG9nZ2luZ0VuYWJsZWQoZmFsc2UpO1xyXG5cclxuICAgICAgICBjb25zdCBtID0gWydiYXNpYycsICdtZWRpdW0nLCAnZnVsbCcsICdzaW1wbGUnXTtcclxuICAgICAgICBtLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZXNbeF0gPSB0aGlzLmdldFRpbnlNY2VDb25maWdCeU1vZGUoeCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVDb250ZW50SW5zZXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGxldCBtb2RlID0gdGhpcy5tb2RlO1xyXG4gICAgICAgIGlmICghdGhpcy5fZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLmlzRGVza3RvcCgpKSB7XHJcbiAgICAgICAgICAgIG1vZGUgPSAnc2ltcGxlJztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5tb2Rlc1ttb2RlXTtcclxuICAgICAgICBjb25maWcuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRpbnltY2UuaW5pdChjb25maWcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAob2JqID09IG51bGwpIG9iaiA9ICcnO1xyXG4gICAgICAgIHRoaXMubW9kZWwgPSBvYmo7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLnNldENvbnRlbnQodGhpcy5tb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG4gICAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5EaWFsb2coZGF0YSA9IHt9KSB7XHJcbiAgICAgICAgdGhpcy5lcXVhdGlvbkZvcm1Nb2RlbC5zaG93ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVxdWF0aW9uRm9ybU1vZGVsLmRhdGEgPSBkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRpbnlNY2VDb25maWdCeU1vZGUobW9kZSkge1xyXG4gICAgICAgIGNvbnN0ICR0aGlzID0gdGhpcztcclxuICAgICAgICAvLyB0aW55bWNlLlBsdWdpbk1hbmFnZXIuYWRkKCdlcXVhdGlvbicsIGVkaXRvciA9PiB7XHJcblxyXG4gICAgICAgIC8vICAgICAvLyBBZGQgYSBidXR0b24gdGhhdCBvcGVucyBhIHdpbmRvd1xyXG4gICAgICAgIC8vICAgICBlZGl0b3IudWkucmVnaXN0cnkuYWRkQnV0dG9uKCdlcXVhdGlvbicsIHtcclxuICAgICAgICAvLyAgICAgICAgIHRvb2x0aXA6ICdDw7RuZyB0aOG7qWMgdG/DoW4gaOG7jWMnLFxyXG4gICAgICAgIC8vICAgICAgICAgaWNvbjogJ2luc2VydC1jaGFyYWN0ZXInLFxyXG4gICAgICAgIC8vICAgICAgICAgb25BY3Rpb24oKSB7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5vcGVuRGlhbG9nKCk7XHJcbiAgICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAgIC8vIH0pO1xyXG5cclxuICAgICAgICB0aW55bWNlLlBsdWdpbk1hbmFnZXIuYWRkKCdlZGl0RmlsZU5ldycsIGZ1bmN0aW9uIChlZGl0b3IpIHtcclxuICAgICAgICAgICAgY29uc3Qgb3BlbkRpYWxvZyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICR0aGlzLmhlYWRlciA9ICdUaMOqbS9DaOG7iW5oIHPhu61hIGZpbGUgY8OhIG5ow6JuJztcclxuICAgICAgICAgICAgICAgICR0aGlzLmlzQWRkTmV3cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgJHRoaXMuaXNBZGRGaWxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICR0aGlzLnBvcHVwU2l6ZSA9IHsgd2lkdGg6IDEyMDAsIGhlaWdodDogNzAwIH07XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBlZGl0b3IudWkucmVnaXN0cnkuYWRkQnV0dG9uKCdlZGl0RmlsZU5ldycsIHtcclxuICAgICAgICAgICAgICAgIHRvb2x0aXA6ICdUaMOqbS9DaMOobiDhuqNuaCwgdmlkZW8sIGZpbGUgdsOgbyBu4buZaSBkdW5nJyxcclxuICAgICAgICAgICAgICAgIGljb246ICdkdXBsaWNhdGUnLFxyXG4gICAgICAgICAgICAgICAgb25BY3Rpb246IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBvcGVuRGlhbG9nKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aW55bWNlLlBsdWdpbk1hbmFnZXIuYWRkKCdhZGROZXdzJywgZnVuY3Rpb24gKGVkaXRvcikge1xyXG4gICAgICAgICAgICBjb25zdCBvcGVuRGlhbG9nID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgJHRoaXMuaGVhZGVyID0gJ1Row6ptL0No4buNbiB0aW4gYsOgaSc7XHJcbiAgICAgICAgICAgICAgICAkdGhpcy5pc0FkZE5ld3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgJHRoaXMuaXNBZGRGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAkdGhpcy5wb3B1cFNpemUgPSB7IHdpZHRoOiAxMjAwLCBoZWlnaHQ6IDcwMCB9O1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgZWRpdG9yLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbignYWRkTmV3cycsIHtcclxuICAgICAgICAgICAgICAgIHRvb2x0aXA6ICdUaMOqbS9DaMOobiB0aW4gYsOgaSB2w6BvIG7hu5lpIGR1bmcnLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogJ25vbi1icmVha2luZycsXHJcbiAgICAgICAgICAgICAgICBvbkFjdGlvbjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wZW5EaWFsb2coKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBjYWxsYmFja0Z1bmMgPSBlZGl0b3IgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIGVkaXRvci5zZXRNb2RlKCdyZWFkb25seScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGVkQm9keSA9IGpRdWVyeShlZGl0b3IuaWZyYW1lRWxlbWVudCkuY29udGVudHMoKS5maW5kKCdib2R5Jyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVkaXRvckhvbGRlciA9IGVkaXRvci5pZnJhbWVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLmlzRGVza3RvcCgpKSB7XHJcbiAgICAgICAgICAgICAgICBlZEJvZHkuYWRkQ2xhc3MoJ21vYmlsZScpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlZEJvZHkub24oJ2JsdXInLCBlID0+IHtcclxuICAgICAgICAgICAgICAgIGVkaXRvckhvbGRlci5jbGFzc0xpc3QucmVtb3ZlKCd0aW55bWNlLWZvY3VzJyk7XHJcbiAgICAgICAgICAgIH0pLm9uKCdmb2N1cycsIGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgZWRpdG9ySG9sZGVyLmNsYXNzTGlzdC5hZGQoJ3RpbnltY2UtZm9jdXMnKTtcclxuICAgICAgICAgICAgfSkub24oJ3Bhc3RlJywgKGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZXMgPSBlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcztcclxuICAgICAgICAgICAgICAgIGlmICgoKHR5cGVzIGluc3RhbmNlb2YgRE9NU3RyaW5nTGlzdCkgJiYgdHlwZXMuY29udGFpbnMoJ3RleHQvaHRtbCcpKSB8fCAodHlwZXMuaW5kZXhPZiAmJiB0eXBlcy5pbmRleE9mKCd0ZXh0L2h0bWwnKSAhPT0gLTEpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5vcmlnaW5hbEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGUub3JpZ2luYWxFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUGFzdGUoZS5vcmlnaW5hbEV2ZW50KS50aGVuKChjb250ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoLzwhXFxbaWZbXFxzXFxTXSo/Pi9nbSwgJycpLnJlcGxhY2UoLzwhXFxbZW5kaWZbXFxzXFxTXSo/Pi9nbSwgJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IHRoaXMubm9ybWFsaXplSFRNTChjb250ZW50LCAnPCFbaWYgIXN1cHBvcnRMaXN0c10+JywgJzwhW2VuZGlmXT4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLm5vcm1hbGl6ZUhUTUwoY29udGVudCwgJzwhW2lmICFtc0VxdWF0aW9uXT4nLCAnPCFbZW5kaWZdPicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmV4ZWNDb21tYW5kKCdtY2VJbnNlcnRDb250ZW50JywgZmFsc2UsIGNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KS5vbigna2V5ZG93bicsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZS5jdHJsS2V5IHx8IGUubWV0YUtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoU3RyaW5nLmZyb21DaGFyQ29kZShlLndoaWNoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3MnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbktleURvd24oZSwgQ29tQ3R4Q29uc3RhbnRzLlJPT1QuS0VZX0RPV05fQ1RSTF9TKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUud2hpY2ggPT0gMjcpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5RG93bihlLCBDb21DdHhDb25zdGFudHMuUk9PVC5LRVlfRE9XTl9FU0MpO1xyXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkub24oJ2RibGNsaWNrJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09ICdpbWcnICYmIGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnbGF0ZXgnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkRpYWxvZyh7IGNvbnRlbnQ6IGUudGFyZ2V0LmdldEF0dHJpYnV0ZSgnYWx0JyksIHN0eWxlOiBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoJ3N0eWxlJyksIGhlaWdodDogZS50YXJnZXQuZ2V0QXR0cmlidXRlKCdoZWlnaHQnKSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBlZGl0b3Iub24oJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVCbHVyKCk7XHJcbiAgICAgICAgICAgIH0pLm9uKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGVkaXRvci5nZXRDb250ZW50KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdChjb250ZW50KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBlZGl0b3Iuc2V0Q29udGVudCh0aGlzLm1vZGVsKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCBjb25maWc6IGFueSA9IHtcclxuICAgICAgICAgICAgc2VsZWN0b3I6ICcjJyArIHRoaXMuaWQsXHJcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXHJcbiAgICAgICAgICAgIGNvbnRlbnRfY3NzOiBbXHJcbiAgICAgICAgICAgICAgICAnL2Fzc2V0cy92ZW5kb3IvdGlueW1jZS9jdXN0b20uY3NzJ1xyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBpbWFnZXRvb2xzX3Rvb2xiYXI6ICdyb3RhdGVsZWZ0IHJvdGF0ZXJpZ2h0IHwgZmxpcHYgZmxpcGggfCBlZGl0aW1hZ2UgaW1hZ2VvcHRpb25zJyxcclxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICd2aV9WTicsXHJcbiAgICAgICAgICAgIHN0YXR1c2JhcjogZmFsc2UsXHJcbiAgICAgICAgICAgIHRhYmZvY3VzX2VsZW1lbnRzOiAnOnByZXYsOm5leHQnLFxyXG4gICAgICAgICAgICBpbml0X2luc3RhbmNlX2NhbGxiYWNrOiBjYWxsYmFja0Z1bmMsXHJcbiAgICAgICAgICAgIG1vYmlsZToge1xyXG4gICAgICAgICAgICAgICAgdGhlbWU6ICdzaWx2ZXInLFxyXG4gICAgICAgICAgICAgICAgcGx1Z2luczogWydhZHZsaXN0IGF1dG9saW5rIGxpc3RzIGxpbmsgaW1hZ2UgY2hhcm1hcCBwcmludCBwcmV2aWV3IGFuY2hvciB0ZXh0Y29sb3Igc2VhcmNocmVwbGFjZSB2aXN1YWxibG9ja3MgY29kZSBmdWxsc2NyZWVuIGluc2VydGRhdGV0aW1lIG1lZGlhIHRhYmxlIG1lZGlhIGNvZGUgbGlzdHMgY29sb3JwaWNrZXIgaW1hZ2V0b29scyB0YWJmb2N1cyB0ZXh0Y29sb3InXSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKG1vZGUgPT0gJ2Z1bGwnKSB7XHJcbiAgICAgICAgICAgIGNvbmZpZy5wbHVnaW5zID0gW1xyXG4gICAgICAgICAgICAgICAgJ2Fkdmxpc3QgYXV0b2xpbmsgbGlzdHMgbGluayBpbWFnZSBjaGFybWFwIHByaW50IHByZXZpZXcgYW5jaG9yIHRleHRjb2xvciBzZWFyY2hyZXBsYWNlIHZpc3VhbGJsb2NrcyBjb2RlIGZ1bGxzY3JlZW4gaW5zZXJ0ZGF0ZXRpbWUgbWVkaWEgdGFibGUgbWVkaWEgY29kZSBsaXN0cyBjb2xvcnBpY2tlciBpbWFnZXRvb2xzIHRhYmZvY3VzICBlZGl0RmlsZU5ldyBhZGROZXdzJ1xyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBjb25maWcudG9vbGJhciA9ICdmb3JtYXRzZWxlY3QgfCBib2xkIGl0YWxpYyBTdHJpa2V0aHJvdWdoIGZvcmVjb2xvciBiYWNrY29sb3IgfCBhbGlnbmxlZnQgYWxpZ25jZW50ZXIgYWxpZ25yaWdodCBhbGlnbmp1c3RpZnkgfCBidWxsaXN0IG51bWxpc3Qgb3V0ZGVudCBpbmRlbnQgfCB0YWJsZSBsaW5rIGVkaXRGaWxlTmV3IGFkZE5ld3MgfCBwcmludCByZW1vdmVmb3JtYXQgdW5kbyByZWRvIHwgZnVsbHNjcmVlbiAnO1xyXG4gICAgICAgICAgICBjb25maWcubW9iaWxlLnRvb2xiYXIgPSAnYm9sZCBpdGFsaWMgU3RyaWtldGhyb3VnaCBmb3JlY29sb3IgYmFja2NvbG9yIHwgYnVsbGlzdCBudW1saXN0IHwgZnVsbHNjcmVlbic7XHJcbiAgICAgICAgICAgIGNvbmZpZy5wYXN0ZV9kYXRhX2ltYWdlcyA9IHRydWU7XHJcbiAgICAgICAgICAgIHJldHVybiBjb25maWc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gJ21lZGl1bScpIHtcclxuICAgICAgICAgICAgY29uZmlnLnBsdWdpbnMgPSBbJ2Fkdmxpc3QgYXV0b2xpbmsgbGlzdHMgbGluayBpbWFnZSBjaGFybWFwIHByaW50IHByZXZpZXcgYW5jaG9yIHRleHRjb2xvciBzZWFyY2hyZXBsYWNlIHZpc3VhbGJsb2NrcyBjb2RlIGZ1bGxzY3JlZW4gaW5zZXJ0ZGF0ZXRpbWUgbWVkaWEgdGFibGUgbWVkaWEgY29kZSBsaXN0cyBjb2xvcnBpY2tlciBpbWFnZXRvb2xzIHRhYmZvY3VzIHRleHRjb2xvciddO1xyXG4gICAgICAgICAgICBjb25maWcudG9vbGJhciA9ICdmb3JtYXRzZWxlY3QgfCBib2xkIGl0YWxpYyBTdHJpa2V0aHJvdWdoIGZvcmVjb2xvciBiYWNrY29sb3IgfCBhbGlnbmxlZnQgYWxpZ25jZW50ZXIgYWxpZ25yaWdodCBhbGlnbmp1c3RpZnkgfCBidWxsaXN0IG51bWxpc3Qgb3V0ZGVudCBpbmRlbnQgfCB0YWJsZSBsaW5rICB8IHByaW50IHJlbW92ZWZvcm1hdCB1bmRvIHJlZG8gfCBmdWxsc2NyZWVuJztcclxuICAgICAgICAgICAgY29uZmlnLm1vYmlsZS50b29sYmFyID0gJ2JvbGQgaXRhbGljIFN0cmlrZXRocm91Z2ggZm9yZWNvbG9yIGJhY2tjb2xvciB8IGJ1bGxpc3QgbnVtbGlzdCB8IGZ1bGxzY3JlZW4nO1xyXG4gICAgICAgICAgICBjb25maWcucGFzdGVfZGF0YV9pbWFnZXMgPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm4gY29uZmlnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChtb2RlID09ICdzaW1wbGUnKSB7XHJcbiAgICAgICAgICAgIGNvbmZpZy5wbHVnaW5zID0gWydhZHZsaXN0IGF1dG9saW5rIGxpc3RzIGxpbmsgaW1hZ2UgY2hhcm1hcCBwcmludCBwcmV2aWV3IGFuY2hvciB0ZXh0Y29sb3Igc2VhcmNocmVwbGFjZSB2aXN1YWxibG9ja3MgY29kZSBmdWxsc2NyZWVuIGluc2VydGRhdGV0aW1lIG1lZGlhIHRhYmxlIG1lZGlhIGNvZGUgbGlzdHMgY29sb3JwaWNrZXIgaW1hZ2V0b29scyB0YWJmb2N1cyB0ZXh0Y29sb3InXTtcclxuICAgICAgICAgICAgY29uZmlnLnRvb2xiYXIgPSAnYm9sZCBpdGFsaWMgU3RyaWtldGhyb3VnaCBmb3JlY29sb3IgYmFja2NvbG9yIHwgYnVsbGlzdCBudW1saXN0IHwgZnVsbHNjcmVlbic7XHJcbiAgICAgICAgICAgIGNvbmZpZy5tb2JpbGUudG9vbGJhciA9ICdmdWxsc2NyZWVuIHwgYm9sZCBpdGFsaWMgU3RyaWtldGhyb3VnaCBmb3JlY29sb3IgYmFja2NvbG9yIHwgYnVsbGlzdCBudW1saXN0JztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbmZpZy5wbHVnaW5zID0gWydhZHZsaXN0IGF1dG9saW5rIGxpc3RzIGxpbmsgaW1hZ2UgY2hhcm1hcCBwcmludCBwcmV2aWV3IGFuY2hvciB0ZXh0Y29sb3Igc2VhcmNocmVwbGFjZSB2aXN1YWxibG9ja3MgY29kZSBmdWxsc2NyZWVuIGluc2VydGRhdGV0aW1lIG1lZGlhIHRhYmxlIG1lZGlhIGNvZGUgbGlzdHMgY29sb3JwaWNrZXIgaW1hZ2V0b29scyB0YWJmb2N1cyB0ZXh0Y29sb3InXTtcclxuICAgICAgICBjb25maWcudG9vbGJhciA9ICdmb3JtYXRzZWxlY3QgfCBib2xkIGl0YWxpYyBTdHJpa2V0aHJvdWdoIGZvcmVjb2xvciBiYWNrY29sb3J8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IGFsaWduanVzdGlmeSB8IGJ1bGxpc3QgbnVtbGlzdCc7XHJcbiAgICAgICAgY29uZmlnLnRvb2xiYXIgPSAnYm9sZCBpdGFsaWMgU3RyaWtldGhyb3VnaCBmb3JlY29sb3IgYmFja2NvbG9yIHwgYnVsbGlzdCBudW1saXN0IHwgZnVsbHNjcmVlbic7XHJcbiAgICAgICAgY29uZmlnLnBhc3RlX2RhdGFfaW1hZ2VzID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gY29uZmlnO1xyXG4gICAgfVxyXG5cclxuICAgIG5vcm1hbGl6ZUhUTUwoY29udGVudDogc3RyaW5nLCBiZWdpbjogc3RyaW5nLCBlbmQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gY29udGVudC5pbmRleE9mKGJlZ2luKTtcclxuICAgICAgICB3aGlsZSAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleDIgPSBjb250ZW50LmluZGV4T2YoZW5kLCBpbmRleCk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleDIgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIGluZGV4MikgKyBjb250ZW50LnN1YnN0cmluZyhpbmRleDIgKyBlbmQubGVuZ3RoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKDAsIGluZGV4KSArIGNvbnRlbnQuc3Vic3RyaW5nKGluZGV4ICsgYmVnaW4ubGVuZ3RoKTtcclxuICAgICAgICAgICAgaW5kZXggPSBjb250ZW50LmluZGV4T2YoYmVnaW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVCbHVyKCkge1xyXG4gICAgICAgIHRoaXMub25CbHVyLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbktleURvd24oZTogYW55LCB0b3BpYzogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5rZXlkb3duLm5leHQoeyBldmVudDogZSwgdG9waWMgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlT2soZXZ0KSB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZXF1YXRpb25Gb3JtLnByZXZpZXcubmF0aXZlRWxlbWVudC5vdXRlckhUTUw7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IuZXhlY0NvbW1hbmQoJ21jZUluc2VydENvbnRlbnQnLCB0cnVlLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBmb2N1c1RyYXAoZXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5lZGl0b3IpIHtcclxuICAgICAgICAgICAgdGhpcy5lZGl0b3IuaWZyYW1lRWxlbWVudC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RpbnltY2UtZm9jdXMnKTtcclxuICAgICAgICAgICAgdGhpcy5lZGl0b3IuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBoYW5kbGVQYXN0ZShlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlcyA9IFtdO1xyXG4gICAgICAgICAgICBsZXQgb2xkTGVnYWN5VmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSB7XHJcbiAgICAgICAgICAgICAgICBvblBpY3R1cmU6IChpc0xlZ2FjeSwgY3JlYXRlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9sZExlZ2FjeVZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9sZExlZ2FjeVZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbSA9IGNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXMucHVzaChkb20ub3V0ZXJIVE1MKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvbTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWlzTGVnYWN5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbSA9IGNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9tLnRhZ05hbWUgPT0gJ0lNRycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcy5wdXNoKGRvbS5vdXRlckhUTUwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvbTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZExlZ2FjeVZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGVzID0gZS5jbGlwYm9hcmREYXRhLnR5cGVzO1xyXG5cclxuICAgICAgICAgICAgaWYgKCgodHlwZXMgaW5zdGFuY2VvZiBET01TdHJpbmdMaXN0KSAmJiB0eXBlcy5jb250YWlucygndGV4dC9odG1sJykpIHx8ICh0eXBlcy5pbmRleE9mICYmIHR5cGVzLmluZGV4T2YoJ3RleHQvaHRtbCcpICE9PSAtMSkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBwYXN0ZWREYXRhID0gZS5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvaHRtbCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhc3RlZERhdGEuaW5kZXhPZignPHY6aW1hZ2VkYXRhICcpID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShwYXN0ZWREYXRhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoKHR5cGVzIGluc3RhbmNlb2YgRE9NU3RyaW5nTGlzdCkgJiYgdHlwZXMuY29udGFpbnMoJ3RleHQvcnRmJykpIHx8ICh0eXBlcy5pbmRleE9mICYmIHR5cGVzLmluZGV4T2YoJ3RleHQvcnRmJykgIT09IC0xKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXN0ZWRSdGZEYXRhID0gZS5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcnRmJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvYyA9IG5ldyBSVEZKUy5Eb2N1bWVudCh0aGlzLl9jb21tb25TZXJ2aWNlLnN0cmluZ1RvQXJyYXlCdWZmZXIocGFzdGVkUnRmRGF0YSksIHNldHRpbmdzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jLnJlbmRlcigpLnRoZW4oKGh0bWxFbGVtZW50cykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gcGFzdGVkRGF0YS5pbmRleE9mKCc8djppbWFnZWRhdGEgJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHAxID0gcGFzdGVkRGF0YS5zdWJzdHJpbmcoMCwgaW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4MiA9IHBhc3RlZERhdGEuaW5kZXhPZignLz4nLCBpbmRleCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcDIgPSBwYXN0ZWREYXRhLnN1YnN0cmluZyhpbmRleDIgKyAyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGltYWdlU3RyID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZXMubGVuZ3RoID4gaSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VTdHIgPSBpbWFnZXNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVkRGF0YSA9IHAxICsgaW1hZ2VTdHIgKyBwMjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwYXN0ZWREYXRhLmluZGV4T2YoJzx2OmltYWdlZGF0YSAnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocGFzdGVkRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkZpbGVNYW5hZ2VyKCkge1xyXG4gICAgICAgIHRoaXMuaXNTaG93ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHN1YnNjcmliZUNvbnRlbnRJbnNlcnQoKSB7XHJcbiAgICAgICAgdGhpcy5yb290Q29udGV4dC5zdWJzY3JpYmUoJ0lOU0VSVF9DT05URU5UX0JPRFknLCB4ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lZGl0b3IuaW5zZXJ0Q29udGVudCh4LmNvbnRlbnQpO1xyXG4gICAgICAgICAgICB0aGlzLmlzU2hvdyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGlueW1jZS5FZGl0b3JNYW5hZ2VyLnJlbW92ZSgnIycgKyB0aGlzLmlkKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVSRkNhbmNlbChldnQpIHtcclxuICAgICAgICB0aGlzLmlzQWRkRmlsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dDaGFuZ2VkKGV2dCkge1xyXG4gICAgICAgIHRoaXMuaXNBZGRGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0FkZE5ld3MgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVkaXRvci5pbnNlcnRDb250ZW50KGV2dCk7XHJcbiAgICB9XHJcbn1cclxuIl19
377
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG4tdGlueW1jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90bi10aW55bWNlL3RuLXRpbnltY2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQWlCdEYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGFBQWE7SUFpQ2pELFlBQ0ksUUFBa0IsRUFDWCxzQkFBNkMsRUFDMUMsZ0JBQWlDLEVBQ2pDLFlBQWlDO1FBRTNDLEtBQUssQ0FBQyxRQUFRLENB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dkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7O1lBN1hKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsK3ZEQUEwQztnQkFFMUMsU0FBUyxFQUFFO29CQUNQO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7d0JBQ2pELEtBQUssRUFBRSxJQUFJO3FCQUNkO29CQUNELHVCQUF1QjtpQkFDMUI7O2FBQ0o7OztZQTNCNEQsUUFBUTtZQUc1RCxxQkFBcUI7WUFNckIsZUFBZTtZQUVmLG1CQUFtQjs7OzJCQW1CdkIsU0FBUyxTQUFDLHVCQUF1QjttQkFFakMsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUs7cUJBQ0wsS0FBSztvQkFDTCxLQUFLOzJCQUNMLEtBQUs7c0JBQ0wsTUFBTTtxQkFDTixNQUFNO3dCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xyXG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tICduZ3gtZGV2aWNlLWRldGVjdG9yJztcclxuaW1wb3J0IHsgRU1GSlMsIFJURkpTLCBXTUZKUyB9IGZyb20gJ3J0Zi5qcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBQb3B1cFNpemUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgQ29tQ3R4Q29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29uZmlncy9jb21wb25lbnQtY29udGV4dC5jb25zdGFudCc7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFcXVhdGlvbkVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uL2VxdWF0aW9uLWVkaXRvci9lcXVhdGlvbi1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZUV4cGxvcmVyU2VydmljZSB9IGZyb20gJy4uL2ZpbGUtZXhwbG9yZXIvc2VydmljZXMvZmlsZS1leHBsb3Jlci5zZXJ2aWNlJztcclxuXHJcbmRlY2xhcmUgbGV0IHRpbnltY2U6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd0bi10aW55bWNlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90bi10aW55bWNlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RuLXRpbnltY2UuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRuVGlueW1jZUNvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBDb21wb25lbnRDb250ZXh0U2VydmljZVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG5UaW55bWNlQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgQFZpZXdDaGlsZChFcXVhdGlvbkVkaXRvckNvbXBvbmVudCkgZXF1YXRpb25Gb3JtOiBFcXVhdGlvbkVkaXRvckNvbXBvbmVudDtcclxuXHJcbiAgICBASW5wdXQoKSBtb2RlPzogJ2Jhc2ljJyB8ICdtZWRpdW0nIHwgJ2Z1bGwnIHwgJ3NpbXBsZScgPSAnYmFzaWMnO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBoZWlnaHQgPSAyMDA7XHJcbiAgICBASW5wdXQoKSBmaWVsZCA9ICcnO1xyXG4gICAgQElucHV0KCkgbGFuZ3VhZ2VDb2RlO1xyXG4gICAgQE91dHB1dCgpIGtleWRvd24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBtb2RlbDogYW55ID0gJyc7XHJcbiAgICBvbkNoYW5nZTogRnVuY3Rpb247XHJcbiAgICBvblRvdWNoZWQ6IEZ1bmN0aW9uO1xyXG4gICAgaWQgPSBuYW5vaWQoOCk7XHJcbiAgICBlZGl0b3I6IGFueTtcclxuICAgIGRhdGFFcXVhdGlvbjogYW55ID0ge307XHJcblxyXG4gICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICBpc0FkZE5ld3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgbW9kZXMgPSB7fTtcclxuICAgIGlzQWRkRmlsZSA9IGZhbHNlO1xyXG4gICAgaXMgPSBmYWxzZTtcclxuICAgIGhlYWRlcjogc3RyaW5nO1xyXG4gICAgZXF1YXRpb25Gb3JtTW9kZWw6IGFueSA9IHsgc2hvdzogZmFsc2UgfTtcclxuICAgIHBvcHVwU2l6ZSA9IG5ldyBQb3B1cFNpemUoe1xyXG4gICAgICAgIHdpZHRoOiAxMTAwLFxyXG4gICAgICAgIGhlaWdodDogNjUwXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHVibGljIF9kZXZpY2VEZXRlY3RvclNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX25vdGlmaWVyU2VydmljZTogTm90aWZpZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZmlsZVNlcnZpY2U6IEZpbGVFeHBsb3JlclNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuXHJcbiAgICAgICAgUlRGSlMubG9nZ2luZ0VuYWJsZWQoZmFsc2UpO1xyXG4gICAgICAgIFdNRkpTLmxvZ2dpbmdFbmFibGVkKGZhbHNlKTtcclxuICAgICAgICBFTUZKUy5sb2dnaW5nRW5hYmxlZChmYWxzZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IG0gPSBbJ2Jhc2ljJywgJ21lZGl1bScsICdmdWxsJywgJ3NpbXBsZSddO1xyXG4gICAgICAgIG0uZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tb2Rlc1t4XSA9IHRoaXMuZ2V0VGlueU1jZUNvbmZpZ0J5TW9kZSh4KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmliZUNvbnRlbnRJbnNlcnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IG1vZGUgPSB0aGlzLm1vZGU7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9kZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNEZXNrdG9wKCkpIHtcclxuICAgICAgICAgICAgbW9kZSA9ICdzaW1wbGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLm1vZGVzW21vZGVdO1xyXG4gICAgICAgIGNvbmZpZy5oZWlnaHQgPSB0aGlzLmhlaWdodDtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGlueW1jZS5pbml0KGNvbmZpZyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChvYmogPT0gbnVsbCkgb2JqID0gJyc7XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IG9iajtcclxuICAgICAgICBpZiAodGhpcy5lZGl0b3IpIHtcclxuICAgICAgICAgICAgdGhpcy5lZGl0b3Iuc2V0Q29udGVudCh0aGlzLm1vZGVsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgICB9XHJcbiAgICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkRpYWxvZyhkYXRhID0ge30pIHtcclxuICAgICAgICB0aGlzLmVxdWF0aW9uRm9ybU1vZGVsLnNob3cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZXF1YXRpb25Gb3JtTW9kZWwuZGF0YSA9IGRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGlueU1jZUNvbmZpZ0J5TW9kZShtb2RlKSB7XHJcbiAgICAgICAgY29uc3QgJHRoaXMgPSB0aGlzO1xyXG4gICAgICAgIC8vIHRpbnltY2UuUGx1Z2luTWFuYWdlci5hZGQoJ2VxdWF0aW9uJywgZWRpdG9yID0+IHtcclxuXHJcbiAgICAgICAgLy8gICAgIC8vIEFkZCBhIGJ1dHRvbiB0aGF0IG9wZW5zIGEgd2luZG93XHJcbiAgICAgICAgLy8gICAgIGVkaXRvci51aS5yZWdpc3RyeS5hZGRCdXR0b24oJ2VxdWF0aW9uJywge1xyXG4gICAgICAgIC8vICAgICAgICAgdG9vbHRpcDogJ0PDtG5nIHRo4bupYyB0b8OhbiBo4buNYycsXHJcbiAgICAgICAgLy8gICAgICAgICBpY29uOiAnaW5zZXJ0LWNoYXJhY3RlcicsXHJcbiAgICAgICAgLy8gICAgICAgICBvbkFjdGlvbigpIHtcclxuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLm9wZW5EaWFsb2coKTtcclxuICAgICAgICAvLyAgICAgICAgIH1cclxuICAgICAgICAvLyAgICAgfSk7XHJcbiAgICAgICAgLy8gfSk7XHJcblxyXG4gICAgICAgIHRpbnltY2UuUGx1Z2luTWFuYWdlci5hZGQoJ2VkaXRGaWxlTmV3JywgZnVuY3Rpb24gKGVkaXRvcikge1xyXG4gICAgICAgICAgICBjb25zdCBvcGVuRGlhbG9nID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgJHRoaXMuaGVhZGVyID0gJ1Row6ptL0No4buJbmggc+G7rWEgZmlsZSBjw6EgbmjDom4nO1xyXG4gICAgICAgICAgICAgICAgJHRoaXMuaXNBZGROZXdzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAkdGhpcy5pc0FkZEZpbGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgJHRoaXMucG9wdXBTaXplID0geyB3aWR0aDogMTIwMCwgaGVpZ2h0OiA3MDAgfTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGVkaXRvci51aS5yZWdpc3RyeS5hZGRCdXR0b24oJ2VkaXRGaWxlTmV3Jywge1xyXG4gICAgICAgICAgICAgICAgdG9vbHRpcDogJ1Row6ptL0Now6huIOG6o25oLCB2aWRlbywgZmlsZSB2w6BvIG7hu5lpIGR1bmcnLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogJ2R1cGxpY2F0ZScsXHJcbiAgICAgICAgICAgICAgICBvbkFjdGlvbjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wZW5EaWFsb2coKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRpbnltY2UuUGx1Z2luTWFuYWdlci5hZGQoJ2FkZE5ld3MnLCBmdW5jdGlvbiAoZWRpdG9yKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9wZW5EaWFsb2cgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAkdGhpcy5oZWFkZXIgPSAnVGjDqm0vQ2jhu41uIHRpbiBiw6BpJztcclxuICAgICAgICAgICAgICAgICR0aGlzLmlzQWRkTmV3cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAkdGhpcy5pc0FkZEZpbGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICR0aGlzLnBvcHVwU2l6ZSA9IHsgd2lkdGg6IDEyMDAsIGhlaWdodDogNzAwIH07XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBlZGl0b3IudWkucmVnaXN0cnkuYWRkQnV0dG9uKCdhZGROZXdzJywge1xyXG4gICAgICAgICAgICAgICAgdG9vbHRpcDogJ1Row6ptL0Now6huIHRpbiBiw6BpIHbDoG8gbuG7mWkgZHVuZycsXHJcbiAgICAgICAgICAgICAgICBpY29uOiAnbm9uLWJyZWFraW5nJyxcclxuICAgICAgICAgICAgICAgIG9uQWN0aW9uOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3BlbkRpYWxvZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNhbGxiYWNrRnVuYyA9IGVkaXRvciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgZWRpdG9yLnNldE1vZGUoJ3JlYWRvbmx5Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZWRCb2R5ID0galF1ZXJ5KGVkaXRvci5pZnJhbWVFbGVtZW50KS5jb250ZW50cygpLmZpbmQoJ2JvZHknKTtcclxuICAgICAgICAgICAgY29uc3QgZWRpdG9ySG9sZGVyID0gZWRpdG9yLmlmcmFtZUVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9kZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNEZXNrdG9wKCkpIHtcclxuICAgICAgICAgICAgICAgIGVkQm9keS5hZGRDbGFzcygnbW9iaWxlJyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVkQm9keS5vbignYmx1cicsIGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgZWRpdG9ySG9sZGVyLmNsYXNzTGlzdC5yZW1vdmUoJ3RpbnltY2UtZm9jdXMnKTtcclxuICAgICAgICAgICAgfSkub24oJ2ZvY3VzJywgZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlZGl0b3JIb2xkZXIuY2xhc3NMaXN0LmFkZCgndGlueW1jZS1mb2N1cycpO1xyXG4gICAgICAgICAgICB9KS5vbigncGFzdGUnLCAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlcyA9IGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLnR5cGVzO1xyXG4gICAgICAgICAgICAgICAgaWYgKCgodHlwZXMgaW5zdGFuY2VvZiBET01TdHJpbmdMaXN0KSAmJiB0eXBlcy5jb250YWlucygndGV4dC9odG1sJykpIHx8ICh0eXBlcy5pbmRleE9mICYmIHR5cGVzLmluZGV4T2YoJ3RleHQvaHRtbCcpICE9PSAtMSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBlLm9yaWdpbmFsRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5vcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVQYXN0ZShlLm9yaWdpbmFsRXZlbnQpLnRoZW4oKGNvbnRlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudCA9IGNvbnRlbnQucmVwbGFjZSgvPCFcXFtpZltcXHNcXFNdKj8+L2dtLCAnJykucmVwbGFjZSgvPCFcXFtlbmRpZltcXHNcXFNdKj8+L2dtLCAnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gdGhpcy5ub3JtYWxpemVIVE1MKGNvbnRlbnQsICc8IVtpZiAhc3VwcG9ydExpc3RzXT4nLCAnPCFbZW5kaWZdPicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IHRoaXMubm9ybWFsaXplSFRNTChjb250ZW50LCAnPCFbaWYgIW1zRXF1YXRpb25dPicsICc8IVtlbmRpZl0+Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IuZXhlY0NvbW1hbmQoJ21jZUluc2VydENvbnRlbnQnLCBmYWxzZSwgY29udGVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLm9uKCdrZXlkb3duJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChTdHJpbmcuZnJvbUNoYXJDb2RlKGUud2hpY2gpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5RG93bihlLCBDb21DdHhDb25zdGFudHMuUk9PVC5LRVlfRE9XTl9DVFJMX1MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZS53aGljaCA9PSAyNykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXlEb3duKGUsIENvbUN0eENvbnN0YW50cy5ST09ULktFWV9ET1dOX0VTQyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KS5vbignZGJsY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ2ltZycgJiYgZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdsYXRleCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuRGlhbG9nKHsgY29udGVudDogZS50YXJnZXQuZ2V0QXR0cmlidXRlKCdhbHQnKSwgc3R5bGU6IGUudGFyZ2V0LmdldEF0dHJpYnV0ZSgnc3R5bGUnKSwgaGVpZ2h0OiBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2hlaWdodCcpIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGVkaXRvci5vbignYmx1cicsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUJsdXIoKTtcclxuICAgICAgICAgICAgfSkub24oJ2NoYW5nZScsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZWRpdG9yLmdldENvbnRlbnQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UoY29udGVudCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlZC5lbWl0KGNvbnRlbnQpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGVkaXRvci5zZXRDb250ZW50KHRoaXMubW9kZWwpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbmZpZzogYW55ID0ge1xyXG4gICAgICAgICAgICBzZWxlY3RvcjogJyMnICsgdGhpcy5pZCxcclxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcclxuICAgICAgICAgICAgY29udGVudF9jc3M6IFtcclxuICAgICAgICAgICAgICAgICcvYXNzZXRzL3ZlbmRvci90aW55bWNlL2N1c3RvbS5jc3MnXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIGltYWdldG9vbHNfdG9vbGJhcjogJ3JvdGF0ZWxlZnQgcm90YXRlcmlnaHQgfCBmbGlwdiBmbGlwaCB8IGVkaXRpbWFnZSBpbWFnZW9wdGlvbnMnLFxyXG4gICAgICAgICAgICBsYW5ndWFnZTogJ3ZpX1ZOJyxcclxuICAgICAgICAgICAgc3RhdHVzYmFyOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVsYXRpdmVfdXJsczogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbnZlcnRfdXJsczogZmFsc2UsXHJcbiAgICAgICAgICAgIHRhYmZvY3VzX2VsZW1lbnRzOiAnOnByZXYsOm5leHQnLFxyXG4gICAgICAgICAgICBpbml0X2luc3RhbmNlX2NhbGxiYWNrOiBjYWxsYmFja0Z1bmMsXHJcbiAgICAgICAgICAgIG1vYmlsZToge1xyXG4gICAgICAgICAgICAgICAgdGhlbWU6ICdzaWx2ZXInLFxyXG4gICAgICAgICAgICAgICAgcGx1Z2luczogWydhZHZsaXN0IGF1dG9saW5rIGxpc3RzIGxpbmsgaW1hZ2UgY2hhcm1hcCBwcmludCBwcmV2aWV3IGFuY2hvciB0ZXh0Y29sb3Igc2VhcmNocmVwbGFjZSB2aXN1YWxibG9ja3MgY29kZSBmdWxsc2NyZWVuIGluc2VydGRhdGV0aW1lIG1lZGlhIHRhYmxlIG1lZGlhIGNvZGUgbGlzdHMgY29sb3JwaWNrZXIgaW1hZ2V0b29scyB0YWJmb2N1cyB0ZXh0Y29sb3InXSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKG1vZGUgPT0gJ2Z1bGwnKSB7XHJcbiAgICAgICAgICAgIGNvbmZpZy5wbHVnaW5zID0gW1xyXG4gICAgICAgICAgICAgICAgJ2Fkdmxpc3QgYXV0b2xpbmsgbGlzdHMgbGluayBpbWFnZSBjaGFybWFwIHByaW50IHByZXZpZXcgYW5jaG9yIHRleHRjb2xvciBzZWFyY2hyZXBsYWNlIHZpc3VhbGJsb2NrcyBjb2RlIGZ1bGxzY3JlZW4gaW5zZXJ0ZGF0ZXRpbWUgbWVkaWEgdGFibGUgbWVkaWEgY29kZSBsaXN0cyBjb2xvcnBpY2tlciBpbWFnZXRvb2xzIHRhYmZvY3VzIGVkaXRGaWxlTmV3IGFkZE5ld3MnXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIGNvbmZpZy50b29sYmFyID0gJ2Zvcm1hdHNlbGVjdCB8IGJvbGQgaXRhbGljIFN0cmlrZXRocm91Z2ggZm9yZWNvbG9yIGJhY2tjb2xvciB8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IGFsaWduanVzdGlmeSB8IGJ1bGxpc3QgbnVtbGlzdCBvdXRkZW50IGluZGVudCB8IHRhYmxlIGxpbmsgZWRpdEZpbGVOZXcgYWRkTmV3cyB8IHByaW50IHJlbW92ZWZvcm1hdCB1bmRvIHJlZG8gfCBmdWxsc2NyZWVuICc7XHJcbiAgICAgICAgICAgIGNvbmZpZy5tb2JpbGUudG9vbGJhciA9ICdib2xkIGl0YWxpYyBTdHJpa2V0aHJvdWdoIGZvcmVjb2xvciBiYWNrY29sb3IgfCBidWxsaXN0IG51bWxpc3QgfCBmdWxsc2NyZWVuJztcclxuICAgICAgICAgICAgY29uZmlnLnBhc3RlX2RhdGFfaW1hZ2VzID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobW9kZSA9PSAnbWVkaXVtJykge1xyXG4gICAgICAgICAgICBjb25maWcucGx1Z2lucyA9IFsnYWR2bGlzdCBhdXRvbGluayBsaXN0cyBsaW5rIGltYWdlIGNoYXJtYXAgcHJpbnQgcHJldmlldyBhbmNob3IgdGV4dGNvbG9yIHNlYXJjaHJlcGxhY2UgdmlzdWFsYmxvY2tzIGNvZGUgZnVsbHNjcmVlbiBpbnNlcnRkYXRldGltZSBtZWRpYSB0YWJsZSBtZWRpYSBjb2RlIGxpc3RzIGNvbG9ycGlja2VyIGltYWdldG9vbHMgdGFiZm9jdXMgdGV4dGNvbG9yJ107XHJcbiAgICAgICAgICAgIGNvbmZpZy50b29sYmFyID0gJ2Zvcm1hdHNlbGVjdCB8IGJvbGQgaXRhbGljIFN0cmlrZXRocm91Z2ggZm9yZWNvbG9yIGJhY2tjb2xvciB8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IGFsaWduanVzdGlmeSB8IGJ1bGxpc3QgbnVtbGlzdCBvdXRkZW50IGluZGVudCB8IHRhYmxlIGxpbmsgIHwgcHJpbnQgcmVtb3ZlZm9ybWF0IHVuZG8gcmVkbyB8IGZ1bGxzY3JlZW4nO1xyXG4gICAgICAgICAgICBjb25maWcubW9iaWxlLnRvb2xiYXIgPSAnYm9sZCBpdGFsaWMgU3RyaWtldGhyb3VnaCBmb3JlY29sb3IgYmFja2NvbG9yIHwgYnVsbGlzdCBudW1saXN0IHwgZnVsbHNjcmVlbic7XHJcbiAgICAgICAgICAgIGNvbmZpZy5wYXN0ZV9kYXRhX2ltYWdlcyA9IHRydWU7XHJcbiAgICAgICAgICAgIHJldHVybiBjb25maWc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gJ3NpbXBsZScpIHtcclxuICAgICAgICAgICAgY29uZmlnLnBsdWdpbnMgPSBbJ2Fkdmxpc3QgYXV0b2xpbmsgbGlzdHMgbGluayBpbWFnZSBjaGFybWFwIHByaW50IHByZXZpZXcgYW5jaG9yIHRleHRjb2xvciBzZWFyY2hyZXBsYWNlIHZpc3VhbGJsb2NrcyBjb2RlIGZ1bGxzY3JlZW4gaW5zZXJ0ZGF0ZXRpbWUgbWVkaWEgdGFibGUgbWVkaWEgY29kZSBsaXN0cyBjb2xvcnBpY2tlciBpbWFnZXRvb2xzIHRhYmZvY3VzIHRleHRjb2xvciddO1xyXG4gICAgICAgICAgICBjb25maWcudG9vbGJhciA9ICdib2xkIGl0YWxpYyBTdHJpa2V0aHJvdWdoIGZvcmVjb2xvciBiYWNrY29sb3IgfCBidWxsaXN0IG51bWxpc3QgfCBmdWxsc2NyZWVuJztcclxuICAgICAgICAgICAgY29uZmlnLm1vYmlsZS50b29sYmFyID0gJ2Z1bGxzY3JlZW4gfCBib2xkIGl0YWxpYyBTdHJpa2V0aHJvdWdoIGZvcmVjb2xvciBiYWNrY29sb3IgfCBidWxsaXN0IG51bWxpc3QnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uZmlnLnBsdWdpbnMgPSBbJ2Fkdmxpc3QgYXV0b2xpbmsgbGlzdHMgbGluayBpbWFnZSBjaGFybWFwIHByaW50IHByZXZpZXcgYW5jaG9yIHRleHRjb2xvciBzZWFyY2hyZXBsYWNlIHZpc3VhbGJsb2NrcyBjb2RlIGZ1bGxzY3JlZW4gaW5zZXJ0ZGF0ZXRpbWUgbWVkaWEgdGFibGUgbWVkaWEgY29kZSBsaXN0cyBjb2xvcnBpY2tlciBpbWFnZXRvb2xzIHRhYmZvY3VzIHRleHRjb2xvciddO1xyXG4gICAgICAgIGNvbmZpZy50b29sYmFyID0gJ2Zvcm1hdHNlbGVjdCB8IGJvbGQgaXRhbGljIFN0cmlrZXRocm91Z2ggZm9yZWNvbG9yIGJhY2tjb2xvcnwgYWxpZ25sZWZ0IGFsaWduY2VudGVyIGFsaWducmlnaHQgYWxpZ25qdXN0aWZ5IHwgYnVsbGlzdCBudW1saXN0JztcclxuICAgICAgICBjb25maWcudG9vbGJhciA9ICdib2xkIGl0YWxpYyBTdHJpa2V0aHJvdWdoIGZvcmVjb2xvciBiYWNrY29sb3IgfCBidWxsaXN0IG51bWxpc3QgfCBmdWxsc2NyZWVuJztcclxuICAgICAgICBjb25maWcucGFzdGVfZGF0YV9pbWFnZXMgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiBjb25maWc7XHJcbiAgICB9XHJcblxyXG4gICAgbm9ybWFsaXplSFRNTChjb250ZW50OiBzdHJpbmcsIGJlZ2luOiBzdHJpbmcsIGVuZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgaW5kZXggPSBjb250ZW50LmluZGV4T2YoYmVnaW4pO1xyXG4gICAgICAgIHdoaWxlIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4MiA9IGNvbnRlbnQuaW5kZXhPZihlbmQsIGluZGV4KTtcclxuICAgICAgICAgICAgaWYgKGluZGV4MiA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgaW5kZXgyKSArIGNvbnRlbnQuc3Vic3RyaW5nKGluZGV4MiArIGVuZC5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoMCwgaW5kZXgpICsgY29udGVudC5zdWJzdHJpbmcoaW5kZXggKyBiZWdpbi5sZW5ndGgpO1xyXG4gICAgICAgICAgICBpbmRleCA9IGNvbnRlbnQuaW5kZXhPZihiZWdpbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjb250ZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUJsdXIoKSB7XHJcbiAgICAgICAgdGhpcy5vbkJsdXIubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uS2V5RG93bihlOiBhbnksIHRvcGljOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmtleWRvd24ubmV4dCh7IGV2ZW50OiBlLCB0b3BpYyB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVPayhldnQpIHtcclxuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5lcXVhdGlvbkZvcm0ucHJldmlldy5uYXRpdmVFbGVtZW50Lm91dGVySFRNTDtcclxuICAgICAgICB0aGlzLmVkaXRvci5leGVjQ29tbWFuZCgnbWNlSW5zZXJ0Q29udGVudCcsIHRydWUsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvY3VzVHJhcChldmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXRvcikge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRvci5pZnJhbWVFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndGlueW1jZS1mb2N1cycpO1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRvci5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFzeW5jIGhhbmRsZVBhc3RlKGUpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VzID0gW107XHJcbiAgICAgICAgICAgIGxldCBvbGRMZWdhY3lWYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCBzZXR0aW5ncyA9IHtcclxuICAgICAgICAgICAgICAgIG9uUGljdHVyZTogKGlzTGVnYWN5LCBjcmVhdGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob2xkTGVnYWN5VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2xkTGVnYWN5VmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tID0gY3JlYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcy5wdXNoKGRvbS5vdXRlckhUTUwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9tO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghaXNMZWdhY3kpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tID0gY3JlYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb20udGFnTmFtZSA9PSAnSU1HJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzLnB1c2goZG9tLm91dGVySFRNTCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9tO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkTGVnYWN5VmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgY29uc3QgdHlwZXMgPSBlLmNsaXBib2FyZERhdGEudHlwZXM7XHJcblxyXG4gICAgICAgICAgICBpZiAoKCh0eXBlcyBpbnN0YW5jZW9mIERPTVN0cmluZ0xpc3QpICYmIHR5cGVzLmNvbnRhaW5zKCd0ZXh0L2h0bWwnKSkgfHwgKHR5cGVzLmluZGV4T2YgJiYgdHlwZXMuaW5kZXhPZigndGV4dC9odG1sJykgIT09IC0xKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBhc3RlZERhdGEgPSBlLmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9odG1sJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocGFzdGVkRGF0YS5pbmRleE9mKCc8djppbWFnZWRhdGEgJykgPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHBhc3RlZERhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCgodHlwZXMgaW5zdGFuY2VvZiBET01TdHJpbmdMaXN0KSAmJiB0eXBlcy5jb250YWlucygndGV4dC9ydGYnKSkgfHwgKHR5cGVzLmluZGV4T2YgJiYgdHlwZXMuaW5kZXhPZigndGV4dC9ydGYnKSAhPT0gLTEpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhc3RlZFJ0ZkRhdGEgPSBlLmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9ydGYnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9jID0gbmV3IFJURkpTLkRvY3VtZW50KHRoaXMuX2NvbW1vblNlcnZpY2Uuc3RyaW5nVG9BcnJheUJ1ZmZlcihwYXN0ZWRSdGZEYXRhKSwgc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2MucmVuZGVyKCkudGhlbigoaHRtbEVsZW1lbnRzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSBwYXN0ZWREYXRhLmluZGV4T2YoJzx2OmltYWdlZGF0YSAnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcDEgPSBwYXN0ZWREYXRhLnN1YnN0cmluZygwLCBpbmRleCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXgyID0gcGFzdGVkRGF0YS5pbmRleE9mKCcvPicsIGluZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwMiA9IHBhc3RlZERhdGEuc3Vic3RyaW5nKGluZGV4MiArIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1hZ2VTdHIgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlcy5sZW5ndGggPiBpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVN0ciA9IGltYWdlc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXN0ZWREYXRhID0gcDEgKyBpbWFnZVN0ciArIHAyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHBhc3RlZERhdGEuaW5kZXhPZignPHY6aW1hZ2VkYXRhICcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShwYXN0ZWREYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuRmlsZU1hbmFnZXIoKSB7XHJcbiAgICAgICAgdGhpcy5pc1Nob3cgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgc3Vic2NyaWJlQ29udGVudEluc2VydCgpIHtcclxuICAgICAgICB0aGlzLnJvb3RDb250ZXh0LnN1YnNjcmliZSgnSU5TRVJUX0NPTlRFTlRfQk9EWScsIHggPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRvci5pbnNlcnRDb250ZW50KHguY29udGVudCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aW55bWNlLkVkaXRvck1hbmFnZXIucmVtb3ZlKCcjJyArIHRoaXMuaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJGQ2FuY2VsKGV2dCkge1xyXG4gICAgICAgIHRoaXMuaXNBZGRGaWxlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0NoYW5nZWQoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5pc0FkZEZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzQWRkTmV3cyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLmluc2VydENvbnRlbnQoZXZ0KTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -50,27 +50,7 @@ export class ProcessWorkflowTargetComponent extends DataFormBase {
50
50
  }
51
51
  getUserLabel(item) {
52
52
  let label = this._userService.getUserName(item);
53
- if (item.tenChucVu) {
54
- label += ` (${item.tenChucVu})`;
55
- }
56
- else if (item.lstTenChucVu && item.lstTenChucVu.length) {
57
- const lstChucVu = item.lstTenChucVu;
58
- let index = 0;
59
- for (const chucVu in lstChucVu) {
60
- switch (index) {
61
- case 0:
62
- label += `(${chucVu},`;
63
- break;
64
- case lstChucVu.length - 1:
65
- label += `${chucVu})`;
66
- break;
67
- default:
68
- label += `${chucVu}`;
69
- break;
70
- }
71
- index++;
72
- }
73
- }
53
+ label = (item.maChucVu ? `${item.maChucVu}. ` : '') + `${label}` + (item.tenDonVi ? ` - ${item.tenDonVi}` : '');
74
54
  return label;
75
55
  }
76
56
  _createCoCauToChucControl(field, label) {
@@ -109,4 +89,4 @@ ProcessWorkflowTargetComponent.propDecorators = {
109
89
  data: [{ type: Input }],
110
90
  initValue: [{ type: Input }]
111
91
  };
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy13b3JrZmxvdy10YXJnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvd29ya2Zsb3cvcHJvY2Vzcy13b3JrZmxvdy10YXJnZXQvcHJvY2Vzcy13b3JrZmxvdy10YXJnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBUXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRixPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQzFCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPOUQsTUFBTSxPQUFPLDhCQUErQixTQUFRLFlBQVk7SUFLNUQsWUFDYyxTQUFtQixFQUNyQixxQkFBMkMsRUFDM0MsbUJBQXVDLEVBQ3ZDLGlCQUF1QyxFQUN2QyxnQkFBaUM7UUFFekMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBTlAsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNyQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBQzNDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtR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QUUsQ0FBQzthQUNYO1NBQ0o7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDbEQsT0FBTyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELDZCQUE2QixDQUFDLEtBQUssRUFBRSxLQUFLO1FBQ3RDLE9BQU8sNEJBQTRCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsd0JBQXdCLENBQUMsS0FBSyxFQUFFLEtBQUs7UUFDakMsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFSyxpQkFBaUIsQ0FBQyxHQUFjOztZQUNsQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUN0QyxHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNsRCxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN4Qyx5Q0FBeUM7UUFDN0MsQ0FBQztLQUFBOzs7WUE3RkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLGlNQUF1RDs7YUFFMUQ7OztZQXpCbUIsUUFBUTtZQVluQixvQkFBb0I7WUFEcEIsa0JBQWtCO1lBRGxCLG9CQUFvQjtZQURwQixlQUFlOzs7bUJBbUJuQixLQUFLO3dCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGFGb3JtQmFzZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWZvcm0tYmFzZSc7XHJcbmltcG9ydCB7XHJcbiAgICBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hLFxyXG4gICAgRHJvcGRvd25Db250cm9sU2NoZW1hLFxyXG4gICAgRXZlbnREYXRhLFxyXG4gICAgRm9ybVNjaGVtYUJhc2UsXHJcbiAgICBVc2VyUGlja2VyQ29udHJvbFNjaGVtYVxyXG59IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBEbUNodWNWdVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kbS1jaHVjdnUuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJHcm91cFJlYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXNlci1ncm91cC1yZWFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb0NhdVRvQ2h1Y1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb2NhdXRvY2h1Yy9zZXJ2aWNlcy9jb2NhdXRvY2h1Yy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RhdGVNYWNoaW5lc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zdGF0ZW1hY2hpbmVzL3NlcnZpY2VzL3N0YXRlbWFjaGluZXMuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgICBjcmVhdGVPcmdQaWNrZXJDb250cm9sLFxyXG4gICAgY3JlYXRlUm9sZVBpY2tlckNvbnRyb2wsXHJcbiAgICBjcmVhdGVVc2VyR3JvdXBQaWNrZXJDb250cm9sLFxyXG4gICAgY3JlYXRlVXNlclBpY2tlckNvbnRyb2xcclxufSBmcm9tICcuLi8uLi9zdGF0ZW1hY2hpbmVzL3V0aWxzL3V0aWxzJztcclxuaW1wb3J0IHsgV29ya2Zsb3dUYXJnZXREZWZhdWx0VmFsdWUgfSBmcm9tICcuLi9tb2RlbHMvbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdwcm9jZXNzLXdvcmtmbG93LXRhcmdldCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvY2Vzcy13b3JrZmxvdy10YXJnZXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzcy13b3JrZmxvdy10YXJnZXQuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9jZXNzV29ya2Zsb3dUYXJnZXRDb21wb25lbnQgZXh0ZW5kcyBEYXRhRm9ybUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIEBJbnB1dCgpIGRhdGE6IGFueTtcclxuICAgIEBJbnB1dCgpIGluaXRWYWx1ZTogV29ya2Zsb3dUYXJnZXREZWZhdWx0VmFsdWU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfc3RhdGVNYWNoaW5lc1NlcnZpY2U6IFN0YXRlTWFjaGluZXNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NvQ2F1VG9DaHVjU2VydmljZTogQ29DYXVUb0NodWNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3VzZXJHcm91cFNlcnZpY2U6IFVzZXJHcm91cFJlYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2RtQ2h1Y1Z1U2VydmljZTogRG1DaHVjVnVTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZGF0YS51c2VySWRzKSB0aGlzLmRhdGEudXNlcklkcyA9IFtdO1xyXG4gICAgICAgIGlmICghdGhpcy5kYXRhLnJ1bGVzKSB0aGlzLmRhdGEucnVsZXMgPSBbXTtcclxuICAgICAgICBpZiAoIXRoaXMuZGF0YS5ydWxlSW5Xb3JrZmxvd3MpIHRoaXMuZGF0YS5ydWxlSW5Xb3JrZmxvd3MgPSBbXTtcclxuICAgICAgICBpZiAoIXRoaXMuZGF0YS5kZXBhcnRtZW50SWRzKSB0aGlzLmRhdGEuZGVwYXJ0bWVudElkcyA9IFtdO1xyXG4gICAgICAgIGlmICghdGhpcy5kYXRhLmdyb3VwSWRzKSB0aGlzLmRhdGEuZ3JvdXBJZHMgPSBbXTtcclxuICAgICAgICBpZiAoIXRoaXMuZGF0YS5yb2xlSWRzKSB0aGlzLmRhdGEucm9sZUlkcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX3N0YXRlTWFjaGluZXNTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSA8Rm9ybVNjaGVtYUJhc2VbXT5bXHJcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVVzZXJQaWNrZXJDb250cm9sKCd1c2VySWRzJywgJ05nxrDhu51pIG5o4bqtbiB44butIGzDvScpLFxyXG4gICAgICAgICAgICAvLyB0aGlzLmNyZWF0ZVVzZXJQaWNrZXJDb250cm9sKCdpZENhcFRyZW5HYW5OaGF0cycsICdDw6FuIGLhu5kgY+G6pXAgdHLDqm4gZ+G6p24gbmjhuqV0JyksXHJcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvQ2F1VG9DaHVjQ29udHJvbCgnZGVwYXJ0bWVudElkcycsICfEkMahbiB24buLJyksXHJcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVVzZXJHcm91cFBpY2tlckNvbnRyb2woJ2dyb3VwSWRzJywgJ05ow7NtIG5nxrDhu51pIGTDuW5nJyksXHJcbiAgICAgICAgICAgIC8vIHRoaXMuX2NyZWF0ZVJvbGVQaWNrZXJDb250cm9sKCdyb2xlSWRzJywgJ0No4bupYyB24bulJylcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIF9jcmVhdGVVc2VyUGlja2VyQ29udHJvbChmaWVsZDogc3RyaW5nLCBsYWJlbDogc3RyaW5nLCBtdWx0aXBsZTogYm9vbGVhbiA9IHRydWUpOiBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbCA9IGNyZWF0ZVVzZXJQaWNrZXJDb250cm9sKGZpZWxkLCBsYWJlbCwgMTUsIChpdGVtOiBhbnkpID0+IHRoaXMuZ2V0VXNlckxhYmVsKGl0ZW0pKTtcclxuICAgICAgICBjb250cm9sLm11bHRpcGxlID0gbXVsdGlwbGU7XHJcbiAgICAgICAgY29udHJvbC5wbHVzVXJsID0gJ0ZvclVzZXJQaWNrZXInO1xyXG4gICAgICAgIC8vIGNvbnRyb2wubGF6eUxvYWRPcmdhbml6YXRpb24gPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0VXNlckxhYmVsKGl0ZW06IGFueSkge1xyXG4gICAgICAgIGxldCBsYWJlbCA9IHRoaXMuX3VzZXJTZXJ2aWNlLmdldFVzZXJOYW1lKGl0ZW0pO1xyXG4gICAgICAgIGlmIChpdGVtLnRlbkNodWNWdSkge1xyXG4gICAgICAgICAgICBsYWJlbCArPSBgICgke2l0ZW0udGVuQ2h1Y1Z1fSlgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpdGVtLmxzdFRlbkNodWNWdSAmJiBpdGVtLmxzdFRlbkNodWNWdS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgbHN0Q2h1Y1Z1ID0gaXRlbS5sc3RUZW5DaHVjVnUgYXMgc3RyaW5nW107XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2h1Y1Z1IGluIGxzdENodWNWdSkge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgKz0gYCgke2NodWNWdX0sYDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBsc3RDaHVjVnUubGVuZ3RoIC0gMTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgKz0gYCR7Y2h1Y1Z1fSlgO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCArPSBgJHtjaHVjVnV9YDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsYWJlbDtcclxuICAgIH1cclxuXHJcbiAgICBfY3JlYXRlQ29DYXVUb0NodWNDb250cm9sKGZpZWxkOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcpOiBEcm9wZG93bkNvbnRyb2xTY2hlbWEge1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVPcmdQaWNrZXJDb250cm9sKGZpZWxkLCBsYWJlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgX2NyZWF0ZVVzZXJHcm91cFBpY2tlckNvbnRyb2woZmllbGQsIGxhYmVsKTogQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSB7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVVzZXJHcm91cFBpY2tlckNvbnRyb2wodGhpcy5fdXNlckdyb3VwU2VydmljZSwgZmllbGQsIGxhYmVsKTtcclxuICAgIH1cclxuXHJcbiAgICBfY3JlYXRlUm9sZVBpY2tlckNvbnRyb2woZmllbGQsIGxhYmVsKTogQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSB7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJvbGVQaWNrZXJDb250cm9sKHRoaXMuX2RtQ2h1Y1Z1U2VydmljZSwgZmllbGQsIGxhYmVsKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvbkZvcm1Jbml0aWFsaXplZChldnQ6IEV2ZW50RGF0YSkge1xyXG4gICAgICAgIGV2dC5tb2RlbC51c2VySWRzID0gdGhpcy5kYXRhLnVzZXJJZHM7XHJcbiAgICAgICAgZXZ0Lm1vZGVsLmRlcGFydG1lbnRJZHMgPSB0aGlzLmRhdGEuZGVwYXJ0bWVudElkcztcclxuICAgICAgICBldnQubW9kZWwuZ3JvdXBJZHMgPSB0aGlzLmRhdGEuZ3JvdXBJZHM7XHJcbiAgICAgICAgLy8gZXZ0Lm1vZGVsLnJvbGVJZHMgPSB0aGlzLmRhdGEucm9sZUlkcztcclxuICAgIH1cclxufVxyXG4iXX0=
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy13b3JrZmxvdy10YXJnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvd29ya2Zsb3cvcHJvY2Vzcy13b3JrZmxvdy10YXJnZXQvcHJvY2Vzcy13b3JrZmxvdy10YXJnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBUXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRixPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQzFCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPOUQsTUFBTSxPQUFPLDhCQUErQixTQUFRLFlBQVk7SUFLNUQsWUFDYyxTQUFtQixFQUNyQixxQkFBMkMsRUFDM0MsbUJBQXVDLEVBQ3ZDLGlCQUF1QyxFQUN2QyxnQkFBaUM7UUFFekMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBTlAsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNyQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBQzNDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtR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dUJBQXVCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUssaUJBQWlCLENBQUMsR0FBYzs7WUFDbEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDdEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDbEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDeEMseUNBQXlDO1FBQzdDLENBQUM7S0FBQTs7O1lBekVKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxpTUFBdUQ7O2FBRTFEOzs7WUF6Qm1CLFFBQVE7WUFZbkIsb0JBQW9CO1lBRHBCLGtCQUFrQjtZQURsQixvQkFBb0I7WUFEcEIsZUFBZTs7O21CQW1CbkIsS0FBSzt3QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhRm9ybUJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1mb3JtLWJhc2UnO1xyXG5pbXBvcnQge1xyXG4gICAgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSxcclxuICAgIERyb3Bkb3duQ29udHJvbFNjaGVtYSxcclxuICAgIEV2ZW50RGF0YSxcclxuICAgIEZvcm1TY2hlbWFCYXNlLFxyXG4gICAgVXNlclBpY2tlckNvbnRyb2xTY2hlbWFcclxufSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgRG1DaHVjVnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZG0tY2h1Y3Z1LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyR3JvdXBSZWFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VzZXItZ3JvdXAtcmVhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29DYXVUb0NodWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29jYXV0b2NodWMvc2VydmljZXMvY29jYXV0b2NodWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0YXRlTWFjaGluZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3RhdGVtYWNoaW5lcy9zZXJ2aWNlcy9zdGF0ZW1hY2hpbmVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gICAgY3JlYXRlT3JnUGlja2VyQ29udHJvbCxcclxuICAgIGNyZWF0ZVJvbGVQaWNrZXJDb250cm9sLFxyXG4gICAgY3JlYXRlVXNlckdyb3VwUGlja2VyQ29udHJvbCxcclxuICAgIGNyZWF0ZVVzZXJQaWNrZXJDb250cm9sXHJcbn0gZnJvbSAnLi4vLi4vc3RhdGVtYWNoaW5lcy91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IFdvcmtmbG93VGFyZ2V0RGVmYXVsdFZhbHVlIH0gZnJvbSAnLi4vbW9kZWxzL21vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncHJvY2Vzcy13b3JrZmxvdy10YXJnZXQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3Mtd29ya2Zsb3ctdGFyZ2V0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3Byb2Nlc3Mtd29ya2Zsb3ctdGFyZ2V0LmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvY2Vzc1dvcmtmbG93VGFyZ2V0Q29tcG9uZW50IGV4dGVuZHMgRGF0YUZvcm1CYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSBkYXRhOiBhbnk7XHJcbiAgICBASW5wdXQoKSBpbml0VmFsdWU6IFdvcmtmbG93VGFyZ2V0RGVmYXVsdFZhbHVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgX3N0YXRlTWFjaGluZXNTZXJ2aWNlOiBTdGF0ZU1hY2hpbmVzU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jb0NhdVRvQ2h1Y1NlcnZpY2U6IENvQ2F1VG9DaHVjU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF91c2VyR3JvdXBTZXJ2aWNlOiBVc2VyR3JvdXBSZWFsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kbUNodWNWdVNlcnZpY2U6IERtQ2h1Y1Z1U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEudXNlcklkcykgdGhpcy5kYXRhLnVzZXJJZHMgPSBbXTtcclxuICAgICAgICBpZiAoIXRoaXMuZGF0YS5ydWxlcykgdGhpcy5kYXRhLnJ1bGVzID0gW107XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEucnVsZUluV29ya2Zsb3dzKSB0aGlzLmRhdGEucnVsZUluV29ya2Zsb3dzID0gW107XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEuZGVwYXJ0bWVudElkcykgdGhpcy5kYXRhLmRlcGFydG1lbnRJZHMgPSBbXTtcclxuICAgICAgICBpZiAoIXRoaXMuZGF0YS5ncm91cElkcykgdGhpcy5kYXRhLmdyb3VwSWRzID0gW107XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEucm9sZUlkcykgdGhpcy5kYXRhLnJvbGVJZHMgPSBbXTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl9zdGF0ZU1hY2hpbmVzU2VydmljZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gPEZvcm1TY2hlbWFCYXNlW10+W1xyXG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVVc2VyUGlja2VyQ29udHJvbCgndXNlcklkcycsICdOZ8aw4budaSBuaOG6rW4geOG7rSBsw70nKSxcclxuICAgICAgICAgICAgLy8gdGhpcy5jcmVhdGVVc2VyUGlja2VyQ29udHJvbCgnaWRDYXBUcmVuR2FuTmhhdHMnLCAnQ8OhbiBi4buZIGPhuqVwIHRyw6puIGfhuqduIG5o4bqldCcpLFxyXG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVDb0NhdVRvQ2h1Y0NvbnRyb2woJ2RlcGFydG1lbnRJZHMnLCAnxJDGoW4gduG7iycpLFxyXG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVVc2VyR3JvdXBQaWNrZXJDb250cm9sKCdncm91cElkcycsICdOaMOzbSBuZ8aw4budaSBkw7luZycpLFxyXG4gICAgICAgICAgICAvLyB0aGlzLl9jcmVhdGVSb2xlUGlja2VyQ29udHJvbCgncm9sZUlkcycsICdDaOG7qWMgduG7pScpXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBfY3JlYXRlVXNlclBpY2tlckNvbnRyb2woZmllbGQ6IHN0cmluZywgbGFiZWw6IHN0cmluZywgbXVsdGlwbGU6IGJvb2xlYW4gPSB0cnVlKTogVXNlclBpY2tlckNvbnRyb2xTY2hlbWEge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBjcmVhdGVVc2VyUGlja2VyQ29udHJvbChmaWVsZCwgbGFiZWwsIDE1LCAoaXRlbTogYW55KSA9PiB0aGlzLmdldFVzZXJMYWJlbChpdGVtKSk7XHJcbiAgICAgICAgY29udHJvbC5tdWx0aXBsZSA9IG11bHRpcGxlO1xyXG4gICAgICAgIGNvbnRyb2wucGx1c1VybCA9ICdGb3JVc2VyUGlja2VyJztcclxuICAgICAgICAvLyBjb250cm9sLmxhenlMb2FkT3JnYW5pemF0aW9uID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gY29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFVzZXJMYWJlbChpdGVtOiBhbnkpIHtcclxuICAgICAgICBsZXQgbGFiZWwgPSB0aGlzLl91c2VyU2VydmljZS5nZXRVc2VyTmFtZShpdGVtKTtcclxuICAgICAgICBsYWJlbCA9IChpdGVtLm1hQ2h1Y1Z1ID8gYCR7aXRlbS5tYUNodWNWdX0uIGAgOiAnJykgKyBgJHtsYWJlbH1gICsgKGl0ZW0udGVuRG9uVmkgPyBgIC0gJHtpdGVtLnRlbkRvblZpfWAgOiAnJyk7XHJcbiAgICAgICAgcmV0dXJuIGxhYmVsO1xyXG4gICAgfVxyXG5cclxuICAgIF9jcmVhdGVDb0NhdVRvQ2h1Y0NvbnRyb2woZmllbGQ6IHN0cmluZywgbGFiZWw6IHN0cmluZyk6IERyb3Bkb3duQ29udHJvbFNjaGVtYSB7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZU9yZ1BpY2tlckNvbnRyb2woZmllbGQsIGxhYmVsKTtcclxuICAgIH1cclxuXHJcbiAgICBfY3JlYXRlVXNlckdyb3VwUGlja2VyQ29udHJvbChmaWVsZCwgbGFiZWwpOiBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hIHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlVXNlckdyb3VwUGlja2VyQ29udHJvbCh0aGlzLl91c2VyR3JvdXBTZXJ2aWNlLCBmaWVsZCwgbGFiZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIF9jcmVhdGVSb2xlUGlja2VyQ29udHJvbChmaWVsZCwgbGFiZWwpOiBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hIHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlUm9sZVBpY2tlckNvbnRyb2wodGhpcy5fZG1DaHVjVnVTZXJ2aWNlLCBmaWVsZCwgbGFiZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uRm9ybUluaXRpYWxpemVkKGV2dDogRXZlbnREYXRhKSB7XHJcbiAgICAgICAgZXZ0Lm1vZGVsLnVzZXJJZHMgPSB0aGlzLmRhdGEudXNlcklkcztcclxuICAgICAgICBldnQubW9kZWwuZGVwYXJ0bWVudElkcyA9IHRoaXMuZGF0YS5kZXBhcnRtZW50SWRzO1xyXG4gICAgICAgIGV2dC5tb2RlbC5ncm91cElkcyA9IHRoaXMuZGF0YS5ncm91cElkcztcclxuICAgICAgICAvLyBldnQubW9kZWwucm9sZUlkcyA9IHRoaXMuZGF0YS5yb2xlSWRzO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -165,6 +165,7 @@ export class BaseCongViecFormComponent extends DataFormBase {
165
165
  Object.assign(evt.model, this.control.data);
166
166
  }
167
167
  if (evt.model.idLoaiCongViec) {
168
+ this.idLoaiCongViec = evt.model.idLoaiCongViec;
168
169
  yield this.loadWorkflowByLoaiCongViec(evt, evt.model.idLoaiCongViec);
169
170
  }
170
171
  }
@@ -257,7 +258,7 @@ export class BaseCongViecFormComponent extends DataFormBase {
257
258
  BaseCongViecFormComponent.decorators = [
258
259
  { type: Component, args: [{
259
260
  selector: 'base-congviec-form',
260
- template: "<!-- <ng-container *ngIf=\"_isFormAddNew()\">\r\n <div style=\"height: 100%; overflow: hidden\">\r\n <tn-tabview [data]=\"tabDataTask\" [allowViewAll]=\"true\">\r\n <ng-template #congviec>\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n </ng-template>\r\n <ng-template #workflow>\r\n <tn-custom-scrollbar>\r\n <congviec-next-first-step [crudListSetting]=\"crudList.setting\"\r\n [workflowCode]=\"model.data._WorkflowCode\" [taskModel]=\"model.data\"></congviec-next-first-step>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n </tn-tabview>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!_isFormAddNew()\">\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n</ng-container> -->\r\n<ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n<ng-template #contentTask>\r\n <tn-custom-scrollbar>\r\n <crud-form #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\"\r\n [autoFocus]=\"autoFocus\" (onFormReady)=\"_handleFormReady($event)\">\r\n </crud-form>\r\n <base-congviec-dinhkem [loadDetailFromQueryParam]=\"false\" [formState]=\"model.formState\"\r\n [taskId]=\"model.data.id\">\r\n </base-congviec-dinhkem>\r\n <div class=\"tab-child\">\r\n <tn-tabview [data]=\"tabDataChild\" (onTabChange)=\"onTabChange($event)\">\r\n <ng-template #fileDinhKem>\r\n <file-manager [loadDetailFromQueryParam]=\"false\" [serviceCode]=\"setting.baseService.serviceCode\"\r\n [entity]=\"setting.baseService.entityName\" [entityKey]=\"model.data.id\"\r\n [readonly]=\"model.formState == enumFormState.VIEW\">\r\n </file-manager>\r\n </ng-template>\r\n <ng-template #taskChild>\r\n <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecCon\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\r\n </ng-template>\r\n <ng-template #taskLienQuan>\r\n <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecLienQuan\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\r\n </ng-template>\r\n <!-- <ng-template #traoDoiCongViec>\r\n <div style=\"height: 350px;\">\r\n <chat-box [showSendMessageBox]=\"false\" [serviceCode]=\"'congviec'\" [entity]=\"'congviec'\"\r\n [taskId]=\"model.data.id\" [parentModel]=\"model\" [parentContext]=\"context\" [users]=\"users\"></chat-box>\r\n </div>\r\n <chat-send-message-box [parentContext]=\"context\">\r\n </chat-send-message-box>\r\n </ng-template> -->\r\n </tn-tabview>\r\n </div>\r\n </tn-custom-scrollbar>\r\n</ng-template>\r\n<ng-template #buttonTemplate>\r\n <button *ngFor=\"let butt of this.buttons\" pButton [icon]=\"butt.icon\" [label]=\"butt.label\" class=\"p-button-text\"\r\n (click)=\"butt.command()\">\r\n </button>\r\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" type=\"button\" pButton icon=\"pi pi-save\"\r\n class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\" (click)=\"_handleSave($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"_handleCancel($event)\"></button>\r\n</ng-template>",
261
+ template: "<!-- <ng-container *ngIf=\"_isFormAddNew()\">\r\n <div style=\"height: 100%; overflow: hidden\">\r\n <tn-tabview [data]=\"tabDataTask\" [allowViewAll]=\"true\">\r\n <ng-template #congviec>\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n </ng-template>\r\n <ng-template #workflow>\r\n <tn-custom-scrollbar>\r\n <congviec-next-first-step [crudListSetting]=\"crudList.setting\"\r\n [workflowCode]=\"model.data._WorkflowCode\" [taskModel]=\"model.data\"></congviec-next-first-step>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n </tn-tabview>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!_isFormAddNew()\">\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n</ng-container> -->\r\n<ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n<ng-template #contentTask>\r\n <tn-custom-scrollbar>\r\n <div *ngIf=\"idLoaiCongViec === 'f51ca5f6-d266-4521-a633-e2f9f8528aaf'\" class=\"note\"\r\n style=\"padding: 0.5rem 1rem;\">\r\n <b>Ghi ch\u00FA</b>: Vui l\u00F2ng chuy\u1EC3n sang ph\u00E2n h\u1EC7 V\u0103n b\u1EA3n \u0111\u1EC3 t\u1EA1o D\u1EF1 th\u1EA3o v\u0103n b\u1EA3n \u0111i. Link:\r\n <a href=\"https://usmart.utc.edu.vn/vanban/vanbandi/du-thao\" target=\"_blank\">\r\n https://usmart.utc.edu.vn/vanban/vanbandi/du-thao</a>\r\n </div>\r\n\r\n <crud-form #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\"\r\n [autoFocus]=\"autoFocus\" (onFormReady)=\"_handleFormReady($event)\">\r\n </crud-form>\r\n <base-congviec-dinhkem [loadDetailFromQueryParam]=\"false\" [formState]=\"model.formState\"\r\n [taskId]=\"model.data.id\">\r\n </base-congviec-dinhkem>\r\n <div class=\"tab-child\">\r\n <tn-tabview [data]=\"tabDataChild\" (onTabChange)=\"onTabChange($event)\">\r\n <ng-template #fileDinhKem>\r\n <file-manager [loadDetailFromQueryParam]=\"false\" [serviceCode]=\"setting.baseService.serviceCode\"\r\n [entity]=\"setting.baseService.entityName\" [entityKey]=\"model.data.id\"\r\n [readonly]=\"model.formState == enumFormState.VIEW\">\r\n </file-manager>\r\n </ng-template>\r\n <ng-template #taskChild>\r\n <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecCon\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\r\n </ng-template>\r\n <ng-template #taskLienQuan>\r\n <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecLienQuan\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\r\n </ng-template>\r\n <!-- <ng-template #traoDoiCongViec>\r\n <div style=\"height: 350px;\">\r\n <chat-box [showSendMessageBox]=\"false\" [serviceCode]=\"'congviec'\" [entity]=\"'congviec'\"\r\n [taskId]=\"model.data.id\" [parentModel]=\"model\" [parentContext]=\"context\" [users]=\"users\"></chat-box>\r\n </div>\r\n <chat-send-message-box [parentContext]=\"context\">\r\n </chat-send-message-box>\r\n </ng-template> -->\r\n </tn-tabview>\r\n </div>\r\n </tn-custom-scrollbar>\r\n</ng-template>\r\n<ng-template #buttonTemplate>\r\n <button *ngFor=\"let butt of this.buttons\" pButton [icon]=\"butt.icon\" [label]=\"butt.label\" class=\"p-button-text\"\r\n (click)=\"butt.command()\">\r\n </button>\r\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" type=\"button\" pButton icon=\"pi pi-save\"\r\n class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\" (click)=\"_handleSave($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"_handleCancel($event)\"></button>\r\n</ng-template>",
261
262
  providers: [ComponentContextService],
262
263
  styles: [".tab-child{padding:1em}"]
263
264
  },] }
@@ -277,4 +278,4 @@ BaseCongViecFormComponent.propDecorators = {
277
278
  tenCongViec: [{ type: Input }],
278
279
  onAfterSaved: [{ type: Output }]
279
280
  };
280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMtZm9ybS9jb25ndmllYy1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUNILG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUduQixRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNwQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzNILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMERBQTBELENBQUM7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QztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEYsQ0FBQzs7O1lBN1FKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixpOUhBQTZDO2dCQUU3QyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQWxDaUMsUUFBUTtZQTBCakMsZUFBZTtZQUhmLHFCQUFxQjtZQURyQix3QkFBd0I7WUFFeEIsaUJBQWlCO1lBTmpCLCtCQUErQjs7O2dDQWtCbkMsU0FBUyxTQUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTt1QkFDM0QsS0FBSztzQkFDTCxLQUFLOzBCQUVMLEtBQUs7MkJBS0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcclxuaW1wb3J0IHsgRGF0ZUNvbXBhcmVWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvdmFsaWRhdG9ycyc7XHJcbmltcG9ydCB7IEZvcm1TdGF0ZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29uc3RhbnRzJztcclxuaW1wb3J0IHtcclxuICAgIEN1c3RvbUNvbnRyb2xTY2hlbWEsXHJcbiAgICBEYXRlVGltZUNvbnRyb2xTY2hlbWEsXHJcbiAgICBEcm9wZG93bkNvbnRyb2xTY2hlbWEsXHJcbiAgICBFZGl0b3JDb250cm9sU2NoZW1hLFxyXG4gICAgRXZlbnREYXRhLFxyXG4gICAgRm9ybUNvbnRyb2xCYXNlLFxyXG4gICAgT3BlcmF0b3IsXHJcbiAgICBQZXJjZW50Q29udHJvbFNjaGVtYSxcclxuICAgIFRleHRDb250cm9sU2NoZW1hXHJcbn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IENydWRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9jcnVkL2NydWQtbGlzdC9jcnVkLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uZ1ZpZWNOZXh0Rmlyc3RTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZ3ZpZWMtbmV4dC1maXJzdC1zdGVwL2Nvbmd2aWVjLW5leHQtZmlyc3Qtc3RlcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd1Blcm1pc3Npb25EZXRhaWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy93b3JrZmxvdy9zZXJ2aWNlcy93b3JrZmxvdy1wZXJtaXNzaW9uLWRldGFpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tQ3R4Q29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlncy9jb21wb25lbnQtY29udGV4dC5jb25zdGFudCc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25CYXNlIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvY29tbW9uJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgRG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZG0tbGluaHZ1Yy1jb25ndmllYy9zZXJ2aWNlcy9kbS1saW5odnVjLWNvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEbUxvYWlDb25nVmllY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9kbS1sb2FpLWNvbmd2aWVjL3NlcnZpY2VzL2RtLWxvYWktY29uZ3ZpZWMuc2VydmljZSc7XHJcbmltcG9ydCB7IERtUHJpb3JpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZG0tcHJpb3JpdHkvc2VydmljZXMvZG0tcHJpb3JpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYyB9IGZyb20gJy4uLy4uL21vZGVscy9lbnVtcyc7XHJcbmltcG9ydCB7IENvbmdWaWVjU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Nvbmd2aWVjLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiYXNlLWNvbmd2aWVjLWZvcm0nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nvbmd2aWVjLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29uZ3ZpZWMtZm9ybS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUNvbmdWaWVjRm9ybUNvbXBvbmVudCBleHRlbmRzIERhdGFGb3JtQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKENvbmdWaWVjTmV4dEZpcnN0U3RlcENvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIGZvcm1OZXh0Rmlyc3RTdGVwOiBDb25nVmllY05leHRGaXJzdFN0ZXBDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBjcnVkTGlzdDogQ3J1ZExpc3RDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBjb250cm9sOiBDdXN0b21Db250cm9sU2NoZW1hO1xyXG4gICAgX3RlbkNvbmdWaWVjOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzZXQgdGVuQ29uZ1ZpZWModmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3RlbkNvbmdWaWVjID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZXRUZW5Db25nVmllYygpO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKSBvbkFmdGVyU2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIGF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBwdWJsaWMgZW51bUZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTtcclxuICAgIGVudW1Mb2FpRGFuaFNhY2hDb25nVmllYyA9IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYztcclxuICAgIGN1cnJlbnRUYWJJbmRleDogbnVtYmVyO1xyXG4gICAgdXNlcnM6IHtcclxuICAgICAgICB0YXNrTmFtZTogc3RyaW5nLFxyXG4gICAgICAgIGFzc2lnbmVlOiBhbnksXHJcbiAgICAgICAgYXNzaWduZXI6IGFueSxcclxuICAgICAgICByZWxhdGVkVXNlcnM6IGFueVtdO1xyXG4gICAgfSA9IHtcclxuICAgICAgICAgICAgdGFza05hbWU6ICcnLFxyXG4gICAgICAgICAgICBhc3NpZ25lcjogMCxcclxuICAgICAgICAgICAgYXNzaWduZWU6IDAsXHJcbiAgICAgICAgICAgIHJlbGF0ZWRVc2VyczogW10sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICB0YWJEYXRhVGFzazogYW55W10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2RlOiAnY29uZ3ZpZWMnLFxyXG4gICAgICAgICAgICBpY29uOiAncGkgcGktbGlzdCcsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnVGjDtG5nIHRpbiBjw7RuZyB2aeG7h2MnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvZGU6ICd3b3JrZmxvdycsXHJcbiAgICAgICAgICAgIGljb246ICdwaSBwaS11c2VyJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdOZ8aw4budaSBuaOG6rW4nLFxyXG4gICAgICAgICAgICBoaWRkZW46IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG4gICAgdGFiRGF0YUNoaWxkOiBhbnlbXSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvZGU6ICdmaWxlRGluaEtlbScsXHJcbiAgICAgICAgICAgIGljb246ICdwaSBwaS1wYXBlcmNsaXAnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ0ZpbGUgxJHDrW5oIGvDqG0nXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvZGU6ICd0YXNrQ2hpbGQnLFxyXG4gICAgICAgICAgICBpY29uOiAncGkgcGktY2hlY2stc3F1YXJlJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdDw7RuZyB2aeG7h2MgY29uJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2RlOiAndGFza0xpZW5RdWFuJyxcclxuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXNoYXJlLWFsdCcsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnQ8O0bmcgdmnhu4djIGxpw6puIHF1YW4nXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyB7XHJcbiAgICAgICAgLy8gICAgIGNvZGU6ICd0cmFvRG9pQ29uZ1ZpZWMnLFxyXG4gICAgICAgIC8vICAgICBpY29uOiAncGkgcGktY29tbWVudCcsXHJcbiAgICAgICAgLy8gICAgIGxhYmVsOiAnVHJhbyDEkeG7lWkgY8O0bmcgdmnhu4djJyxcclxuICAgICAgICAvLyB9XHJcbiAgICBdO1xyXG4gICAgYnV0dG9uczogYW55W10gPSBbXTtcclxuICAgIG1kV2lkdGhXb3JrZmxvdyA9IDY7XHJcbiAgICBtZExvYWlDb25nVmllYzogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmdWaWVjU2VydmljZTogQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2RtTG9haUNvbmdWaWVjU2VydmljZTogRG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2RtTGluaFZ1Y0NvbmdWaWVjU2VydmljZTogRG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2RtUHJpb3JpdHlTZXJ2aWNlOiBEbVByaW9yaXR5U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF93b3JrZmxvd1Blcm1pc3Npb25EZXRhaWxTZXJ2aWNlOiBXb3JrZmxvd1Blcm1pc3Npb25EZXRhaWxTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMudXNlcnMuYXNzaWduZXIgPSAwO1xyXG4gICAgICAgIHRoaXMudXNlcnMuYXNzaWduZWUgPSAwO1xyXG4gICAgICAgIHRoaXMudXNlcnMucmVsYXRlZFVzZXJzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuX2NvbXBvbmVudCA9IHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5hdXRvRm9jdXMgPSAhdGhpcy5jb250cm9sO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX2NvbmdWaWVjU2VydmljZTtcclxuICAgICAgICBsZXQgb25DaGFuZ2VMb2FpQ29uZ1ZpZWMgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLl9pc0Zvcm1BZGROZXcoKSkge1xyXG4gICAgICAgICAgICBvbkNoYW5nZUxvYWlDb25nVmllYyA9IHRoaXMuaGFuZGxlQ2hhbmdlTG9haUNvbmdWaWVjV2hlbkFkZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwuZm9ybVN0YXRlID09IEZvcm1TdGF0ZS5BREQpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhLmlkID0gdGhpcy5fY29tbW9uU2VydmljZS5ndWlkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEgPSA8Rm9ybUNvbnRyb2xCYXNlW10+W1xyXG4gICAgICAgICAgICBuZXcgVGV4dENvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICd0ZW4nLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUw6puIGPDtG5nIHZp4buHYycsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDEyXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRWRpdG9yQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ21vVGEnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdNw7QgdOG6oyBu4buZaSBkdW5nJyxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDEyXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRQcmlvcml0eScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ8SQ4buZIMawdSB0acOqbicsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1Qcmlvcml0eVNlcnZpY2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBEcm9wZG93bkNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpZExpbmhWdWMnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdMxKluaCB24buxYycsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRGF0ZVRpbWVDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUJhdERhdScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nw6B5IGLhuq90IMSR4bqndScsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAzXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRGF0ZVRpbWVDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheUtldFRodWMnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8OgeSBr4bq/dCB0aMO6YycsXHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IERhdGVDb21wYXJlVmFsaWRhdG9yKE9wZXJhdG9yLmdyZWF0ZXJUaGFuRXF1YWwsICduZ2F5QmF0RGF1JylcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAzXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgUGVyY2VudENvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdwaGFuVHJhbScsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiA2LFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUaeG6v24gxJHhu5knXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRMb2FpQ29uZ1ZpZWMnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdQaMOibiBsb+G6oWkgY8O0bmcgdmnhu4djJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbUxvYWlDb25nVmllY1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBpc1RyZWU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBmaWVsZFRyZWU6ICdpZFBhcmVudCcsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVBhcmVudFJvb3Q6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBzb3J0czogW3sgZmllbGQ6ICdtYVBoYW5DYXAnLCBkaXI6IDEgfV0sXHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZWQ6IG9uQ2hhbmdlTG9haUNvbmdWaWVjXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLmFkZFNjaGVtYUJhc2UoKTtcclxuICAgICAgICAvLyBpZiAodGhpcy5faXNGb3JtQWRkTmV3KCkpIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5zZXR0aW5nLnNjaGVtYS5wdXNoKFxyXG4gICAgICAgIC8vICAgICAgICAgbmV3IENoZWNrYm94Q29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgZmllbGQ6ICdhdXRvTmV4dFN0ZXAnLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIGxhYmVsOiAnVOG7sSDEkeG7mW5nIGNodXnhu4NuIGLGsOG7m2MgxJHhuqd1IHRpw6puJyxcclxuICAgICAgICAvLyAgICAgICAgICAgICBjbGFzczogJ21nLXRvcC0wJyxcclxuICAgICAgICAvLyAgICAgICAgICAgICBzaG93TGFiZWw6IGZhbHNlLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIG1kV2lkdGg6IDYsXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgaGlkZGVuQ2hlY2s6IChyb290TW9kZWwpID0+ICFyb290TW9kZWwuX1dvcmtmbG93Q29kZVxyXG4gICAgICAgIC8vICAgICAgICAgfSlcclxuICAgICAgICAvLyAgICAgKTtcclxuICAgICAgICAvLyB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25Gb3JtSW5pdGlhbGl6ZWQoZXZ0OiBFdmVudERhdGEpIHtcclxuICAgICAgICBpZiAodGhpcy5faXNGb3JtQWRkTmV3KCkpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbCAmJiB0aGlzLmNvbnRyb2wuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihldnQubW9kZWwsIHRoaXMuY29udHJvbC5kYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZXZ0Lm1vZGVsLmlkTG9haUNvbmdWaWVjKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRXb3JrZmxvd0J5TG9haUNvbmdWaWVjKGV2dCwgZXZ0Lm1vZGVsLmlkTG9haUNvbmdWaWVjKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGVuQ29uZ1ZpZWMoKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhID0geyAuLi50aGlzLm1vZGVsLmRhdGEsIHRlbjogdGhpcy5fdGVuQ29uZ1ZpZWMgfTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBtb2RpZnlEZXRhaWxEYXRhKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55OyB9KSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5nZW5lcmF0ZVdvcmtmbG93QnV0dG9uKGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyV29ya2Zsb3dCdXR0b25zKCkge1xyXG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdlbmVyYXRlV29ya2Zsb3dCdXR0b24oZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnk7IH0pIHtcclxuICAgICAgICBjb25zdCB1c2VySWRDdXJyZW50ID0gdGhpcy5fdXNlclNlcnZpY2UuZ2V0SWQoKTtcclxuICAgICAgICAvLyBM4bqleSByYSB0cuG6oW5nIHRow6FpIHF1eSB0csOsbmhcclxuICAgICAgICBjb25zdCBsc3RJdGVtU3RhdHVzID0gKGF3YWl0IHRoaXMuX3dvcmtmbG93UGVybWlzc2lvbkRldGFpbFNlcnZpY2UuY2hhbmdlRW5kcG9pbnQodGhpcy5fY29uZ1ZpZWNTZXJ2aWNlKS5nZXRBbGwoXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpdGVtSWQnLCBPcGVyYXRvci5lcXVhbCwgZGF0YS5pZCksXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcigndXNlcklkJywgT3BlcmF0b3IuZXF1YWwsIHVzZXJJZEN1cnJlbnQpXHJcbiAgICAgICAgICAgIF0sICdpdGVtSWQsdXNlcklkLHRyYW5nVGhhaSx0ZXh0VHJhbmdUaGFpLHdvcmtmbG93Q29kZSxwZXJtaXNzaW9uJ1xyXG4gICAgICAgICkpLmRhdGE7XHJcbiAgICAgICAgaWYgKGxzdEl0ZW1TdGF0dXMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdLaMO0bmcgbOG6pXkgxJHGsOG7o2MgdGjDtG5nIHRpbiB0cuG6oW5nIHRow6FpIGhp4buHbiB04bqhaSBj4bunYSBi4bqjbiBnaGknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGl0ZW1TdGF0dXMgPSBudWxsO1xyXG4gICAgICAgIGlmICghbHN0SXRlbVN0YXR1cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaXRlbVN0YXR1cyA9IHtcclxuICAgICAgICAgICAgICAgIHRleHRUcmFuZ1RoYWk6ICdDaMawYSBjaOG6oXkgcXV5IHRyw6xuaCdcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGl0ZW1TdGF0dXMgPSBsc3RJdGVtU3RhdHVzLmZpbmQocSA9PiAocS5wZXJtaXNzaW9uICYgUGVybWlzc2lvbkJhc2UuRURJVCkgPT0gUGVybWlzc2lvbkJhc2UuRURJVCk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtU3RhdHVzID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW1TdGF0dXMgPSBsc3RJdGVtU3RhdHVzWzBdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9zZXREaXNhYmxlQ29udHJvbCgnaWRMb2FpQ29uZ1ZpZWMnLCB0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRhdGEuX190cmFuZ1RoYWkgPSBpdGVtU3RhdHVzLnRyYW5nVGhhaTtcclxuICAgICAgICBkYXRhLl9fdGV4dFRyYW5nVGhhaSA9IGl0ZW1TdGF0dXMudGV4dFRyYW5nVGhhaTtcclxuICAgICAgICBkYXRhLl9fd29ya2Zsb3dDb2RlID0gaXRlbVN0YXR1cy53b3JrZmxvd0NvZGU7XHJcbiAgICAgICAgZGF0YS5fX3Blcm1pc3Npb24gPSBpdGVtU3RhdHVzLnBlcm1pc3Npb247XHJcbiAgICAgICAgaWYgKHRoaXMuY3J1ZExpc3QpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0R2V0QWN0aW9uV29ya2Zsb3cgPSBhd2FpdCB0aGlzLmNydWRMaXN0LmdldEFjdGlvbldvcmtmbG93KGRhdGEpO1xyXG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVzdWx0R2V0QWN0aW9uV29ya2Zsb3cpKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IGJ1dHRvbkNvbnRleHRzID0gcmVzdWx0R2V0QWN0aW9uV29ya2Zsb3c7XHJcbiAgICAgICAgICAgIHRoaXMuYnV0dG9ucyA9IGJ1dHRvbkNvbnRleHRzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVDaGFuZ2VMb2FpQ29uZ1ZpZWNXaGVuQWRkID0gYXN5bmMgKGV2dDogRXZlbnREYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKGV2dC5ldmVudFR5cGUgPT0gJ2NoYW5nZScpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkV29ya2Zsb3dCeUxvYWlDb25nVmllYyhldnQsIGV2dC5tb2RlbC5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBhc3luYyBsb2FkV29ya2Zsb3dCeUxvYWlDb25nVmllYyhldnQ6IEV2ZW50RGF0YSwgaWRMb2FpQ29uZ1ZpZWM6IHN0cmluZykge1xyXG4gICAgICAgIGlmICghaWRMb2FpQ29uZ1ZpZWMpIHtcclxuICAgICAgICAgICAgaWRMb2FpQ29uZ1ZpZWMgPSBldnQubW9kZWwuaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHdvcmtmbG93U2V0dGluZyA9IGF3YWl0IHRoaXMuX2RtTG9haUNvbmdWaWVjU2VydmljZS5nZXRXb3JrZmxvd1NldHRpbmdCeUlkTG9haUNvbmdWaWVjKGlkTG9haUNvbmdWaWVjKTtcclxuICAgICAgICB0aGlzLnNldFdvcmtmbG93RGF0YXNvdXJjZShldnQsIHdvcmtmbG93U2V0dGluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYXN5bmMgaGFuZGxlQ2hhbmdlV29ya2Zsb3dDb2RlKGV2dDogRXZlbnREYXRhKSB7XHJcbiAgICAvLyAgICAgdGhpcy50YWJEYXRhVGFza1sxXS5oaWRkZW4gPSAhZXZ0LnJvb3RNb2RlbC5fV29ya2Zsb3dDb2RlO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGFzeW5jIG9uQmVmb3JlU2F2ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtTmV4dEZpcnN0U3RlcCkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGEuaXRlbVdvcmtmbG93SGlzdG9yeSA9IGF3YWl0IHRoaXMuZm9ybU5leHRGaXJzdFN0ZXAuZ2V0TW9kZWxEYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQWZ0ZXJTYXZlKHJlczogUmVzcG9uc2VSZXN1bHQpIHtcclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5mb3JtU3RhdGUgPT0gRm9ybVN0YXRlLkFERCAmJiByZXMgJiYgcmVzLnN1Y2Nlc3MgJiYgcmVzLmRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkFmdGVyU2F2ZWQuZW1pdChyZXMuZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uVGFiQ2hhbmdlKGV2dCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhYkluZGV4ID0gZXZ0LmluZGV4O1xyXG4gICAgICAgIHRoaXMudXNlcnMudGFza05hbWUgPSB0aGlzLm1vZGVsLmRhdGEudGVuO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcmN1c1RvRmlyc3RJbnB1dENvbnRyb2woZXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoQ29tQ3R4Q29uc3RhbnRzLkNPTU1PTi5GT0NVU19UT19GSVJTVF9JTlBVVF9DT05UUk9MKTtcclxuICAgIH1cclxufVxyXG5cclxuIl19
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZ3ZpZWMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29uZ3ZpZWMvY29uZ3ZpZWMvY29uZ3ZpZWMtZm9ybS9jb25ndmllYy1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUNILG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUduQixRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNwQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzNILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMERBQTBELENBQUM7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LENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxLQUFLO1FBQzNCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEYsQ0FBQzs7O1lBL1FKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixtOUlBQTZDO2dCQUU3QyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQWxDaUMsUUFBUTtZQTBCakMsZUFBZTtZQUhmLHFCQUFxQjtZQURyQix3QkFBd0I7WUFFeEIsaUJBQWlCO1lBTmpCLCtCQUErQjs7O2dDQWtCbkMsU0FBUyxTQUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTt1QkFDM0QsS0FBSztzQkFDTCxLQUFLOzBCQUVMLEtBQUs7MkJBS0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YUZvcm1CYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2RhdGEtZm9ybS1iYXNlJztcclxuaW1wb3J0IHsgRGF0ZUNvbXBhcmVWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvdmFsaWRhdG9ycyc7XHJcbmltcG9ydCB7IEZvcm1TdGF0ZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29uc3RhbnRzJztcclxuaW1wb3J0IHtcclxuICAgIEN1c3RvbUNvbnRyb2xTY2hlbWEsXHJcbiAgICBEYXRlVGltZUNvbnRyb2xTY2hlbWEsXHJcbiAgICBEcm9wZG93bkNvbnRyb2xTY2hlbWEsXHJcbiAgICBFZGl0b3JDb250cm9sU2NoZW1hLFxyXG4gICAgRXZlbnREYXRhLFxyXG4gICAgRm9ybUNvbnRyb2xCYXNlLFxyXG4gICAgT3BlcmF0b3IsXHJcbiAgICBQZXJjZW50Q29udHJvbFNjaGVtYSxcclxuICAgIFRleHRDb250cm9sU2NoZW1hXHJcbn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IENydWRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9jcnVkL2NydWQtbGlzdC9jcnVkLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uZ1ZpZWNOZXh0Rmlyc3RTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZ3ZpZWMtbmV4dC1maXJzdC1zdGVwL2Nvbmd2aWVjLW5leHQtZmlyc3Qtc3RlcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd1Blcm1pc3Npb25EZXRhaWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy93b3JrZmxvdy9zZXJ2aWNlcy93b3JrZmxvdy1wZXJtaXNzaW9uLWRldGFpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tQ3R4Q29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlncy9jb21wb25lbnQtY29udGV4dC5jb25zdGFudCc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25CYXNlIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvY29tbW9uJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgRG1MaW5oVnVjQ29uZ1ZpZWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZG0tbGluaHZ1Yy1jb25ndmllYy9zZXJ2aWNlcy9kbS1saW5odnVjLWNvbmd2aWVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEbUxvYWlDb25nVmllY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9kbS1sb2FpLWNvbmd2aWVjL3NlcnZpY2VzL2RtLWxvYWktY29uZ3ZpZWMuc2VydmljZSc7XHJcbmltcG9ydCB7IERtUHJpb3JpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZG0tcHJpb3JpdHkvc2VydmljZXMvZG0tcHJpb3JpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYyB9IGZyb20gJy4uLy4uL21vZGVscy9lbnVtcyc7XHJcbmltcG9ydCB7IENvbmdWaWVjU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Nvbmd2aWVjLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiYXNlLWNvbmd2aWVjLWZvcm0nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nvbmd2aWVjLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29uZ3ZpZWMtZm9ybS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUNvbmdWaWVjRm9ybUNvbXBvbmVudCBleHRlbmRzIERhdGFGb3JtQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKENvbmdWaWVjTmV4dEZpcnN0U3RlcENvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIGZvcm1OZXh0Rmlyc3RTdGVwOiBDb25nVmllY05leHRGaXJzdFN0ZXBDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBjcnVkTGlzdDogQ3J1ZExpc3RDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBjb250cm9sOiBDdXN0b21Db250cm9sU2NoZW1hO1xyXG4gICAgX3RlbkNvbmdWaWVjOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzZXQgdGVuQ29uZ1ZpZWModmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3RlbkNvbmdWaWVjID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZXRUZW5Db25nVmllYygpO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKSBvbkFmdGVyU2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIGF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBwdWJsaWMgZW51bUZvcm1TdGF0ZSA9IEZvcm1TdGF0ZTtcclxuICAgIGVudW1Mb2FpRGFuaFNhY2hDb25nVmllYyA9IEVudW1Mb2FpRGFuaFNhY2hDb25nVmllYztcclxuICAgIGN1cnJlbnRUYWJJbmRleDogbnVtYmVyO1xyXG4gICAgdXNlcnM6IHtcclxuICAgICAgICB0YXNrTmFtZTogc3RyaW5nLFxyXG4gICAgICAgIGFzc2lnbmVlOiBhbnksXHJcbiAgICAgICAgYXNzaWduZXI6IGFueSxcclxuICAgICAgICByZWxhdGVkVXNlcnM6IGFueVtdO1xyXG4gICAgfSA9IHtcclxuICAgICAgICAgICAgdGFza05hbWU6ICcnLFxyXG4gICAgICAgICAgICBhc3NpZ25lcjogMCxcclxuICAgICAgICAgICAgYXNzaWduZWU6IDAsXHJcbiAgICAgICAgICAgIHJlbGF0ZWRVc2VyczogW10sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICB0YWJEYXRhVGFzazogYW55W10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2RlOiAnY29uZ3ZpZWMnLFxyXG4gICAgICAgICAgICBpY29uOiAncGkgcGktbGlzdCcsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnVGjDtG5nIHRpbiBjw7RuZyB2aeG7h2MnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvZGU6ICd3b3JrZmxvdycsXHJcbiAgICAgICAgICAgIGljb246ICdwaSBwaS11c2VyJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdOZ8aw4budaSBuaOG6rW4nLFxyXG4gICAgICAgICAgICBoaWRkZW46IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG4gICAgdGFiRGF0YUNoaWxkOiBhbnlbXSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvZGU6ICdmaWxlRGluaEtlbScsXHJcbiAgICAgICAgICAgIGljb246ICdwaSBwaS1wYXBlcmNsaXAnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ0ZpbGUgxJHDrW5oIGvDqG0nXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvZGU6ICd0YXNrQ2hpbGQnLFxyXG4gICAgICAgICAgICBpY29uOiAncGkgcGktY2hlY2stc3F1YXJlJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdDw7RuZyB2aeG7h2MgY29uJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2RlOiAndGFza0xpZW5RdWFuJyxcclxuICAgICAgICAgICAgaWNvbjogJ3BpIHBpLXNoYXJlLWFsdCcsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnQ8O0bmcgdmnhu4djIGxpw6puIHF1YW4nXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyB7XHJcbiAgICAgICAgLy8gICAgIGNvZGU6ICd0cmFvRG9pQ29uZ1ZpZWMnLFxyXG4gICAgICAgIC8vICAgICBpY29uOiAncGkgcGktY29tbWVudCcsXHJcbiAgICAgICAgLy8gICAgIGxhYmVsOiAnVHJhbyDEkeG7lWkgY8O0bmcgdmnhu4djJyxcclxuICAgICAgICAvLyB9XHJcbiAgICBdO1xyXG4gICAgYnV0dG9uczogYW55W10gPSBbXTtcclxuICAgIG1kV2lkdGhXb3JrZmxvdyA9IDY7XHJcbiAgICBtZExvYWlDb25nVmllYzogbnVtYmVyO1xyXG4gICAgaWRMb2FpQ29uZ1ZpZWM6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIF9jb25nVmllY1NlcnZpY2U6IENvbmdWaWVjU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kbUxvYWlDb25nVmllY1NlcnZpY2U6IERtTG9haUNvbmdWaWVjU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kbUxpbmhWdWNDb25nVmllY1NlcnZpY2U6IERtTGluaFZ1Y0NvbmdWaWVjU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kbVByaW9yaXR5U2VydmljZTogRG1Qcmlvcml0eVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfd29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsU2VydmljZTogV29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgICAgICB0aGlzLnVzZXJzLmFzc2lnbmVyID0gMDtcclxuICAgICAgICB0aGlzLnVzZXJzLmFzc2lnbmVlID0gMDtcclxuICAgICAgICB0aGlzLnVzZXJzLnJlbGF0ZWRVc2VycyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLl9jb21wb25lbnQgPSB0aGlzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuYXV0b0ZvY3VzID0gIXRoaXMuY29udHJvbDtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl9jb25nVmllY1NlcnZpY2U7XHJcbiAgICAgICAgbGV0IG9uQ2hhbmdlTG9haUNvbmdWaWVjID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5faXNGb3JtQWRkTmV3KCkpIHtcclxuICAgICAgICAgICAgb25DaGFuZ2VMb2FpQ29uZ1ZpZWMgPSB0aGlzLmhhbmRsZUNoYW5nZUxvYWlDb25nVmllY1doZW5BZGQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmZvcm1TdGF0ZSA9PSBGb3JtU3RhdGUuQUREKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YS5pZCA9IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gPEZvcm1Db250cm9sQmFzZVtdPltcclxuICAgICAgICAgICAgbmV3IFRleHRDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndGVuJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVMOqbiBjw7RuZyB2aeG7h2MnLFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAxMlxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEVkaXRvckNvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdtb1RhJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTcO0IHThuqMgbuG7mWkgZHVuZycsXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiAxMlxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IERyb3Bkb3duQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkUHJpb3JpdHknLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICfEkOG7mSDGsHUgdGnDqm4nLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtUHJpb3JpdHlTZXJ2aWNlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRMaW5oVnVjJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTMSpbmggduG7sWMnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtTGluaFZ1Y0NvbmdWaWVjU2VydmljZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IERhdGVUaW1lQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlCYXREYXUnLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8OgeSBi4bqvdCDEkeG6p3UnLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogM1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IERhdGVUaW1lQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlLZXRUaHVjJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfDoHkga+G6v3QgdGjDumMnLFxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1xyXG4gICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlQ29tcGFyZVZhbGlkYXRvcihPcGVyYXRvci5ncmVhdGVyVGhhbkVxdWFsLCAnbmdheUJhdERhdScpXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogM1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IFBlcmNlbnRDb250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAncGhhblRyYW0nLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogNixcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGnhur9uIMSR4buZJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IERyb3Bkb3duQ29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkTG9haUNvbmdWaWVjJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnUGjDom4gbG/huqFpIGPDtG5nIHZp4buHYycsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fZG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgaXNUcmVlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZmllbGRUcmVlOiAnaWRQYXJlbnQnLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVQYXJlbnRSb290OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgc29ydHM6IFt7IGZpZWxkOiAnbWFQaGFuQ2FwJywgZGlyOiAxIH1dLFxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2VkOiBvbkNoYW5nZUxvYWlDb25nVmllY1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5hZGRTY2hlbWFCYXNlKCk7XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuX2lzRm9ybUFkZE5ldygpKSB7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuc2V0dGluZy5zY2hlbWEucHVzaChcclxuICAgICAgICAvLyAgICAgICAgIG5ldyBDaGVja2JveENvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIGZpZWxkOiAnYXV0b05leHRTdGVwJyxcclxuICAgICAgICAvLyAgICAgICAgICAgICBsYWJlbDogJ1Thu7EgxJHhu5luZyBjaHV54buDbiBixrDhu5tjIMSR4bqndSB0acOqbicsXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgY2xhc3M6ICdtZy10b3AtMCcsXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgc2hvd0xhYmVsOiBmYWxzZSxcclxuICAgICAgICAvLyAgICAgICAgICAgICBtZFdpZHRoOiA2LFxyXG4gICAgICAgIC8vICAgICAgICAgICAgIGhpZGRlbkNoZWNrOiAocm9vdE1vZGVsKSA9PiAhcm9vdE1vZGVsLl9Xb3JrZmxvd0NvZGVcclxuICAgICAgICAvLyAgICAgICAgIH0pXHJcbiAgICAgICAgLy8gICAgICk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uRm9ybUluaXRpYWxpemVkKGV2dDogRXZlbnREYXRhKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzRm9ybUFkZE5ldygpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wgJiYgdGhpcy5jb250cm9sLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZXZ0Lm1vZGVsLCB0aGlzLmNvbnRyb2wuZGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGV2dC5tb2RlbC5pZExvYWlDb25nVmllYykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pZExvYWlDb25nVmllYyA9IGV2dC5tb2RlbC5pZExvYWlDb25nVmllYztcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZFdvcmtmbG93QnlMb2FpQ29uZ1ZpZWMoZXZ0LCBldnQubW9kZWwuaWRMb2FpQ29uZ1ZpZWMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRUZW5Db25nVmllYygpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEgPSB7IC4uLnRoaXMubW9kZWwuZGF0YSwgdGVuOiB0aGlzLl90ZW5Db25nVmllYyB9O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG1vZGlmeURldGFpbERhdGEoZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnk7IH0pIHtcclxuICAgICAgICBhd2FpdCB0aGlzLmdlbmVyYXRlV29ya2Zsb3dCdXR0b24oZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJXb3JrZmxvd0J1dHRvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5idXR0b25zID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2VuZXJhdGVXb3JrZmxvd0J1dHRvbihkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueTsgfSkge1xyXG4gICAgICAgIGNvbnN0IHVzZXJJZEN1cnJlbnQgPSB0aGlzLl91c2VyU2VydmljZS5nZXRJZCgpO1xyXG4gICAgICAgIC8vIEzhuqV5IHJhIHRy4bqhbmcgdGjDoWkgcXV5IHRyw6xuaFxyXG4gICAgICAgIGNvbnN0IGxzdEl0ZW1TdGF0dXMgPSAoYXdhaXQgdGhpcy5fd29ya2Zsb3dQZXJtaXNzaW9uRGV0YWlsU2VydmljZS5jaGFuZ2VFbmRwb2ludCh0aGlzLl9jb25nVmllY1NlcnZpY2UpLmdldEFsbChcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2l0ZW1JZCcsIE9wZXJhdG9yLmVxdWFsLCBkYXRhLmlkKSxcclxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCd1c2VySWQnLCBPcGVyYXRvci5lcXVhbCwgdXNlcklkQ3VycmVudClcclxuICAgICAgICAgICAgXSwgJ2l0ZW1JZCx1c2VySWQsdHJhbmdUaGFpLHRleHRUcmFuZ1RoYWksd29ya2Zsb3dDb2RlLHBlcm1pc3Npb24nXHJcbiAgICAgICAgKSkuZGF0YTtcclxuICAgICAgICBpZiAobHN0SXRlbVN0YXR1cyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ0tow7RuZyBs4bqleSDEkcaw4bujYyB0aMO0bmcgdGluIHRy4bqhbmcgdGjDoWkgaGnhu4duIHThuqFpIGPhu6dhIGLhuqNuIGdoaScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaXRlbVN0YXR1cyA9IG51bGw7XHJcbiAgICAgICAgaWYgKCFsc3RJdGVtU3RhdHVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpdGVtU3RhdHVzID0ge1xyXG4gICAgICAgICAgICAgICAgdGV4dFRyYW5nVGhhaTogJ0NoxrBhIGNo4bqheSBxdXkgdHLDrG5oJ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaXRlbVN0YXR1cyA9IGxzdEl0ZW1TdGF0dXMuZmluZChxID0+IChxLnBlcm1pc3Npb24gJiBQZXJtaXNzaW9uQmFzZS5FRElUKSA9PSBQZXJtaXNzaW9uQmFzZS5FRElUKTtcclxuICAgICAgICAgICAgaWYgKGl0ZW1TdGF0dXMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbVN0YXR1cyA9IGxzdEl0ZW1TdGF0dXNbMF07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3NldERpc2FibGVDb250cm9sKCdpZExvYWlDb25nVmllYycsIHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0YS5fX3RyYW5nVGhhaSA9IGl0ZW1TdGF0dXMudHJhbmdUaGFpO1xyXG4gICAgICAgIGRhdGEuX190ZXh0VHJhbmdUaGFpID0gaXRlbVN0YXR1cy50ZXh0VHJhbmdUaGFpO1xyXG4gICAgICAgIGRhdGEuX193b3JrZmxvd0NvZGUgPSBpdGVtU3RhdHVzLndvcmtmbG93Q29kZTtcclxuICAgICAgICBkYXRhLl9fcGVybWlzc2lvbiA9IGl0ZW1TdGF0dXMucGVybWlzc2lvbjtcclxuICAgICAgICBpZiAodGhpcy5jcnVkTGlzdCkge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHRHZXRBY3Rpb25Xb3JrZmxvdyA9IGF3YWl0IHRoaXMuY3J1ZExpc3QuZ2V0QWN0aW9uV29ya2Zsb3coZGF0YSk7XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyZXN1bHRHZXRBY3Rpb25Xb3JrZmxvdykpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgYnV0dG9uQ29udGV4dHMgPSByZXN1bHRHZXRBY3Rpb25Xb3JrZmxvdztcclxuICAgICAgICAgICAgdGhpcy5idXR0b25zID0gYnV0dG9uQ29udGV4dHM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUNoYW5nZUxvYWlDb25nVmllY1doZW5BZGQgPSBhc3luYyAoZXZ0OiBFdmVudERhdGEpID0+IHtcclxuICAgICAgICBpZiAoZXZ0LmV2ZW50VHlwZSA9PSAnY2hhbmdlJykge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxvYWRXb3JrZmxvd0J5TG9haUNvbmdWaWVjKGV2dCwgZXZ0Lm1vZGVsLmlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGFzeW5jIGxvYWRXb3JrZmxvd0J5TG9haUNvbmdWaWVjKGV2dDogRXZlbnREYXRhLCBpZExvYWlDb25nVmllYzogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCFpZExvYWlDb25nVmllYykge1xyXG4gICAgICAgICAgICBpZExvYWlDb25nVmllYyA9IGV2dC5tb2RlbC5pZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgd29ya2Zsb3dTZXR0aW5nID0gYXdhaXQgdGhpcy5fZG1Mb2FpQ29uZ1ZpZWNTZXJ2aWNlLmdldFdvcmtmbG93U2V0dGluZ0J5SWRMb2FpQ29uZ1ZpZWMoaWRMb2FpQ29uZ1ZpZWMpO1xyXG4gICAgICAgIHRoaXMuc2V0V29ya2Zsb3dEYXRhc291cmNlKGV2dCwgd29ya2Zsb3dTZXR0aW5nKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBhc3luYyBoYW5kbGVDaGFuZ2VXb3JrZmxvd0NvZGUoZXZ0OiBFdmVudERhdGEpIHtcclxuICAgIC8vICAgICB0aGlzLnRhYkRhdGFUYXNrWzFdLmhpZGRlbiA9ICFldnQucm9vdE1vZGVsLl9Xb3JrZmxvd0NvZGU7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgYXN5bmMgb25CZWZvcmVTYXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1OZXh0Rmlyc3RTdGVwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZGF0YS5pdGVtV29ya2Zsb3dIaXN0b3J5ID0gYXdhaXQgdGhpcy5mb3JtTmV4dEZpcnN0U3RlcC5nZXRNb2RlbERhdGEoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgb25BZnRlclNhdmUocmVzOiBSZXNwb25zZVJlc3VsdCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmZvcm1TdGF0ZSA9PSBGb3JtU3RhdGUuQUREICYmIHJlcyAmJiByZXMuc3VjY2VzcyAmJiByZXMuZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uQWZ0ZXJTYXZlZC5lbWl0KHJlcy5kYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25UYWJDaGFuZ2UoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiSW5kZXggPSBldnQuaW5kZXg7XHJcbiAgICAgICAgdGhpcy51c2Vycy50YXNrTmFtZSA9IHRoaXMubW9kZWwuZGF0YS50ZW47XHJcbiAgICB9XHJcblxyXG4gICAgZm9yY3VzVG9GaXJzdElucHV0Q29udHJvbChldmVudCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudChDb21DdHhDb25zdGFudHMuQ09NTU9OLkZPQ1VTX1RPX0ZJUlNUX0lOUFVUX0NPTlRST0wpO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=