qms-angular 1.0.53 → 1.0.57

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 (60) hide show
  1. package/README.md +46 -1
  2. package/bundles/qms-angular.umd.js +1133 -453
  3. package/bundles/qms-angular.umd.js.map +1 -1
  4. package/esm2015/lib/components/qms-app-bar/qms-app-bar.component.js +1 -1
  5. package/esm2015/lib/components/related/model/popup-data.model.js +1 -1
  6. package/esm2015/lib/components/related/popup/related-popup.component.js +52 -31
  7. package/esm2015/lib/components/related/risk/analysis/analysis.component.js +1 -1
  8. package/esm2015/lib/components/select-include-children/enum/select-option-type.enum.js +7 -0
  9. package/esm2015/lib/components/select-include-children/model/select-option.model.js +1 -1
  10. package/esm2015/lib/components/select-include-children/model/select-popup-data.model.js +1 -1
  11. package/esm2015/lib/components/select-include-children/model/select-search-option.model.js +4 -0
  12. package/esm2015/lib/components/select-include-children/model/seleted-option.model.js +3 -0
  13. package/esm2015/lib/components/select-include-children/select-include-children.component.js +419 -331
  14. package/esm2015/lib/components/select-include-children/services/select-global.service.js +3 -7
  15. package/esm2015/lib/components/select-one/common/data-type.enum.js +14 -0
  16. package/esm2015/lib/components/select-one/common/document-folder-type.enum.js +12 -0
  17. package/esm2015/lib/components/select-one/common/module-type.enum.js +8 -0
  18. package/esm2015/lib/components/select-one/common/select-data.model.js +3 -0
  19. package/esm2015/lib/components/select-one/common/selected-node.model.js +3 -0
  20. package/esm2015/lib/components/select-one/common/selectone-popup-data.model.js +11 -0
  21. package/esm2015/lib/components/select-one/common/show-hide-search-result.const.js +6 -0
  22. package/esm2015/lib/components/select-one/index.js +2 -0
  23. package/esm2015/lib/components/select-one/public_api.js +7 -0
  24. package/esm2015/lib/components/select-one/select-one.component.js +359 -0
  25. package/esm2015/lib/components/select-one/select-one.module.js +94 -0
  26. package/esm2015/lib/components/select-one/service/select-one-global.service.js +18 -0
  27. package/esm2015/lib/components/tree/tree.component.js +69 -5
  28. package/esm2015/public-api.js +5 -1
  29. package/fesm2015/qms-angular.js +1088 -444
  30. package/fesm2015/qms-angular.js.map +1 -1
  31. package/lib/components/related/model/popup-data.model.d.ts +0 -1
  32. package/lib/components/related/popup/related-popup.component.d.ts +4 -5
  33. package/lib/components/select-include-children/enum/select-option-type.enum.d.ts +5 -0
  34. package/lib/components/select-include-children/model/select-option.model.d.ts +2 -0
  35. package/lib/components/select-include-children/model/select-popup-data.model.d.ts +4 -0
  36. package/lib/components/select-include-children/model/select-search-option.model.d.ts +7 -0
  37. package/lib/components/select-include-children/model/seleted-option.model.d.ts +15 -0
  38. package/lib/components/select-include-children/select-include-children.component.d.ts +32 -18
  39. package/lib/components/select-include-children/services/select-global.service.d.ts +3 -5
  40. package/lib/components/select-one/common/data-type.enum.d.ts +12 -0
  41. package/lib/components/select-one/common/document-folder-type.enum.d.ts +10 -0
  42. package/lib/components/select-one/common/module-type.enum.d.ts +6 -0
  43. package/lib/components/select-one/common/select-data.model.d.ts +12 -0
  44. package/lib/components/select-one/common/selected-node.model.d.ts +12 -0
  45. package/lib/components/select-one/common/selectone-popup-data.model.d.ts +12 -0
  46. package/lib/components/select-one/common/show-hide-search-result.const.d.ts +5 -0
  47. package/lib/components/select-one/index.d.ts +1 -0
  48. package/lib/components/select-one/public_api.d.ts +6 -0
  49. package/lib/components/select-one/select-one.component.d.ts +80 -0
  50. package/lib/components/select-one/select-one.module.d.ts +25 -0
  51. package/lib/components/select-one/service/select-one-global.service.d.ts +10 -0
  52. package/lib/components/tree/tree.component.d.ts +6 -1
  53. package/package.json +1 -1
  54. package/public-api.d.ts +4 -0
  55. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -2
  56. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
  57. package/src/assets/qms-ckeditor-plugin/src/ckeditor.js +0 -2
  58. package/src/lib/components/qms-app-bar/qms-app-bar.component.scss +7 -0
  59. package/src/lib/components/select-include-children/select-include-children.component.scss +11 -4
  60. package/src/lib/components/select-one/select-one.component.scss +240 -0
@@ -3,14 +3,10 @@ import { BehaviorSubject } from "rxjs";
3
3
  import * as i0 from "@angular/core";
4
4
  export class QMSSelectGlobalService {
5
5
  constructor() {
6
- this.searchRelated = new BehaviorSubject([]);
7
- this.splitViewValue = new BehaviorSubject([]);
6
+ this.searchSelect = new BehaviorSubject([]);
8
7
  }
9
8
  setSearchResult(result) {
10
- this.searchRelated.next(result);
11
- }
12
- setSplitviewValue(result) {
13
- this.splitViewValue.next(result);
9
+ this.searchSelect.next(result);
14
10
  }
15
11
  }
16
12
  QMSSelectGlobalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QMSSelectGlobalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -19,4 +15,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImpor
19
15
  type: Injectable,
20
16
  args: [{ providedIn: 'root' }]
21
17
  }], ctorParameters: function () { return []; } });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWdsb2JhbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC1pbmNsdWRlLWNoaWxkcmVuL3NlcnZpY2VzL3NlbGVjdC1nbG9iYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSXZDLE1BQU0sT0FBTyxzQkFBc0I7SUFJL0I7UUFIQSxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFpQixFQUFFLENBQUMsQ0FBQztRQUN4RCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFpQixFQUFFLENBQUMsQ0FBQztJQUV6QyxDQUFDO0lBRWpCLGVBQWUsQ0FBQyxNQUFzQjtRQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBc0I7UUFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQzs7bUhBWlEsc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FEVixNQUFNOzJGQUNsQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFNlbGVjdE9wdGlvbiB9IGZyb20gXCIuLi9tb2RlbC9zZWxlY3Qtb3B0aW9uLm1vZGVsXCJcclxuXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxyXG5leHBvcnQgY2xhc3MgUU1TU2VsZWN0R2xvYmFsU2VydmljZSB7XHJcbiAgICBzZWFyY2hSZWxhdGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWxlY3RPcHRpb25bXT4oW10pO1xyXG4gICAgc3BsaXRWaWV3VmFsdWUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlbGVjdE9wdGlvbltdPihbXSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICBzZXRTZWFyY2hSZXN1bHQocmVzdWx0OiBTZWxlY3RPcHRpb25bXSkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoUmVsYXRlZC5uZXh0KHJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U3BsaXR2aWV3VmFsdWUocmVzdWx0OiBTZWxlY3RPcHRpb25bXSl7XHJcbiAgICAgICAgdGhpcy5zcGxpdFZpZXdWYWx1ZS5uZXh0KHJlc3VsdCk7XHJcbiAgICB9XHJcbn1cclxuICAiXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWdsb2JhbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC1pbmNsdWRlLWNoaWxkcmVuL3NlcnZpY2VzL3NlbGVjdC1nbG9iYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3ZDLE1BQU0sT0FBTyxzQkFBc0I7SUFHL0I7UUFGQSxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUF1QixFQUFFLENBQUMsQ0FBQztJQUU3QyxDQUFDO0lBRWpCLGVBQWUsQ0FBQyxNQUE0QjtRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDOzttSEFQUSxzQkFBc0I7dUhBQXRCLHNCQUFzQixjQURWLE1BQU07MkZBQ2xCLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgU2VsZWN0T3B0aW9uIH0gZnJvbSBcIi4uL21vZGVsL3NlbGVjdC1vcHRpb24ubW9kZWxcIlxyXG5pbXBvcnQgeyBTZWxlY3RTZWFyY2hPcHRpb24gfSBmcm9tIFwiLi4vbW9kZWwvc2VsZWN0LXNlYXJjaC1vcHRpb24ubW9kZWxcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxyXG5leHBvcnQgY2xhc3MgUU1TU2VsZWN0R2xvYmFsU2VydmljZSB7XHJcbiAgICBzZWFyY2hTZWxlY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlbGVjdFNlYXJjaE9wdGlvbltdPihbXSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICBzZXRTZWFyY2hSZXN1bHQocmVzdWx0OiBTZWxlY3RTZWFyY2hPcHRpb25bXSkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoU2VsZWN0Lm5leHQocmVzdWx0KTtcclxuICAgIH1cclxuXHJcbn1cclxuICAiXX0=
@@ -0,0 +1,14 @@
1
+ export var DataType;
2
+ (function (DataType) {
3
+ DataType[DataType["process"] = 2] = "process";
4
+ DataType[DataType["document"] = 1] = "document";
5
+ DataType[DataType["area"] = 3] = "area";
6
+ DataType[DataType["folder"] = 4] = "folder";
7
+ DataType[DataType["deviation"] = 5] = "deviation";
8
+ DataType[DataType["checklist"] = 6] = "checklist";
9
+ DataType[DataType["risk"] = 7] = "risk";
10
+ DataType[DataType["deviationType"] = 8] = "deviationType";
11
+ DataType[DataType["checklistCategory"] = 9] = "checklistCategory";
12
+ DataType[DataType["riskFolder"] = 10] = "riskFolder";
13
+ })(DataType || (DataType = {}));
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10eXBlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LW9uZS9jb21tb24vZGF0YS10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksUUFXWDtBQVhELFdBQVksUUFBUTtJQUNoQiw2Q0FBVyxDQUFBO0lBQ1gsK0NBQVksQ0FBQTtJQUNaLHVDQUFRLENBQUE7SUFDUiwyQ0FBVSxDQUFBO0lBQ1YsaURBQWEsQ0FBQTtJQUNiLGlEQUFhLENBQUE7SUFDYix1Q0FBUSxDQUFBO0lBQ1IseURBQWlCLENBQUE7SUFDakIsaUVBQXFCLENBQUE7SUFDckIsb0RBQWUsQ0FBQTtBQUNuQixDQUFDLEVBWFcsUUFBUSxLQUFSLFFBQVEsUUFXbkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBEYXRhVHlwZSB7XHJcbiAgICBwcm9jZXNzID0gMixcclxuICAgIGRvY3VtZW50ID0gMSxcclxuICAgIGFyZWEgPSAzLFxyXG4gICAgZm9sZGVyID0gNCxcclxuICAgIGRldmlhdGlvbiA9IDUsXHJcbiAgICBjaGVja2xpc3QgPSA2LFxyXG4gICAgcmlzayA9IDcsXHJcbiAgICBkZXZpYXRpb25UeXBlID0gOCxcclxuICAgIGNoZWNrbGlzdENhdGVnb3J5ID0gOSxcclxuICAgIHJpc2tGb2xkZXIgPSAxMFxyXG59Il19
@@ -0,0 +1,12 @@
1
+ export var DocumentNodeType;
2
+ (function (DocumentNodeType) {
3
+ DocumentNodeType[DocumentNodeType["Document"] = 1] = "Document";
4
+ DocumentNodeType[DocumentNodeType["LinkDocument"] = 2] = "LinkDocument";
5
+ DocumentNodeType[DocumentNodeType["FileDocument"] = 3] = "FileDocument";
6
+ DocumentNodeType[DocumentNodeType["ShortcutDocument"] = 4] = "ShortcutDocument";
7
+ DocumentNodeType[DocumentNodeType["Folder"] = 5] = "Folder";
8
+ DocumentNodeType[DocumentNodeType["TopFolder"] = 6] = "TopFolder";
9
+ DocumentNodeType[DocumentNodeType["DepartmentFolder"] = 7] = "DepartmentFolder";
10
+ DocumentNodeType[DocumentNodeType["RegionalFolder"] = 8] = "RegionalFolder";
11
+ })(DocumentNodeType || (DocumentNodeType = {}));
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZm9sZGVyLXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qtb25lL2NvbW1vbi9kb2N1bWVudC1mb2xkZXItdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGdCQVNYO0FBVEQsV0FBWSxnQkFBZ0I7SUFDeEIsK0RBQVksQ0FBQTtJQUNaLHVFQUFnQixDQUFBO0lBQ2hCLHVFQUFnQixDQUFBO0lBQ2hCLCtFQUFvQixDQUFBO0lBQ3BCLDJEQUFVLENBQUE7SUFDVixpRUFBYSxDQUFBO0lBQ2IsK0VBQW9CLENBQUE7SUFDcEIsMkVBQWtCLENBQUE7QUFDdEIsQ0FBQyxFQVRXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFTM0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBEb2N1bWVudE5vZGVUeXBlIHtcclxuICAgIERvY3VtZW50ID0gMSxcclxuICAgIExpbmtEb2N1bWVudCA9IDIsXHJcbiAgICBGaWxlRG9jdW1lbnQgPSAzLFxyXG4gICAgU2hvcnRjdXREb2N1bWVudCA9IDQsXHJcbiAgICBGb2xkZXIgPSA1LCAvLyBMZXZlbCAyXHJcbiAgICBUb3BGb2xkZXIgPSA2LCAvLyBMZXZlbCAxXHJcbiAgICBEZXBhcnRtZW50Rm9sZGVyID0gNyxcclxuICAgIFJlZ2lvbmFsRm9sZGVyID0gOFxyXG59Il19
@@ -0,0 +1,8 @@
1
+ export var ModuleType;
2
+ (function (ModuleType) {
3
+ ModuleType[ModuleType["documentProcess"] = 1] = "documentProcess";
4
+ ModuleType[ModuleType["deviation"] = 2] = "deviation";
5
+ ModuleType[ModuleType["checklist"] = 3] = "checklist";
6
+ ModuleType[ModuleType["risk"] = 4] = "risk";
7
+ })(ModuleType || (ModuleType = {}));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qtb25lL2NvbW1vbi9tb2R1bGUtdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFVBS1g7QUFMRCxXQUFZLFVBQVU7SUFDbEIsaUVBQW1CLENBQUE7SUFDbkIscURBQWEsQ0FBQTtJQUNiLHFEQUFhLENBQUE7SUFDYiwyQ0FBUSxDQUFBO0FBQ1osQ0FBQyxFQUxXLFVBQVUsS0FBVixVQUFVLFFBS3JCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gTW9kdWxlVHlwZSB7XHJcbiAgICBkb2N1bWVudFByb2Nlc3MgPSAxLFxyXG4gICAgZGV2aWF0aW9uID0gMixcclxuICAgIGNoZWNrbGlzdCA9IDMsXHJcbiAgICByaXNrID0gNFxyXG59XHJcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export class ISelectOneItem {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LW9uZS9jb21tb24vc2VsZWN0LWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxPQUFPLGNBQWM7Q0FXMUIiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IGNsYXNzIElTZWxlY3RPbmVJdGVtIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIGl0ZW1OYW1lOiBzdHJpbmc7XHJcbiAgaXRlbVR5cGU6IG51bWJlcjtcclxuICBzdGF0dXNOYW1lOiBzdHJpbmc7XHJcbiAgaXRlbU51bWJlcklkPzogc3RyaW5nO1xyXG4gIHBhcmVudElkOiBzdHJpbmc7XHJcbiAgcGFyZW50TmFtZTogc3RyaW5nO1xyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICBsZXZlbFR5cGU/OiBudW1iZXI7XHJcbiAgYnJlYWRjdW1icz86IHN0cmluZ1tdO1xyXG59XHJcblxyXG4iXX0=
@@ -0,0 +1,3 @@
1
+ export class SelectedNode {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtbm9kZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qtb25lL2NvbW1vbi9zZWxlY3RlZC1ub2RlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxZQUFZO0NBV3hCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFNlbGVjdGVkTm9kZSB7XHJcbiAgbW9kdWxlSWQ6IG51bWJlcjtcclxuICBpZDogYW55O1xyXG4gIGl0ZW1OYW1lOiBzdHJpbmc7XHJcbiAgaXRlbU51bWJlcklkOiBzdHJpbmc7XHJcbiAgaXRlbVR5cGU6IGFueTtcclxuICBkaXNwbGF5SWQ/OiBhbnk7XHJcbiAgc3RhdHVzTmFtZT86IGFueTtcclxuICBwYXJlbnRJZD86IHN0cmluZztcclxuICBwYXJlbnROYW1lPzogc3RyaW5nO1xyXG4gIGxldmVsVHlwZT86IG51bWJlcjtcclxufVxyXG4iXX0=
@@ -0,0 +1,11 @@
1
+ export class SelectOnePopupData {
2
+ constructor() {
3
+ this.moduleId = 0;
4
+ this.moduleName = '';
5
+ this.treeData = [];
6
+ this.selectedNode = [];
7
+ this.disabledList = [];
8
+ this.expandToChildNode = [];
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b25lLXBvcHVwLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LW9uZS9jb21tb24vc2VsZWN0b25lLXBvcHVwLWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLGtCQUFrQjtJQVU3QjtRQUNFLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJlZUNvbmZpZyB9IGZyb20gXCIuLi8uLi90cmVlL21vZGVsL3RyZWUtY29uZmlnLm1vZGVsXCI7XHJcbmltcG9ydCB7IFRyZWVNb2RlbCB9IGZyb20gXCIuLi8uLi90cmVlL21vZGVsL3RyZWUubW9kZWxcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgU2VsZWN0T25lUG9wdXBEYXRhIHtcclxuICBtb2R1bGVJZDogbnVtYmVyO1xyXG4gIG1vZHVsZU5hbWU6IHN0cmluZztcclxuICB0cmVlRGF0YTogQXJyYXk8VHJlZU1vZGVsPjtcclxuICB0cmVlQ29uZmlnOiBUcmVlQ29uZmlnO1xyXG4gIHNlbGVjdGVkTm9kZT86IEFycmF5PGFueT47XHJcbiAgZGlzYWJsZWRMaXN0PzogQXJyYXk8YW55PjtcclxuICBleHBhbmRUb0NoaWxkTm9kZTogQXJyYXk8YW55PjtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5tb2R1bGVJZCA9IDA7XHJcbiAgICB0aGlzLm1vZHVsZU5hbWUgPSAnJztcclxuICAgIHRoaXMudHJlZURhdGEgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gW107XHJcbiAgICB0aGlzLmRpc2FibGVkTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5leHBhbmRUb0NoaWxkTm9kZSA9IFtdO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,6 @@
1
+ export class ShowHideSearchResultConst {
2
+ }
3
+ ShowHideSearchResultConst.IS_DISPLAY_SEARCH_RESULT = 'IS_DISPLAY_SEARCH_RESULT';
4
+ ShowHideSearchResultConst.HIDE_SEARCH_RESULT = 'HIDE_SEARCH_RESULT';
5
+ ShowHideSearchResultConst.SHOW_SEARCH_RESULT = 'SHOW_SEARCH_RESULT';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1oaWRlLXNlYXJjaC1yZXN1bHQuY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LW9uZS9jb21tb24vc2hvdy1oaWRlLXNlYXJjaC1yZXN1bHQuY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHlCQUF5Qjs7QUFDdEIsa0RBQXdCLEdBQUcsMEJBQTBCLENBQUM7QUFDdEQsNENBQWtCLEdBQUcsb0JBQW9CLENBQUM7QUFDMUMsNENBQWtCLEdBQUcsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU2hvd0hpZGVTZWFyY2hSZXN1bHRDb25zdCB7XHJcbiAgcHVibGljIHN0YXRpYyBJU19ESVNQTEFZX1NFQVJDSF9SRVNVTFQgPSAnSVNfRElTUExBWV9TRUFSQ0hfUkVTVUxUJztcclxuICBwdWJsaWMgc3RhdGljIEhJREVfU0VBUkNIX1JFU1VMVCA9ICdISURFX1NFQVJDSF9SRVNVTFQnO1xyXG4gIHB1YmxpYyBzdGF0aWMgU0hPV19TRUFSQ0hfUkVTVUxUID0gJ1NIT1dfU0VBUkNIX1JFU1VMVCc7XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './public_api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LW9uZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7Il19
@@ -0,0 +1,7 @@
1
+ export * from './select-one.module';
2
+ export * from './select-one.component';
3
+ export * from './service/select-one-global.service';
4
+ export * from './common/select-data.model';
5
+ export * from './common/selectone-popup-data.model';
6
+ export * from './common/show-hide-search-result.const';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qtb25lL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUNBQXFDLENBQUM7QUFFcEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NlbGVjdC1vbmUubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3Qtb25lLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZS9zZWxlY3Qtb25lLWdsb2JhbC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uL3NlbGVjdC1kYXRhLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb21tb24vc2VsZWN0b25lLXBvcHVwLWRhdGEubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi9zaG93LWhpZGUtc2VhcmNoLXJlc3VsdC5jb25zdCc7Il19
@@ -0,0 +1,359 @@
1
+ import { EventEmitter, ViewChild, ViewEncapsulation, ViewChildren } from '@angular/core';
2
+ import { Component, HostListener, Inject } from '@angular/core';
3
+ import { FormControl } from '@angular/forms';
4
+ import { MatAutocompleteTrigger } from '@angular/material/autocomplete';
5
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
6
+ import { Subject } from 'rxjs';
7
+ import { debounceTime, takeUntil } from 'rxjs/operators';
8
+ import { DataType } from './common/data-type.enum';
9
+ import { DocumentNodeType } from './common/document-folder-type.enum';
10
+ import { ModuleType } from './common/module-type.enum';
11
+ import { ShowHideSearchResultConst } from './common/show-hide-search-result.const';
12
+ import { TreeComponent } from '../tree/tree.component';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "../../services/translation-registry.service";
15
+ import * as i2 from "@angular/material/dialog";
16
+ import * as i3 from "./service/select-one-global.service";
17
+ import * as i4 from "@angular/material/icon";
18
+ import * as i5 from "@angular/platform-browser";
19
+ import * as i6 from "../app-icon/icon-registry.service";
20
+ import * as i7 from "@angular/material/autocomplete";
21
+ import * as i8 from "@angular/cdk/scrolling";
22
+ import * as i9 from "@angular/material/core";
23
+ import * as i10 from "../list/list";
24
+ import * as i11 from "../breadcrumb/breadcrumb";
25
+ import * as i12 from "@angular/material/expansion";
26
+ import * as i13 from "../tree/tree.component";
27
+ import * as i14 from "@angular/material/button";
28
+ import * as i15 from "../button/button";
29
+ import * as i16 from "@angular/material/input";
30
+ import * as i17 from "@angular/forms";
31
+ import * as i18 from "../../directives/scrollbar/scrollbar.directive";
32
+ import * as i19 from "@angular/common";
33
+ import * as i20 from "../../directives/tooltip/tooltip-renderer.directive";
34
+ import * as i21 from "./common/selectone-popup-data.model";
35
+ export class SelectOneDialog {
36
+ constructor(cdRef, translate, dialogRef, globalService, iconRegistry, sanitizer, appIconService, data) {
37
+ this.cdRef = cdRef;
38
+ this.translate = translate;
39
+ this.dialogRef = dialogRef;
40
+ this.globalService = globalService;
41
+ this.iconRegistry = iconRegistry;
42
+ this.sanitizer = sanitizer;
43
+ this.appIconService = appIconService;
44
+ this.data = data;
45
+ this.ngUnsubscribe = new Subject();
46
+ this.moduleId = 0;
47
+ this.moduleName = '';
48
+ this.treeData = [];
49
+ this.checkedNodeList = [];
50
+ this.selectedNode = [];
51
+ this.selectedData = [];
52
+ this.module = ModuleType;
53
+ this.dataType = DataType;
54
+ this.itemType = 0;
55
+ this.selectedRiskData = [];
56
+ this.disabledList = [];
57
+ this.expandToChildNode = [];
58
+ this.isCommonExpanded = true;
59
+ this.myControl = new FormControl();
60
+ this.filteredOptions = [];
61
+ this.isInputValue = false;
62
+ this.selectedFolder = null;
63
+ this.listChildrenSelectOne = [];
64
+ this.onSearch = new EventEmitter();
65
+ this.onExpandFolder = new EventEmitter();
66
+ this.moduleId = data.moduleId;
67
+ this.moduleName = data.moduleName;
68
+ this.treeData = data.treeData;
69
+ this.treeConfig = data.treeConfig;
70
+ this.selectedRiskData = (data === null || data === void 0 ? void 0 : data.selectedNode) || [];
71
+ this.disabledList = data.disabledList || [];
72
+ this.expandToChildNode = data.expandToChildNode;
73
+ appIconService.registerProcessIcon(iconRegistry, sanitizer);
74
+ appIconService.registerProcessAreaIcon(iconRegistry, sanitizer);
75
+ appIconService.registerDocumentIcon(iconRegistry, sanitizer);
76
+ appIconService.registerFolderIcon(iconRegistry, sanitizer);
77
+ appIconService.registerDeviationIcon(iconRegistry, sanitizer);
78
+ appIconService.registerChecklistIcon(iconRegistry, sanitizer);
79
+ appIconService.registerRiskIcon(iconRegistry, sanitizer);
80
+ }
81
+ ngOnDestroy() {
82
+ this.ngUnsubscribe.next();
83
+ this.ngUnsubscribe.complete();
84
+ this.globalService.setSearchRelated([]);
85
+ this.selectedFolder = null;
86
+ }
87
+ onMessage(event) {
88
+ if (event.data === ShowHideSearchResultConst.HIDE_SEARCH_RESULT) {
89
+ this.autoComplete.closePanel();
90
+ }
91
+ }
92
+ ngOnInit() {
93
+ this.translate.getLanguageSubject$.pipe().subscribe((res) => {
94
+ if (res) {
95
+ this.LANG = this.translate.getObjectLang(res);
96
+ }
97
+ });
98
+ this.globalService.searchRelated.pipe(takeUntil(this.ngUnsubscribe)).subscribe((res) => {
99
+ if (res && res.length) {
100
+ this.filteredOptions = res;
101
+ }
102
+ });
103
+ this.myControl.valueChanges.pipe(debounceTime(1000)).subscribe((val) => {
104
+ this.isInputValue = true;
105
+ this.onSearchRelated(val);
106
+ });
107
+ this.itemType = this.getDataTypeId(this.moduleId);
108
+ }
109
+ ngAfterViewChecked() {
110
+ this.cdRef.detectChanges();
111
+ if (this.filteredOptions && this.filteredOptions.length) {
112
+ this.autoComplete.openPanel();
113
+ this.setResultHeight();
114
+ }
115
+ else if (this.autoComplete) {
116
+ this.autoComplete.closePanel();
117
+ }
118
+ }
119
+ getDataTypeId(moduleId) {
120
+ let itemType;
121
+ switch (moduleId) {
122
+ case ModuleType.documentProcess:
123
+ itemType = this.dataType.process;
124
+ break;
125
+ case ModuleType.deviation:
126
+ itemType = this.dataType.deviation;
127
+ break;
128
+ case ModuleType.checklist:
129
+ itemType = this.dataType.checklist;
130
+ break;
131
+ case ModuleType.risk:
132
+ itemType = this.dataType.risk;
133
+ break;
134
+ default:
135
+ itemType = this.dataType.document;
136
+ break;
137
+ }
138
+ return itemType;
139
+ }
140
+ setResultHeight(arr) {
141
+ let maxHeight = 484;
142
+ const popup_content = document.getElementsByClassName('qmslib_related_popup_content')[0];
143
+ const line__divider = document.getElementsByClassName('line__divider')[0];
144
+ if (popup_content && line__divider) {
145
+ maxHeight = this.getOffsetHeight(popup_content, true) + this.getOffsetHeight(line__divider, true) * 2;
146
+ }
147
+ const contentResult = document.getElementsByClassName('cdk-virtual-scroll-content-wrapper')[0];
148
+ const viewreports = document.getElementsByClassName('related-viewport')[0];
149
+ if (viewreports) {
150
+ if (contentResult.offsetHeight <= maxHeight) {
151
+ viewreports.style.height = `${contentResult.offsetHeight}px`;
152
+ }
153
+ else {
154
+ viewreports.style.height = `${maxHeight}px`;
155
+ }
156
+ }
157
+ }
158
+ onSearchRelated(_val) {
159
+ this.filteredOptions = [];
160
+ if (typeof (_val) === 'object') {
161
+ this.myControl.setValue('');
162
+ }
163
+ else if (typeof (_val) === 'string') {
164
+ if (!!_val) {
165
+ this.onSearch.emit(_val);
166
+ }
167
+ }
168
+ }
169
+ getModuleFilteredOptions() {
170
+ if (this.listChildrenSelectOne.length) {
171
+ for (let index = 0; index < this.listChildrenSelectOne.length; index++) {
172
+ const firstEl = this.listChildrenSelectOne[index];
173
+ for (let j = 0; j < this.filteredOptions.length; j++) {
174
+ const secondEl = this.filteredOptions[j];
175
+ if (firstEl.id === secondEl.id) {
176
+ this.filteredOptions.splice(j, 1);
177
+ }
178
+ }
179
+ }
180
+ }
181
+ return this.filteredOptions;
182
+ }
183
+ showSearchResult() {
184
+ this.autoComplete.openPanel();
185
+ }
186
+ displayRelated(related) {
187
+ return related ? related.itemName : undefined;
188
+ }
189
+ selectItemSearched(item) {
190
+ var _a;
191
+ if ((_a = this.treeConfig) === null || _a === void 0 ? void 0 : _a.selectOne) {
192
+ this.disabledList = [];
193
+ }
194
+ // reset to root
195
+ this.expandToChildNode = [''];
196
+ this.checkedNodeList = [];
197
+ let position = -1;
198
+ let node;
199
+ let typeId;
200
+ position = this.treeData.findIndex(x => {
201
+ return x.rootId === item.id;
202
+ });
203
+ typeId = item.itemType;
204
+ if (position >= 0) {
205
+ node = this.treeData[position];
206
+ this.checkedNodeList.push({
207
+ moduleId: this.moduleId,
208
+ id: node.rootId,
209
+ itemName: node.rootName || node.subName,
210
+ itemType: typeId,
211
+ itemNumberId: item.itemNumberId,
212
+ levelType: item.levelType
213
+ });
214
+ }
215
+ const treeNode = {
216
+ id: node.rootId,
217
+ name: !!node.rootId ? node.subName : node.rootName,
218
+ children: [],
219
+ parentId: node.parentId
220
+ };
221
+ this.dataTrees.toArray()[0].todoFolderSelection([treeNode]);
222
+ return;
223
+ }
224
+ onCloseClick() {
225
+ this.selectedFolder = null;
226
+ this.dialogRef.close();
227
+ }
228
+ ;
229
+ onAddClick() {
230
+ this.selectedFolder = null;
231
+ this.dialogRef.close(this.checkedNodeList);
232
+ }
233
+ getOffsetHeight(element, includeMargin) {
234
+ let elmHeight = 0, elmMargin = 0;
235
+ elmHeight = element.offsetHeight;
236
+ if (includeMargin) {
237
+ const style = window.getComputedStyle(element);
238
+ elmMargin = parseFloat(style.marginTop.replace('px', '')) + parseFloat(style.marginBottom.replace('px', ''));
239
+ }
240
+ return (elmHeight + elmMargin);
241
+ }
242
+ getItemChipName(item) {
243
+ if (item.itemType === DataType.checklist || item.itemType === DataType.deviation) {
244
+ return (item.parentName && item.itemName !== item.parentName) ? `${item.parentName}/${item.itemName}` : item.itemName;
245
+ }
246
+ return item.itemName;
247
+ }
248
+ isEllipsisActive(e) {
249
+ return e ? (e.clientWidth < e.scrollWidth) : false;
250
+ }
251
+ getNodeIcon(item) {
252
+ switch (item.itemType) {
253
+ case DataType.folder: {
254
+ switch (item.levelType) {
255
+ case DocumentNodeType.DepartmentFolder:
256
+ return 'department_folder_outlined';
257
+ case DocumentNodeType.RegionalFolder:
258
+ return 'regional_folder_outlined';
259
+ case DocumentNodeType.TopFolder:
260
+ return 'enterprise_folder_outlined';
261
+ case DocumentNodeType.Folder:
262
+ return 'local_folder_outlined';
263
+ default:
264
+ return 'folder_outlined';
265
+ }
266
+ }
267
+ case DataType.document: {
268
+ switch (item.levelType) {
269
+ case DocumentNodeType.DepartmentFolder:
270
+ return 'document_department';
271
+ case DocumentNodeType.RegionalFolder:
272
+ return 'document_regional';
273
+ case DocumentNodeType.TopFolder:
274
+ return 'document_enterprise';
275
+ case DocumentNodeType.Folder:
276
+ return 'document_local';
277
+ default:
278
+ return 'document';
279
+ }
280
+ }
281
+ case DataType.area:
282
+ return 'process_area_outlined';
283
+ case DataType.process:
284
+ return 'process';
285
+ case DataType.deviation:
286
+ return 'deviation';
287
+ case DataType.checklist:
288
+ return 'checklist';
289
+ case DataType.risk:
290
+ return 'risk';
291
+ default:
292
+ return 'folder_outlined';
293
+ }
294
+ }
295
+ getParentName(item) {
296
+ if (item.itemType === this.dataType.checklist || item.itemType === this.dataType.deviation) {
297
+ return item.parentName;
298
+ }
299
+ return null;
300
+ }
301
+ getItemId(item) {
302
+ if (item.itemType === this.dataType.process) {
303
+ return `${this.LANG.PROCESS_ID}: ${item.itemNumberId}; ${item.statusName}`;
304
+ }
305
+ else if (item.itemType === this.dataType.document) {
306
+ return `${this.LANG.DOCUMENT_ID}: ${item.itemNumberId}; ${item.statusName}`;
307
+ }
308
+ return null;
309
+ }
310
+ selectNodeTreeEvent(node) {
311
+ var _a, _b;
312
+ let position = -1;
313
+ let parentName = '';
314
+ let itemNumberId = '';
315
+ position = !node.expandable ? this.treeData.findIndex(p => p.childId === node.id && p.rootId === node.parentId) :
316
+ this.treeData.findIndex(p => p.rootId === node.id);
317
+ parentName = this.treeData[position].parentId ? this.treeData[position].subName : this.treeData[position].rootName;
318
+ itemNumberId = (_b = (_a = this.treeData[position]) === null || _a === void 0 ? void 0 : _a.displayId) === null || _b === void 0 ? void 0 : _b.toString();
319
+ this.checkedNodeList = [];
320
+ this.checkedNodeList.push({
321
+ moduleId: this.moduleId,
322
+ id: node.id,
323
+ itemName: node.name,
324
+ itemType: node.itemType,
325
+ parentId: node.parentId,
326
+ parentName: parentName,
327
+ itemNumberId: itemNumberId,
328
+ levelType: node.levelType
329
+ });
330
+ }
331
+ getChildNodeSelectOne(listChildren) {
332
+ this.listChildrenSelectOne = [];
333
+ this.listChildrenSelectOne = listChildren;
334
+ }
335
+ }
336
+ SelectOneDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SelectOneDialog, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslateLibraryService }, { token: i2.MatDialogRef }, { token: i3.QMSSelectOneGlobalService }, { token: i4.MatIconRegistry }, { token: i5.DomSanitizer }, { token: i6.QMSIconRegistryService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
337
+ SelectOneDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: SelectOneDialog, selector: "qms-select-one", host: { listeners: { "window:message": "onMessage($event)" } }, viewQueries: [{ propertyName: "autoComplete", first: true, predicate: ["autoCompleteInputSearch"], descendants: true, read: MatAutocompleteTrigger, static: true }, { propertyName: "dataTrees", predicate: TreeComponent, descendants: true }], ngImport: i0, template: "<div id=\"qmslib_related_popup\" class=\"qmslib__related__popup__container\">\r\n <div id=\"qmslib_related_popup_header\">\r\n <span mat-icon-button class=\"button__close\" (click)=\"onCloseClick()\">\r\n <mat-icon mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmslib_related_popup_header_001\" mat-dialog-content>\r\n <span>{{ moduleName }}</span>\r\n </div>\r\n </div>\r\n\r\n <div\r\n id=\"qmslib_related_popup_search\"\r\n class=\"input__field\"\r\n (click)=\"showSearchResult()\"\r\n >\r\n <input\r\n #name\r\n type=\"text\"\r\n placeholder=\"{{ LANG.SEARCH }}\"\r\n matInput\r\n [formControl]=\"myControl\"\r\n [matAutocomplete]=\"auto\"\r\n #autoCompleteInputSearch\r\n />\r\n <mat-icon>search</mat-icon>\r\n </div>\r\n\r\n <div class=\"line__divider\"></div>\r\n\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayRelated\"\r\n class=\"mat-autocomplete_related-viewport\"\r\n >\r\n <cdk-virtual-scroll-viewport\r\n qms-scrollbar\r\n itemSize=\"10\"\r\n class=\"related-viewport\"\r\n >\r\n <div class=\"search__module-result\" *ngIf=\"filteredOptions.length\">\r\n <mat-option\r\n class=\"search__option\"\r\n *ngFor=\"let option of getModuleFilteredOptions()\"\r\n [value]=\"option\"\r\n (click)=\"selectItemSearched(option)\"\r\n >\r\n <qms-list-item type=\"image-square\">\r\n <mat-icon\r\n leading-icon\r\n type=\"image-square\"\r\n [svgIcon]=\"getNodeIcon(option)\"\r\n ></mat-icon>\r\n <div qms-list-header>\r\n <div\r\n qms-line\r\n type=\"caption\"\r\n qms-tool-tip=\"{{\r\n isEllipsisActive(searchItemResult) ? option.parentName : ''\r\n }}\"\r\n mode=\"dark\"\r\n *ngIf=\"getParentName(option)\"\r\n >\r\n <span #searchItemResult class=\"search__result__parent-name\">\r\n {{ option.parentName }}\r\n </span>\r\n </div>\r\n <div qms-line type=\"subtitle\" class=\"search__option-name\">\r\n {{ option.itemName }}\r\n </div>\r\n <div\r\n class=\"caption\"\r\n *ngIf=\"option.breadcumbs && option.breadcumbs.length\"\r\n >\r\n <qms-breadcrumb\r\n class=\"breadcrumb-containe\"\r\n type=\"table\"\r\n numDisplayItem=\"1\"\r\n [nodes]=\"option.breadcumbs\"\r\n >\r\n </qms-breadcrumb>\r\n </div>\r\n </div>\r\n <div qms-line color=\"default-subtitle\" *ngIf=\"getItemId(option)\">\r\n <span class=\"material-icons-outlined search__description-icon\">\r\n local_offer\r\n </span>\r\n {{ getItemId(option) }}\r\n </div>\r\n </qms-list-item>\r\n </mat-option>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n </mat-autocomplete>\r\n\r\n <div class=\"row\">\r\n <div\r\n class=\"qms-scrollbar col-12 qmslib_related_popup_content\"\r\n [ngClass]=\"{\r\n panel__content_item: checkedNodeList.length,\r\n panel__content: !checkedNodeList.length\r\n }\"\r\n >\r\n <mat-expansion-panel\r\n hideToggle\r\n id=\"qmslib_related_popup_common_001\"\r\n [expanded]=\"isCommonExpanded\"\r\n (opened)=\"isCommonExpanded = true\"\r\n (closed)=\"isCommonExpanded = false\"\r\n class=\"panel-tree\"\r\n >\r\n <div id=\"qmslib_related_popup_common_002\">\r\n <qms-tree\r\n [treeData]=\"treeData\"\r\n [treeConfig]=\"treeConfig\"\r\n [selectedData]=\"selectedData\"\r\n [selectedRiskData]=\"selectedRiskData\"\r\n [disabledList]=\"disabledList\"\r\n (selectNodeEvent)=\"selectNodeTreeEvent($event)\"\r\n (getChildNodeSelectOne)=\"getChildNodeSelectOne($event)\"\r\n [expandOnTitleClick]=\"true\"\r\n [expandToChildNode]=\"expandToChildNode\"\r\n ></qms-tree>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"checkedNodeList.length\" class=\"line__divider\"></div>\r\n\r\n <div *ngIf=\"checkedNodeList.length\" class=\"panel__item qms-scrollbar\">\r\n <div class=\"related__item__inline\" *ngFor=\"let item of checkedNodeList\">\r\n <button\r\n *ngIf=\"item.itemName\"\r\n mat-button\r\n class=\"related__item__content\"\r\n qms-tool-tip=\"{{\r\n isEllipsisActive(itemName) ? getItemChipName(item) : ''\r\n }}\"\r\n mode=\"dark\"\r\n >\r\n <span class=\"related__item__content_name\" #itemName>{{\r\n getItemChipName(item)\r\n }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"line__divider\"></div>\r\n\r\n <div class=\"confirm__button__groups\">\r\n <button\r\n *ngIf=\"!checkedNodeList.length\"\r\n qms-btn\r\n style=\"margin-top: 7px\"\r\n (click)=\"onAddClick()\"\r\n >\r\n {{ LANG.ADD }}\r\n </button>\r\n <button\r\n *ngIf=\"checkedNodeList.length\"\r\n qms-btn\r\n style=\"margin-top: 0px\"\r\n (click)=\"onAddClick()\"\r\n >\r\n {{ LANG.ADD }} ({{ checkedNodeList.length }})\r\n </button>\r\n <button\r\n qms-btn-text\r\n [ngStyle]=\"{ 'margin-top': checkedNodeList.length ? '0px' : '7px' }\"\r\n (click)=\"onCloseClick()\"\r\n >\r\n {{ LANG.CANCEL }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".qms-scrollbar::-webkit-scrollbar{width:12px}.qms-scrollbar::-webkit-scrollbar-track{background:rgba(0,0,0,.12);background-clip:content-box}.qms-scrollbar::-webkit-scrollbar-thumb{background:rgba(0,0,0,.38);border-radius:20px;width:4px;border:4px solid transparent;background-clip:content-box}.qms-scrollbar::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.5);background-clip:content-box;border:4px solid transparent}.qms-scrollbar.none-scroll-bg::-webkit-scrollbar-track{background:transparent;background-clip:content-box}.qms__popup .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qms__danger button{border:none;color:#fff;padding:0;text-align:center;text-decoration:none;display:inline-block;cursor:pointer;height:20px;width:20px;font-family:Open Sans;font-size:12px;font-weight:600;font-style:normal;line-height:16px}.qms__danger .red{background-color:#9e360f;margin-left:10px}.qms__danger .yellow{background-color:#e4cf53;margin-left:10px;color:#323232}.qms__danger .green{background-color:#00804c;margin-left:10px}.confirm__button__groups{margin-top:11px}.confirm__button__groups button{min-height:36px;width:auto;font-family:Open Sans;font-weight:500;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px;margin-right:5px;float:right}.confirm__button__groups .confirm{background:#f8f9f9}.confirm__button__groups .confirm:hover{background:#001983;color:#fff}.confirm__button__groups .confirm:disabled{cursor:not-allowed}.confirm__button__groups .cancel{background:#f8f9f9}.confirm__button__groups .cancel:hover{background:#001983;color:#fff}.qmslib__related__popup__container .input__field{display:flex;align-items:center}.qmslib__related__popup__container .input__field input{width:100%;padding:10px;outline:none;border:none;background:#eee}.qmslib__related__popup__container .input__field .mat-icon{margin-left:-30px;cursor:pointer;vertical-align:middle}.qmslib__related__popup__container .line__divider{border-bottom:1px solid #ccc;height:1px;margin-top:10px;min-width:300px;max-width:100%}.qmslib__related__popup__container .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qmslib__related__popup__container .panel__content{height:450px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel__content_item{height:350px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel-tree .mat-expansion-panel-body{padding:0 12px 12px}.qmslib__related__popup__container .mat-expansion-panel-header{height:30px;font-size:12px;letter-spacing:1px;font-family:Raleway;font-weight:600;padding:0}.qmslib__related__popup__container .mat-expansion-panel-header .mat-expansion-panel-header-title{align-items:center;margin-left:12px}.qmslib__related__popup__container .mat-expansion-panel-header .related_popup_toggle-btn{width:1.5rem;height:1.5rem;line-height:1.5rem}.qmslib__related__popup__container .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:none}.qmslib__related__popup__container .panel__item{height:100px;margin-top:12px;overflow-x:hidden;overflow-y:auto;padding-right:5px;width:100%;max-width:100%;display:flex;flex-wrap:wrap;align-content:flex-start}.qmslib__related__popup__container .panel__item .related__item__inline{max-width:100%}.qmslib__related__popup__container .panel__item .related__item__content{height:32px;line-height:32px;background-color:#e5e5e5;max-width:100%;margin-bottom:5px;margin-left:2.5px;margin-right:2.5px}.qmslib__related__popup__container .panel__item .related__item__content .mat-icon{color:#8e8e8e;font-size:24px}.qmslib__related__popup__container .panel__item .related__item__content span.related__item__content_name{display:inline-block;min-width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}cdk-virtual-scroll-viewport{overflow-x:hidden}cdk-virtual-scroll-viewport .search__module-result{margin:1.5rem;padding:0 0 .5rem}cdk-virtual-scroll-viewport .search__module-result .search__module-title{font-size:14px;font-weight:600}cdk-virtual-scroll-viewport .search__module-result .search__option{height:auto;line-height:normal;padding:8px 0;border-bottom:1px solid #e0e0e0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item.mat-2-line.image-item{height:auto}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content{margin:0;border-bottom:none}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .wrap-image.image-square{width:2.5rem;height:100%;background:transparent;align-self:center;margin-right:0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .wrap-image.image-square img{width:24px;height:24px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .material-icons-outlined.leading-icon,cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content mat-icon.leading-icon{padding:4px 0 4px 4px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .subtitle{font-weight:400}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .caption{overflow:hidden;line-height:normal;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding:0;margin:0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .caption span.search__result__parent-name{display:inline-block;width:auto;width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .default-subtitle{color:rgba(0,0,0,.38)}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .search__description-icon{margin-right:0;width:12px;height:12px;font-size:12px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .qms-list-text{border-bottom:none}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .breadcrumb-containe .qms-breadcrumb-item .mat-icon{font-size:16px!important;padding-bottom:1px}cdk-virtual-scroll-viewport .search__module-result svg{display:block}#qmslib_related_popup_header_001{margin-bottom:20px;padding:0;font-weight:600;font-family:Raleway}.padding-5{padding:5px}.mat-autocomplete_related-viewport{height:100%;max-height:100%!important}.mat-autocomplete_related-viewport .cdk-virtual-scroll-content-wrapper{width:100%}.mat-autocomplete_related-viewport .related-viewport{min-height:10.25rem}"], components: [{ type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i8.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation"], outputs: ["scrolledIndexChange"] }, { type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i10.QMSListItem, selector: "qms-list-item", inputs: ["type"] }, { type: i11.QMSBreadcrumb, selector: "qms-breadcrumb", inputs: ["nodes", "type", "maxLine", "numDisplayItem", "onlyItem", "disabledLastItem"], outputs: ["onItemClick"] }, { type: i12.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i13.TreeComponent, selector: "qms-tree", inputs: ["treeData", "treeConfig", "selectedData", "selectedRiskData", "disabledList", "expandOnTitleClick", "expandToChildNode"], outputs: ["selectNodeEvent", "selectFolderEvent", "checkBoxEvent", "childCheckedEvent", "nodeExpandEvent", "getChildNodeSelectOne"] }, { type: i14.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i15.QMSButton, selector: "button[qms-btn], button[qms-btn-lg], button[qms-btn-outlined],\n button[qms-btn-outlined-lg], button[qms-btn-text], button[qms-btn-text-lg],\n button[qms-btn-fab],button[qms-btn-fab-sm],button[qms-btn-fab-ext],\n button[qms-btn-fab-outlined],button[qms-btn-fab-outlined-sm],button[qms-btn-fab-outlined-ext]", inputs: ["disabled", "color"], exportAs: ["qmsButton"] }], directives: [{ type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i16.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i17.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i17.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i17.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i8.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i18.QMSScrollbarDirective, selector: "[qms-scrollbar]", inputs: ["isNoneBackground"] }, { type: i19.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i19.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.QMSListLeadingIcon, selector: "[leading-icon]" }, { type: i10.QMSListHeader, selector: "[qms-list-header]" }, { type: i10.QMSListLine, selector: "[qms-line]", inputs: ["size", "type", "color"] }, { type: i20.QMSToolTipRendererDirective, selector: "[qms-tool-tip]", inputs: ["showToolTip", "mode", "qms-tool-tip", "contentTemplate", "position"] }, { type: i19.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i19.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], encapsulation: i0.ViewEncapsulation.None });
338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SelectOneDialog, decorators: [{
339
+ type: Component,
340
+ args: [{
341
+ selector: 'qms-select-one',
342
+ templateUrl: './select-one.component.html',
343
+ styleUrls: ['./select-one.component.scss'],
344
+ encapsulation: ViewEncapsulation.None
345
+ }]
346
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TranslateLibraryService }, { type: i2.MatDialogRef }, { type: i3.QMSSelectOneGlobalService }, { type: i4.MatIconRegistry }, { type: i5.DomSanitizer }, { type: i6.QMSIconRegistryService }, { type: i21.SelectOnePopupData, decorators: [{
347
+ type: Inject,
348
+ args: [MAT_DIALOG_DATA]
349
+ }] }]; }, propDecorators: { dataTrees: [{
350
+ type: ViewChildren,
351
+ args: [TreeComponent, {}]
352
+ }], autoComplete: [{
353
+ type: ViewChild,
354
+ args: ['autoCompleteInputSearch', { read: MatAutocompleteTrigger, static: true }]
355
+ }], onMessage: [{
356
+ type: HostListener,
357
+ args: ['window:message', ['$event']]
358
+ }] } });
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9uZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LW9uZS9zZWxlY3Qtb25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qtb25lL3NlbGVjdC1vbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixZQUFZLEVBQWEsU0FBUyxFQUFFLGlCQUFpQixFQUErQixZQUFZLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDaEssT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUt6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBVW5GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVdkQsTUFB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Q3ZCLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLFlBQVksRUFBRSxZQUFZO1lBQzFCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztTQUM1QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQscUJBQXFCLENBQUMsWUFBWTtRQUM5QixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxZQUFZLENBQUM7SUFDOUMsQ0FBQzs7NEdBaldRLGVBQWUsZ1FBNENaLGVBQWU7Z0dBNUNsQixlQUFlLDBOQWtDc0Isc0JBQXNCLDBEQUZ0RCxhQUFhLGdEQ3BFL0IsdXZMQStLQTsyRkQzSWEsZUFBZTtrQkFOM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUsNkJBQTZCO29CQUMxQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDMUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3hDOzswQkE2Q1EsTUFBTTsyQkFBQyxlQUFlOzRDQVpNLFNBQVM7c0JBQXpDLFlBQVk7dUJBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBRy9CLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQW9DcEYsU0FBUztzQkFEUixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLCBBZnRlclZpZXdDaGVja2VkLCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XHJcbmltcG9ydCB7IFFNU0ljb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuLi9hcHAtaWNvbi9pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuL2NvbW1vbi9kYXRhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IERvY3VtZW50Tm9kZVR5cGUgfSBmcm9tICcuL2NvbW1vbi9kb2N1bWVudC1mb2xkZXItdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTW9kdWxlVHlwZSB9IGZyb20gJy4vY29tbW9uL21vZHVsZS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBTaG93SGlkZVNlYXJjaFJlc3VsdENvbnN0IH0gZnJvbSAnLi9jb21tb24vc2hvdy1oaWRlLXNlYXJjaC1yZXN1bHQuY29uc3QnO1xyXG5pbXBvcnQgeyBTZWxlY3RPbmVQb3B1cERhdGEgfSBmcm9tICcuL2NvbW1vbi9zZWxlY3RvbmUtcG9wdXAtZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IElTZWxlY3RPbmVJdGVtIH0gZnJvbSAnLi9jb21tb24vc2VsZWN0LWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBTZWxlY3RlZE5vZGUgfSBmcm9tICcuL2NvbW1vbi9zZWxlY3RlZC1ub2RlLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TU2VsZWN0T25lR2xvYmFsU2VydmljZSB9IGZyb20gJy4vc2VydmljZS9zZWxlY3Qtb25lLWdsb2JhbC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IFRyZWVDb25maWcgfSBmcm9tICcuLi90cmVlL21vZGVsL3RyZWUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgVHJlZUZsYXROb2RlIH0gZnJvbSAnLi4vdHJlZS9tb2RlbC90cmVlLWZsYXQtbm9kZS5tb2RlbCc7XHJcbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAnLi4vdHJlZS9tb2RlbC90cmVlLW5vZGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmVlTW9kZWwgfSBmcm9tICcuLi90cmVlL21vZGVsL3RyZWUubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vdHJlZS90cmVlLmNvbXBvbmVudCc7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdxbXMtc2VsZWN0LW9uZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LW9uZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9zZWxlY3Qtb25lLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3RPbmVEaWFsb2cgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgICBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICBMQU5HOiBhbnk7XHJcbiAgICBtb2R1bGVJZCA9IDA7XHJcbiAgICBtb2R1bGVOYW1lID0gJyc7XHJcbiAgICB0cmVlRGF0YTogQXJyYXk8VHJlZU1vZGVsPiA9IFtdO1xyXG4gICAgdHJlZUNvbmZpZzogVHJlZUNvbmZpZztcclxuXHJcbiAgICBjaGVja2VkTm9kZUxpc3Q6IEFycmF5PFNlbGVjdGVkTm9kZT4gPSBbXTtcclxuICAgIHNlbGVjdGVkTm9kZTogQXJyYXk8U2VsZWN0ZWROb2RlPiA9IFtdO1xyXG4gICAgc2VsZWN0ZWREYXRhOiBBcnJheTxUcmVlRmxhdE5vZGU+ID0gW107XHJcblxyXG4gICAgbW9kdWxlID0gTW9kdWxlVHlwZTtcclxuICAgIGRhdGFUeXBlID0gRGF0YVR5cGU7XHJcbiAgICBpdGVtVHlwZSA9IDA7XHJcbiAgICBzZWxlY3RlZFJpc2tEYXRhOiBhbnkgPSBbXTtcclxuICAgIGRpc2FibGVkTGlzdDogYW55ID0gW107XHJcbiAgICBleHBhbmRUb0NoaWxkTm9kZTogYW55ID0gW107XHJcblxyXG4gICAgaXNDb21tb25FeHBhbmRlZCA9IHRydWU7XHJcblxyXG4gICAgbXlDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgICBmaWx0ZXJlZE9wdGlvbnM6IElTZWxlY3RPbmVJdGVtW10gPSBbXTtcclxuICAgIGlzSW5wdXRWYWx1ZSA9IGZhbHNlO1xyXG5cclxuICAgIHNlbGVjdGVkRm9sZGVyOiBUcmVlRmxhdE5vZGUgPSBudWxsO1xyXG4gICAgbGlzdENoaWxkcmVuU2VsZWN0T25lOiBhbnkgPSBbXTtcclxuXHJcbiAgICBvblNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIG9uRXhwYW5kRm9sZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxJU2VsZWN0T25lSXRlbT4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkcmVuKFRyZWVDb21wb25lbnQsIHt9KSBkYXRhVHJlZXM6IFF1ZXJ5TGlzdDxUcmVlQ29tcG9uZW50PjtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdhdXRvQ29tcGxldGVJbnB1dFNlYXJjaCcsIHsgcmVhZDogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBhdXRvQ29tcGxldGU6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U2VsZWN0T25lRGlhbG9nPixcclxuICAgICAgICBwdWJsaWMgZ2xvYmFsU2VydmljZTogUU1TU2VsZWN0T25lR2xvYmFsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LFxyXG4gICAgICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBhcHBJY29uU2VydmljZTogUU1TSWNvblJlZ2lzdHJ5U2VydmljZSxcclxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFNlbGVjdE9uZVBvcHVwRGF0YVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5tb2R1bGVJZCA9IGRhdGEubW9kdWxlSWQ7XHJcbiAgICAgICAgdGhpcy5tb2R1bGVOYW1lID0gZGF0YS5tb2R1bGVOYW1lO1xyXG4gICAgICAgIHRoaXMudHJlZURhdGEgPSBkYXRhLnRyZWVEYXRhO1xyXG4gICAgICAgIHRoaXMudHJlZUNvbmZpZyA9IGRhdGEudHJlZUNvbmZpZztcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUmlza0RhdGEgPSBkYXRhPy5zZWxlY3RlZE5vZGUgfHwgW107XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZExpc3QgPSBkYXRhLmRpc2FibGVkTGlzdCB8fCBbXTtcclxuICAgICAgICB0aGlzLmV4cGFuZFRvQ2hpbGROb2RlID0gZGF0YS5leHBhbmRUb0NoaWxkTm9kZTtcclxuICAgICAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclByb2Nlc3NJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICAgICAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclByb2Nlc3NBcmVhSWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XHJcbiAgICAgICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJEb2N1bWVudEljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xyXG4gICAgICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRm9sZGVySWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XHJcbiAgICAgICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJEZXZpYXRpb25JY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICAgICAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckNoZWNrbGlzdEljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xyXG4gICAgICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUmlza0ljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgdGhpcy5nbG9iYWxTZXJ2aWNlLnNldFNlYXJjaFJlbGF0ZWQoW10pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGb2xkZXIgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptZXNzYWdlJywgWyckZXZlbnQnXSlcclxuICAgIG9uTWVzc2FnZShldmVudCkge1xyXG4gICAgICAgIGlmIChldmVudC5kYXRhID09PSBTaG93SGlkZVNlYXJjaFJlc3VsdENvbnN0LkhJREVfU0VBUkNIX1JFU1VMVCkge1xyXG4gICAgICAgICAgICB0aGlzLmF1dG9Db21wbGV0ZS5jbG9zZVBhbmVsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmdsb2JhbFNlcnZpY2Uuc2VhcmNoUmVsYXRlZC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gcmVzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMubXlDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgxMDAwKSkuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc0lucHV0VmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm9uU2VhcmNoUmVsYXRlZCh2YWwpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLml0ZW1UeXBlID0gdGhpcy5nZXREYXRhVHlwZUlkKHRoaXMubW9kdWxlSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJlZE9wdGlvbnMgJiYgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlLm9wZW5QYW5lbCgpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFJlc3VsdEhlaWdodCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hdXRvQ29tcGxldGUpIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGUuY2xvc2VQYW5lbCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhVHlwZUlkKG1vZHVsZUlkOiBudW1iZXIpIHtcclxuICAgICAgICBsZXQgaXRlbVR5cGU7XHJcbiAgICAgICAgc3dpdGNoIChtb2R1bGVJZCkge1xyXG4gICAgICAgICAgICBjYXNlIE1vZHVsZVR5cGUuZG9jdW1lbnRQcm9jZXNzOlxyXG4gICAgICAgICAgICAgICAgaXRlbVR5cGUgPSB0aGlzLmRhdGFUeXBlLnByb2Nlc3M7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBNb2R1bGVUeXBlLmRldmlhdGlvbjpcclxuICAgICAgICAgICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5kZXZpYXRpb247XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBNb2R1bGVUeXBlLmNoZWNrbGlzdDpcclxuICAgICAgICAgICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5jaGVja2xpc3Q7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBNb2R1bGVUeXBlLnJpc2s6XHJcbiAgICAgICAgICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUucmlzaztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgaXRlbVR5cGUgPSB0aGlzLmRhdGFUeXBlLmRvY3VtZW50O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRSZXN1bHRIZWlnaHQoYXJyPzogSVNlbGVjdE9uZUl0ZW1bXSkge1xyXG4gICAgICAgIGxldCBtYXhIZWlnaHQgPSA0ODQ7XHJcbiAgICAgICAgY29uc3QgcG9wdXBfY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3Ftc2xpYl9yZWxhdGVkX3BvcHVwX2NvbnRlbnQnKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBjb25zdCBsaW5lX19kaXZpZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZV9fZGl2aWRlcicpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGlmIChwb3B1cF9jb250ZW50ICYmIGxpbmVfX2RpdmlkZXIpIHtcclxuICAgICAgICAgICAgbWF4SGVpZ2h0ID0gdGhpcy5nZXRPZmZzZXRIZWlnaHQocG9wdXBfY29udGVudCwgdHJ1ZSkgKyB0aGlzLmdldE9mZnNldEhlaWdodChsaW5lX19kaXZpZGVyLCB0cnVlKSAqIDI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBjb250ZW50UmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcicpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IHZpZXdyZXBvcnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncmVsYXRlZC12aWV3cG9ydCcpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAodmlld3JlcG9ydHMpIHtcclxuICAgICAgICAgICAgaWYgKGNvbnRlbnRSZXN1bHQub2Zmc2V0SGVpZ2h0IDw9IG1heEhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgdmlld3JlcG9ydHMuc3R5bGUuaGVpZ2h0ID0gYCR7Y29udGVudFJlc3VsdC5vZmZzZXRIZWlnaHR9cHhgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmlld3JlcG9ydHMuc3R5bGUuaGVpZ2h0ID0gYCR7bWF4SGVpZ2h0fXB4YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblNlYXJjaFJlbGF0ZWQoX3ZhbDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbXTtcclxuICAgICAgICBpZiAodHlwZW9mIChfdmFsKSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgdGhpcy5teUNvbnRyb2wuc2V0VmFsdWUoJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgKF92YWwpID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBpZiAoISFfdmFsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VhcmNoLmVtaXQoX3ZhbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9kdWxlRmlsdGVyZWRPcHRpb25zKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmxpc3RDaGlsZHJlblNlbGVjdE9uZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMubGlzdENoaWxkcmVuU2VsZWN0T25lLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RFbCA9IHRoaXMubGlzdENoaWxkcmVuU2VsZWN0T25lW2luZGV4XTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmRFbCA9IHRoaXMuZmlsdGVyZWRPcHRpb25zW2pdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdEVsLmlkID09PSBzZWNvbmRFbC5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5zcGxpY2UoaiwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZE9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1NlYXJjaFJlc3VsdCgpIHtcclxuICAgICAgICB0aGlzLmF1dG9Db21wbGV0ZS5vcGVuUGFuZWwoKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNwbGF5UmVsYXRlZChyZWxhdGVkPzogSVNlbGVjdE9uZUl0ZW0pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiByZWxhdGVkID8gcmVsYXRlZC5pdGVtTmFtZSA6IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RJdGVtU2VhcmNoZWQoaXRlbTogSVNlbGVjdE9uZUl0ZW0pIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudHJlZUNvbmZpZz8uc2VsZWN0T25lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRMaXN0ID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHJlc2V0IHRvIHJvb3RcclxuICAgICAgICB0aGlzLmV4cGFuZFRvQ2hpbGROb2RlID0gWycnXTtcclxuICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFtdO1xyXG5cclxuICAgICAgICBsZXQgcG9zaXRpb24gPSAtMTtcclxuICAgICAgICBsZXQgbm9kZTogYW55O1xyXG4gICAgICAgIGxldCB0eXBlSWQ6IG51bWJlcjtcclxuXHJcbiAgICAgICAgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhLmZpbmRJbmRleCh4ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHgucm9vdElkID09PSBpdGVtLmlkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHR5cGVJZCA9IGl0ZW0uaXRlbVR5cGU7XHJcblxyXG4gICAgICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XHJcbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLnRyZWVEYXRhW3Bvc2l0aW9uXTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXHJcbiAgICAgICAgICAgICAgICBpZDogbm9kZS5yb290SWQsXHJcbiAgICAgICAgICAgICAgICBpdGVtTmFtZTogbm9kZS5yb290TmFtZSB8fCBub2RlLnN1Yk5hbWUsXHJcbiAgICAgICAgICAgICAgICBpdGVtVHlwZTogdHlwZUlkLFxyXG4gICAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiBpdGVtLml0ZW1OdW1iZXJJZCxcclxuICAgICAgICAgICAgICAgIGxldmVsVHlwZTogaXRlbS5sZXZlbFR5cGVcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0cmVlTm9kZSA9IHtcclxuICAgICAgICAgICAgaWQ6IG5vZGUucm9vdElkLFxyXG4gICAgICAgICAgICBuYW1lOiAhIW5vZGUucm9vdElkID8gbm9kZS5zdWJOYW1lIDogbm9kZS5yb290TmFtZSxcclxuICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxyXG4gICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5wYXJlbnRJZFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5kYXRhVHJlZXMudG9BcnJheSgpWzBdLnRvZG9Gb2xkZXJTZWxlY3Rpb24oW3RyZWVOb2RlXSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgb25DbG9zZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGb2xkZXIgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIG9uQWRkQ2xpY2soKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZvbGRlciA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5jaGVja2VkTm9kZUxpc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9mZnNldEhlaWdodChlbGVtZW50OiBIVE1MRWxlbWVudCwgaW5jbHVkZU1hcmdpbjogYm9vbGVhbik6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IGVsbUhlaWdodCA9IDAsIGVsbU1hcmdpbiA9IDA7XHJcblxyXG4gICAgICAgIGVsbUhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgIGlmIChpbmNsdWRlTWFyZ2luKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XHJcbiAgICAgICAgICAgIGVsbU1hcmdpbiA9IHBhcnNlRmxvYXQoc3R5bGUubWFyZ2luVG9wLnJlcGxhY2UoJ3B4JywgJycpKSArIHBhcnNlRmxvYXQoc3R5bGUubWFyZ2luQm90dG9tLnJlcGxhY2UoJ3B4JywgJycpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAoZWxtSGVpZ2h0ICsgZWxtTWFyZ2luKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJdGVtQ2hpcE5hbWUoaXRlbTogU2VsZWN0ZWROb2RlKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IERhdGFUeXBlLmNoZWNrbGlzdCB8fCBpdGVtLml0ZW1UeXBlID09PSBEYXRhVHlwZS5kZXZpYXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIChpdGVtLnBhcmVudE5hbWUgJiYgaXRlbS5pdGVtTmFtZSAhPT0gaXRlbS5wYXJlbnROYW1lKSA/IGAke2l0ZW0ucGFyZW50TmFtZX0vJHtpdGVtLml0ZW1OYW1lfWAgOiBpdGVtLml0ZW1OYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbS5pdGVtTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpc0VsbGlwc2lzQWN0aXZlKGU6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGUgPyAoZS5jbGllbnRXaWR0aCA8IGUuc2Nyb2xsV2lkdGgpIDogZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Tm9kZUljb24oaXRlbTogSVNlbGVjdE9uZUl0ZW0pIHtcclxuICAgICAgICBzd2l0Y2ggKGl0ZW0uaXRlbVR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5mb2xkZXI6IHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5sZXZlbFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRGVwYXJ0bWVudEZvbGRlcjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkZXBhcnRtZW50X2ZvbGRlcl9vdXRsaW5lZCc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3JlZ2lvbmFsX2ZvbGRlcl9vdXRsaW5lZCc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlRvcEZvbGRlcjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdlbnRlcnByaXNlX2ZvbGRlcl9vdXRsaW5lZCc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkZvbGRlcjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdsb2NhbF9mb2xkZXJfb3V0bGluZWQnO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZm9sZGVyX291dGxpbmVkJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OiB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGl0ZW0ubGV2ZWxUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkRlcGFydG1lbnRGb2xkZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfZGVwYXJ0bWVudCc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X3JlZ2lvbmFsJztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuVG9wRm9sZGVyOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2VudGVycHJpc2UnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Gb2xkZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfbG9jYWwnO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuYXJlYTpcclxuICAgICAgICAgICAgICAgIHJldHVybiAncHJvY2Vzc19hcmVhX291dGxpbmVkJztcclxuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5wcm9jZXNzOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdwcm9jZXNzJztcclxuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kZXZpYXRpb246XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RldmlhdGlvbic7XHJcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuY2hlY2tsaXN0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdjaGVja2xpc3QnO1xyXG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLnJpc2s6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3Jpc2snO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdmb2xkZXJfb3V0bGluZWQnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgZ2V0UGFyZW50TmFtZShpdGVtOiBJU2VsZWN0T25lSXRlbSkge1xyXG4gICAgICAgIGlmIChpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmNoZWNrbGlzdCB8fCBpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmRldmlhdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gaXRlbS5wYXJlbnROYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJdGVtSWQoaXRlbTogSVNlbGVjdE9uZUl0ZW0pIHtcclxuICAgICAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5wcm9jZXNzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLkxBTkcuUFJPQ0VTU19JRH06ICR7aXRlbS5pdGVtTnVtYmVySWR9OyAke2l0ZW0uc3RhdHVzTmFtZX1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmRvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLkxBTkcuRE9DVU1FTlRfSUR9OiAke2l0ZW0uaXRlbU51bWJlcklkfTsgJHtpdGVtLnN0YXR1c05hbWV9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHNlbGVjdE5vZGVUcmVlRXZlbnQobm9kZSkge1xyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IC0xO1xyXG4gICAgICAgIGxldCBwYXJlbnROYW1lID0gJyc7XHJcbiAgICAgICAgbGV0IGl0ZW1OdW1iZXJJZCA9ICcnO1xyXG5cclxuICAgICAgICBwb3NpdGlvbiA9ICFub2RlLmV4cGFuZGFibGUgPyB0aGlzLnRyZWVEYXRhLmZpbmRJbmRleChwID0+IHAuY2hpbGRJZCA9PT0gbm9kZS5pZCAmJiBwLnJvb3RJZCA9PT0gbm9kZS5wYXJlbnRJZCkgOlxyXG4gICAgICAgICAgICB0aGlzLnRyZWVEYXRhLmZpbmRJbmRleChwID0+IHAucm9vdElkID09PSBub2RlLmlkKTtcclxuICAgICAgICBwYXJlbnROYW1lID0gdGhpcy50cmVlRGF0YVtwb3NpdGlvbl0ucGFyZW50SWQgPyB0aGlzLnRyZWVEYXRhW3Bvc2l0aW9uXS5zdWJOYW1lIDogdGhpcy50cmVlRGF0YVtwb3NpdGlvbl0ucm9vdE5hbWU7XHJcbiAgICAgICAgaXRlbU51bWJlcklkID0gdGhpcy50cmVlRGF0YVtwb3NpdGlvbl0/LmRpc3BsYXlJZD8udG9TdHJpbmcoKTtcclxuXHJcblxyXG4gICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxyXG4gICAgICAgICAgICBpZDogbm9kZS5pZCxcclxuICAgICAgICAgICAgaXRlbU5hbWU6IG5vZGUubmFtZSxcclxuICAgICAgICAgICAgaXRlbVR5cGU6IG5vZGUuaXRlbVR5cGUsXHJcbiAgICAgICAgICAgIHBhcmVudElkOiBub2RlLnBhcmVudElkLFxyXG4gICAgICAgICAgICBwYXJlbnROYW1lOiBwYXJlbnROYW1lLFxyXG4gICAgICAgICAgICBpdGVtTnVtYmVySWQ6IGl0ZW1OdW1iZXJJZCxcclxuICAgICAgICAgICAgbGV2ZWxUeXBlOiBub2RlLmxldmVsVHlwZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENoaWxkTm9kZVNlbGVjdE9uZShsaXN0Q2hpbGRyZW4pIHtcclxuICAgICAgICB0aGlzLmxpc3RDaGlsZHJlblNlbGVjdE9uZSA9IFtdO1xyXG4gICAgICAgIHRoaXMubGlzdENoaWxkcmVuU2VsZWN0T25lID0gbGlzdENoaWxkcmVuO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgaWQ9XCJxbXNsaWJfcmVsYXRlZF9wb3B1cFwiIGNsYXNzPVwicW1zbGliX19yZWxhdGVkX19wb3B1cF9fY29udGFpbmVyXCI+XHJcbiAgPGRpdiBpZD1cInFtc2xpYl9yZWxhdGVkX3BvcHVwX2hlYWRlclwiPlxyXG4gICAgPHNwYW4gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiYnV0dG9uX19jbG9zZVwiIChjbGljayk9XCJvbkNsb3NlQ2xpY2soKVwiPlxyXG4gICAgICA8bWF0LWljb24gbWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPGRpdiBpZD1cInFtc2xpYl9yZWxhdGVkX3BvcHVwX2hlYWRlcl8wMDFcIiBtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICAgIDxzcGFuPnt7IG1vZHVsZU5hbWUgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgaWQ9XCJxbXNsaWJfcmVsYXRlZF9wb3B1cF9zZWFyY2hcIlxyXG4gICAgY2xhc3M9XCJpbnB1dF9fZmllbGRcIlxyXG4gICAgKGNsaWNrKT1cInNob3dTZWFyY2hSZXN1bHQoKVwiXHJcbiAgPlxyXG4gICAgPGlucHV0XHJcbiAgICAgICNuYW1lXHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBMQU5HLlNFQVJDSCB9fVwiXHJcbiAgICAgIG1hdElucHV0XHJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJteUNvbnRyb2xcIlxyXG4gICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxyXG4gICAgICAjYXV0b0NvbXBsZXRlSW5wdXRTZWFyY2hcclxuICAgIC8+XHJcbiAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImxpbmVfX2RpdmlkZXJcIj48L2Rpdj5cclxuXHJcbiAgPG1hdC1hdXRvY29tcGxldGVcclxuICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcclxuICAgIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5UmVsYXRlZFwiXHJcbiAgICBjbGFzcz1cIm1hdC1hdXRvY29tcGxldGVfcmVsYXRlZC12aWV3cG9ydFwiXHJcbiAgPlxyXG4gICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxyXG4gICAgICBxbXMtc2Nyb2xsYmFyXHJcbiAgICAgIGl0ZW1TaXplPVwiMTBcIlxyXG4gICAgICBjbGFzcz1cInJlbGF0ZWQtdmlld3BvcnRcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoX19tb2R1bGUtcmVzdWx0XCIgKm5nSWY9XCJmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAgIGNsYXNzPVwic2VhcmNoX19vcHRpb25cIlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBnZXRNb2R1bGVGaWx0ZXJlZE9wdGlvbnMoKVwiXHJcbiAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtU2VhcmNoZWQob3B0aW9uKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHFtcy1saXN0LWl0ZW0gdHlwZT1cImltYWdlLXNxdWFyZVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb25cclxuICAgICAgICAgICAgICBsZWFkaW5nLWljb25cclxuICAgICAgICAgICAgICB0eXBlPVwiaW1hZ2Utc3F1YXJlXCJcclxuICAgICAgICAgICAgICBbc3ZnSWNvbl09XCJnZXROb2RlSWNvbihvcHRpb24pXCJcclxuICAgICAgICAgICAgPjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxkaXYgcW1zLWxpc3QtaGVhZGVyPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIHFtcy1saW5lXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2FwdGlvblwiXHJcbiAgICAgICAgICAgICAgICBxbXMtdG9vbC10aXA9XCJ7e1xyXG4gICAgICAgICAgICAgICAgICBpc0VsbGlwc2lzQWN0aXZlKHNlYXJjaEl0ZW1SZXN1bHQpID8gb3B0aW9uLnBhcmVudE5hbWUgOiAnJ1xyXG4gICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgbW9kZT1cImRhcmtcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRQYXJlbnROYW1lKG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuICNzZWFyY2hJdGVtUmVzdWx0IGNsYXNzPVwic2VhcmNoX19yZXN1bHRfX3BhcmVudC1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5wYXJlbnROYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBxbXMtbGluZSB0eXBlPVwic3VidGl0bGVcIiBjbGFzcz1cInNlYXJjaF9fb3B0aW9uLW5hbWVcIj5cclxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5pdGVtTmFtZSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbi5icmVhZGN1bWJzICYmIG9wdGlvbi5icmVhZGN1bWJzLmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHFtcy1icmVhZGNydW1iXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnJlYWRjcnVtYi1jb250YWluZVwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgIG51bURpc3BsYXlJdGVtPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgIFtub2Rlc109XCJvcHRpb24uYnJlYWRjdW1ic1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L3Ftcy1icmVhZGNydW1iPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBxbXMtbGluZSBjb2xvcj1cImRlZmF1bHQtc3VidGl0bGVcIiAqbmdJZj1cImdldEl0ZW1JZChvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZCBzZWFyY2hfX2Rlc2NyaXB0aW9uLWljb25cIj5cclxuICAgICAgICAgICAgICAgIGxvY2FsX29mZmVyXHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIHt7IGdldEl0ZW1JZChvcHRpb24pIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9xbXMtbGlzdC1pdGVtPlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuICA8L21hdC1hdXRvY29tcGxldGU+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJxbXMtc2Nyb2xsYmFyIGNvbC0xMiBxbXNsaWJfcmVsYXRlZF9wb3B1cF9jb250ZW50XCJcclxuICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgIHBhbmVsX19jb250ZW50X2l0ZW06IGNoZWNrZWROb2RlTGlzdC5sZW5ndGgsXHJcbiAgICAgICAgcGFuZWxfX2NvbnRlbnQ6ICFjaGVja2VkTm9kZUxpc3QubGVuZ3RoXHJcbiAgICAgIH1cIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbFxyXG4gICAgICAgIGhpZGVUb2dnbGVcclxuICAgICAgICBpZD1cInFtc2xpYl9yZWxhdGVkX3BvcHVwX2NvbW1vbl8wMDFcIlxyXG4gICAgICAgIFtleHBhbmRlZF09XCJpc0NvbW1vbkV4cGFuZGVkXCJcclxuICAgICAgICAob3BlbmVkKT1cImlzQ29tbW9uRXhwYW5kZWQgPSB0cnVlXCJcclxuICAgICAgICAoY2xvc2VkKT1cImlzQ29tbW9uRXhwYW5kZWQgPSBmYWxzZVwiXHJcbiAgICAgICAgY2xhc3M9XCJwYW5lbC10cmVlXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgaWQ9XCJxbXNsaWJfcmVsYXRlZF9wb3B1cF9jb21tb25fMDAyXCI+XHJcbiAgICAgICAgICA8cW1zLXRyZWVcclxuICAgICAgICAgICAgW3RyZWVEYXRhXT1cInRyZWVEYXRhXCJcclxuICAgICAgICAgICAgW3RyZWVDb25maWddPVwidHJlZUNvbmZpZ1wiXHJcbiAgICAgICAgICAgIFtzZWxlY3RlZERhdGFdPVwic2VsZWN0ZWREYXRhXCJcclxuICAgICAgICAgICAgW3NlbGVjdGVkUmlza0RhdGFdPVwic2VsZWN0ZWRSaXNrRGF0YVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZExpc3RdPVwiZGlzYWJsZWRMaXN0XCJcclxuICAgICAgICAgICAgKHNlbGVjdE5vZGVFdmVudCk9XCJzZWxlY3ROb2RlVHJlZUV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAoZ2V0Q2hpbGROb2RlU2VsZWN0T25lKT1cImdldENoaWxkTm9kZVNlbGVjdE9uZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2V4cGFuZE9uVGl0bGVDbGlja109XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2V4cGFuZFRvQ2hpbGROb2RlXT1cImV4cGFuZFRvQ2hpbGROb2RlXCJcclxuICAgICAgICAgID48L3Ftcy10cmVlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cImNoZWNrZWROb2RlTGlzdC5sZW5ndGhcIiBjbGFzcz1cImxpbmVfX2RpdmlkZXJcIj48L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cImNoZWNrZWROb2RlTGlzdC5sZW5ndGhcIiBjbGFzcz1cInBhbmVsX19pdGVtIHFtcy1zY3JvbGxiYXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGVkX19pdGVtX19pbmxpbmVcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjaGVja2VkTm9kZUxpc3RcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwiaXRlbS5pdGVtTmFtZVwiXHJcbiAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwicmVsYXRlZF9faXRlbV9fY29udGVudFwiXHJcbiAgICAgICAgcW1zLXRvb2wtdGlwPVwie3tcclxuICAgICAgICAgIGlzRWxsaXBzaXNBY3RpdmUoaXRlbU5hbWUpID8gZ2V0SXRlbUNoaXBOYW1lKGl0ZW0pIDogJydcclxuICAgICAgICB9fVwiXHJcbiAgICAgICAgbW9kZT1cImRhcmtcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWxhdGVkX19pdGVtX19jb250ZW50X25hbWVcIiAjaXRlbU5hbWU+e3tcclxuICAgICAgICAgIGdldEl0ZW1DaGlwTmFtZShpdGVtKVxyXG4gICAgICAgIH19PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibGluZV9fZGl2aWRlclwiPjwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29uZmlybV9fYnV0dG9uX19ncm91cHNcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCIhY2hlY2tlZE5vZGVMaXN0Lmxlbmd0aFwiXHJcbiAgICAgIHFtcy1idG5cclxuICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiA3cHhcIlxyXG4gICAgICAoY2xpY2spPVwib25BZGRDbGljaygpXCJcclxuICAgID5cclxuICAgICAge3sgTEFORy5BREQgfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAqbmdJZj1cImNoZWNrZWROb2RlTGlzdC5sZW5ndGhcIlxyXG4gICAgICBxbXMtYnRuXHJcbiAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4XCJcclxuICAgICAgKGNsaWNrKT1cIm9uQWRkQ2xpY2soKVwiXHJcbiAgICA+XHJcbiAgICAgIHt7IExBTkcuQUREIH19ICh7eyBjaGVja2VkTm9kZUxpc3QubGVuZ3RoIH19KVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHFtcy1idG4tdGV4dFxyXG4gICAgICBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tdG9wJzogY2hlY2tlZE5vZGVMaXN0Lmxlbmd0aCA/ICcwcHgnIDogJzdweCcgfVwiXHJcbiAgICAgIChjbGljayk9XCJvbkNsb3NlQ2xpY2soKVwiXHJcbiAgICA+XHJcbiAgICAgIHt7IExBTkcuQ0FOQ0VMIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==