barsa-sap-ui 1.0.358 → 1.0.360
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.
- package/esm2020/lib/barsa-linkable-items-panel/barsa-linkable-items-panel.component.mjs +44 -0
- package/esm2020/lib/barsa-list-file-linear/barsa-list-file-linear.component.mjs +26 -13
- package/esm2020/lib/barsa-list-file-linear-gmail/barsa-list-file-linear-gmail.component.mjs +29 -0
- package/esm2020/lib/barsa-sap-ui.module.mjs +19 -17
- package/esm2020/lib/barsa-tinyemce/barsa-tinyemce.component.mjs +10 -3
- package/esm2020/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.mjs +3 -3
- package/esm2020/lib/index.mjs +6 -2
- package/esm2020/lib/ly-label/ly-label.component.mjs +3 -3
- package/esm2020/lib/report-view-renderer.directive.mjs +11 -2
- package/esm2020/lib/ui-file-linear-list-box/ui-file-linear-list-box.component.mjs +4 -3
- package/esm2020/lib/ui-grid/ui-grid.component.mjs +3 -3
- package/esm2020/lib/ui-linear-list-container-with-button/ui-linear-list-container-with-button.component.mjs +3 -3
- package/esm2020/lib/ui-report-container/ui-report-container.component.mjs +3 -3
- package/esm2020/lib/ui-tinymce/ui-tinymce.component.mjs +3 -3
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/barsa-sap-ui.mjs +226 -148
- package/fesm2015/barsa-sap-ui.mjs.map +1 -1
- package/fesm2020/barsa-sap-ui.mjs +226 -148
- package/fesm2020/barsa-sap-ui.mjs.map +1 -1
- package/lib/barsa-linkable-items-panel/barsa-linkable-items-panel.component.d.ts +13 -0
- package/lib/barsa-list-file-linear/barsa-list-file-linear.component.d.ts +9 -0
- package/lib/barsa-list-file-linear-gmail/barsa-list-file-linear-gmail.component.d.ts +8 -0
- package/lib/barsa-sap-ui.module.d.ts +29 -27
- package/lib/barsa-tinyemce/barsa-tinyemce.component.d.ts +4 -3
- package/lib/index.d.ts +2 -1
- package/lib/report-view-renderer.directive.d.ts +4 -1
- package/lib/ui-file-linear-list-box/ui-file-linear-list-box.component.d.ts +2 -0
- package/lib/ui-tinymce/ui-tinymce.component.d.ts +6 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { BaseComponent, BarsaApi, getUniqueId, isFunction, UploadService } from 'barsa-novin-ray-core';
|
|
3
2
|
import { concatMap, takeUntil, tap } from 'rxjs';
|
|
3
|
+
import { BaseComponent, BarsaApi, getUniqueId, isFunction, UploadService } from 'barsa-novin-ray-core';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "barsa-novin-ray-core";
|
|
6
6
|
import * as i2 from "@fundamental-ngx/core/file-uploader";
|
|
@@ -70,6 +70,7 @@ export class BarsaTinyemceComponent extends BaseComponent {
|
|
|
70
70
|
this.tinyMCEConfig.height = '100%';
|
|
71
71
|
this.tinyMCEConfig.width = '100%';
|
|
72
72
|
this.tinyMCEConfig.selector = '#' + this.tinyHostId;
|
|
73
|
+
this.tinyMCEConfig.placeholder = this.Setting.ControlFieldCaptionTranslated;
|
|
73
74
|
this.tinyMCEConfig.content_css = 'assets/Resources/fonts/Iran.css';
|
|
74
75
|
this.tinyMCEConfig.directionality = 'rtl';
|
|
75
76
|
this.tinyMCEConfig.language = 'fa_IR';
|
|
@@ -79,10 +80,14 @@ export class BarsaTinyemceComponent extends BaseComponent {
|
|
|
79
80
|
this.tinyMCEConfig.defaultFontSize = '12px';
|
|
80
81
|
this.tinyMCEConfig.statusbar = false;
|
|
81
82
|
this.tinyMCEConfig.inline = false;
|
|
83
|
+
this.tinyMCEConfig.menubar = !this.IsInline;
|
|
82
84
|
this.tinyMCEConfig.theme_advanced_resizing = true;
|
|
85
|
+
this.tinyMCEConfig.toolbar_mode = 'floating';
|
|
86
|
+
this.tinyMCEConfig.toolbar_location = 'bottom';
|
|
83
87
|
this.tinyMCEConfig.font_family_formats =
|
|
84
88
|
'BarsaFont=BarsaFont;Arial=arial,helvetica,sans-serif; Courier New=courier new,courier,monospace;';
|
|
85
89
|
this.tinyMCEConfig.font_size_formats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';
|
|
90
|
+
this.tinyMCEConfig.toolbar_mode = 'scrolling';
|
|
86
91
|
this.tinyMCEConfig.plugins = [
|
|
87
92
|
'advlist',
|
|
88
93
|
'anchor',
|
|
@@ -382,7 +387,7 @@ export class BarsaTinyemceComponent extends BaseComponent {
|
|
|
382
387
|
}
|
|
383
388
|
}
|
|
384
389
|
BarsaTinyemceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTinyemceComponent, deps: [{ token: i1.UploadService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
385
|
-
BarsaTinyemceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaTinyemceComponent, selector: "bsu-barsa-tinyemce", inputs: { Setting: "Setting", isReadonly: "isReadonly", value: "value", defaultVerbs: "defaultVerbs" }, outputs: { valueChange: "valueChange", tinyInit: "tinyInit" }, providers: [UploadService], viewQueries: [{ propertyName: "_uploader", first: true, predicate: ["uploader"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"fd-input tinywrapper\" [style.min-height.px]=\"height\" [id]=\"tinyHostId\"></div>\n<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n [accept]=\"''\"\n [multiple]=\"false\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n<!-- <textarea [id]=\"tinyHostId\" style=\"height: 100%; visibility: hidden\"></textarea> -->\n", styles: [":host{display:block;width:100%;height:100%}.tinywrapper{overflow:auto}\n"], dependencies: [{ kind: "component", type: i2.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
390
|
+
BarsaTinyemceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaTinyemceComponent, selector: "bsu-barsa-tinyemce", inputs: { Setting: "Setting", isReadonly: "isReadonly", value: "value", IsInline: "IsInline", defaultVerbs: "defaultVerbs" }, outputs: { valueChange: "valueChange", tinyInit: "tinyInit" }, providers: [UploadService], viewQueries: [{ propertyName: "_uploader", first: true, predicate: ["uploader"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"fd-input tinywrapper\" [style.min-height.px]=\"height\" [id]=\"tinyHostId\"></div>\n<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n [accept]=\"''\"\n [multiple]=\"false\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n<!-- <textarea [id]=\"tinyHostId\" style=\"height: 100%; visibility: hidden\"></textarea> -->\n", styles: [":host{display:block;width:100%;height:100%}.tinywrapper{overflow:auto}\n"], dependencies: [{ kind: "component", type: i2.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
386
391
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaTinyemceComponent, decorators: [{
|
|
387
392
|
type: Component,
|
|
388
393
|
args: [{ selector: 'bsu-barsa-tinyemce', changeDetection: ChangeDetectionStrategy.OnPush, providers: [UploadService], template: "<div class=\"fd-input tinywrapper\" [style.min-height.px]=\"height\" [id]=\"tinyHostId\"></div>\n<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n [accept]=\"''\"\n [multiple]=\"false\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n<!-- <textarea [id]=\"tinyHostId\" style=\"height: 100%; visibility: hidden\"></textarea> -->\n", styles: [":host{display:block;width:100%;height:100%}.tinywrapper{overflow:auto}\n"] }]
|
|
@@ -395,6 +400,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
|
395
400
|
type: Input
|
|
396
401
|
}], value: [{
|
|
397
402
|
type: Input
|
|
403
|
+
}], IsInline: [{
|
|
404
|
+
type: Input
|
|
398
405
|
}], defaultVerbs: [{
|
|
399
406
|
type: Input
|
|
400
407
|
}], valueChange: [{
|
|
@@ -402,4 +409,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
|
402
409
|
}], tinyInit: [{
|
|
403
410
|
type: Output
|
|
404
411
|
}] } });
|
|
405
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGlueWVtY2UvYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGlueWVtY2UvYmFyc2EtdGlueWVtY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkcsT0FBTyxFQUFjLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBWTdELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxhQUFhO0lBa0JyRCxZQUFzQixjQUE2QixFQUFZLEdBQWU7UUFDMUUsS0FBSyxFQUFFLENBQUM7UUFEVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUFZLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFacEUsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN4QyxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQStZaEIsa0JBQWEsR0FBRyxHQUFTLEVBQUU7WUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzlCLDJDQUEyQztZQUMzQyx5REFBeUQ7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Q0FBQyw2S0MxQjlCLGlZQVNBOzJGRG1CYSxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0ksb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxhQUFhLENBQUM7NkhBR0gsU0FBUztzQkFBL0IsU0FBUzt1QkFBQyxVQUFVO2dCQUNaLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBCYXJzYUFwaSwgZ2V0VW5pcXVlSWQsIGlzRnVuY3Rpb24sIFVwbG9hZFNlcnZpY2UgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb25jYXRNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogYW55O1xuZGVjbGFyZSBjb25zdCB0aW55bWNlOiBhbnk7XG5kZWNsYXJlIGNvbnN0IGhlYWQ6IGFueTtcbmRlY2xhcmUgY29uc3QgJDogYW55O1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdGlueWVtY2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10aW55ZW1jZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtVcGxvYWRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYVRpbnllbWNlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKCd1cGxvYWRlcicpIF91cGxvYWRlcjogRmlsZVVwbG9hZGVyQ29tcG9uZW50O1xuICAgIEBJbnB1dCgpIFNldHRpbmc6IGFueTtcbiAgICBASW5wdXQoKSBpc1JlYWRvbmx5OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG4gICAgQElucHV0KCkgZGVmYXVsdFZlcmJzOiB7IFRpdGxlOiBzdHJpbmc7IEh0bWw6IHN0cmluZyB9W107XG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHRpbnlJbml0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRpbnlIb3N0SWQgPSB0aGlzLl9nZW5lcmF0ZVRpbnlIb3N0SWQoKTtcbiAgICB0aW55TUNFQ29uZmlnOiBhbnkgPSB7fTtcbiAgICBlZGl0b3I6IGFueTtcbiAgICB3eXNpd3lnSW50aWFsaXplZDogYm9vbGVhbjtcbiAgICBpbnRpYWxpemF0aW9uSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgICBlZGl0b3JWYWx1ZTogc3RyaW5nO1xuXG4gICAgaWZyYW1Cb2R5SW5uZXJIdG1sOiBzdHJpbmc7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3VwbG9hZFNlcnZpY2U6IFVwbG9hZFNlcnZpY2UsIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzKTtcbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZXMudmFsdWUgJiYgIXNpbXBsZUNoYW5nZXMudmFsdWUuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoc2ltcGxlQ2hhbmdlcy52YWx1ZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2VzLmRpc2FibGUgJiYgIXNpbXBsZUNoYW5nZXMuZGlzYWJsZS5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgZGlzYmFsZSA9IHNpbXBsZUNoYW5nZXMuZGlzYWJsZS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBpZiAoZGlzYmFsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEVuYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2VzLnJlYWRvbmx5ICYmICFzaW1wbGVDaGFuZ2VzLnJlYWRvbmx5LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFJlYWRPbmx5KHNpbXBsZUNoYW5nZXMucmVhZG9ubHkuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSAodGhpcy5fZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xpZW50SGVpZ2h0O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHRoaXMubG9hZFRpbnlNY2UoKTtcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveVRpbnltY2UoKTtcbiAgICB9XG5cbiAgICBvbkZpbGVTZWxlY3Rpb24oZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZXMpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgbG9hZFRpbnlNY2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5TZXR0aW5nLklzSHRtbFZpZXdlcikge1xuICAgICAgICAgICAgaGVhZC5sb2FkKFsnTGliL3RpbnltY2UvdGlueW1jZS5taW4uanMnXSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJlcGFyZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0aWxpemUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRpbnlNQ0VDb25maWcuc2V0dXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuaGVpZ2h0ID0gJzEwMCUnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcud2lkdGggPSAnMTAwJSc7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5zZWxlY3RvciA9ICcjJyArIHRoaXMudGlueUhvc3RJZDtcblxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuY29udGVudF9jc3MgPSAnYXNzZXRzL1Jlc291cmNlcy9mb250cy9JcmFuLmNzcyc7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5kaXJlY3Rpb25hbGl0eSA9ICdydGwnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcubGFuZ3VhZ2UgPSAnZmFfSVInO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcucHJvbW90aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5wYXN0ZV9kYXRhX2ltYWdlcyA9IHRydWU7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5kZWZhdWx0Rm9udE5hbWUgPSAnQmFyc2FGb250JztcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250U2l6ZSA9ICcxMnB4JztcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnN0YXR1c2JhciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuaW5saW5lID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy50aGVtZV9hZHZhbmNlZF9yZXNpemluZyA9IHRydWU7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5mb250X2ZhbWlseV9mb3JtYXRzID1cbiAgICAgICAgICAgICdCYXJzYUZvbnQ9QmFyc2FGb250O0FyaWFsPWFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmOyBDb3VyaWVyIE5ldz1jb3VyaWVyIG5ldyxjb3VyaWVyLG1vbm9zcGFjZTsnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuZm9udF9zaXplX2Zvcm1hdHMgPSAnOHB0IDEwcHQgMTJwdCAxNHB0IDE4cHQgMjRwdCAzNnB0JztcblxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcucGx1Z2lucyA9IFtcbiAgICAgICAgICAgICdhZHZsaXN0JyxcbiAgICAgICAgICAgICdhbmNob3InLFxuICAgICAgICAgICAgJ2F1dG9saW5rJyxcbiAgICAgICAgICAgICdhdXRvc2F2ZScsXG4gICAgICAgICAgICAnY2hhcm1hcCcsXG4gICAgICAgICAgICAnY29kZScsXG4gICAgICAgICAgICAnY29kZXNhbXBsZScsXG4gICAgICAgICAgICAnZGlyZWN0aW9uYWxpdHknLFxuICAgICAgICAgICAgJ2Vtb3RpY29ucycsXG4gICAgICAgICAgICAnZnVsbHNjcmVlbicsXG4gICAgICAgICAgICAnaGVscCcsXG4gICAgICAgICAgICAnaW1hZ2UnLFxuICAgICAgICAgICAgJ2ltcG9ydGNzcycsXG4gICAgICAgICAgICAnaW5zZXJ0ZGF0ZXRpbWUnLFxuICAgICAgICAgICAgJ2xpbmsnLFxuICAgICAgICAgICAgJ2xpc3RzJyxcbiAgICAgICAgICAgICdtZWRpYScsXG4gICAgICAgICAgICAnbm9uYnJlYWtpbmcnLFxuICAgICAgICAgICAgJ3BhZ2VicmVhaycsXG4gICAgICAgICAgICAncHJldmlldycsXG4gICAgICAgICAgICAncXVpY2tiYXJzJyxcbiAgICAgICAgICAgICdzYXZlJyxcbiAgICAgICAgICAgICdzZWFyY2hyZXBsYWNlJyxcbiAgICAgICAgICAgICd0YWJsZScsXG4gICAgICAgICAgICAndGVtcGxhdGUnLFxuICAgICAgICAgICAgJ3Zpc3VhbGJsb2NrcycsXG4gICAgICAgICAgICAndmlzdWFsY2hhcnMnLFxuICAgICAgICAgICAgJ3dvcmRjb3VudCcsXG4gICAgICAgICAgICAnYXV0b3Jlc2l6ZSdcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnRvb2xiYXIgPSBbXG4gICAgICAgICAgICBgZGVmYXVsdFZlcmJzIGJhcnNhSW1hZ2UgfCBpbnNlcnQgfCBmb3JlY29sb3IgYmFja2NvbG9yIGZvbnRmYW1pbHkgZm9udHNpemUgfCBidWxsaXN0IG51bWxpc3Qgb3V0ZGVudCBpbmRlbnQgfCByZW1vdmVmb3JtYXRgICtcbiAgICAgICAgICAgICAgICBgIHwgdW5kbyByZWRvIHwgY29weSBjdXQgcGFzdGUgfCBibG9ja3MgfCBib2xkIGl0YWxpYyB8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IGFsaWduanVzdGlmeSBsdHIgcnRsYFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHRpbnltY2VTZXR0aW5nc0dsb2JhbCA9IHdpbmRvdy50aW55bWNlU2V0dGluZ3M7XG4gICAgICAgIGxldCB0aW55bWNlU2V0dGluZ3MgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLlNldHRpbmcsICdKc29uRXh0cmFQcm9wLnRpbnltY2VTZXR0aW5ncycpO1xuICAgICAgICB0aW55bWNlU2V0dGluZ3MgPSBCYXJzYUFwaS5Db21tb24uTWVyZ2VyLk1lcmdlKHRpbnltY2VTZXR0aW5nc0dsb2JhbCwgdGlueW1jZVNldHRpbmdzKTtcbiAgICAgICAgaWYgKCF0aW55bWNlU2V0dGluZ3MgJiYgQXJyYXkuaXNBcnJheSh0aW55bWNlU2V0dGluZ3MpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGlueW1jZVNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnW2l0ZW0ua2V5XSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1JlYWRvbmx5KSB7XG4gICAgICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcubWVudWJhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnN0YXR1c2JhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnBsdWdpbnMgPSBbJ2F1dG9yZXNpemUnXTtcbiAgICAgICAgICAgIC8vIHRoaXMudGlueU1DRUNvbmZpZy5wbHVnaW5zID0gW107XG4gICAgICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcudG9vbGJhciA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHVzZXJTZXR1cDogKGVkaXRvcjogYW55KSA9PiB2b2lkO1xuXG4gICAgICAgIGlmICh0aGlzLnRpbnlNQ0VDb25maWcuc2V0dXApIHtcbiAgICAgICAgICAgIHVzZXJTZXR1cCA9IHRoaXMudGlueU1DRUNvbmZpZy5zZXR1cDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZGVmYXVsdFZlcmJzTWVudTogYW55ID0gW107XG5cbiAgICAgICAgLy8gQkVHSU46IHNldHVwXG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5zZXR1cCA9IChlZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3IgPSBlZDtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzUmVhZG9ubHkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0VmVyYnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZlcmJzTWVudSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRWZXJicy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmVyYnNNZW51LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtLkh0bWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ21lbnVpdGVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLlRpdGxlIHx8IGl0ZW0uSHRtbC5yZXBsYWNlKC88YnJcXHMqXFwvPz4vZ2ksICcgJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25BY3Rpb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWQuZXhlY0NvbW1hbmQoJ21jZUluc2VydFJhd0hUTUwnLCBmYWxzZSwgaXRlbS5IdG1sKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWQuaW5zZXJ0Q29udGVudChpdGVtLkh0bWwsIHsgZm9ybWF0OiAncmF3JyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVkLnVpLnJlZ2lzdHJ5LmFkZFNwbGl0QnV0dG9uKCdiYXJzYUltYWdlJywge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnaW5zZXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ltYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogJ0luc2VydCBJbWFnZSBBcyBCYXNlNjQnLFxuICAgICAgICAgICAgICAgICAgICBvbkFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFzeW5jLldhdGVyZmFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGluZW1jZS5FbWJlZEltYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWxlRGlhbG9nOiB0aGlzLlNob3dPcGVuRmlsZURpYWxvZy5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRCYXNlNjQ6IHRoaXMuSW5zZXJ0QmFzZTY0LmJpbmQodGhpcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXJzYUFwaS5Db21tb24uQXN5bmMuRmluYWxpemUoZXJyLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9uSXRlbUFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFzeW5jLldhdGVyZmFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGluZW1jZS5VcGxvYWRUb0RhdGFiYXNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWxlRGlhbG9nOiB0aGlzLlNob3dVcGxvYWRXaW5kb3cuYmluZCh0aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVyciwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5Bc3luYy5GaW5hbGl6ZShlcnIsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2g6IChjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY2hvaWNlaXRlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICd1cGxvYWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnaW1hZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiAnVXBsb2FkIEltYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICd1cGxvYWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgZWQudWkucmVnaXN0cnkuYWRkTWVudUJ1dHRvbignZGVmYXVsdFZlcmJzJywge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAn2LnYqNin2LHYqtmH2KfbjCDZvtuM2LQg2YHYsdi2JyxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2g6IChjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZGVmYXVsdFZlcmJzTWVudSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbih3aW5kb3cudGlueW1jZVNldHVwKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cudGlueW1jZVNldHVwLmNhbGwodGhpcywgdGhpcywgZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBoYXNJbml0ID0gZmFsc2U7XG4gICAgICAgICAgICBlZC5vbignaW5pdCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnd5c2l3eWdJbnRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmludGlhbGl6YXRpb25JblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBlZC5leGVjQ29tbWFuZCgnRm9udE5hbWUnLCBmYWxzZSwgdGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250TmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpbnlNQ0VDb25maWcuZGVmYXVsdEZvbnRTaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkLmV4ZWNDb21tYW5kKCdGb250U2l6ZScsIGZhbHNlLCB0aGlzLnRpbnlNQ0VDb25maWcuZGVmYXVsdEZvbnRTaXplKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNSZWFkb25seSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlYWRPbmx5KHRoaXMuaXNSZWFkb25seSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFRoaXMgcGllY2Ugb2YgY29kZSBzb2x2ZXMgdGhlIHByb2JsZW0gb2YgY2hhbmdlIHByb3BhZ2F0aW9uIHNvIHRoYXRcbiAgICAgICAgICAgICAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgdHJpZ2dlclNhdmVcbiAgICAgICAgICAgICAgICBjb25zdCBzZXRDb250ZW50ID0gZWQuc2V0Q29udGVudDtcbiAgICAgICAgICAgICAgICBlZC5zZXRDb250ZW50ID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q29udGVudC5hcHBseShlZCwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIGVkLmRpc3BhdGNoKCdjaGFuZ2UnLCB7fSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBoYXNJbml0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbnlJbml0LmVtaXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpZnJhbUVsOiBIVE1MSUZyYW1lRWxlbWVudCA9IGVkLmlmcmFtZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGlmcmFtRWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWZyYW1FbC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgdGhpcy5fb25Mb2FkSWZyYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gQ2F0Y2ggYW5kIHByb3BhZ2F0ZSB0aGUgY2hhbmdlIGV2ZW50XG4gICAgICAgICAgICBsZXQgb2xkQ29udGVudCA9IG51bGw7XG4gICAgICAgICAgICBlZC5vbignY2hhbmdlIGtleXVwJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld3ZhbCA9IGVkLmdldENvbnRlbnQoKTtcbiAgICAgICAgICAgICAgICBpZiAobmV3dmFsID09PSBvbGRDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBvbGRDb250ZW50ID0gbmV3dmFsO1xuICAgICAgICAgICAgICAgIGlmICghaGFzSW5pdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZWQuc2F2ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9yVmFsdWUgPSBuZXd2YWw7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5ld3ZhbCk7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnY2hhbmdlJywgdGhpcywgbmV3dmFsLCBvbGR2YWwsIHt9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBlZC5vbignZm9jdXMnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh1c2VyU2V0dXApIHtcbiAgICAgICAgICAgICAgICB1c2VyU2V0dXAoZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIFNob3dVcGxvYWRXaW5kb3coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VwbG9hZGVyLm9wZW4oKTtcbiAgICB9XG4gICAgU2hvd09wZW5GaWxlRGlhbG9nKGRvUmV0dXJuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnZmlsZScpO1xuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsICdpbWFnZS8qJyk7XG5cbiAgICAgICAgaW5wdXQub25jaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbMF07XG5cbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiYXNlNjQgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICBiYXNlNjQgPSBiYXNlNjQuc3BsaXQoJywnKVsxXTtcbiAgICAgICAgICAgICAgICBkb1JldHVybihudWxsLCBiYXNlNjQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlucHV0LmNsaWNrKCk7XG4gICAgfVxuICAgIEluc2VydEJhc2U2NChiYXNlNjQsIGRvUmV0dXJuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdG9yLmV4ZWNDb21tYW5kKCdtY2VJbnNlcnRDb250ZW50JywgZmFsc2UsICc8aW1nIHNyYz1kYXRhOmltYWdlL3BuZztiYXNlNjQsJyArIGJhc2U2NCArICcgLz4nKTtcbiAgICAgICAgZG9SZXR1cm4oKTtcbiAgICB9XG4gICAgZ2V0VmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGxldCByZXMgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy53eXNpd3lnSW50aWFsaXplZCkge1xuICAgICAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICAgICAgaWYgKGVkKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gZWQuZ2V0Q29udGVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgc2V0VmFsdWUodmFsdWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldFZhbHVlVGlueSgpO1xuICAgIH1cbiAgICBzZXRWYWx1ZVRpbnkoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGlmIChlZCkge1xuICAgICAgICAgICAgICAgIGVkLnNldENvbnRlbnQodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICAgIGZvY3VzKCk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRpbnltY2UuZXhlY0NvbW1hbmQoJ21jZUZvY3VzJywgZmFsc2UsICdpZF9vZl90ZXh0YXJlYScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHNldEVuYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGVkLmdldEJvZHkoKS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGVkLmdldEJvZHkoKS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZXRSZWFkT25seShyZWFkT25seSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy53eXNpd3lnSW50aWFsaXplZCkge1xuICAgICAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICAgICAgZWQuZ2V0Qm9keSgpLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgIXJlYWRPbmx5KTtcbiAgICAgICAgICAgIGlmIChyZWFkT25seSkge1xuICAgICAgICAgICAgICAgICQoJy50b3gtZWRpdG9yLWhlYWRlcicpLmhpZGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJCgnLnRveC1lZGl0b3ItaGVhZGVyJykuaGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveVRpbnltY2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLlNldHRpbmcuSXNIdG1sVmlld2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICBpZiAoZWQpIHtcbiAgICAgICAgICAgIC8vIHRpbnltY2UuZXhlY0NvbW1hbmQoJ21jZVJlbW92ZUNvbnRyb2wnLCB0cnVlLCB0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICAgICAgaWYgKGVkLmlmcmFtZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBlZC5pZnJhbWVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB0aGlzLl9vbkxvYWRJZnJhbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWQuZGVzdHJveShmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSB1cGxvYWRGaWxlKGZpbGVzOiBGaWxlW10pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXBsb2FkU2VydmljZS5jb21wcmVzc0ZpbGVzJChmaWxlcykucGlwZShcbiAgICAgICAgICAgIGNvbmNhdE1hcCgoZm9ybURhdGE6IEZvcm1EYXRhKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuX3VwbG9hZFNlcnZpY2UudXBsb2FkKGZvcm1EYXRhLCB0aGlzLlNldHRpbmcuU3RvcmFnZUZpbGVGaWVsZElkKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YXAoKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY3R1cmUgPSByZXNbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBpY3R1cmUuRXJyb3JNc2cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuTXNnLkVycm9yKHBpY3R1cmUuRXJyb3JNc2cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5waWN0dXJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlSWQ6IHBpY3R1cmUuRmlsZUlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRJbWFnZXModmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfYWRkSW1hZ2VzKGZpbGU6IHsgRmlsZUlkOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCB1cmwgPSAnL0lILmFzaHg/dHk9U3RvcmFnZUZpbGUma2V5PScgKyBmaWxlLkZpbGVJZDtcbiAgICAgICAgY29uc3QgaHRtbCA9ICc8aW1nIHNyYz0nICsgdXJsICsgJyAvPic7XG5cbiAgICAgICAgdGhpcy5lZGl0b3IuZXhlY0NvbW1hbmQoJ21jZUluc2VydENvbnRlbnQnLCBmYWxzZSwgaHRtbCk7XG4gICAgfVxuICAgIHByaXZhdGUgcHJlcGFyZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0aWxpemUoKTtcbiAgICAgICAgdGlueW1jZS5pbml0KHRoaXMudGlueU1DRUNvbmZpZyk7XG4gICAgICAgIHRoaXMuaW50aWFsaXphdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgdGhpcy53eXNpd3lnSW50aWFsaXplZCA9IHRydWU7XG4gICAgfVxuICAgIHByaXZhdGUgX29uTG9hZElmcmFtZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZWRpdG9yVmFsdWU7XG4gICAgICAgIC8vIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgLy8gZWQuZXhlY0NvbW1hbmQoJ21jZUluc2VydENvbnRlbnQnLCBmYWxzZSwgdGhpcy52YWx1ZSk7XG5cbiAgICAgICAgLy8gZWQuaW5zZXJ0Q29udGVudCh0aGlzLnZhbHVlLCB7IGZvcm1hdDogJ3JhdycgfSk7XG4gICAgICAgIC8vIHRoaXMuX3JlbW92ZU92ZXJmbG93KGVkKTtcbiAgICAgICAgdGhpcy5kZXN0cm95VGlueW1jZSgpO1xuICAgICAgICB0aGlzLnByZXBhcmUoKTtcbiAgICB9O1xuICAgIHByaXZhdGUgX2dlbmVyYXRlVGlueUhvc3RJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYGFfJHtnZXRVbmlxdWVJZCgyKX1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlbW92ZU92ZXJmbG93KGVkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaHRtbCA9IGVkLmlmcmFtZUVsZW1lbnQ/LmNvbnRlbnREb2N1bWVudD8ucXVlcnlTZWxlY3RvcignaHRtbCcpO1xuICAgICAgICBpZiAoaHRtbCkge1xuICAgICAgICAgICAgaHRtbC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZkLWlucHV0IHRpbnl3cmFwcGVyXCIgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVpZ2h0XCIgW2lkXT1cInRpbnlIb3N0SWRcIj48L2Rpdj5cbjxmZC1maWxlLXVwbG9hZGVyXG4gICAgI3VwbG9hZGVyXG4gICAgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCJcbiAgICBbYWNjZXB0XT1cIicnXCJcbiAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxuICAgIChzZWxlY3RlZEZpbGVzQ2hhbmdlZCk9XCJvbkZpbGVTZWxlY3Rpb24oJGV2ZW50KVwiXG4+PC9mZC1maWxlLXVwbG9hZGVyPlxuPCEtLSA8dGV4dGFyZWEgW2lkXT1cInRpbnlIb3N0SWRcIiBzdHlsZT1cImhlaWdodDogMTAwJTsgdmlzaWJpbGl0eTogaGlkZGVuXCI+PC90ZXh0YXJlYT4gLS0+XG4iXX0=
|
|
412
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGlueWVtY2UvYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGlueWVtY2UvYmFyc2EtdGlueWVtY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYyxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3RCxPQUFPLEVBQ0gsYUFBYSxFQUNiLFFBQVEsRUFDUixXQUFXLEVBQ1gsVUFBVSxFQUNWLGFBQWEsRUFFaEIsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQWE5QixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsYUFBYTtJQW1CckQsWUFBc0IsY0FBNkIsRUFBWSxHQUFlO1FBQzFFLEtBQUssRUFBRSxDQUFDO1FBRFUsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFBWSxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBWnBFLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN0QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN4QyxlQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDeEMsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFpWmhCLGtCQUFhLEdBQUcsR0FBUyxFQUFFO1lBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUM5QiwyQ0FBMkM7WUFDM0MseURBQXlE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S0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8sZUFBZSxDQUFDLEVBQU87UUFDM0IsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQzs7bUhBOWFRLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDBPQUZwQixDQUFDLGFBQWEsQ0FBQyw2S0NsQzlCLGlZQVNBOzJGRDJCYSxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0ksb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxhQUFhLENBQUM7NkhBR0gsU0FBUztzQkFBL0IsU0FBUzt1QkFBQyxVQUFVO2dCQUNaLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbGVVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb25jYXRNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgQmFzZUNvbXBvbmVudCxcbiAgICBCYXJzYUFwaSxcbiAgICBnZXRVbmlxdWVJZCxcbiAgICBpc0Z1bmN0aW9uLFxuICAgIFVwbG9hZFNlcnZpY2UsXG4gICAgR2VuZXJhbENvbnRyb2xJbmZvTW9kZWxcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogYW55O1xuZGVjbGFyZSBjb25zdCB0aW55bWNlOiBhbnk7XG5kZWNsYXJlIGNvbnN0IGhlYWQ6IGFueTtcbmRlY2xhcmUgY29uc3QgJDogYW55O1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdGlueWVtY2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10aW55ZW1jZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtVcGxvYWRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYVRpbnllbWNlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKCd1cGxvYWRlcicpIF91cGxvYWRlcjogRmlsZVVwbG9hZGVyQ29tcG9uZW50O1xuICAgIEBJbnB1dCgpIFNldHRpbmc6IEdlbmVyYWxDb250cm9sSW5mb01vZGVsO1xuICAgIEBJbnB1dCgpIGlzUmVhZG9ubHk6IGJvb2xlYW47XG4gICAgQElucHV0KCkgdmFsdWU6IGFueTtcbiAgICBASW5wdXQoKSBJc0lubGluZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkZWZhdWx0VmVyYnM6IHsgVGl0bGU6IHN0cmluZzsgSHRtbDogc3RyaW5nIH1bXTtcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgdGlueUluaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGlueUhvc3RJZCA9IHRoaXMuX2dlbmVyYXRlVGlueUhvc3RJZCgpO1xuICAgIHRpbnlNQ0VDb25maWc6IGFueSA9IHt9O1xuICAgIGVkaXRvcjogYW55O1xuICAgIHd5c2l3eWdJbnRpYWxpemVkOiBib29sZWFuO1xuICAgIGludGlhbGl6YXRpb25JblByb2dyZXNzOiBib29sZWFuO1xuICAgIGVkaXRvclZhbHVlOiBzdHJpbmc7XG5cbiAgICBpZnJhbUJvZHlJbm5lckh0bWw6IHN0cmluZztcbiAgICBoZWlnaHQ6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSwgcHJvdGVjdGVkIF9lbDogRWxlbWVudFJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXMpO1xuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlcy52YWx1ZSAmJiAhc2ltcGxlQ2hhbmdlcy52YWx1ZS5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShzaW1wbGVDaGFuZ2VzLnZhbHVlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZXMuZGlzYWJsZSAmJiAhc2ltcGxlQ2hhbmdlcy5kaXNhYmxlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCBkaXNiYWxlID0gc2ltcGxlQ2hhbmdlcy5kaXNhYmxlLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGlmIChkaXNiYWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREaXNhYmxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RW5hYmxlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZXMucmVhZG9ubHkgJiYgIXNpbXBsZUNoYW5nZXMucmVhZG9ubHkuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0UmVhZE9ubHkoc2ltcGxlQ2hhbmdlcy5yZWFkb25seS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmhlaWdodCA9ICh0aGlzLl9lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbGllbnRIZWlnaHQ7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgdGhpcy5sb2FkVGlueU1jZSgpO1xuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5kZXN0cm95VGlueW1jZSgpO1xuICAgIH1cblxuICAgIG9uRmlsZVNlbGVjdGlvbihmaWxlczogRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlcykucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBsb2FkVGlueU1jZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLlNldHRpbmcuSXNIdG1sVmlld2VyKSB7XG4gICAgICAgICAgICBoZWFkLmxvYWQoWydMaWIvdGlueW1jZS90aW55bWNlLm1pbi5qcyddLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRpbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGlueU1DRUNvbmZpZy5zZXR1cCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnNlbGVjdG9yID0gJyMnICsgdGhpcy50aW55SG9zdElkO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcucGxhY2Vob2xkZXIgPSB0aGlzLlNldHRpbmcuQ29udHJvbEZpZWxkQ2FwdGlvblRyYW5zbGF0ZWQ7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5jb250ZW50X2NzcyA9ICdhc3NldHMvUmVzb3VyY2VzL2ZvbnRzL0lyYW4uY3NzJztcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLmRpcmVjdGlvbmFsaXR5ID0gJ3J0bCc7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5sYW5ndWFnZSA9ICdmYV9JUic7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5wcm9tb3Rpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnBhc3RlX2RhdGFfaW1hZ2VzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250TmFtZSA9ICdCYXJzYUZvbnQnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuZGVmYXVsdEZvbnRTaXplID0gJzEycHgnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuc3RhdHVzYmFyID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5pbmxpbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLm1lbnViYXIgPSAhdGhpcy5Jc0lubGluZTtcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnRoZW1lX2FkdmFuY2VkX3Jlc2l6aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnRvb2xiYXJfbW9kZSA9ICdmbG9hdGluZyc7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy50b29sYmFyX2xvY2F0aW9uID0gJ2JvdHRvbSc7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5mb250X2ZhbWlseV9mb3JtYXRzID1cbiAgICAgICAgICAgICdCYXJzYUZvbnQ9QmFyc2FGb250O0FyaWFsPWFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmOyBDb3VyaWVyIE5ldz1jb3VyaWVyIG5ldyxjb3VyaWVyLG1vbm9zcGFjZTsnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuZm9udF9zaXplX2Zvcm1hdHMgPSAnOHB0IDEwcHQgMTJwdCAxNHB0IDE4cHQgMjRwdCAzNnB0JztcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnRvb2xiYXJfbW9kZSA9ICdzY3JvbGxpbmcnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcucGx1Z2lucyA9IFtcbiAgICAgICAgICAgICdhZHZsaXN0JyxcbiAgICAgICAgICAgICdhbmNob3InLFxuICAgICAgICAgICAgJ2F1dG9saW5rJyxcbiAgICAgICAgICAgICdhdXRvc2F2ZScsXG4gICAgICAgICAgICAnY2hhcm1hcCcsXG4gICAgICAgICAgICAnY29kZScsXG4gICAgICAgICAgICAnY29kZXNhbXBsZScsXG4gICAgICAgICAgICAnZGlyZWN0aW9uYWxpdHknLFxuICAgICAgICAgICAgJ2Vtb3RpY29ucycsXG4gICAgICAgICAgICAnZnVsbHNjcmVlbicsXG4gICAgICAgICAgICAnaGVscCcsXG4gICAgICAgICAgICAnaW1hZ2UnLFxuICAgICAgICAgICAgJ2ltcG9ydGNzcycsXG4gICAgICAgICAgICAnaW5zZXJ0ZGF0ZXRpbWUnLFxuICAgICAgICAgICAgJ2xpbmsnLFxuICAgICAgICAgICAgJ2xpc3RzJyxcbiAgICAgICAgICAgICdtZWRpYScsXG4gICAgICAgICAgICAnbm9uYnJlYWtpbmcnLFxuICAgICAgICAgICAgJ3BhZ2VicmVhaycsXG4gICAgICAgICAgICAncHJldmlldycsXG4gICAgICAgICAgICAncXVpY2tiYXJzJyxcbiAgICAgICAgICAgICdzYXZlJyxcbiAgICAgICAgICAgICdzZWFyY2hyZXBsYWNlJyxcbiAgICAgICAgICAgICd0YWJsZScsXG4gICAgICAgICAgICAndGVtcGxhdGUnLFxuICAgICAgICAgICAgJ3Zpc3VhbGJsb2NrcycsXG4gICAgICAgICAgICAndmlzdWFsY2hhcnMnLFxuICAgICAgICAgICAgJ3dvcmRjb3VudCcsXG4gICAgICAgICAgICAnYXV0b3Jlc2l6ZSdcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnRvb2xiYXIgPSBbXG4gICAgICAgICAgICBgZGVmYXVsdFZlcmJzIGJhcnNhSW1hZ2UgfCBpbnNlcnQgfCBmb3JlY29sb3IgYmFja2NvbG9yIGZvbnRmYW1pbHkgZm9udHNpemUgfCBidWxsaXN0IG51bWxpc3Qgb3V0ZGVudCBpbmRlbnQgfCByZW1vdmVmb3JtYXRgICtcbiAgICAgICAgICAgICAgICBgIHwgdW5kbyByZWRvIHwgY29weSBjdXQgcGFzdGUgfCBibG9ja3MgfCBib2xkIGl0YWxpYyB8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IGFsaWduanVzdGlmeSBsdHIgcnRsYFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHRpbnltY2VTZXR0aW5nc0dsb2JhbCA9IHdpbmRvdy50aW55bWNlU2V0dGluZ3M7XG4gICAgICAgIGxldCB0aW55bWNlU2V0dGluZ3MgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLlNldHRpbmcsICdKc29uRXh0cmFQcm9wLnRpbnltY2VTZXR0aW5ncycpO1xuICAgICAgICB0aW55bWNlU2V0dGluZ3MgPSBCYXJzYUFwaS5Db21tb24uTWVyZ2VyLk1lcmdlKHRpbnltY2VTZXR0aW5nc0dsb2JhbCwgdGlueW1jZVNldHRpbmdzKTtcbiAgICAgICAgaWYgKCF0aW55bWNlU2V0dGluZ3MgJiYgQXJyYXkuaXNBcnJheSh0aW55bWNlU2V0dGluZ3MpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGlueW1jZVNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnW2l0ZW0ua2V5XSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1JlYWRvbmx5KSB7XG4gICAgICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcubWVudWJhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnN0YXR1c2JhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnBsdWdpbnMgPSBbJ2F1dG9yZXNpemUnXTtcbiAgICAgICAgICAgIC8vIHRoaXMudGlueU1DRUNvbmZpZy5wbHVnaW5zID0gW107XG4gICAgICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcudG9vbGJhciA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHVzZXJTZXR1cDogKGVkaXRvcjogYW55KSA9PiB2b2lkO1xuXG4gICAgICAgIGlmICh0aGlzLnRpbnlNQ0VDb25maWcuc2V0dXApIHtcbiAgICAgICAgICAgIHVzZXJTZXR1cCA9IHRoaXMudGlueU1DRUNvbmZpZy5zZXR1cDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZGVmYXVsdFZlcmJzTWVudTogYW55ID0gW107XG5cbiAgICAgICAgLy8gQkVHSU46IHNldHVwXG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5zZXR1cCA9IChlZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3IgPSBlZDtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc1JlYWRvbmx5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFZlcmJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWZXJic01lbnUgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0VmVyYnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZlcmJzTWVudS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbS5IdG1sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdtZW51aXRlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5UaXRsZSB8fCBpdGVtLkh0bWwucmVwbGFjZSgvPGJyXFxzKlxcLz8+L2dpLCAnICcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVkLmV4ZWNDb21tYW5kKCdtY2VJbnNlcnRSYXdIVE1MJywgZmFsc2UsIGl0ZW0uSHRtbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkLmluc2VydENvbnRlbnQoaXRlbS5IdG1sLCB7IGZvcm1hdDogJ3JhdycgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlZC51aS5yZWdpc3RyeS5hZGRTcGxpdEJ1dHRvbignYmFyc2FJbWFnZScsIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJ2luc2VydCcsXG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpbWFnZScsXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6ICdJbnNlcnQgSW1hZ2UgQXMgQmFzZTY0JyxcbiAgICAgICAgICAgICAgICAgICAgb25BY3Rpb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5Bc3luYy5XYXRlcmZhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RpbmVtY2UuRW1iZWRJbWFnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuRmlsZURpYWxvZzogdGhpcy5TaG93T3BlbkZpbGVEaWFsb2cuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmFzZTY0OiB0aGlzLkluc2VydEJhc2U2NC5iaW5kKHRoaXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFzeW5jLkZpbmFsaXplKGVyciwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvbkl0ZW1BY3Rpb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5Bc3luYy5XYXRlcmZhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RpbmVtY2UuVXBsb2FkVG9EYXRhYmFzZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuRmlsZURpYWxvZzogdGhpcy5TaG93VXBsb2FkV2luZG93LmJpbmQodGhpcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXJzYUFwaS5Db21tb24uQXN5bmMuRmluYWxpemUoZXJyLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGZldGNoOiAoY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Nob2ljZWl0ZW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAndXBsb2FkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ltYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogJ1VwbG9hZCBJbWFnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAndXBsb2FkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGVkLnVpLnJlZ2lzdHJ5LmFkZE1lbnVCdXR0b24oJ2RlZmF1bHRWZXJicycsIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJ9i52KjYp9ix2KrZh9in24wg2b7bjNi0INmB2LHYticsXG4gICAgICAgICAgICAgICAgICAgIGZldGNoOiAoY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGRlZmF1bHRWZXJic01lbnUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24od2luZG93LnRpbnltY2VTZXR1cCkpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnRpbnltY2VTZXR1cC5jYWxsKHRoaXMsIHRoaXMsIGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgaGFzSW5pdCA9IGZhbHNlO1xuICAgICAgICAgICAgZWQub24oJ2luaXQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy53eXNpd3lnSW50aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRpYWxpemF0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGlueU1DRUNvbmZpZy5kZWZhdWx0Rm9udE5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZWQuZXhlY0NvbW1hbmQoJ0ZvbnROYW1lJywgZmFsc2UsIHRoaXMudGlueU1DRUNvbmZpZy5kZWZhdWx0Rm9udE5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250U2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBlZC5leGVjQ29tbWFuZCgnRm9udFNpemUnLCBmYWxzZSwgdGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250U2l6ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZWFkT25seSh0aGlzLmlzUmVhZG9ubHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBUaGlzIHBpZWNlIG9mIGNvZGUgc29sdmVzIHRoZSBwcm9ibGVtIG9mIGNoYW5nZSBwcm9wYWdhdGlvbiBzbyB0aGF0XG4gICAgICAgICAgICAgICAgLy8gdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIHRyaWdnZXJTYXZlXG4gICAgICAgICAgICAgICAgY29uc3Qgc2V0Q29udGVudCA9IGVkLnNldENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgZWQuc2V0Q29udGVudCA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldENvbnRlbnQuYXBwbHkoZWQsIGFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICBlZC5kaXNwYXRjaCgnY2hhbmdlJywge30pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaGFzSW5pdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy50aW55SW5pdC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaWZyYW1FbDogSFRNTElGcmFtZUVsZW1lbnQgPSBlZC5pZnJhbWVFbGVtZW50O1xuICAgICAgICAgICAgICAgIGlmIChpZnJhbUVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmcmFtRWwuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHRoaXMuX29uTG9hZElmcmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIENhdGNoIGFuZCBwcm9wYWdhdGUgdGhlIGNoYW5nZSBldmVudFxuICAgICAgICAgICAgbGV0IG9sZENvbnRlbnQgPSBudWxsO1xuICAgICAgICAgICAgZWQub24oJ2NoYW5nZSBrZXl1cCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXd2YWwgPSBlZC5nZXRDb250ZW50KCk7XG4gICAgICAgICAgICAgICAgaWYgKG5ld3ZhbCA9PT0gb2xkQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgb2xkQ29udGVudCA9IG5ld3ZhbDtcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0luaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGVkLnNhdmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gbmV3dmFsO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXd2YWwpO1xuICAgICAgICAgICAgICAgIC8vIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ2NoYW5nZScsIHRoaXMsIG5ld3ZhbCwgb2xkdmFsLCB7fSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZWQub24oJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFRPRE9cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodXNlclNldHVwKSB7XG4gICAgICAgICAgICAgICAgdXNlclNldHVwKGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBTaG93VXBsb2FkV2luZG93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91cGxvYWRlci5vcGVuKCk7XG4gICAgfVxuICAgIFNob3dPcGVuRmlsZURpYWxvZyhkb1JldHVybik6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2ZpbGUnKTtcbiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCAnaW1hZ2UvKicpO1xuXG4gICAgICAgIGlucHV0Lm9uY2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzWzBdO1xuXG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgYmFzZTY0ID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgYmFzZTY0ID0gYmFzZTY0LnNwbGl0KCcsJylbMV07XG4gICAgICAgICAgICAgICAgZG9SZXR1cm4obnVsbCwgYmFzZTY0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpbnB1dC5jbGljaygpO1xuICAgIH1cbiAgICBJbnNlcnRCYXNlNjQoYmFzZTY0LCBkb1JldHVybik6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRvci5leGVjQ29tbWFuZCgnbWNlSW5zZXJ0Q29udGVudCcsIGZhbHNlLCAnPGltZyBzcmM9ZGF0YTppbWFnZS9wbmc7YmFzZTY0LCcgKyBiYXNlNjQgKyAnIC8+Jyk7XG4gICAgICAgIGRvUmV0dXJuKCk7XG4gICAgfVxuICAgIGdldFZhbHVlKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBsZXQgcmVzID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGlmIChlZCkge1xuICAgICAgICAgICAgICAgIHJlcyA9IGVkLmdldENvbnRlbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIHNldFZhbHVlKHZhbHVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZVRpbnkoKTtcbiAgICB9XG4gICAgc2V0VmFsdWVUaW55KCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLnd5c2l3eWdJbnRpYWxpemVkKSB7XG4gICAgICAgICAgICBjb25zdCBlZCA9IHRpbnltY2UuZ2V0KHRoaXMudGlueUhvc3RJZCk7XG4gICAgICAgICAgICBpZiAoZWQpIHtcbiAgICAgICAgICAgICAgICBlZC5zZXRDb250ZW50KHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cbiAgICBmb2N1cygpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5pc1JlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnd5c2l3eWdJbnRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aW55bWNlLmV4ZWNDb21tYW5kKCdtY2VGb2N1cycsIGZhbHNlLCAnaWRfb2ZfdGV4dGFyZWEnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBzZXRFbmFibGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnd5c2l3eWdJbnRpYWxpemVkKSB7XG4gICAgICAgICAgICBjb25zdCBlZCA9IHRpbnltY2UuZ2V0KHRoaXMudGlueUhvc3RJZCk7XG4gICAgICAgICAgICBlZC5nZXRCb2R5KCkuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldERpc2FibGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnd5c2l3eWdJbnRpYWxpemVkKSB7XG4gICAgICAgICAgICBjb25zdCBlZCA9IHRpbnltY2UuZ2V0KHRoaXMudGlueUhvc3RJZCk7XG4gICAgICAgICAgICBlZC5nZXRCb2R5KCkuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2V0UmVhZE9ubHkocmVhZE9ubHkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGVkLmdldEJvZHkoKS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICFyZWFkT25seSk7XG4gICAgICAgICAgICBpZiAocmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICAkKCcudG94LWVkaXRvci1oZWFkZXInKS5oaWRlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICQoJy50b3gtZWRpdG9yLWhlYWRlcicpLmhpZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc3Ryb3lUaW55bWNlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5TZXR0aW5nLklzSHRtbFZpZXdlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgaWYgKGVkKSB7XG4gICAgICAgICAgICAvLyB0aW55bWNlLmV4ZWNDb21tYW5kKCdtY2VSZW1vdmVDb250cm9sJywgdHJ1ZSwgdGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGlmIChlZC5pZnJhbWVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgZWQuaWZyYW1lRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgdGhpcy5fb25Mb2FkSWZyYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVkLmRlc3Ryb3koZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgdXBsb2FkRmlsZShmaWxlczogRmlsZVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwbG9hZFNlcnZpY2UuY29tcHJlc3NGaWxlcyQoZmlsZXMpLnBpcGUoXG4gICAgICAgICAgICBjb25jYXRNYXAoKGZvcm1EYXRhOiBGb3JtRGF0YSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLl91cGxvYWRTZXJ2aWNlLnVwbG9hZChmb3JtRGF0YSwgdGhpcy5TZXR0aW5nLlN0b3JhZ2VGaWxlRmllbGRJZCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFwKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWN0dXJlID0gcmVzWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaWN0dXJlLkVycm9yTXNnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhcnNhQXBpLkJ3Lk1zZy5FcnJvcihwaWN0dXJlLkVycm9yTXNnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGljdHVyZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUlkOiBwaWN0dXJlLkZpbGVJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkSW1hZ2VzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuICAgIHByaXZhdGUgX2FkZEltYWdlcyhmaWxlOiB7IEZpbGVJZDogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXJsID0gJy9JSC5hc2h4P3R5PVN0b3JhZ2VGaWxlJmtleT0nICsgZmlsZS5GaWxlSWQ7XG4gICAgICAgIGNvbnN0IGh0bWwgPSAnPGltZyBzcmM9JyArIHVybCArICcgLz4nO1xuXG4gICAgICAgIHRoaXMuZWRpdG9yLmV4ZWNDb21tYW5kKCdtY2VJbnNlcnRDb250ZW50JywgZmFsc2UsIGh0bWwpO1xuICAgIH1cbiAgICBwcml2YXRlIHByZXBhcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdGlsaXplKCk7XG4gICAgICAgIHRpbnltY2UuaW5pdCh0aGlzLnRpbnlNQ0VDb25maWcpO1xuICAgICAgICB0aGlzLmludGlhbGl6YXRpb25JblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cbiAgICBwcml2YXRlIF9vbkxvYWRJZnJhbWUgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmVkaXRvclZhbHVlO1xuICAgICAgICAvLyBjb25zdCBlZCA9IHRpbnltY2UuZ2V0KHRoaXMudGlueUhvc3RJZCk7XG4gICAgICAgIC8vIGVkLmV4ZWNDb21tYW5kKCdtY2VJbnNlcnRDb250ZW50JywgZmFsc2UsIHRoaXMudmFsdWUpO1xuXG4gICAgICAgIC8vIGVkLmluc2VydENvbnRlbnQodGhpcy52YWx1ZSwgeyBmb3JtYXQ6ICdyYXcnIH0pO1xuICAgICAgICAvLyB0aGlzLl9yZW1vdmVPdmVyZmxvdyhlZCk7XG4gICAgICAgIHRoaXMuZGVzdHJveVRpbnltY2UoKTtcbiAgICAgICAgdGhpcy5wcmVwYXJlKCk7XG4gICAgfTtcbiAgICBwcml2YXRlIF9nZW5lcmF0ZVRpbnlIb3N0SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBhXyR7Z2V0VW5pcXVlSWQoMil9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW1vdmVPdmVyZmxvdyhlZDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGh0bWwgPSBlZC5pZnJhbWVFbGVtZW50Py5jb250ZW50RG9jdW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJ2h0bWwnKTtcbiAgICAgICAgaWYgKGh0bWwpIHtcbiAgICAgICAgICAgIGh0bWwuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmZC1pbnB1dCB0aW55d3JhcHBlclwiIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlaWdodFwiIFtpZF09XCJ0aW55SG9zdElkXCI+PC9kaXY+XG48ZmQtZmlsZS11cGxvYWRlclxuICAgICN1cGxvYWRlclxuICAgIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiXG4gICAgW2FjY2VwdF09XCInJ1wiXG4gICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAoc2VsZWN0ZWRGaWxlc0NoYW5nZWQpPVwib25GaWxlU2VsZWN0aW9uKCRldmVudClcIlxuPjwvZmQtZmlsZS11cGxvYWRlcj5cbjwhLS0gPHRleHRhcmVhIFtpZF09XCJ0aW55SG9zdElkXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHZpc2liaWxpdHk6IGhpZGRlblwiPjwvdGV4dGFyZWE+IC0tPlxuIl19
|