@po-ui/ng-components 6.5.0 → 6.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.mjs +3 -3
- package/esm2020/lib/components/po-chart/interfaces/po-chart-serie.interface.mjs +1 -1
- package/esm2020/lib/components/po-field/po-combo/po-combo-base.component.mjs +2 -2
- package/esm2020/lib/components/po-field/po-combo/po-combo.component.mjs +3 -3
- package/esm2020/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.mjs +2 -1
- package/esm2020/lib/components/po-field/po-radio-group/po-radio-group-base.component.mjs +5 -2
- package/esm2020/lib/components/po-field/po-radio-group/po-radio-group.component.mjs +2 -1
- package/esm2020/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.mjs +5 -3
- package/esm2020/lib/services/po-color/po-color.service.mjs +3 -2
- package/fesm2015/po-ui-ng-components.mjs +18 -9
- package/fesm2015/po-ui-ng-components.mjs.map +1 -1
- package/fesm2020/po-ui-ng-components.mjs +17 -9
- package/fesm2020/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-chart/interfaces/po-chart-serie.interface.d.ts +3 -0
- package/lib/components/po-field/po-radio-group/po-radio-group-base.component.d.ts +1 -0
- package/lib/services/po-color/po-color.service.d.ts +1 -0
- package/package.json +4 -4
- package/po-ui-ng-components-6.7.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-6.5.0.tgz +0 -0
|
@@ -663,7 +663,7 @@ PoComboComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoComboCom
|
|
|
663
663
|
useExisting: forwardRef(() => PoComboComponent),
|
|
664
664
|
multi: true
|
|
665
665
|
}
|
|
666
|
-
]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 21, vars: 23, consts: [[3, "p-label", "p-help", "p-optional"], [1, "po-field-container-content"], ["class", "po-field-icon-container-left", 4, "ngIf"], ["autocomplete", "off", "type", "text", 1, "po-input", "po-combo-input", 3, "ngClass", "disabled", "placeholder", "required", "click", "keyup", "blur", "keyup.enter", "keydown"], ["inp", ""], [1, "po-field-icon-container-right"], [3, "p-element-ref", "p-change-event", 4, "ngIf"], [3, "click"], ["iconArrow", ""], [1, "po-combo-container", 3, "hidden"], ["containerElement", ""], [4, "ngIf", "ngIfThen", "ngIfElse"], ["loadingTemplate", ""], ["optionsTemplate", ""], ["visibleOptionsTemplate", ""], ["noDataTemplate", ""], [1, "po-field-icon-container-left"], [1, "po-field-icon", 3, "p-icon"], [3, "p-element-ref", "p-change-event"], [1, "po-combo-container-loading"], [1, "po-combo-container-content"], ["contentElement", ""], [3, "po-combo-item-selected", "click", 4, "ngFor", "ngForOf"], ["defaultOptionTemplate", ""], ["optionTemplate", ""], ["class", "po-combo-item-title", 4, "ngIf", "ngIfElse"], ["optionLink", ""], [1, "po-combo-item-title"], [1, "po-combo-item"], [3, "innerHTML"], ["optionsGroupTemplate", ""], ["defaultOptionsTemplate", ""], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "po-combo-container-no-data"], [1, "po-combo-no-data", "po-text-center"]], template: function PoComboComponent_Template(rf, ctx) { if (rf & 1) {
|
|
666
|
+
]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 21, vars: 23, consts: [[3, "p-label", "p-help", "p-optional"], [1, "po-field-container-content"], ["class", "po-field-icon-container-left", 4, "ngIf"], ["autocomplete", "off", "type", "text", 1, "po-input", "po-combo-input", 3, "ngClass", "disabled", "placeholder", "required", "click", "keyup", "blur", "keyup.enter", "keydown"], ["inp", ""], [1, "po-field-icon-container-right"], [3, "p-element-ref", "p-change-event", 4, "ngIf"], [3, "click"], ["iconArrow", ""], [1, "po-combo-container", 3, "hidden"], ["containerElement", ""], [4, "ngIf", "ngIfThen", "ngIfElse"], ["loadingTemplate", ""], ["optionsTemplate", ""], ["visibleOptionsTemplate", ""], ["noDataTemplate", ""], [1, "po-field-icon-container-left"], [1, "po-field-icon", 3, "p-icon"], [3, "p-element-ref", "p-change-event"], [1, "po-combo-container-loading"], [1, "po-combo-container-content"], ["contentElement", ""], [3, "po-combo-item-selected", "click", 4, "ngFor", "ngForOf"], ["defaultOptionTemplate", ""], ["optionTemplate", ""], ["class", "po-combo-item-title", 4, "ngIf", "ngIfElse"], ["optionLink", ""], [1, "po-combo-item-title"], [1, "po-combo-item"], [2, "pointer-events", "none", 3, "innerHTML"], ["optionsGroupTemplate", ""], ["defaultOptionsTemplate", ""], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "po-combo-container-no-data"], [1, "po-combo-no-data", "po-text-center"]], template: function PoComboComponent_Template(rf, ctx) { if (rf & 1) {
|
|
667
667
|
i0.ɵɵelementStart(0, "po-field-container", 0)(1, "div", 1);
|
|
668
668
|
i0.ɵɵtemplate(2, PoComboComponent_div_2_Template, 2, 3, "div", 2);
|
|
669
669
|
i0.ɵɵelementStart(3, "input", 3, 4);
|
|
@@ -719,7 +719,7 @@ PoComboComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoComboCom
|
|
|
719
719
|
useExisting: forwardRef(() => PoComboComponent),
|
|
720
720
|
multi: true
|
|
721
721
|
}
|
|
722
|
-
], template: "<po-field-container [p-label]=\"label\" [p-help]=\"help\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon class=\"po-field-icon\" [class.po-field-icon-disabled]=\"disabled\" [p-icon]=\"icon\"></po-icon>\n </div>\n\n <input\n #inp\n class=\"po-input po-combo-input\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [class.po-input-icon-left]=\"icon\"\n autocomplete=\"off\"\n type=\"text\"\n [attr.name]=\"name\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n (click)=\"toggleComboVisibility()\"\n (keyup)=\"onKeyUp($event)\"\n (blur)=\"onBlur()\"\n (keyup.enter)=\"searchOnEnter($event.target.value)\"\n (keydown)=\"onKeyDown($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean *ngIf=\"clean && !disabled\" (p-change-event)=\"clear($event)\" [p-element-ref]=\"inputEl\"> </po-clean>\n <span\n #iconArrow\n class=\"po-icon po-field-icon {{ comboIcon }}\"\n [class.po-field-icon-disabled]=\"disabled\"\n [class.po-field-icon]=\"!disabled\"\n (click)=\"toggleComboVisibility()\"\n >\n </span>\n </div>\n </div>\n\n <div #containerElement class=\"po-combo-container\" [hidden]=\"!comboOpen && !isServerSearching\">\n <ng-container *ngIf=\"isServerSearching; then loadingTemplate; else optionsTemplate\"> </ng-container>\n </div>\n\n <po-field-container-bottom></po-field-container-bottom>\n</po-field-container>\n\n<ng-template #loadingTemplate>\n <div class=\"po-combo-container-loading\">\n <po-loading></po-loading>\n </div>\n</ng-template>\n\n<ng-template #optionsTemplate>\n <ng-container *ngIf=\"visibleOptions.length; then visibleOptionsTemplate; else noDataTemplate\"> </ng-container>\n</ng-template>\n\n<ng-template #visibleOptionsTemplate>\n <ul #contentElement class=\"po-combo-container-content\">\n <li\n *ngFor=\"let option of visibleOptions\"\n [class.po-combo-item-selected]=\"compareObjects(selectedView, option)\"\n (click)=\"option?.options ? undefined : onOptionClick(option, $event)\"\n >\n <ng-container *ngIf=\"comboOptionTemplate; then optionTemplate; else defaultOptionTemplate\"></ng-container>\n\n <ng-template #defaultOptionTemplate>\n <label *ngIf=\"option?.options; else optionLink\" class=\"po-combo-item-title\">{{ option.label }}</label>\n <ng-template #optionLink>\n <a class=\"po-combo-item\">\n <span [innerHTML]=\"getLabelFormatted(option?.label)\"></span>\n </a>\n </ng-template>\n </ng-template>\n\n <ng-template #optionTemplate>\n <ng-container *ngIf=\"isOptionGroupList; then optionsGroupTemplate; else defaultOptionsTemplate\"></ng-container>\n\n <ng-template #optionsGroupTemplate>\n <ng-template\n [ngTemplateOutlet]=\"comboOptionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, selected: compareObjects(selectedView, option) }\"\n >\n </ng-template>\n </ng-template>\n\n <ng-template #defaultOptionsTemplate>\n <a class=\"po-combo-item\">\n <ng-template\n [ngTemplateOutlet]=\"comboOptionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n >\n </ng-template>\n </a>\n </ng-template>\n </ng-template>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #noDataTemplate>\n <div class=\"po-combo-container-no-data\">\n <div class=\"po-combo-no-data po-text-center\">\n <span>\n {{ literals.noData }}\n </span>\n </div>\n </div>\n</ng-template>\n" }]
|
|
722
|
+
], template: "<po-field-container [p-label]=\"label\" [p-help]=\"help\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon class=\"po-field-icon\" [class.po-field-icon-disabled]=\"disabled\" [p-icon]=\"icon\"></po-icon>\n </div>\n\n <input\n #inp\n class=\"po-input po-combo-input\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [class.po-input-icon-left]=\"icon\"\n autocomplete=\"off\"\n type=\"text\"\n [attr.name]=\"name\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n (click)=\"toggleComboVisibility()\"\n (keyup)=\"onKeyUp($event)\"\n (blur)=\"onBlur()\"\n (keyup.enter)=\"searchOnEnter($event.target.value)\"\n (keydown)=\"onKeyDown($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean *ngIf=\"clean && !disabled\" (p-change-event)=\"clear($event)\" [p-element-ref]=\"inputEl\"> </po-clean>\n <span\n #iconArrow\n class=\"po-icon po-field-icon {{ comboIcon }}\"\n [class.po-field-icon-disabled]=\"disabled\"\n [class.po-field-icon]=\"!disabled\"\n (click)=\"toggleComboVisibility()\"\n >\n </span>\n </div>\n </div>\n\n <div #containerElement class=\"po-combo-container\" [hidden]=\"!comboOpen && !isServerSearching\">\n <ng-container *ngIf=\"isServerSearching; then loadingTemplate; else optionsTemplate\"> </ng-container>\n </div>\n\n <po-field-container-bottom></po-field-container-bottom>\n</po-field-container>\n\n<ng-template #loadingTemplate>\n <div class=\"po-combo-container-loading\">\n <po-loading></po-loading>\n </div>\n</ng-template>\n\n<ng-template #optionsTemplate>\n <ng-container *ngIf=\"visibleOptions.length; then visibleOptionsTemplate; else noDataTemplate\"> </ng-container>\n</ng-template>\n\n<ng-template #visibleOptionsTemplate>\n <ul #contentElement class=\"po-combo-container-content\">\n <li\n *ngFor=\"let option of visibleOptions\"\n [class.po-combo-item-selected]=\"compareObjects(selectedView, option)\"\n (click)=\"option?.options ? undefined : onOptionClick(option, $event)\"\n >\n <ng-container *ngIf=\"comboOptionTemplate; then optionTemplate; else defaultOptionTemplate\"></ng-container>\n\n <ng-template #defaultOptionTemplate>\n <label *ngIf=\"option?.options; else optionLink\" class=\"po-combo-item-title\">{{ option.label }}</label>\n <ng-template #optionLink>\n <a class=\"po-combo-item\">\n <span style=\"pointer-events: none\" [innerHTML]=\"getLabelFormatted(option?.label)\"></span>\n </a>\n </ng-template>\n </ng-template>\n\n <ng-template #optionTemplate>\n <ng-container *ngIf=\"isOptionGroupList; then optionsGroupTemplate; else defaultOptionsTemplate\"></ng-container>\n\n <ng-template #optionsGroupTemplate>\n <ng-template\n [ngTemplateOutlet]=\"comboOptionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, selected: compareObjects(selectedView, option) }\"\n >\n </ng-template>\n </ng-template>\n\n <ng-template #defaultOptionsTemplate>\n <a class=\"po-combo-item\">\n <ng-template\n [ngTemplateOutlet]=\"comboOptionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n >\n </ng-template>\n </a>\n </ng-template>\n </ng-template>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #noDataTemplate>\n <div class=\"po-combo-container-no-data\">\n <div class=\"po-combo-no-data po-text-center\">\n <span>\n {{ literals.noData }}\n </span>\n </div>\n </div>\n</ng-template>\n" }]
|
|
723
723
|
}], function () { return [{ type: i0.ElementRef }, { type: i0.IterableDiffers }, { type: i1.PoComboFilterService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i2.PoControlPositionService }, { type: i3.DomSanitizer }, { type: i4.PoLanguageService }]; }, { comboOptionTemplate: [{
|
|
724
724
|
type: ContentChild,
|
|
725
725
|
args: [PoComboOptionTemplateDirective, { static: true }]
|
|
@@ -736,4 +736,4 @@ PoComboComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoComboCom
|
|
|
736
736
|
type: ViewChild,
|
|
737
737
|
args: ['inp', { read: ElementRef, static: true }]
|
|
738
738
|
}] }); })();
|
|
739
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWNvbWJvL3BvLWNvbWJvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1jb21iby9wby1jb21iby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFNVixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHakUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDNUIzRywrQkFBdUQ7SUFDckQsOEJBQW1HO0lBQ3JHLGlCQUFNOzs7SUFEMkIsZUFBeUM7SUFB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QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDSixPQUFPO2tCQUE1RCxTQUFTO21CQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEl0ZXJhYmxlRGlmZmVycyxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1jb250cm9sLXBvc2l0aW9uL3BvLWNvbnRyb2wtcG9zaXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQb0tleUNvZGVFbnVtIH0gZnJvbSAnLi8uLi8uLi8uLi9lbnVtcy9wby1rZXktY29kZS5lbnVtJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7IFBvQ29tYm9CYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1jb21iby1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb0NvbWJvRmlsdGVyTW9kZSB9IGZyb20gJy4vcG8tY29tYm8tZmlsdGVyLW1vZGUuZW51bSc7XG5pbXBvcnQgeyBQb0NvbWJvRmlsdGVyU2VydmljZSB9IGZyb20gJy4vcG8tY29tYm8tZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9Db21ib0dyb3VwIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWNvbWJvLWdyb3VwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0NvbWJvT3B0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWNvbWJvLW9wdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Db21ib09wdGlvblRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby1jb21iby1vcHRpb24tdGVtcGxhdGUvcG8tY29tYm8tb3B0aW9uLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IHBvQ29tYm9Db250YWluZXJPZmZzZXQgPSA4O1xuY29uc3QgcG9Db21ib0NvbnRhaW5lclBvc2l0aW9uRGVmYXVsdCA9ICdib3R0b20nO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb0NvbWJvQmFzZUNvbXBvbmVudFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVXRpbGl6YW5kbyBwby1jb21ibyBjb20gc2VydmnDp28sIMOpIHBvc3NpdmVsIGRpZ2l0YXIgdW0gdmFsb3Igbm8gY2FtcG8gZGUgZW50cmFkYSBlIHByZXNzaW9uYXIgYSB0ZWNsYSAndGFiJyBwYXJhIHF1ZSBvIGNvbXBvbmVudGVcbiAqIGZhw6dhIHVtYSByZXF1aXNpw6fDo28gw6AgVVJMIGluZm9ybWFkYSBwYXNzYW5kbyBvIHZhbG9yIGRpZ2l0YWRvIG5vIGNhbXBvLiBTZSBlbmNvbnRyYWRvIG8gdmFsb3IsIGVudMOjbyBvIG1lc21vIHNlcsOhIHNlbGVjaW9uYWRvLCBjYXNvXG4gKiBuw6NvIHNlamEgZW5jb250cmFkbywgZW50w6NvIGEgbGlzdGEgZGUgaXRlbnMgdm9sdGFyw6EgcGFyYSBvIGVzdGFkbyBpbmljaWFsLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWNvbWJvLWJhc2ljXCIgdGl0bGU9XCJQTyBDb21ibyBCYXNpY1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWJhc2ljL3NhbXBsZS1wby1jb21iby1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8tYmFzaWMvc2FtcGxlLXBvLWNvbWJvLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWNvbWJvLWxhYnNcIiB0aXRsZT1cIlBPIENvbWJvIExhYnNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1sYWJzL3NhbXBsZS1wby1jb21iby1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1sYWJzL3NhbXBsZS1wby1jb21iby1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWNvbWJvLXNjaGVkdWxpbmdcIiB0aXRsZT1cIlBPIENvbWJvIC0gU2NoZWR1bGluZ1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLXNjaGVkdWxpbmcvc2FtcGxlLXBvLWNvbWJvLXNjaGVkdWxpbmcuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLXNjaGVkdWxpbmcvc2FtcGxlLXBvLWNvbWJvLXNjaGVkdWxpbmcuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1zY2hlZHVsaW5nL3NhbXBsZS1wby1jb21iby1zY2hlZHVsaW5nLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1jb21iby10cmFuc2ZlclwiIHRpdGxlPVwiUE8gQ29tYm8gLSBCYW5raW5nIFRyYW5zZmVyXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8tdHJhbnNmZXIvc2FtcGxlLXBvLWNvbWJvLXRyYW5zZmVyLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby10cmFuc2Zlci9zYW1wbGUtcG8tY29tYm8tdHJhbnNmZXIuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tY29tYm8taGVyb2VzXCIgdGl0bGU9XCJQTyBDb21ibyAtIEhlcm9lc1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWhlcm9lcy9zYW1wbGUtcG8tY29tYm8taGVyb2VzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1oZXJvZXMvc2FtcGxlLXBvLWNvbWJvLWhlcm9lcy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1jb21iby1oZXJvZXMtcmVhY3RpdmUtZm9ybVwiIHRpdGxlPVwiUE8gQ29tYm8gLSBIZXJvZXMgUmVhY3RpdmUgRm9ybVwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWhlcm9lcy1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby1jb21iby1oZXJvZXMtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8taGVyb2VzLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWNvbWJvLWhlcm9lcy1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWNvbWJvLWhvdGVsc1wiIHRpdGxlPVwiUE8gQ29tYm8gLSBCb29raW5nIEhvdGVsXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8taG90ZWxzL3NhbXBsZS1wby1jb21iby1ob3RlbHMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWhvdGVscy9zYW1wbGUtcG8tY29tYm8taG90ZWxzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLWNvbWJvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLWNvbWJvLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIFBvQ29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgIFBvQ29udHJvbFBvc2l0aW9uU2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvQ29tYm9Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0NvbWJvQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFBvQ29tYm9Db21wb25lbnQgZXh0ZW5kcyBQb0NvbWJvQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZChQb0NvbWJvT3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIGNvbWJvT3B0aW9uVGVtcGxhdGU6IFBvQ29tYm9PcHRpb25UZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXJFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNvbnRhaW5lckVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnRFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNvbnRlbnRFbGVtZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdpY29uQXJyb3cnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBpY29uRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaW5wJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbDogRWxlbWVudFJlZjtcblxuICBjb21ib0ljb246IHN0cmluZyA9ICdwby1pY29uLWFycm93LWRvd24nO1xuICBjb21ib09wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGlmZmVyOiBhbnk7XG4gIGlzUHJvY2Vzc2luZ1ZhbHVlQnlUYWI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2Nyb2xsVG9wID0gMDtcbiAgc2VydmljZTogUG9Db21ib0ZpbHRlclNlcnZpY2U7XG4gIHNob3VsZE1hcmtMZXR0ZXJzOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcml2YXRlIF9pc1NlcnZlclNlYXJjaGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY2xpY2tvdXRMaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBldmVudFJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgZmlsdGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZ2V0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIGRpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICBwdWJsaWMgZGVmYXVsdFNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgY29udHJvbFBvc2l0aW9uOiBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZWQ6IERvbVNhbml0aXplcixcbiAgICBsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGxhbmd1YWdlU2VydmljZSk7XG5cbiAgICB0aGlzLmRpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlKG51bGwpO1xuICB9XG5cbiAgc2V0IGlzU2VydmVyU2VhcmNoaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9pc1NlcnZlclNlYXJjaGluZyA9IHZhbHVlO1xuXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgdGhpcy5zZXRDb250YWluZXJQb3NpdGlvbigpO1xuICAgICAgdGhpcy5pbml0aWFsaXplTGlzdGVuZXJzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2lzU2VydmVyU2VhcmNoaW5nID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzU2VydmVyU2VhcmNoaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1NlcnZlclNlYXJjaGluZztcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuZGVib3VuY2VUaW1lKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlS2V5dXBPYnNlcnZhYmxlKCk7XG4gICAgICB0aGlzLmluaXRJbnB1dE9ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5maWx0ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmNvbmZpZ0FmdGVyU2V0RmlsdGVyU2VydmljZSh0aGlzLmZpbHRlclNlcnZpY2UpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG5cbiAgICBpZiAodGhpcy5maWx0ZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2V0U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmdldFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgYXRyaWJ1aSBmb2NvIGFvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6w6EtbGEgw6kgbmVjZXNzw6FyaW8gdGVyIGEgaW5zdMOibmNpYSBkbyBjb21wb25lbnRlIG5vIERPTSwgcG9kZW5kbyBzZXIgdXRpbGl6YWRvIG8gVmlld0NoaWxkIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogaW1wb3J0IHsgUG9Db21ib0NvbXBvbmVudCB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcbiAgICpcbiAgICogLi4uXG4gICAqXG4gICAqIEBWaWV3Q2hpbGQoUG9Db21ib0NvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgY29tYm86IFBvQ29tYm9Db21wb25lbnQ7XG4gICAqXG4gICAqIGZvY3VzQ29tYm8oKSB7XG4gICAqICAgdGhpcy5jb21iby5mb2N1cygpO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkPy4oKTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudD86IGFueSkge1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcblxuICAgIC8vIGJ1c2NhIHVtIHJlZ2lzdHJvIHF1YW5kbyBhY2lvbmFyIG8gdGFiXG4gICAgaWYgKHRoaXMuc2VydmljZSAmJiBrZXkgPT09IFBvS2V5Q29kZUVudW0udGFiICYmIGlucHV0VmFsdWUgJiYgIXRoaXMuZGlzYWJsZWRUYWJGaWx0ZXIpIHtcbiAgICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RCeVZhbHVlKGlucHV0VmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFRlY2xhcyBcInVwXCIgZSBcImRvd25cIlxuICAgIGlmIChrZXkgPT09IFBvS2V5Q29kZUVudW0uYXJyb3dVcCB8fCBrZXkgPT09IFBvS2V5Q29kZUVudW0uYXJyb3dEb3duKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBpZiAodGhpcy5jb21ib09wZW4pIHtcbiAgICAgICAgaWYgKGtleSA9PT0gUG9LZXlDb2RlRW51bS5hcnJvd1VwKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RQcmV2aW91c09wdGlvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0TmV4dE9wdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eSh0cnVlKTtcbiAgICAgIHRoaXMuaXNGaWx0ZXJpbmcgPSB0aGlzLmNoYW5nZU9uRW50ZXIgPyB0aGlzLmlzRmlsdGVyaW5nIDogZmFsc2U7XG4gICAgICB0aGlzLnNob3VsZE1hcmtMZXR0ZXJzID0gdGhpcy5jaGFuZ2VPbkVudGVyID8gdGhpcy5zaG91bGRNYXJrTGV0dGVycyA6IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRlY2xhcyBcInRhYlwiIG91IFwiZXNjXCJcbiAgICBpZiAoa2V5ID09PSBQb0tleUNvZGVFbnVtLnRhYiB8fCBrZXkgPT09IFBvS2V5Q29kZUVudW0uZXNjKSB7XG4gICAgICBpZiAoa2V5ID09PSBQb0tleUNvZGVFbnVtLmVzYyAmJiB0aGlzLmNvbWJvT3Blbikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KGZhbHNlKTtcbiAgICAgIHRoaXMudmVyaWZ5VmFsaWRPcHRpb24oKTtcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nVmFsdWVCeVRhYiA9IHRydWU7XG4gICAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgICAvLyBjYXNvIGZvciBjaGFuZ2VPbkVudGVyIGUgbmFvIHRlciBzZWxlY3RlZFZhbHVlIGRldmUgbGltcGFyIG8gc2VsZWN0ZWRWaWV3IHBhcmEgcmVpbmljaWEtbG8uXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdGhpcy5jaGFuZ2VPbkVudGVyICYmICF0aGlzLnNlbGVjdGVkVmFsdWUgPyB1bmRlZmluZWQgOiB0aGlzLnNlbGVjdGVkVmlldztcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUZWNsYSBcImVudGVyXCJcbiAgICBpZiAoa2V5ID09PSBQb0tleUNvZGVFbnVtLmVudGVyICYmIHRoaXMuc2VsZWN0ZWRWaWV3ICYmIHRoaXMuY29tYm9PcGVuKSB7XG4gICAgICBjb25zdCBpc1VwZGF0ZU1vZGVsID0gdGhpcy5zZWxlY3RlZFZpZXcudmFsdWUgIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSB8fCBpbnB1dFZhbHVlICE9PSB0aGlzLnNlbGVjdGVkVmlldy5sYWJlbDtcblxuICAgICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KGZhbHNlKTtcblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKHRoaXMuc2VsZWN0ZWRWaWV3LCBpc1VwZGF0ZU1vZGVsKTtcbiAgICAgIHRoaXMuaXNGaWx0ZXJpbmcgPSBmYWxzZTtcblxuICAgICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDb21ib0xpc3QoWy4uLnRoaXMuY2FjaGVTdGF0aWNPcHRpb25zXSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gUG9LZXlDb2RlRW51bS5lbnRlcikge1xuICAgICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uS2V5VXAoZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXlDb2RlIHx8IGV2ZW50LndoaWNoO1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG5cbiAgICBjb25zdCBpc1ZhbGlkS2V5ID0ga2V5ICE9PSBQb0tleUNvZGVFbnVtLmFycm93VXAgJiYga2V5ICE9PSBQb0tleUNvZGVFbnVtLmFycm93RG93biAmJiBrZXkgIT09IFBvS2V5Q29kZUVudW0uZW50ZXI7XG5cbiAgICBpZiAoaXNWYWxpZEtleSkge1xuICAgICAgaWYgKGlucHV0VmFsdWUpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UgJiYgdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlICE9PSBpbnB1dFZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5zaG91bGRNYXJrTGV0dGVycyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pc0ZpbHRlcmluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zZWFyY2hGb3JMYWJlbChpbnB1dFZhbHVlLCB0aGlzLmNvbWJvT3B0aW9uc0xpc3QsIHRoaXMuZmlsdGVyTW9kZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHF1YW5kbyBhcGFnYXIgcmFwaWRvIG8gY2FtcG8gZSBjb250ZXIgc2VydmnDp28sIHZhbG9yLCBuw6NvIGRpc3BhcmF2YSBvIGtleXVwIG9ic2VydmFibGVcbiAgICAgICAgLy8gbmVjZXNzYXJpbyBlc3RlIHRyYXRhbWVudG8gcGFyYSByZXRvcm5hciBhIGxpc3RhICdkZWZhdWx0Jy5cbiAgICAgICAgY29uc3QgdXNlRGVmYXVsdE9wdGlvbnNTZXJ2aWNlID1cbiAgICAgICAgICB0aGlzLnNlcnZpY2UgJiYgdGhpcy5zZWxlY3RlZFZhbHVlICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24ubGFiZWwgPT09IHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUobnVsbCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHVzZURlZmF1bHRPcHRpb25zU2VydmljZSkge1xuICAgICAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KFsuLi50aGlzLmNhY2hlT3B0aW9uc10pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0ZpbHRlcmluZyA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBjYXNvIG8gdmFsb3IgcGVzcXVpc2FkbyBmb3IgZGlmZXJlbnRlIGRvIGFudGVyaW9yIGRldmUgYWJyaXIgbyBjb21ib1xuICAgICAgaWYgKHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSAhPT0gaW5wdXRWYWx1ZSkge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICB0aGlzLmNvbnRyb2xDb21ib1Zpc2liaWxpdHkodHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlID0gaW5wdXRWYWx1ZTtcbiAgfVxuXG4gIGluaXRJbnB1dE9ic2VydmFibGUoKSB7XG4gICAgaWYgKHRoaXMuc2VydmljZSkge1xuICAgICAgY29uc3Qga2V5dXBPYnNlcnZhYmxlID0gZnJvbUV2ZW50KHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LCAna2V5dXAnKS5waXBlKFxuICAgICAgICBmaWx0ZXIoKGU6IGFueSkgPT4gdGhpcy5pc1ZhbGlkQ2hhcmFjdGVyVG9TZWFyY2goZS5rZXlDb2RlKSksXG4gICAgICAgIG1hcCgoZTogYW55KSA9PiBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvdWxkTWFya0xldHRlcnMgPSBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMua2V5dXBTdWJzY3JpYmUgPSBrZXl1cE9ic2VydmFibGUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+PSB0aGlzLmZpbHRlck1pbmxlbmd0aCB8fCAhdmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmNvbnRyb2xBcHBseUZpbHRlcih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnRyb2xBcHBseUZpbHRlcih2YWx1ZSkge1xuICAgIGlmICghdGhpcy5pc1Byb2Nlc3NpbmdWYWx1ZUJ5VGFiICYmICghdGhpcy5zZWxlY3RlZE9wdGlvbiB8fCB2YWx1ZSAhPT0gdGhpcy5zZWxlY3RlZE9wdGlvbi5sYWJlbCkpIHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXIodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmlzUHJvY2Vzc2luZ1ZhbHVlQnlUYWIgPSBmYWxzZTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbnRyb2xDb21ib1Zpc2liaWxpdHkoZmFsc2UpO1xuICAgIHRoaXMuaXNTZXJ2ZXJTZWFyY2hpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgcGFyYW0gPSB7IHByb3BlcnR5OiB0aGlzLmZpZWxkTGFiZWwsIHZhbHVlIH07XG5cbiAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbiA9IHRoaXMuc2VydmljZS5nZXRGaWx0ZXJlZERhdGEocGFyYW0sIHRoaXMuZmlsdGVyUGFyYW1zKS5zdWJzY3JpYmUoXG4gICAgICBpdGVtcyA9PiB0aGlzLnNldE9wdGlvbnNCeUFwcGx5RmlsdGVyKHZhbHVlLCBpdGVtcyksXG4gICAgICBlcnJvciA9PiB0aGlzLm9uRXJyb3JGaWx0ZXJlZERhdGEoKVxuICAgICk7XG4gIH1cblxuICBzZXRPcHRpb25zQnlBcHBseUZpbHRlcih2YWx1ZSwgaXRlbXMpIHtcbiAgICB0aGlzLnNob3VsZE1hcmtMZXR0ZXJzID0gdHJ1ZTtcbiAgICB0aGlzLmlzU2VydmVyU2VhcmNoaW5nID0gZmFsc2U7XG4gICAgdGhpcy5vcHRpb25zID0gaXRlbXM7XG5cbiAgICB0aGlzLnNlYXJjaEZvckxhYmVsKHZhbHVlLCBpdGVtcywgdGhpcy5maWx0ZXJNb2RlKTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KHRydWUpO1xuXG4gICAgaWYgKHRoaXMuaXNGaXJzdEZpbHRlcikge1xuICAgICAgdGhpcy5pc0ZpcnN0RmlsdGVyID0gIXRoaXMuaXNGaXJzdEZpbHRlcjtcblxuICAgICAgdGhpcy5jYWNoZU9wdGlvbnMgPSB0aGlzLmNvbWJvT3B0aW9uc0xpc3Q7XG4gICAgfVxuICB9XG5cbiAgZ2V0T2JqZWN0QnlWYWx1ZSh2YWx1ZSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUgIT09IHZhbHVlICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24/LmxhYmVsICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdWYWx1ZUJ5VGFiID0gdHJ1ZTtcblxuICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb24gPSB0aGlzLnNlcnZpY2UuZ2V0T2JqZWN0QnlWYWx1ZSh2YWx1ZSwgdGhpcy5maWx0ZXJQYXJhbXMpLnN1YnNjcmliZShcbiAgICAgICAgaXRlbSA9PiB0aGlzLnVwZGF0ZU9wdGlvbkJ5RmlsdGVyZWRWYWx1ZShpdGVtKSxcbiAgICAgICAgZXJyb3IgPT4gdGhpcy5vbkVycm9yR2V0T2JqZWN0QnlWYWx1ZSgpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZU9wdGlvbkJ5RmlsdGVyZWRWYWx1ZShpdGVtKSB7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IFtpdGVtXTtcbiAgICAgIHRoaXMub25PcHRpb25DbGljayhpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG51bGwpO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdWYWx1ZUJ5VGFiID0gZmFsc2U7XG4gICAgfSwgdGhpcy5kZWJvdW5jZVRpbWUpO1xuICB9XG5cbiAgc2VsZWN0UHJldmlvdXNPcHRpb24oKSB7XG4gICAgY29uc3QgY3VycmVudFZpZXdWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWaWV3ICYmIHRoaXMuc2VsZWN0ZWRWaWV3LnZhbHVlO1xuXG4gICAgaWYgKGN1cnJlbnRWaWV3VmFsdWUpIHtcbiAgICAgIGNvbnN0IG5leHRPcHRpb24gPSB0aGlzLmdldE5leHRPcHRpb24oY3VycmVudFZpZXdWYWx1ZSwgdGhpcy52aXNpYmxlT3B0aW9ucywgdHJ1ZSk7XG5cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShuZXh0T3B0aW9uLCBuZXh0T3B0aW9uICYmIG5leHRPcHRpb24udmFsdWUgIT09IGN1cnJlbnRWaWV3VmFsdWUgJiYgIXRoaXMuY2hhbmdlT25FbnRlcik7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpc2libGVPcHRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3QgdmlzaWJsZU9wdGlvbiA9IHRoaXMudmlzaWJsZU9wdGlvbnNbdGhpcy52aXNpYmxlT3B0aW9ucy5sZW5ndGggLSAxXTtcblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKHZpc2libGVPcHRpb24sIHZpc2libGVPcHRpb24udmFsdWUgIT09IGN1cnJlbnRWaWV3VmFsdWUgJiYgIXRoaXMuY2hhbmdlT25FbnRlcik7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0TmV4dE9wdGlvbigpIHtcbiAgICBjb25zdCBjdXJyZW50Vmlld1ZhbHVlID0gdGhpcy5zZWxlY3RlZFZpZXcgJiYgdGhpcy5zZWxlY3RlZFZpZXcudmFsdWU7XG5cbiAgICBpZiAoY3VycmVudFZpZXdWYWx1ZSkge1xuICAgICAgY29uc3QgbmV4dE9wdGlvbiA9IHRoaXMuZ2V0TmV4dE9wdGlvbihjdXJyZW50Vmlld1ZhbHVlLCB0aGlzLnZpc2libGVPcHRpb25zKTtcblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG5leHRPcHRpb24sIG5leHRPcHRpb24gJiYgbmV4dE9wdGlvbi52YWx1ZSAhPT0gY3VycmVudFZpZXdWYWx1ZSAmJiAhdGhpcy5jaGFuZ2VPbkVudGVyKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlzaWJsZU9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuY2hhbmdlT25FbnRlciA/IDEgOiAwO1xuXG4gICAgICBjb25zdCB2aXNpYmxlT3B0aW9uID0gdGhpcy52aXNpYmxlT3B0aW9uc1tpbmRleF07XG5cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSh2aXNpYmxlT3B0aW9uLCB2aXNpYmxlT3B0aW9uLnZhbHVlICE9PSBjdXJyZW50Vmlld1ZhbHVlICYmICF0aGlzLmNoYW5nZU9uRW50ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUNvbWJvVmlzaWJpbGl0eSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlcnZpY2UgJiYgIXRoaXMuZGlzYWJsZWRJbml0RmlsdGVyKSB7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVySW5GaXJzdENsaWNrKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KCF0aGlzLmNvbWJvT3Blbik7XG4gIH1cblxuICBhcHBseUZpbHRlckluRmlyc3RDbGljaygpIHtcbiAgICBpZiAodGhpcy5pc0ZpcnN0RmlsdGVyICYmICF0aGlzLnNlbGVjdGVkVmFsdWUpIHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoJycpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnRyb2xDb21ib1Zpc2liaWxpdHkodG9PcGVuOiBib29sZWFuKSB7XG4gICAgdG9PcGVuID8gdGhpcy5vcGVuKCkgOiB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBvbk9wdGlvbkNsaWNrKG9wdGlvbjogUG9Db21ib09wdGlvbiB8IFBvQ29tYm9Hcm91cCwgZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gdGhpcy5nZXRJbnB1dFZhbHVlKCk7XG4gICAgY29uc3QgaXNVcGRhdGVNb2RlbCA9XG4gICAgICBvcHRpb24udmFsdWUgIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSB8fCAhISh0aGlzLnNlbGVjdGVkVmlldyAmJiBpbnB1dFZhbHVlICE9PSB0aGlzLnNlbGVjdGVkVmlldy5sYWJlbCk7XG5cbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShvcHRpb24sIGlzVXBkYXRlTW9kZWwpO1xuICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KFsuLi50aGlzLmNhY2hlU3RhdGljT3B0aW9uc10pO1xuICAgIH1cblxuICAgIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWaWV3LmxhYmVsO1xuICB9XG5cbiAgc2Nyb2xsVG8oaW5kZXgpIHtcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucG8tY29tYm8taXRlbS1zZWxlY3RlZCcpO1xuICAgIGNvbnN0IHNjcm9sbFRvcCA9ICFzZWxlY3RlZEl0ZW0ubGVuZ3RoIHx8IGluZGV4IDw9IDEgPyAwIDogc2VsZWN0ZWRJdGVtWzBdLm9mZnNldFRvcCAtIDg4O1xuXG4gICAgdGhpcy5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wKTtcbiAgfVxuXG4gIGdldElucHV0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgc2V0SW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHdhc0NsaWNrZWRPblRvZ2dsZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29tYm9PcGVuICYmXG4gICAgICAhdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgIXRoaXMuaWNvbkVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAoIXRoaXMuY29udGVudEVsZW1lbnQgfHwgIXRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICkge1xuICAgICAgLy8gRXNjb25kZSBDb250ZW50IGRvIENvbWJvIHF1YW5kbyBmb3IgY2xpY2FkbyBmb3JhXG4gICAgICB0aGlzLmNvbnRyb2xDb21ib1Zpc2liaWxpdHkoZmFsc2UpO1xuXG4gICAgICB0aGlzLnZlcmlmeVZhbGlkT3B0aW9uKCk7XG5cbiAgICAgIC8vIGNhc28gZm9yIGNoYW5nZU9uRW50ZXIgZGV2ZSBsaW1wYXIgbyBzZWxlY3RlZFZpZXcgcGFyYSByZWluaWNpYS1sb1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSB0aGlzLmNoYW5nZU9uRW50ZXIgJiYgIXRoaXMuc2VsZWN0ZWRWYWx1ZSA/IHVuZGVmaW5lZCA6IHRoaXMuc2VsZWN0ZWRWaWV3O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zZXJ2aWNlICYmICF0aGlzLmdldElucHV0VmFsdWUoKSAmJiAhdGhpcy5pc0ZpcnN0RmlsdGVyKSB7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoJycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldExhYmVsRm9ybWF0dGVkKGxhYmVsOiBzdHJpbmcpOiBTYWZlSHRtbCB7XG4gICAgY29uc3Qgc2FuaXRpemVkTGFiZWwgPSB0aGlzLnNhbml0aXplVGFnSFRNTChsYWJlbCk7XG4gICAgbGV0IGZvcm1hdDogc3RyaW5nID0gc2FuaXRpemVkTGFiZWw7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmlzRmlsdGVyaW5nIHx8XG4gICAgICAodGhpcy5zZXJ2aWNlICYmXG4gICAgICAgIHRoaXMuZ2V0SW5wdXRWYWx1ZSgpICYmXG4gICAgICAgICF0aGlzLmNvbXBhcmVPYmplY3RzKHRoaXMuY2FjaGVPcHRpb25zLCB0aGlzLnZpc2libGVPcHRpb25zKSAmJlxuICAgICAgICB0aGlzLnNob3VsZE1hcmtMZXR0ZXJzKVxuICAgICkge1xuICAgICAgY29uc3QgbGFiZWxJbnB1dCA9IHRoaXMuc2FuaXRpemVUYWdIVE1MKHRoaXMuZ2V0SW5wdXRWYWx1ZSgpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSk7XG4gICAgICBjb25zdCBsYWJlbExvd2VyQ2FzZSA9IHNhbml0aXplZExhYmVsLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIGNvbnN0IG9wZW5UYWdCb2xkID0gJzxzcGFuIGNsYXNzPVwicG8tZm9udC10ZXh0LWxhcmdlLWJvbGRcIj4nO1xuICAgICAgY29uc3QgY2xvc2VUYWdCb2xkID0gJzwvc3Bhbj4nO1xuXG4gICAgICBsZXQgc3RhcnRTdHJpbmc7XG4gICAgICBsZXQgbWlkZGxlU3RyaW5nO1xuICAgICAgbGV0IGVuZFN0cmluZztcblxuICAgICAgc3dpdGNoICh0aGlzLmZpbHRlck1vZGUpIHtcbiAgICAgICAgY2FzZSBQb0NvbWJvRmlsdGVyTW9kZS5zdGFydHNXaXRoOlxuICAgICAgICBjYXNlIFBvQ29tYm9GaWx0ZXJNb2RlLmNvbnRhaW5zOlxuICAgICAgICAgIGNvbnN0IGluZGV4T2ZMYWJlbElucHV0ID0gbGFiZWxMb3dlckNhc2UuaW5kZXhPZihsYWJlbElucHV0KTtcblxuICAgICAgICAgIGlmIChpbmRleE9mTGFiZWxJbnB1dCA+IC0xKSB7XG4gICAgICAgICAgICBzdGFydFN0cmluZyA9IHNhbml0aXplZExhYmVsLnN1YnN0cmluZygwLCBpbmRleE9mTGFiZWxJbnB1dCk7XG5cbiAgICAgICAgICAgIG1pZGRsZVN0cmluZyA9IHNhbml0aXplZExhYmVsLnN1YnN0cmluZyhpbmRleE9mTGFiZWxJbnB1dCwgaW5kZXhPZkxhYmVsSW5wdXQgKyBsYWJlbElucHV0Lmxlbmd0aCk7XG4gICAgICAgICAgICBlbmRTdHJpbmcgPSBzYW5pdGl6ZWRMYWJlbC5zdWJzdHJpbmcoaW5kZXhPZkxhYmVsSW5wdXQgKyBsYWJlbElucHV0Lmxlbmd0aCk7XG5cbiAgICAgICAgICAgIGZvcm1hdCA9IHN0YXJ0U3RyaW5nICsgb3BlblRhZ0JvbGQgKyBtaWRkbGVTdHJpbmcgKyBjbG9zZVRhZ0JvbGQgKyBlbmRTdHJpbmc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgUG9Db21ib0ZpbHRlck1vZGUuZW5kc1dpdGg6XG4gICAgICAgICAgY29uc3QgbGFzdEluZGV4T2ZMYWJlbElucHV0ID0gbGFiZWxMb3dlckNhc2UubGFzdEluZGV4T2YobGFiZWxJbnB1dCk7XG5cbiAgICAgICAgICBpZiAobGFzdEluZGV4T2ZMYWJlbElucHV0ID4gLTEpIHtcbiAgICAgICAgICAgIHN0YXJ0U3RyaW5nID0gc2FuaXRpemVkTGFiZWwuc3Vic3RyaW5nKDAsIGxhc3RJbmRleE9mTGFiZWxJbnB1dCk7XG4gICAgICAgICAgICBtaWRkbGVTdHJpbmcgPSBzYW5pdGl6ZWRMYWJlbC5zdWJzdHJpbmcobGFzdEluZGV4T2ZMYWJlbElucHV0KTtcblxuICAgICAgICAgICAgZm9ybWF0ID0gc3RhcnRTdHJpbmcgKyBvcGVuVGFnQm9sZCArIG1pZGRsZVN0cmluZyArIGNsb3NlVGFnQm9sZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2FmZUh0bWwoZm9ybWF0KTtcbiAgfVxuXG4gIHNhZmVIdG1sKHZhbHVlKTogU2FmZUh0bWwge1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplZC5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh2YWx1ZSk7XG4gIH1cblxuICBpc1ZhbGlkQ2hhcmFjdGVyVG9TZWFyY2goa2V5Q29kZSkge1xuICAgIHJldHVybiAoXG4gICAgICBrZXlDb2RlICE9PSA5ICYmIC8vIHRhYlxuICAgICAga2V5Q29kZSAhPT0gMTMgJiYgLy8gZW50ZXRcbiAgICAgIGtleUNvZGUgIT09IDE2ICYmIC8vIHNoaWZ0XG4gICAgICBrZXlDb2RlICE9PSAxNyAmJiAvLyBjdHJsXG4gICAgICBrZXlDb2RlICE9PSAxOCAmJiAvLyBhbHRcbiAgICAgIGtleUNvZGUgIT09IDIwICYmIC8vIGNhcHNsb2NrXG4gICAgICBrZXlDb2RlICE9PSAyNyAmJiAvLyBlc2NcbiAgICAgIGtleUNvZGUgIT09IDM3ICYmIC8vIHNldGFcbiAgICAgIGtleUNvZGUgIT09IDM4ICYmIC8vIHNldGFcbiAgICAgIGtleUNvZGUgIT09IDM5ICYmIC8vIHNldGFcbiAgICAgIGtleUNvZGUgIT09IDQwICYmIC8vIHNldGFcbiAgICAgIGtleUNvZGUgIT09IDkzXG4gICAgKTsgLy8gd2luZG93cyBtZW51XG4gIH1cblxuICBzZWFyY2hPbkVudGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zZXJ2aWNlICYmICF0aGlzLnNlbGVjdGVkVmlldyAmJiB2YWx1ZS5sZW5ndGggPj0gdGhpcy5maWx0ZXJNaW5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY29udHJvbEFwcGx5RmlsdGVyKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkanVzdENvbnRhaW5lclBvc2l0aW9uKCkge1xuICAgIHRoaXMuY29udHJvbFBvc2l0aW9uLmFkanVzdFBvc2l0aW9uKHBvQ29tYm9Db250YWluZXJQb3NpdGlvbkRlZmF1bHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZSgpIHtcbiAgICB0aGlzLmNvbWJvT3BlbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmNvbWJvSWNvbiA9ICdwby1pY29uLWFycm93LWRvd24nO1xuXG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcnMoKTtcblxuICAgIHRoaXMuaXNGaWx0ZXJpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxpc3RlbmVycygpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuXG4gICAgdGhpcy5jbGlja291dExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLndhc0NsaWNrZWRPblRvZ2dsZShldmVudCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50UmVzaXplTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgIC8vIHRpbWVvdXQgbmVjZXNzYXJpbyBwb2lzIGEgYW5pbWHDp8OjbyBkbyBwby1tZW51IGltcGFjdGEgbm8gYWp1c3RlIGRhIHBvc2nDp8OjbyBkbyBjb250YWluZXIuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKSwgMjUwKTtcbiAgICB9KTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgb25FcnJvckdldE9iamVjdEJ5VmFsdWUoKSB7XG4gICAgdGhpcy51cGRhdGVPcHRpb25CeUZpbHRlcmVkVmFsdWUobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIG9uRXJyb3JGaWx0ZXJlZERhdGEoKSB7XG4gICAgdGhpcy5pc1NlcnZlclNlYXJjaGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy51cGRhdGVDb21ib0xpc3QoW10pO1xuXG4gICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNjcm9sbCA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLmFkanVzdENvbnRhaW5lclBvc2l0aW9uKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBvcGVuKCkge1xuICAgIHRoaXMuY29tYm9PcGVuID0gdHJ1ZTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5jb21ib0ljb24gPSAncG8taWNvbi1hcnJvdy11cCc7XG5cbiAgICB0aGlzLmluaXRpYWxpemVMaXN0ZW5lcnMoKTtcblxuICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgdGhpcy5zY3JvbGxUbyh0aGlzLmdldEluZGV4U2VsZWN0ZWRWaWV3KCkpO1xuXG4gICAgdGhpcy5zZXRDb250YWluZXJQb3NpdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHRoaXMuY2xpY2tvdXRMaXN0ZW5lcikge1xuICAgICAgdGhpcy5jbGlja291dExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXZlbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5ldmVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYW5pdGl6ZVRhZ0hUTUwodmFsdWU6IHN0cmluZyA9ICcnKSB7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1xcPC9nbSwgJyZsdDsnKS5yZXBsYWNlKC9cXD4vZywgJyZndDsnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29udGFpbmVyUG9zaXRpb24oKSB7XG4gICAgdGhpcy5jb250cm9sUG9zaXRpb24uc2V0RWxlbWVudHMoXG4gICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIHBvQ29tYm9Db250YWluZXJPZmZzZXQsXG4gICAgICB0aGlzLmlucHV0RWwsXG4gICAgICBbJ3RvcCcsICdib3R0b20nXSxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5jb250ZW50RWxlbWVudCkge1xuICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgICB9XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXIgW3AtbGFiZWxdPVwibGFiZWxcIiBbcC1oZWxwXT1cImhlbHBcIiBbcC1vcHRpb25hbF09XCIhcmVxdWlyZWQgJiYgb3B0aW9uYWxcIj5cbiAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgPGRpdiAqbmdJZj1cImljb25cIiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLWxlZnRcIj5cbiAgICAgIDxwby1pY29uIGNsYXNzPVwicG8tZmllbGQtaWNvblwiIFtjbGFzcy5wby1maWVsZC1pY29uLWRpc2FibGVkXT1cImRpc2FibGVkXCIgW3AtaWNvbl09XCJpY29uXCI+PC9wby1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGlucHV0XG4gICAgICAjaW5wXG4gICAgICBjbGFzcz1cInBvLWlucHV0IHBvLWNvbWJvLWlucHV0XCJcbiAgICAgIFtuZ0NsYXNzXT1cImNsZWFuICYmIGlucC52YWx1ZSA/ICdwby1pbnB1dC1kb3VibGUtaWNvbi1yaWdodCcgOiAncG8taW5wdXQtaWNvbi1yaWdodCdcIlxuICAgICAgW2NsYXNzLnBvLWlucHV0LWljb24tbGVmdF09XCJpY29uXCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbWJvVmlzaWJpbGl0eSgpXCJcbiAgICAgIChrZXl1cCk9XCJvbktleVVwKCRldmVudClcIlxuICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cInNlYXJjaE9uRW50ZXIoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtaWNvbi1jb250YWluZXItcmlnaHRcIj5cbiAgICAgIDxwby1jbGVhbiAqbmdJZj1cImNsZWFuICYmICFkaXNhYmxlZFwiIChwLWNoYW5nZS1ldmVudCk9XCJjbGVhcigkZXZlbnQpXCIgW3AtZWxlbWVudC1yZWZdPVwiaW5wdXRFbFwiPiA8L3BvLWNsZWFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgI2ljb25BcnJvd1xuICAgICAgICBjbGFzcz1cInBvLWljb24gcG8tZmllbGQtaWNvbiB7eyBjb21ib0ljb24gfX1cIlxuICAgICAgICBbY2xhc3MucG8tZmllbGQtaWNvbi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtjbGFzcy5wby1maWVsZC1pY29uXT1cIiFkaXNhYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVDb21ib1Zpc2liaWxpdHkoKVwiXG4gICAgICA+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgI2NvbnRhaW5lckVsZW1lbnQgY2xhc3M9XCJwby1jb21iby1jb250YWluZXJcIiBbaGlkZGVuXT1cIiFjb21ib09wZW4gJiYgIWlzU2VydmVyU2VhcmNoaW5nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU2VydmVyU2VhcmNoaW5nOyB0aGVuIGxvYWRpbmdUZW1wbGF0ZTsgZWxzZSBvcHRpb25zVGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxwby1maWVsZC1jb250YWluZXItYm90dG9tPjwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmdUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInBvLWNvbWJvLWNvbnRhaW5lci1sb2FkaW5nXCI+XG4gICAgPHBvLWxvYWRpbmc+PC9wby1sb2FkaW5nPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjb3B0aW9uc1RlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlzaWJsZU9wdGlvbnMubGVuZ3RoOyB0aGVuIHZpc2libGVPcHRpb25zVGVtcGxhdGU7IGVsc2Ugbm9EYXRhVGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Zpc2libGVPcHRpb25zVGVtcGxhdGU+XG4gIDx1bCAjY29udGVudEVsZW1lbnQgY2xhc3M9XCJwby1jb21iby1jb250YWluZXItY29udGVudFwiPlxuICAgIDxsaVxuICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiB2aXNpYmxlT3B0aW9uc1wiXG4gICAgICBbY2xhc3MucG8tY29tYm8taXRlbS1zZWxlY3RlZF09XCJjb21wYXJlT2JqZWN0cyhzZWxlY3RlZFZpZXcsIG9wdGlvbilcIlxuICAgICAgKGNsaWNrKT1cIm9wdGlvbj8ub3B0aW9ucyA/IHVuZGVmaW5lZCA6IG9uT3B0aW9uQ2xpY2sob3B0aW9uLCAkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9PcHRpb25UZW1wbGF0ZTsgdGhlbiBvcHRpb25UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0T3B0aW9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0T3B0aW9uVGVtcGxhdGU+XG4gICAgICAgIDxsYWJlbCAqbmdJZj1cIm9wdGlvbj8ub3B0aW9uczsgZWxzZSBvcHRpb25MaW5rXCIgY2xhc3M9XCJwby1jb21iby1pdGVtLXRpdGxlXCI+e3sgb3B0aW9uLmxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNvcHRpb25MaW5rPlxuICAgICAgICAgIDxhIGNsYXNzPVwicG8tY29tYm8taXRlbVwiPlxuICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJnZXRMYWJlbEZvcm1hdHRlZChvcHRpb24/LmxhYmVsKVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI29wdGlvblRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPcHRpb25Hcm91cExpc3Q7IHRoZW4gb3B0aW9uc0dyb3VwVGVtcGxhdGU7IGVsc2UgZGVmYXVsdE9wdGlvbnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uc0dyb3VwVGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb21ib09wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiwgc2VsZWN0ZWQ6IGNvbXBhcmVPYmplY3RzKHNlbGVjdGVkVmlldywgb3B0aW9uKSB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRPcHRpb25zVGVtcGxhdGU+XG4gICAgICAgICAgPGEgY2xhc3M9XCJwby1jb21iby1pdGVtXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29tYm9PcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0RhdGFUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInBvLWNvbWJvLWNvbnRhaW5lci1uby1kYXRhXCI+XG4gICAgPGRpdiBjbGFzcz1cInBvLWNvbWJvLW5vLWRhdGEgcG8tdGV4dC1jZW50ZXJcIj5cbiAgICAgIDxzcGFuPlxuICAgICAgICB7eyBsaXRlcmFscy5ub0RhdGEgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
739
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWNvbWJvL3BvLWNvbWJvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1jb21iby9wby1jb21iby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFNVixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHakUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDNUIzRywrQkFBdUQ7SUFDckQsOEJBQW1HO0lBQ3JHLGlCQUFNOzs7SUFEMkIsZUFBeUM7SUFB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bUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ0osT0FBTztrQkFBNUQsU0FBUzttQkFBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tY29udHJvbC1wb3NpdGlvbi9wby1jb250cm9sLXBvc2l0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9LZXlDb2RlRW51bSB9IGZyb20gJy4vLi4vLi4vLi4vZW51bXMvcG8ta2V5LWNvZGUuZW51bSc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBQb0NvbWJvQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tY29tYm8tYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9Db21ib0ZpbHRlck1vZGUgfSBmcm9tICcuL3BvLWNvbWJvLWZpbHRlci1tb2RlLmVudW0nO1xuaW1wb3J0IHsgUG9Db21ib0ZpbHRlclNlcnZpY2UgfSBmcm9tICcuL3BvLWNvbWJvLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvQ29tYm9Hcm91cCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1ncm91cC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Db21ib09wdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1vcHRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9PcHRpb25UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tY29tYm8tb3B0aW9uLXRlbXBsYXRlL3BvLWNvbWJvLW9wdGlvbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuXG5jb25zdCBwb0NvbWJvQ29udGFpbmVyT2Zmc2V0ID0gODtcbmNvbnN0IHBvQ29tYm9Db250YWluZXJQb3NpdGlvbkRlZmF1bHQgPSAnYm90dG9tJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9Db21ib0Jhc2VDb21wb25lbnRcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFV0aWxpemFuZG8gcG8tY29tYm8gY29tIHNlcnZpw6dvLCDDqSBwb3NzaXZlbCBkaWdpdGFyIHVtIHZhbG9yIG5vIGNhbXBvIGRlIGVudHJhZGEgZSBwcmVzc2lvbmFyIGEgdGVjbGEgJ3RhYicgcGFyYSBxdWUgbyBjb21wb25lbnRlXG4gKiBmYcOnYSB1bWEgcmVxdWlzacOnw6NvIMOgIFVSTCBpbmZvcm1hZGEgcGFzc2FuZG8gbyB2YWxvciBkaWdpdGFkbyBubyBjYW1wby4gU2UgZW5jb250cmFkbyBvIHZhbG9yLCBlbnTDo28gbyBtZXNtbyBzZXLDoSBzZWxlY2lvbmFkbywgY2Fzb1xuICogbsOjbyBzZWphIGVuY29udHJhZG8sIGVudMOjbyBhIGxpc3RhIGRlIGl0ZW5zIHZvbHRhcsOhIHBhcmEgbyBlc3RhZG8gaW5pY2lhbC5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1jb21iby1iYXNpY1wiIHRpdGxlPVwiUE8gQ29tYm8gQmFzaWNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1iYXNpYy9zYW1wbGUtcG8tY29tYm8tYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWJhc2ljL3NhbXBsZS1wby1jb21iby1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1jb21iby1sYWJzXCIgdGl0bGU9XCJQTyBDb21ibyBMYWJzXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8tbGFicy9zYW1wbGUtcG8tY29tYm8tbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8tbGFicy9zYW1wbGUtcG8tY29tYm8tbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1jb21iby1zY2hlZHVsaW5nXCIgdGl0bGU9XCJQTyBDb21ibyAtIFNjaGVkdWxpbmdcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1zY2hlZHVsaW5nL3NhbXBsZS1wby1jb21iby1zY2hlZHVsaW5nLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1zY2hlZHVsaW5nL3NhbXBsZS1wby1jb21iby1zY2hlZHVsaW5nLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8tc2NoZWR1bGluZy9zYW1wbGUtcG8tY29tYm8tc2NoZWR1bGluZy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tY29tYm8tdHJhbnNmZXJcIiB0aXRsZT1cIlBPIENvbWJvIC0gQmFua2luZyBUcmFuc2ZlclwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLXRyYW5zZmVyL3NhbXBsZS1wby1jb21iby10cmFuc2Zlci5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8tdHJhbnNmZXIvc2FtcGxlLXBvLWNvbWJvLXRyYW5zZmVyLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWNvbWJvLWhlcm9lc1wiIHRpdGxlPVwiUE8gQ29tYm8gLSBIZXJvZXNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1oZXJvZXMvc2FtcGxlLXBvLWNvbWJvLWhlcm9lcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8taGVyb2VzL3NhbXBsZS1wby1jb21iby1oZXJvZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tY29tYm8taGVyb2VzLXJlYWN0aXZlLWZvcm1cIiB0aXRsZT1cIlBPIENvbWJvIC0gSGVyb2VzIFJlYWN0aXZlIEZvcm1cIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1oZXJvZXMtcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tY29tYm8taGVyb2VzLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWhlcm9lcy1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby1jb21iby1oZXJvZXMtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1jb21iby1ob3RlbHNcIiB0aXRsZT1cIlBPIENvbWJvIC0gQm9va2luZyBIb3RlbFwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWhvdGVscy9zYW1wbGUtcG8tY29tYm8taG90ZWxzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1ob3RlbHMvc2FtcGxlLXBvLWNvbWJvLWhvdGVscy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1jb21ibycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1jb21iby5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBQb0NvbWJvRmlsdGVyU2VydmljZSxcbiAgICBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0NvbWJvQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9Db21ib0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQb0NvbWJvQ29tcG9uZW50IGV4dGVuZHMgUG9Db21ib0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGQoUG9Db21ib09wdGlvblRlbXBsYXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb21ib09wdGlvblRlbXBsYXRlOiBQb0NvbWJvT3B0aW9uVGVtcGxhdGVEaXJlY3RpdmU7XG5cbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjb250YWluZXJFbGVtZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdjb250ZW50RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjb250ZW50RWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaWNvbkFycm93JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaWNvbkVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2lucCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGlucHV0RWw6IEVsZW1lbnRSZWY7XG5cbiAgY29tYm9JY29uOiBzdHJpbmcgPSAncG8taWNvbi1hcnJvdy1kb3duJztcbiAgY29tYm9PcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIGRpZmZlcjogYW55O1xuICBpc1Byb2Nlc3NpbmdWYWx1ZUJ5VGFiOiBib29sZWFuID0gZmFsc2U7XG4gIHNjcm9sbFRvcCA9IDA7XG4gIHNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlO1xuICBzaG91bGRNYXJrTGV0dGVyczogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHJpdmF0ZSBfaXNTZXJ2ZXJTZWFyY2hpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGNsaWNrb3V0TGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgZXZlbnRSZXNpemVMaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIGZpbHRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGdldFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgcHVibGljIGRlZmF1bHRTZXJ2aWNlOiBQb0NvbWJvRmlsdGVyU2VydmljZSxcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNvbnRyb2xQb3NpdGlvbjogUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVkOiBEb21TYW5pdGl6ZXIsXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihsYW5ndWFnZVNlcnZpY2UpO1xuXG4gICAgdGhpcy5kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcbiAgfVxuXG4gIHNldCBpc1NlcnZlclNlYXJjaGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5faXNTZXJ2ZXJTZWFyY2hpbmcgPSB2YWx1ZTtcblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgIHRoaXMuc2V0Q29udGFpbmVyUG9zaXRpb24oKTtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUxpc3RlbmVycygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pc1NlcnZlclNlYXJjaGluZyA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc1NlcnZlclNlYXJjaGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faXNTZXJ2ZXJTZWFyY2hpbmc7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmRlYm91bmNlVGltZSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZUtleXVwT2JzZXJ2YWJsZSgpO1xuICAgICAgdGhpcy5pbml0SW5wdXRPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5jb25maWdBZnRlclNldEZpbHRlclNlcnZpY2UodGhpcy5maWx0ZXJTZXJ2aWNlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuXG4gICAgaWYgKHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdldFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRnVuw6fDo28gcXVlIGF0cmlidWkgZm9jbyBhbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBQYXJhIHV0aWxpesOhLWxhIMOpIG5lY2Vzc8OhcmlvIHRlciBhIGluc3TDom5jaWEgZG8gY29tcG9uZW50ZSBubyBET00sIHBvZGVuZG8gc2VyIHV0aWxpemFkbyBvIFZpZXdDaGlsZCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICogYGBgXG4gICAqIGltcG9ydCB7IFBvQ29tYm9Db21wb25lbnQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG4gICAqXG4gICAqIC4uLlxuICAgKlxuICAgKiBAVmlld0NoaWxkKFBvQ29tYm9Db21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGNvbWJvOiBQb0NvbWJvQ29tcG9uZW50O1xuICAgKlxuICAgKiBmb2N1c0NvbWJvKCkge1xuICAgKiAgIHRoaXMuY29tYm8uZm9jdXMoKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZD8uKCk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXlDb2RlO1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG5cbiAgICAvLyBidXNjYSB1bSByZWdpc3RybyBxdWFuZG8gYWNpb25hciBvIHRhYlxuICAgIGlmICh0aGlzLnNlcnZpY2UgJiYga2V5ID09PSBQb0tleUNvZGVFbnVtLnRhYiAmJiBpbnB1dFZhbHVlICYmICF0aGlzLmRpc2FibGVkVGFiRmlsdGVyKSB7XG4gICAgICB0aGlzLmNvbnRyb2xDb21ib1Zpc2liaWxpdHkoZmFsc2UpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlWYWx1ZShpbnB1dFZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBUZWNsYXMgXCJ1cFwiIGUgXCJkb3duXCJcbiAgICBpZiAoa2V5ID09PSBQb0tleUNvZGVFbnVtLmFycm93VXAgfHwga2V5ID09PSBQb0tleUNvZGVFbnVtLmFycm93RG93bikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgaWYgKHRoaXMuY29tYm9PcGVuKSB7XG4gICAgICAgIGlmIChrZXkgPT09IFBvS2V5Q29kZUVudW0uYXJyb3dVcCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0UHJldmlvdXNPcHRpb24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdE5leHRPcHRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbnRyb2xDb21ib1Zpc2liaWxpdHkodHJ1ZSk7XG4gICAgICB0aGlzLmlzRmlsdGVyaW5nID0gdGhpcy5jaGFuZ2VPbkVudGVyID8gdGhpcy5pc0ZpbHRlcmluZyA6IGZhbHNlO1xuICAgICAgdGhpcy5zaG91bGRNYXJrTGV0dGVycyA9IHRoaXMuY2hhbmdlT25FbnRlciA/IHRoaXMuc2hvdWxkTWFya0xldHRlcnMgOiBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUZWNsYXMgXCJ0YWJcIiBvdSBcImVzY1wiXG4gICAgaWYgKGtleSA9PT0gUG9LZXlDb2RlRW51bS50YWIgfHwga2V5ID09PSBQb0tleUNvZGVFbnVtLmVzYykge1xuICAgICAgaWYgKGtleSA9PT0gUG9LZXlDb2RlRW51bS5lc2MgJiYgdGhpcy5jb21ib09wZW4pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICB0aGlzLnZlcmlmeVZhbGlkT3B0aW9uKCk7XG4gICAgICB0aGlzLmlzUHJvY2Vzc2luZ1ZhbHVlQnlUYWIgPSB0cnVlO1xuICAgICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgICAgLy8gY2FzbyBmb3IgY2hhbmdlT25FbnRlciBlIG5hbyB0ZXIgc2VsZWN0ZWRWYWx1ZSBkZXZlIGxpbXBhciBvIHNlbGVjdGVkVmlldyBwYXJhIHJlaW5pY2lhLWxvLlxuICAgICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IHRoaXMuY2hhbmdlT25FbnRlciAmJiAhdGhpcy5zZWxlY3RlZFZhbHVlID8gdW5kZWZpbmVkIDogdGhpcy5zZWxlY3RlZFZpZXc7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVGVjbGEgXCJlbnRlclwiXG4gICAgaWYgKGtleSA9PT0gUG9LZXlDb2RlRW51bS5lbnRlciAmJiB0aGlzLnNlbGVjdGVkVmlldyAmJiB0aGlzLmNvbWJvT3Blbikge1xuICAgICAgY29uc3QgaXNVcGRhdGVNb2RlbCA9IHRoaXMuc2VsZWN0ZWRWaWV3LnZhbHVlICE9PSB0aGlzLnNlbGVjdGVkVmFsdWUgfHwgaW5wdXRWYWx1ZSAhPT0gdGhpcy5zZWxlY3RlZFZpZXcubGFiZWw7XG5cbiAgICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eShmYWxzZSk7XG5cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSh0aGlzLnNlbGVjdGVkVmlldywgaXNVcGRhdGVNb2RlbCk7XG4gICAgICB0aGlzLmlzRmlsdGVyaW5nID0gZmFsc2U7XG5cbiAgICAgIGlmICghdGhpcy5zZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KFsuLi50aGlzLmNhY2hlU3RhdGljT3B0aW9uc10pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChrZXkgPT09IFBvS2V5Q29kZUVudW0uZW50ZXIpIHtcbiAgICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBvbktleVVwKGV2ZW50PzogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gZXZlbnQua2V5Q29kZSB8fCBldmVudC53aGljaDtcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuXG4gICAgY29uc3QgaXNWYWxpZEtleSA9IGtleSAhPT0gUG9LZXlDb2RlRW51bS5hcnJvd1VwICYmIGtleSAhPT0gUG9LZXlDb2RlRW51bS5hcnJvd0Rvd24gJiYga2V5ICE9PSBQb0tleUNvZGVFbnVtLmVudGVyO1xuXG4gICAgaWYgKGlzVmFsaWRLZXkpIHtcbiAgICAgIGlmIChpbnB1dFZhbHVlKSB7XG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlICYmIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSAhPT0gaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuc2hvdWxkTWFya0xldHRlcnMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNGaWx0ZXJpbmcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2VhcmNoRm9yTGFiZWwoaW5wdXRWYWx1ZSwgdGhpcy5jb21ib09wdGlvbnNMaXN0LCB0aGlzLmZpbHRlck1vZGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBxdWFuZG8gYXBhZ2FyIHJhcGlkbyBvIGNhbXBvIGUgY29udGVyIHNlcnZpw6dvLCB2YWxvciwgbsOjbyBkaXNwYXJhdmEgbyBrZXl1cCBvYnNlcnZhYmxlXG4gICAgICAgIC8vIG5lY2Vzc2FyaW8gZXN0ZSB0cmF0YW1lbnRvIHBhcmEgcmV0b3JuYXIgYSBsaXN0YSAnZGVmYXVsdCcuXG4gICAgICAgIGNvbnN0IHVzZURlZmF1bHRPcHRpb25zU2VydmljZSA9XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZSAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uLmxhYmVsID09PSB0aGlzLnByZXZpb3VzU2VhcmNoVmFsdWU7XG5cbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG51bGwpO1xuXG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDb21ib0xpc3QoKTtcbiAgICAgICAgfSBlbHNlIGlmICh1c2VEZWZhdWx0T3B0aW9uc1NlcnZpY2UpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdChbLi4udGhpcy5jYWNoZU9wdGlvbnNdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJpbmcgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gY2FzbyBvIHZhbG9yIHBlc3F1aXNhZG8gZm9yIGRpZmVyZW50ZSBkbyBhbnRlcmlvciBkZXZlIGFicmlyIG8gY29tYm9cbiAgICAgIGlmICh0aGlzLnByZXZpb3VzU2VhcmNoVmFsdWUgIT09IGlucHV0VmFsdWUpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSA9IGlucHV0VmFsdWU7XG4gIH1cblxuICBpbml0SW5wdXRPYnNlcnZhYmxlKCkge1xuICAgIGlmICh0aGlzLnNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IGtleXVwT2JzZXJ2YWJsZSA9IGZyb21FdmVudCh0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudCwgJ2tleXVwJykucGlwZShcbiAgICAgICAgZmlsdGVyKChlOiBhbnkpID0+IHRoaXMuaXNWYWxpZENoYXJhY3RlclRvU2VhcmNoKGUua2V5Q29kZSkpLFxuICAgICAgICBtYXAoKGU6IGFueSkgPT4gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNob3VsZE1hcmtMZXR0ZXJzID0gZmFsc2U7XG4gICAgICAgIH0pLFxuICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpXG4gICAgICApO1xuXG4gICAgICB0aGlzLmtleXVwU3Vic2NyaWJlID0ga2V5dXBPYnNlcnZhYmxlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPj0gdGhpcy5maWx0ZXJNaW5sZW5ndGggfHwgIXZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5jb250cm9sQXBwbHlGaWx0ZXIodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb250cm9sQXBwbHlGaWx0ZXIodmFsdWUpIHtcbiAgICBpZiAoIXRoaXMuaXNQcm9jZXNzaW5nVmFsdWVCeVRhYiAmJiAoIXRoaXMuc2VsZWN0ZWRPcHRpb24gfHwgdmFsdWUgIT09IHRoaXMuc2VsZWN0ZWRPcHRpb24ubGFiZWwpKSB7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVyKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5pc1Byb2Nlc3NpbmdWYWx1ZUJ5VGFiID0gZmFsc2U7XG4gIH1cblxuICBhcHBseUZpbHRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KGZhbHNlKTtcbiAgICB0aGlzLmlzU2VydmVyU2VhcmNoaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IHBhcmFtID0geyBwcm9wZXJ0eTogdGhpcy5maWVsZExhYmVsLCB2YWx1ZSB9O1xuXG4gICAgdGhpcy5maWx0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnNlcnZpY2UuZ2V0RmlsdGVyZWREYXRhKHBhcmFtLCB0aGlzLmZpbHRlclBhcmFtcykuc3Vic2NyaWJlKFxuICAgICAgaXRlbXMgPT4gdGhpcy5zZXRPcHRpb25zQnlBcHBseUZpbHRlcih2YWx1ZSwgaXRlbXMpLFxuICAgICAgZXJyb3IgPT4gdGhpcy5vbkVycm9yRmlsdGVyZWREYXRhKClcbiAgICApO1xuICB9XG5cbiAgc2V0T3B0aW9uc0J5QXBwbHlGaWx0ZXIodmFsdWUsIGl0ZW1zKSB7XG4gICAgdGhpcy5zaG91bGRNYXJrTGV0dGVycyA9IHRydWU7XG4gICAgdGhpcy5pc1NlcnZlclNlYXJjaGluZyA9IGZhbHNlO1xuICAgIHRoaXMub3B0aW9ucyA9IGl0ZW1zO1xuXG4gICAgdGhpcy5zZWFyY2hGb3JMYWJlbCh2YWx1ZSwgaXRlbXMsIHRoaXMuZmlsdGVyTW9kZSk7XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eSh0cnVlKTtcblxuICAgIGlmICh0aGlzLmlzRmlyc3RGaWx0ZXIpIHtcbiAgICAgIHRoaXMuaXNGaXJzdEZpbHRlciA9ICF0aGlzLmlzRmlyc3RGaWx0ZXI7XG5cbiAgICAgIHRoaXMuY2FjaGVPcHRpb25zID0gdGhpcy5jb21ib09wdGlvbnNMaXN0O1xuICAgIH1cbiAgfVxuXG4gIGdldE9iamVjdEJ5VmFsdWUodmFsdWUpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlICE9PSB2YWx1ZSAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uPy5sYWJlbCAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nVmFsdWVCeVRhYiA9IHRydWU7XG5cbiAgICAgIHRoaXMuZ2V0U3Vic2NyaXB0aW9uID0gdGhpcy5zZXJ2aWNlLmdldE9iamVjdEJ5VmFsdWUodmFsdWUsIHRoaXMuZmlsdGVyUGFyYW1zKS5zdWJzY3JpYmUoXG4gICAgICAgIGl0ZW0gPT4gdGhpcy51cGRhdGVPcHRpb25CeUZpbHRlcmVkVmFsdWUoaXRlbSksXG4gICAgICAgIGVycm9yID0+IHRoaXMub25FcnJvckdldE9iamVjdEJ5VmFsdWUoKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVPcHRpb25CeUZpbHRlcmVkVmFsdWUoaXRlbSkge1xuICAgIGlmIChpdGVtKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBbaXRlbV07XG4gICAgICB0aGlzLm9uT3B0aW9uQ2xpY2soaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShudWxsKTtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nVmFsdWVCeVRhYiA9IGZhbHNlO1xuICAgIH0sIHRoaXMuZGVib3VuY2VUaW1lKTtcbiAgfVxuXG4gIHNlbGVjdFByZXZpb3VzT3B0aW9uKCkge1xuICAgIGNvbnN0IGN1cnJlbnRWaWV3VmFsdWUgPSB0aGlzLnNlbGVjdGVkVmlldyAmJiB0aGlzLnNlbGVjdGVkVmlldy52YWx1ZTtcblxuICAgIGlmIChjdXJyZW50Vmlld1ZhbHVlKSB7XG4gICAgICBjb25zdCBuZXh0T3B0aW9uID0gdGhpcy5nZXROZXh0T3B0aW9uKGN1cnJlbnRWaWV3VmFsdWUsIHRoaXMudmlzaWJsZU9wdGlvbnMsIHRydWUpO1xuXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUobmV4dE9wdGlvbiwgbmV4dE9wdGlvbiAmJiBuZXh0T3B0aW9uLnZhbHVlICE9PSBjdXJyZW50Vmlld1ZhbHVlICYmICF0aGlzLmNoYW5nZU9uRW50ZXIpO1xuICAgIH0gZWxzZSBpZiAodGhpcy52aXNpYmxlT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHZpc2libGVPcHRpb24gPSB0aGlzLnZpc2libGVPcHRpb25zW3RoaXMudmlzaWJsZU9wdGlvbnMubGVuZ3RoIC0gMV07XG5cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSh2aXNpYmxlT3B0aW9uLCB2aXNpYmxlT3B0aW9uLnZhbHVlICE9PSBjdXJyZW50Vmlld1ZhbHVlICYmICF0aGlzLmNoYW5nZU9uRW50ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdE5leHRPcHRpb24oKSB7XG4gICAgY29uc3QgY3VycmVudFZpZXdWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWaWV3ICYmIHRoaXMuc2VsZWN0ZWRWaWV3LnZhbHVlO1xuXG4gICAgaWYgKGN1cnJlbnRWaWV3VmFsdWUpIHtcbiAgICAgIGNvbnN0IG5leHRPcHRpb24gPSB0aGlzLmdldE5leHRPcHRpb24oY3VycmVudFZpZXdWYWx1ZSwgdGhpcy52aXNpYmxlT3B0aW9ucyk7XG5cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShuZXh0T3B0aW9uLCBuZXh0T3B0aW9uICYmIG5leHRPcHRpb24udmFsdWUgIT09IGN1cnJlbnRWaWV3VmFsdWUgJiYgIXRoaXMuY2hhbmdlT25FbnRlcik7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpc2libGVPcHRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNoYW5nZU9uRW50ZXIgPyAxIDogMDtcblxuICAgICAgY29uc3QgdmlzaWJsZU9wdGlvbiA9IHRoaXMudmlzaWJsZU9wdGlvbnNbaW5kZXhdO1xuXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUodmlzaWJsZU9wdGlvbiwgdmlzaWJsZU9wdGlvbi52YWx1ZSAhPT0gY3VycmVudFZpZXdWYWx1ZSAmJiAhdGhpcy5jaGFuZ2VPbkVudGVyKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVDb21ib1Zpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZXJ2aWNlICYmICF0aGlzLmRpc2FibGVkSW5pdEZpbHRlcikge1xuICAgICAgdGhpcy5hcHBseUZpbHRlckluRmlyc3RDbGljaygpO1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eSghdGhpcy5jb21ib09wZW4pO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJJbkZpcnN0Q2xpY2soKSB7XG4gICAgaWYgKHRoaXMuaXNGaXJzdEZpbHRlciAmJiAhdGhpcy5zZWxlY3RlZFZhbHVlKSB7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVyKCcnKTtcbiAgICB9XG4gIH1cblxuICBjb250cm9sQ29tYm9WaXNpYmlsaXR5KHRvT3BlbjogYm9vbGVhbikge1xuICAgIHRvT3BlbiA/IHRoaXMub3BlbigpIDogdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgb25PcHRpb25DbGljayhvcHRpb246IFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXAsIGV2ZW50PzogYW55KSB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgpO1xuICAgIGNvbnN0IGlzVXBkYXRlTW9kZWwgPVxuICAgICAgb3B0aW9uLnZhbHVlICE9PSB0aGlzLnNlbGVjdGVkVmFsdWUgfHwgISEodGhpcy5zZWxlY3RlZFZpZXcgJiYgaW5wdXRWYWx1ZSAhPT0gdGhpcy5zZWxlY3RlZFZpZXcubGFiZWwpO1xuXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUob3B0aW9uLCBpc1VwZGF0ZU1vZGVsKTtcbiAgICB0aGlzLmNvbnRyb2xDb21ib1Zpc2liaWxpdHkoZmFsc2UpO1xuICAgIGlmICghdGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdChbLi4udGhpcy5jYWNoZVN0YXRpY09wdGlvbnNdKTtcbiAgICB9XG5cbiAgICB0aGlzLnByZXZpb3VzU2VhcmNoVmFsdWUgPSB0aGlzLnNlbGVjdGVkVmlldy5sYWJlbDtcbiAgfVxuXG4gIHNjcm9sbFRvKGluZGV4KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBvLWNvbWJvLWl0ZW0tc2VsZWN0ZWQnKTtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSAhc2VsZWN0ZWRJdGVtLmxlbmd0aCB8fCBpbmRleCA8PSAxID8gMCA6IHNlbGVjdGVkSXRlbVswXS5vZmZzZXRUb3AgLSA4ODtcblxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcCk7XG4gIH1cblxuICBnZXRJbnB1dFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIHNldElucHV0VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICB3YXNDbGlja2VkT25Ub2dnbGUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbWJvT3BlbiAmJlxuICAgICAgIXRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICF0aGlzLmljb25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgKCF0aGlzLmNvbnRlbnRFbGVtZW50IHx8ICF0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSlcbiAgICApIHtcbiAgICAgIC8vIEVzY29uZGUgQ29udGVudCBkbyBDb21ibyBxdWFuZG8gZm9yIGNsaWNhZG8gZm9yYVxuICAgICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KGZhbHNlKTtcblxuICAgICAgdGhpcy52ZXJpZnlWYWxpZE9wdGlvbigpO1xuXG4gICAgICAvLyBjYXNvIGZvciBjaGFuZ2VPbkVudGVyIGRldmUgbGltcGFyIG8gc2VsZWN0ZWRWaWV3IHBhcmEgcmVpbmljaWEtbG9cbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdGhpcy5jaGFuZ2VPbkVudGVyICYmICF0aGlzLnNlbGVjdGVkVmFsdWUgPyB1bmRlZmluZWQgOiB0aGlzLnNlbGVjdGVkVmlldztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc2VydmljZSAmJiAhdGhpcy5nZXRJbnB1dFZhbHVlKCkgJiYgIXRoaXMuaXNGaXJzdEZpbHRlcikge1xuICAgICAgICB0aGlzLmFwcGx5RmlsdGVyKCcnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRMYWJlbEZvcm1hdHRlZChsYWJlbDogc3RyaW5nKTogU2FmZUh0bWwge1xuICAgIGNvbnN0IHNhbml0aXplZExhYmVsID0gdGhpcy5zYW5pdGl6ZVRhZ0hUTUwobGFiZWwpO1xuICAgIGxldCBmb3JtYXQ6IHN0cmluZyA9IHNhbml0aXplZExhYmVsO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5pc0ZpbHRlcmluZyB8fFxuICAgICAgKHRoaXMuc2VydmljZSAmJlxuICAgICAgICB0aGlzLmdldElucHV0VmFsdWUoKSAmJlxuICAgICAgICAhdGhpcy5jb21wYXJlT2JqZWN0cyh0aGlzLmNhY2hlT3B0aW9ucywgdGhpcy52aXNpYmxlT3B0aW9ucykgJiZcbiAgICAgICAgdGhpcy5zaG91bGRNYXJrTGV0dGVycylcbiAgICApIHtcbiAgICAgIGNvbnN0IGxhYmVsSW5wdXQgPSB0aGlzLnNhbml0aXplVGFnSFRNTCh0aGlzLmdldElucHV0VmFsdWUoKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgY29uc3QgbGFiZWxMb3dlckNhc2UgPSBzYW5pdGl6ZWRMYWJlbC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICBjb25zdCBvcGVuVGFnQm9sZCA9ICc8c3BhbiBjbGFzcz1cInBvLWZvbnQtdGV4dC1sYXJnZS1ib2xkXCI+JztcbiAgICAgIGNvbnN0IGNsb3NlVGFnQm9sZCA9ICc8L3NwYW4+JztcblxuICAgICAgbGV0IHN0YXJ0U3RyaW5nO1xuICAgICAgbGV0IG1pZGRsZVN0cmluZztcbiAgICAgIGxldCBlbmRTdHJpbmc7XG5cbiAgICAgIHN3aXRjaCAodGhpcy5maWx0ZXJNb2RlKSB7XG4gICAgICAgIGNhc2UgUG9Db21ib0ZpbHRlck1vZGUuc3RhcnRzV2l0aDpcbiAgICAgICAgY2FzZSBQb0NvbWJvRmlsdGVyTW9kZS5jb250YWluczpcbiAgICAgICAgICBjb25zdCBpbmRleE9mTGFiZWxJbnB1dCA9IGxhYmVsTG93ZXJDYXNlLmluZGV4T2YobGFiZWxJbnB1dCk7XG5cbiAgICAgICAgICBpZiAoaW5kZXhPZkxhYmVsSW5wdXQgPiAtMSkge1xuICAgICAgICAgICAgc3RhcnRTdHJpbmcgPSBzYW5pdGl6ZWRMYWJlbC5zdWJzdHJpbmcoMCwgaW5kZXhPZkxhYmVsSW5wdXQpO1xuXG4gICAgICAgICAgICBtaWRkbGVTdHJpbmcgPSBzYW5pdGl6ZWRMYWJlbC5zdWJzdHJpbmcoaW5kZXhPZkxhYmVsSW5wdXQsIGluZGV4T2ZMYWJlbElucHV0ICsgbGFiZWxJbnB1dC5sZW5ndGgpO1xuICAgICAgICAgICAgZW5kU3RyaW5nID0gc2FuaXRpemVkTGFiZWwuc3Vic3RyaW5nKGluZGV4T2ZMYWJlbElucHV0ICsgbGFiZWxJbnB1dC5sZW5ndGgpO1xuXG4gICAgICAgICAgICBmb3JtYXQgPSBzdGFydFN0cmluZyArIG9wZW5UYWdCb2xkICsgbWlkZGxlU3RyaW5nICsgY2xvc2VUYWdCb2xkICsgZW5kU3RyaW5nO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFBvQ29tYm9GaWx0ZXJNb2RlLmVuZHNXaXRoOlxuICAgICAgICAgIGNvbnN0IGxhc3RJbmRleE9mTGFiZWxJbnB1dCA9IGxhYmVsTG93ZXJDYXNlLmxhc3RJbmRleE9mKGxhYmVsSW5wdXQpO1xuXG4gICAgICAgICAgaWYgKGxhc3RJbmRleE9mTGFiZWxJbnB1dCA+IC0xKSB7XG4gICAgICAgICAgICBzdGFydFN0cmluZyA9IHNhbml0aXplZExhYmVsLnN1YnN0cmluZygwLCBsYXN0SW5kZXhPZkxhYmVsSW5wdXQpO1xuICAgICAgICAgICAgbWlkZGxlU3RyaW5nID0gc2FuaXRpemVkTGFiZWwuc3Vic3RyaW5nKGxhc3RJbmRleE9mTGFiZWxJbnB1dCk7XG5cbiAgICAgICAgICAgIGZvcm1hdCA9IHN0YXJ0U3RyaW5nICsgb3BlblRhZ0JvbGQgKyBtaWRkbGVTdHJpbmcgKyBjbG9zZVRhZ0JvbGQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNhZmVIdG1sKGZvcm1hdCk7XG4gIH1cblxuICBzYWZlSHRtbCh2YWx1ZSk6IFNhZmVIdG1sIHtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZWQuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodmFsdWUpO1xuICB9XG5cbiAgaXNWYWxpZENoYXJhY3RlclRvU2VhcmNoKGtleUNvZGUpIHtcbiAgICByZXR1cm4gKFxuICAgICAga2V5Q29kZSAhPT0gOSAmJiAvLyB0YWJcbiAgICAgIGtleUNvZGUgIT09IDEzICYmIC8vIGVudGV0XG4gICAgICBrZXlDb2RlICE9PSAxNiAmJiAvLyBzaGlmdFxuICAgICAga2V5Q29kZSAhPT0gMTcgJiYgLy8gY3RybFxuICAgICAga2V5Q29kZSAhPT0gMTggJiYgLy8gYWx0XG4gICAgICBrZXlDb2RlICE9PSAyMCAmJiAvLyBjYXBzbG9ja1xuICAgICAga2V5Q29kZSAhPT0gMjcgJiYgLy8gZXNjXG4gICAgICBrZXlDb2RlICE9PSAzNyAmJiAvLyBzZXRhXG4gICAgICBrZXlDb2RlICE9PSAzOCAmJiAvLyBzZXRhXG4gICAgICBrZXlDb2RlICE9PSAzOSAmJiAvLyBzZXRhXG4gICAgICBrZXlDb2RlICE9PSA0MCAmJiAvLyBzZXRhXG4gICAgICBrZXlDb2RlICE9PSA5M1xuICAgICk7IC8vIHdpbmRvd3MgbWVudVxuICB9XG5cbiAgc2VhcmNoT25FbnRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc2VydmljZSAmJiAhdGhpcy5zZWxlY3RlZFZpZXcgJiYgdmFsdWUubGVuZ3RoID49IHRoaXMuZmlsdGVyTWlubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNvbnRyb2xBcHBseUZpbHRlcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGp1c3RDb250YWluZXJQb3NpdGlvbigpIHtcbiAgICB0aGlzLmNvbnRyb2xQb3NpdGlvbi5hZGp1c3RQb3NpdGlvbihwb0NvbWJvQ29udGFpbmVyUG9zaXRpb25EZWZhdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2UoKSB7XG4gICAgdGhpcy5jb21ib09wZW4gPSBmYWxzZTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5jb21ib0ljb24gPSAncG8taWNvbi1hcnJvdy1kb3duJztcblxuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG5cbiAgICB0aGlzLmlzRmlsdGVyaW5nID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVMaXN0ZW5lcnMoKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcnMoKTtcblxuICAgIHRoaXMuY2xpY2tvdXRMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgdGhpcy53YXNDbGlja2VkT25Ub2dnbGUoZXZlbnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoKSA9PiB7XG4gICAgICAvLyB0aW1lb3V0IG5lY2Vzc2FyaW8gcG9pcyBhIGFuaW1hw6fDo28gZG8gcG8tbWVudSBpbXBhY3RhIG5vIGFqdXN0ZSBkYSBwb3Npw6fDo28gZG8gY29udGFpbmVyLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFkanVzdENvbnRhaW5lclBvc2l0aW9uKCksIDI1MCk7XG4gICAgfSk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbCwgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIG9uRXJyb3JHZXRPYmplY3RCeVZhbHVlKCkge1xuICAgIHRoaXMudXBkYXRlT3B0aW9uQnlGaWx0ZXJlZFZhbHVlKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkVycm9yRmlsdGVyZWREYXRhKCkge1xuICAgIHRoaXMuaXNTZXJ2ZXJTZWFyY2hpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KFtdKTtcblxuICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eSh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TY3JvbGwgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpO1xuICB9O1xuXG4gIHByaXZhdGUgb3BlbigpIHtcbiAgICB0aGlzLmNvbWJvT3BlbiA9IHRydWU7XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMuY29tYm9JY29uID0gJ3BvLWljb24tYXJyb3ctdXAnO1xuXG4gICAgdGhpcy5pbml0aWFsaXplTGlzdGVuZXJzKCk7XG5cbiAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMuc2Nyb2xsVG8odGhpcy5nZXRJbmRleFNlbGVjdGVkVmlldygpKTtcblxuICAgIHRoaXMuc2V0Q29udGFpbmVyUG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTGlzdGVuZXJzKCkge1xuICAgIGlmICh0aGlzLmNsaWNrb3V0TGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuY2xpY2tvdXRMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmV2ZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZXZlbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FuaXRpemVUYWdIVE1MKHZhbHVlOiBzdHJpbmcgPSAnJykge1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cXDwvZ20sICcmbHQ7JykucmVwbGFjZSgvXFw+L2csICcmZ3Q7Jyk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRhaW5lclBvc2l0aW9uKCkge1xuICAgIHRoaXMuY29udHJvbFBvc2l0aW9uLnNldEVsZW1lbnRzKFxuICAgICAgdGhpcy5jb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICBwb0NvbWJvQ29udGFpbmVyT2Zmc2V0LFxuICAgICAgdGhpcy5pbnB1dEVsLFxuICAgICAgWyd0b3AnLCAnYm90dG9tJ10sXG4gICAgICB0cnVlXG4gICAgKTtcblxuICAgIHRoaXMuYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuY29udGVudEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG4gICAgfVxuICB9XG59XG4iLCI8cG8tZmllbGQtY29udGFpbmVyIFtwLWxhYmVsXT1cImxhYmVsXCIgW3AtaGVscF09XCJoZWxwXCIgW3Atb3B0aW9uYWxdPVwiIXJlcXVpcmVkICYmIG9wdGlvbmFsXCI+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudFwiPlxuICAgIDxkaXYgKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1sZWZ0XCI+XG4gICAgICA8cG8taWNvbiBjbGFzcz1cInBvLWZpZWxkLWljb25cIiBbY2xhc3MucG8tZmllbGQtaWNvbi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtwLWljb25dPVwiaWNvblwiPjwvcG8taWNvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxpbnB1dFxuICAgICAgI2lucFxuICAgICAgY2xhc3M9XCJwby1pbnB1dCBwby1jb21iby1pbnB1dFwiXG4gICAgICBbbmdDbGFzc109XCJjbGVhbiAmJiBpbnAudmFsdWUgPyAncG8taW5wdXQtZG91YmxlLWljb24tcmlnaHQnIDogJ3BvLWlucHV0LWljb24tcmlnaHQnXCJcbiAgICAgIFtjbGFzcy5wby1pbnB1dC1pY29uLWxlZnRdPVwiaWNvblwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVDb21ib1Zpc2liaWxpdHkoKVwiXG4gICAgICAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCJcbiAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJzZWFyY2hPbkVudGVyKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLXJpZ2h0XCI+XG4gICAgICA8cG8tY2xlYW4gKm5nSWY9XCJjbGVhbiAmJiAhZGlzYWJsZWRcIiAocC1jaGFuZ2UtZXZlbnQpPVwiY2xlYXIoJGV2ZW50KVwiIFtwLWVsZW1lbnQtcmVmXT1cImlucHV0RWxcIj4gPC9wby1jbGVhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgICNpY29uQXJyb3dcbiAgICAgICAgY2xhc3M9XCJwby1pY29uIHBvLWZpZWxkLWljb24ge3sgY29tYm9JY29uIH19XCJcbiAgICAgICAgW2NsYXNzLnBvLWZpZWxkLWljb24tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3MucG8tZmllbGQtaWNvbl09XCIhZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29tYm9WaXNpYmlsaXR5KClcIlxuICAgICAgPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICNjb250YWluZXJFbGVtZW50IGNsYXNzPVwicG8tY29tYm8tY29udGFpbmVyXCIgW2hpZGRlbl09XCIhY29tYm9PcGVuICYmICFpc1NlcnZlclNlYXJjaGluZ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NlcnZlclNlYXJjaGluZzsgdGhlbiBsb2FkaW5nVGVtcGxhdGU7IGVsc2Ugb3B0aW9uc1RlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT48L3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20+XG48L3BvLWZpZWxkLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJwby1jb21iby1jb250YWluZXItbG9hZGluZ1wiPlxuICAgIDxwby1sb2FkaW5nPjwvcG8tbG9hZGluZz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI29wdGlvbnNUZW1wbGF0ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpc2libGVPcHRpb25zLmxlbmd0aDsgdGhlbiB2aXNpYmxlT3B0aW9uc1RlbXBsYXRlOyBlbHNlIG5vRGF0YVRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN2aXNpYmxlT3B0aW9uc1RlbXBsYXRlPlxuICA8dWwgI2NvbnRlbnRFbGVtZW50IGNsYXNzPVwicG8tY29tYm8tY29udGFpbmVyLWNvbnRlbnRcIj5cbiAgICA8bGlcbiAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdmlzaWJsZU9wdGlvbnNcIlxuICAgICAgW2NsYXNzLnBvLWNvbWJvLWl0ZW0tc2VsZWN0ZWRdPVwiY29tcGFyZU9iamVjdHMoc2VsZWN0ZWRWaWV3LCBvcHRpb24pXCJcbiAgICAgIChjbGljayk9XCJvcHRpb24/Lm9wdGlvbnMgPyB1bmRlZmluZWQgOiBvbk9wdGlvbkNsaWNrKG9wdGlvbiwgJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbWJvT3B0aW9uVGVtcGxhdGU7IHRoZW4gb3B0aW9uVGVtcGxhdGU7IGVsc2UgZGVmYXVsdE9wdGlvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE9wdGlvblRlbXBsYXRlPlxuICAgICAgICA8bGFiZWwgKm5nSWY9XCJvcHRpb24/Lm9wdGlvbnM7IGVsc2Ugb3B0aW9uTGlua1wiIGNsYXNzPVwicG8tY29tYm8taXRlbS10aXRsZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uTGluaz5cbiAgICAgICAgICA8YSBjbGFzcz1cInBvLWNvbWJvLWl0ZW1cIj5cbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IG5vbmVcIiBbaW5uZXJIVE1MXT1cImdldExhYmVsRm9ybWF0dGVkKG9wdGlvbj8ubGFiZWwpXCI+PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uVGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wdGlvbkdyb3VwTGlzdDsgdGhlbiBvcHRpb25zR3JvdXBUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0T3B0aW9uc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNvcHRpb25zR3JvdXBUZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbWJvT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uLCBzZWxlY3RlZDogY29tcGFyZU9iamVjdHMoc2VsZWN0ZWRWaWV3LCBvcHRpb24pIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE9wdGlvbnNUZW1wbGF0ZT5cbiAgICAgICAgICA8YSBjbGFzcz1cInBvLWNvbWJvLWl0ZW1cIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb21ib09wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vRGF0YVRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwicG8tY29tYm8tY29udGFpbmVyLW5vLWRhdGFcIj5cbiAgICA8ZGl2IGNsYXNzPVwicG8tY29tYm8tbm8tZGF0YSBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgPHNwYW4+XG4gICAgICAgIHt7IGxpdGVyYWxzLm5vRGF0YSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
package/esm2020/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.mjs
CHANGED
|
@@ -261,6 +261,7 @@ export class PoLookupModalBaseComponent {
|
|
|
261
261
|
action: () => {
|
|
262
262
|
this.destroyDynamicForm();
|
|
263
263
|
this.isAdvancedFilter = false;
|
|
264
|
+
this.page = 1;
|
|
264
265
|
this.createDisclaimer();
|
|
265
266
|
},
|
|
266
267
|
label: this.literals.modalAdvancedSearchPrimaryActionLabel
|
|
@@ -398,4 +399,4 @@ __decorate([
|
|
|
398
399
|
type: Input,
|
|
399
400
|
args: ['p-title']
|
|
400
401
|
}] }); })();
|
|
401
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLW1vZGFsLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvb2t1cC9wby1sb29rdXAtbW9kYWwvcG8tbG9va3VwLW1vZGFsLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFBNEIsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUV4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUV0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQVduRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7O0FBRTFFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ3JDLEVBQUUsRUFBb0I7UUFDcEIsdUJBQXVCLEVBQUUsUUFBUTtRQUNqQyx5QkFBeUIsRUFBRSxRQUFRO1FBQ25DLGdCQUFnQixFQUFFLFFBQVE7UUFDMUIsVUFBVSxFQUFFLGlCQUFpQjtRQUM3QixtQkFBbUIsRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsU0FBUztR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QXBDM0MsMEJBQTBCO2NBRC9DLFNBQVM7b0dBRXVDLE9BQU87a0JBQXJELFNBQVM7bUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ0UsT0FBTztrQkFBckQsU0FBUzttQkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFhaEIsZUFBZTtrQkFBM0MsS0FBSzttQkFBQyxvQkFBb0I7WUFNUCxPQUFPO2tCQUExQixLQUFLO21CQUFDLFdBQVc7WUFHQSxLQUFLO2tCQUF0QixLQUFLO21CQUFDLFNBQVM7WUFHVyxhQUFhO2tCQUF2QyxLQUFLO21CQUFDLGtCQUFrQjtZQUdDLFlBQVk7a0JBQXJDLEtBQUs7bUJBQUMsaUJBQWlCO1lBR29CLGNBQWM7a0JBQXpELEtBQUs7bUJBQUMsbUJBQW1CO1lBR1csUUFBUTtrQkFBNUMsS0FBSzttQkFBQyxZQUFZO1lBR08sS0FBSztrQkFBOUIsTUFBTTttQkFBQyxnQkFBZ0I7WUFHRyxhQUFhO2tCQUF2QyxLQUFLO21CQUFDLGtCQUFrQjtZQUdELFVBQVU7a0JBQWpDLEtBQUs7bUJBQUMsZUFBZTtZQVNFLFVBQVU7a0JBQWpDLEtBQUs7bUJBQUMsZUFBZTtZQTBERyxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUF1QkcsS0FBSztrQkFBMUIsS0FBSzttQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBEaXJlY3RpdmUsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycyc7XG5cbmltcG9ydCB7IGlzVHlwZW9mIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBwb0xvY2FsZURlZmF1bHQgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5jb25zdGFudCc7XG5pbXBvcnQgeyBQb01vZGFsQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wby1tb2RhbCc7XG5pbXBvcnQgeyBQb01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wby1tb2RhbC9wby1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9UYWJsZUNvbHVtblNvcnQgfSBmcm9tICcuLi8uLi8uLi9wby10YWJsZS9pbnRlcmZhY2VzL3BvLXRhYmxlLWNvbHVtbi1zb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uU29ydFR5cGUgfSBmcm9tICcuLi8uLi8uLi9wby10YWJsZSc7XG5pbXBvcnQgeyBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0IH0gZnJvbSAnLi4vLi4vLi4vcG8tdGFibGUvcG8tdGFibGUtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcblxuaW1wb3J0IHsgUG9Mb29rdXBDb2x1bW4gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwRmlsdGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wby1sb29rdXAtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cEZpbHRlcmVkSXRlbXNQYXJhbXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1maWx0ZXJlZC1pdGVtcy1wYXJhbXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwTGl0ZXJhbHMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBSZXNwb25zZUFwaSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG8tbG9va3VwLXJlc3BvbnNlLWFwaS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9EaXNjbGFpbWVyIH0gZnJvbSAnLi8uLi8uLi8uLi9wby1kaXNjbGFpbWVyL3BvLWRpc2NsYWltZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvRGlzY2xhaW1lckdyb3VwIH0gZnJvbSAnLi8uLi8uLi8uLi9wby1kaXNjbGFpbWVyLWdyb3VwL3BvLWRpc2NsYWltZXItZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwQWR2YW5jZWRGaWx0ZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1hZHZhbmNlZC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVDb21wb25lbnQgfSBmcm9tICcuLy4uLy4uLy4uL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBwb0xvb2t1cExpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IDxQb0xvb2t1cExpdGVyYWxzPntcbiAgICBtb2RhbFByaW1hcnlBY3Rpb25MYWJlbDogJ1NlbGVjdCcsXG4gICAgbW9kYWxTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ0NhbmNlbCcsXG4gICAgbW9kYWxQbGFjZWhvbGRlcjogJ1NlYXJjaCcsXG4gICAgbW9kYWxUaXRsZTogJ1NlbGVjdCBhIHJlY29yZCcsXG4gICAgbW9kYWxUYWJsZU5vQ29sdW1uczogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5lbi5ub0NvbHVtbnMsXG4gICAgbW9kYWxUYWJsZU5vRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5lbi5ub0RhdGEsXG4gICAgbW9kYWxUYWJsZUxvYWRpbmdEYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LmVuLmxvYWRpbmdEYXRhLFxuICAgIG1vZGFsVGFibGVMb2FkTW9yZURhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQuZW4ubG9hZE1vcmVEYXRhLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2g6ICdBZHZhbmNlZCBzZWFyY2gnLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hUaXRsZTogJ0FkdmFuY2VkIHNlYXJjaCcsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFByaW1hcnlBY3Rpb25MYWJlbDogJ0ZpbHRlcicsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnUmV0dXJuJyxcbiAgICBtb2RhbERpc2NsYWltZXJHcm91cFRpdGxlOiAnUHJlc2VudGluZyByZXN1bHRzIGZpbHRlcmVkIGJ5OidcbiAgfSxcbiAgZXM6IDxQb0xvb2t1cExpdGVyYWxzPntcbiAgICBtb2RhbFByaW1hcnlBY3Rpb25MYWJlbDogJ1NlbGVjY2lvbmFyJyxcbiAgICBtb2RhbFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnQ2FuY2VsYXInLFxuICAgIG1vZGFsUGxhY2Vob2xkZXI6ICdCdXNjYXInLFxuICAgIG1vZGFsVGl0bGU6ICdTZWxlY2Npb25lIHVuIHJlZ2lzdHJvJyxcbiAgICBtb2RhbFRhYmxlTm9Db2x1bW5zOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LmVzLm5vQ29sdW1ucyxcbiAgICBtb2RhbFRhYmxlTm9EYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LmVzLm5vRGF0YSxcbiAgICBtb2RhbFRhYmxlTG9hZGluZ0RhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQuZXMubG9hZGluZ0RhdGEsXG4gICAgbW9kYWxUYWJsZUxvYWRNb3JlRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5lcy5sb2FkTW9yZURhdGEsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaDogJ0LDunNxdWVkYSBBdmFuemFkYScsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFRpdGxlOiAnQsO6c3F1ZWRhIEF2YW56YWRhJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoUHJpbWFyeUFjdGlvbkxhYmVsOiAnRmlsdHJhcicsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnVnVlbHZlJyxcbiAgICBtb2RhbERpc2NsYWltZXJHcm91cFRpdGxlOiAnUHJlc2VudGFyIHJlc3VsdGFkb3MgZmlsdHJhZG9zIHBvcjonXG4gIH0sXG4gIHB0OiA8UG9Mb29rdXBMaXRlcmFscz57XG4gICAgbW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw6ICdTZWxlY2lvbmFyJyxcbiAgICBtb2RhbFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnQ2FuY2VsYXInLFxuICAgIG1vZGFsUGxhY2Vob2xkZXI6ICdQZXNxdWlzYXInLFxuICAgIG1vZGFsVGl0bGU6ICdTZWxlY2lvbmUgdW0gcmVnaXN0cm8nLFxuICAgIG1vZGFsVGFibGVOb0NvbHVtbnM6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQucHQubm9Db2x1bW5zLFxuICAgIG1vZGFsVGFibGVOb0RhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQucHQubm9EYXRhLFxuICAgIG1vZGFsVGFibGVMb2FkaW5nRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5wdC5sb2FkaW5nRGF0YSxcbiAgICBtb2RhbFRhYmxlTG9hZE1vcmVEYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LnB0LmxvYWRNb3JlRGF0YSxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoOiAnQnVzY2EgYXZhbsOnYWRhJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoVGl0bGU6ICdCdXNjYSBBdmFuw6dhZGEnLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hQcmltYXJ5QWN0aW9uTGFiZWw6ICdGaWx0cmFyJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICdWb2x0YXInLFxuICAgIG1vZGFsRGlzY2xhaW1lckdyb3VwVGl0bGU6ICdBcHJlc2VudGFuZG8gcmVzdWx0YWRvcyBmaWx0cmFkb3MgcG9yOidcbiAgfSxcbiAgcnU6IDxQb0xvb2t1cExpdGVyYWxzPntcbiAgICBtb2RhbFByaW1hcnlBY3Rpb25MYWJlbDogJ9Cy0YvQsdC40YDQsNGC0YwnLFxuICAgIG1vZGFsU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICfQvtGC0LzQtdC90LjRgtGMJyxcbiAgICBtb2RhbFBsYWNlaG9sZGVyOiAn0L/QvtC40YHQuicsXG4gICAgbW9kYWxUaXRsZTogJ9CS0YvQsdC10YDQuNGC0LUg0LfQsNC/0LjRgdGMJyxcbiAgICBtb2RhbFRhYmxlTm9Db2x1bW5zOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LnJ1Lm5vQ29sdW1ucyxcbiAgICBtb2RhbFRhYmxlTm9EYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LnJ1Lm5vRGF0YSxcbiAgICBtb2RhbFRhYmxlTG9hZGluZ0RhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQucnUubG9hZGluZ0RhdGEsXG4gICAgbW9kYWxUYWJsZUxvYWRNb3JlRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5ydS5sb2FkTW9yZURhdGEsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaDogJ9Cg0LDRgdGI0LjRgNC10L3QvdGL0Lkg0L/QvtC40YHQuicsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFRpdGxlOiAn0KDQsNGB0YjQuNGA0LXQvdC90YvQuSDQv9C+0LjRgdC6JyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoUHJpbWFyeUFjdGlvbkxhYmVsOiAn0KTQuNC70YzRgtGAJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICfQktC10YDQvdC40YHRjCcsXG4gICAgbW9kYWxEaXNjbGFpbWVyR3JvdXBUaXRsZTogJ9Cf0YDQtdC00YHRgtCw0LLQu9C10L3QuNC1INGA0LXQt9GD0LvRjNGC0LDRgtC+0LIg0L7RgtGE0LjQu9GM0YLRgNC+0LLQsNC90L4g0L/QvjonXG4gIH1cbn07XG5cbi8qKlxuICogQGRvY3NQcml2YXRlXG4gKlxuICogQ2xhc3NlIGJhc2UgZG8gY29tcG9uZW50ZSBQbyBMb29rdXAgTW9kYWwuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvTG9va3VwTW9kYWxCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBAVmlld0NoaWxkKFBvTW9kYWxDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHBvTW9kYWw6IFBvTW9kYWxDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoUG9UYWJsZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgcG9UYWJsZTogUG9UYWJsZUNvbXBvbmVudDtcblxuICAvKipcbiAgICogT2JqZXRvIGNvbSBvcyBjYW1wb3MgcXVlIHNlcsOjbyBjcmlhZG9zIG5vIGJ1c2NhIGF2YW7Dp2FkYS5cbiAgICpcbiAgICogPiBDYXNvIG7Do28gc2VqYSBwYXNzYWRvIHVtIG9iamV0byBvdSBlbnTDo28gZWxlIGVzdGVqYSBlbSBicmFuY28gbyBsaW5rIGRlIGJ1c2NhIGF2YW7Dp2FkYSBmaWNhcsOhIGVzY29uZGlkby5cbiAgICpcbiAgICogRXhlbXBsbyBkZSBVUkwgY29tIGJ1c2NhIGF2YW7Dp2FkYTogaHR0cDovL2xvY2FsaG9zdDozMDAwL3YxL2hlcm9lcz9maWx0ZXI9JnBhZ2U9MSZwYWdlU2l6ZT0xMGAmbmFtZT1Ub255JTIwU3Rhcmsmbmlja25hbWU9SG9tZW0lMjBkZSUyMEZlcnJvJmVtYWlsPWlybm1hbkBtYXJ2ZWwuY29tYFxuICAgKlxuICAgKiBDYXNvIGFsZ3VtIHBhcsOibWV0cm8gc2VqYSB1bWEgbGlzdGEsIGEgY29uY2F0ZW5hw6fDo28gw6kgZmVpdGEgdXRpbGl6YW5kbyB2aXJndWxhLlxuICAgKiBFeGVtcGxvOiBodHRwOi8vbG9jYWxob3N0OjMwMDAvdjEvaGVyb2VzP2ZpbHRlcj0mcGFnZT0xJnBhZ2VTaXplPTEwYCZuYW1lPVRvbnklMjBTdGFyayxQZXRlciUyMFBhcmtlcixHb2hhbmBcbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1hZHZhbmNlZC1maWx0ZXJzJykgYWR2YW5jZWRGaWx0ZXJzOiBBcnJheTxQb0xvb2t1cEFkdmFuY2VkRmlsdGVyPjtcblxuICAvKipcbiAgICogTGlzdGEgZGFzIGNvbHVuYXMgZGEgdGFiZWxhLlxuICAgKiBFc3NhIHByb3ByaWVkYWRlIGRldmUgcmVjZWJlciB1bSBhcnJheSBkZSBvYmpldG9zIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSBQb0xvb2t1cENvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgncC1jb2x1bW5zJykgY29sdW1uczogQXJyYXk8UG9Mb29rdXBDb2x1bW4+O1xuXG4gIC8qKiBMaXN0YSBkZSBpdGVucyBkYSB0YWJlbGEuICovXG4gIEBJbnB1dCgncC1pdGVtcycpIGl0ZW1zOiBBcnJheTxhbnk+O1xuXG4gIC8qKiBDbGFzc2UgZGUgc2VydmnDp28gY29tIGEgaW1wbGVtZW50YcOnw6NvIGRvIGNsaWVudGUuICovXG4gIEBJbnB1dCgncC1maWx0ZXItc2VydmljZScpIGZpbHRlclNlcnZpY2U6IFBvTG9va3VwRmlsdGVyO1xuXG4gIC8qKiBDbGFzc2UgZGUgc2VydmnDp28gY29tIGEgaW1wbGVtZW50YcOnw6NvIGRvIGNsaWVudGUuICovXG4gIEBJbnB1dCgncC1maWx0ZXItcGFyYW1zJykgZmlsdGVyUGFyYW1zOiBhbnk7XG5cbiAgLyoqIFNlIHZlcmRhZGVpcm8sIGF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgc2Nyb2xsIGluZmluaXRvIHBhcmEgYSB0YWJlbGEgZXhpYmlkYSBubyByZXRvcm5vIGRhIGNvbnN1bHRhLiAqL1xuICBASW5wdXQoJ3AtaW5maW5pdGUtc2Nyb2xsJykgQElucHV0Qm9vbGVhbigpIGluZmluaXRlU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFNlIHZlcmRhZGVpcm8sIGF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgbXVsdGlwbGEgc2VsZcOnw6NvLiAqL1xuICBASW5wdXQoJ3AtbXVsdGlwbGUnKSBASW5wdXRCb29sZWFuKCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRXZlbnRvIHV0aWxpemFkbyBhbyBzZWxlY2lvbmFyIHVtIHJlZ2lzdHJvIGRhIHRhYmVsYS4gKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UtbW9kZWwnKSBtb2RlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKiogQ2xhc3NlIGRlIHNlcnZpw6dvIGNvbSBpdGVtcyBzZWxlY2lvbmFkb3MgKi9cbiAgQElucHV0KCdwLXNlbGVjdGVkLWl0ZW1zJykgc2VsZWN0ZWRJdGVtczogYW55O1xuXG4gIC8qKiBJbmRpY2EgYSBjb2x1bmEgcXVlIHNlcsOhIHV0aWxpemFkYSBjb21vIGRlc2NyacOnw6NvIGRvIGNhbXBvIGUgY29tbyBmaWx0cm8gZGVudHJvIGRhIGphbmVsYS4gKi9cbiAgQElucHV0KCdwLWZpZWxkLWxhYmVsJykgZmllbGRMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIGEgY29sdW5hIHF1ZSBzZXLDoSB1dGlsaXphZGEgY29tbyB2YWxvciBkbyBjYW1wby5cbiAgICpcbiAgICogPiBBdGVuw6fDo286IENhc28gbsOjbyBzZWphIHBhc3NhZGEgb3UgdGVuaGEgbyBjb250ZcO6ZG8gaW5jb3JyZXRvLCBuw6NvIGlyw6EgYXR1YWxpemFyIG8gbW9kZWwgZG8gZm9ybXVsw6FyaW8uXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtdmFsdWUnKSBmaWVsZFZhbHVlOiBzdHJpbmc7XG5cbiAgaGFzTmV4dCA9IHRydWU7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBwYWdlID0gMTtcbiAgcGFnZVNpemUgPSAxMDtcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xuICB0YWJsZUxpdGVyYWxzOiBhbnk7XG5cbiAgLy8gUHJvcHJpZWRhZGUgZGEgbW9kYWwgZGUgYnVzY2EgYXZhbsOnYWRhOlxuICBhZHZhbmNlZEZpbHRlck1vZGFsVGl0bGUgPSAnJztcbiAgZHluYW1pY0Zvcm1WYWx1ZSA9IHt9O1xuICBkaXNjbGFpbWVyITogUG9EaXNjbGFpbWVyO1xuICBkaXNjbGFpbWVyR3JvdXAhOiBQb0Rpc2NsYWltZXJHcm91cDtcbiAgaXNBZHZhbmNlZEZpbHRlciA9IGZhbHNlO1xuICBwcmltYXJ5QWN0aW9uQWR2YW5jZWRGaWx0ZXIhOiBQb01vZGFsQWN0aW9uO1xuICBzZWNvbmRhcnlBY3Rpb25BZHZhbmNlZEZpbHRlciE6IFBvTW9kYWxBY3Rpb247XG4gIHNlbGVjdGVkczogQXJyYXk8YW55PiA9IFtdO1xuXG4gIHByb3RlY3RlZCBzb3J0OiBQb1RhYmxlQ29sdW1uU29ydDtcblxuICBwcml2YXRlIGZpbHRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHNlYXJjaFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHNob3dNb3JlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBfbGl0ZXJhbHM6IFBvTG9va3VwTGl0ZXJhbHM7XG4gIHByaXZhdGUgX3RpdGxlOiBzdHJpbmc7XG4gIHByaXZhdGUgbGFuZ3VhZ2U6IHN0cmluZyA9IHBvTG9jYWxlRGVmYXVsdDtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICBwcmltYXJ5QWN0aW9uOiBQb01vZGFsQWN0aW9uID0ge1xuICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgbGV0IHNlbGVjdGVkc0l0ZW1zOiBBcnJheTxhbnk+ID0gW107XG4gICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50Wyckc2VsZWN0ZWQnXSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRzSXRlbXMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRzSXRlbXMgPSB0aGlzLnNlbGVjdGVkcztcbiAgICAgIH1cbiAgICAgIHRoaXMubW9kZWwuZW1pdChzZWxlY3RlZHNJdGVtcyk7XG4gICAgICB0aGlzLnBvTW9kYWwuY2xvc2UoKTtcbiAgICB9LFxuICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLm1vZGFsUHJpbWFyeUFjdGlvbkxhYmVsXG4gIH07XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgc2Vjb25kYXJ5QWN0aW9uOiBQb01vZGFsQWN0aW9uID0ge1xuICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgdGhpcy5tb2RlbC5lbWl0KG51bGwpO1xuICAgICAgdGhpcy5wb01vZGFsLmNsb3NlKCk7XG4gICAgfSxcbiAgICBsYWJlbDogdGhpcy5saXRlcmFscy5tb2RhbFNlY29uZGFyeUFjdGlvbkxhYmVsXG4gIH07XG5cbiAgLyoqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby1sb29rdXAtbW9kYWxgLiAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvTG9va3VwTGl0ZXJhbHMpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSB7XG4gICAgICAgIC4uLnBvTG9va3VwTGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAgIC4uLnBvTG9va3VwTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICAgIGlmICh2YWx1ZS5tb2RhbFRpdGxlKSB7XG4gICAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmxpdGVyYWxzLm1vZGFsVGl0bGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0gcG9Mb29rdXBMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuICAgIHRoaXMucHJpbWFyeUFjdGlvbi5sYWJlbCA9IHRoaXMubGl0ZXJhbHMubW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw7XG4gICAgdGhpcy5zZWNvbmRhcnlBY3Rpb24ubGFiZWwgPSB0aGlzLmxpdGVyYWxzLm1vZGFsU2Vjb25kYXJ5QWN0aW9uTGFiZWw7XG4gICAgdGhpcy5zZXRUYWJsZUxpdGVyYWxzKCk7XG4gIH1cblxuICBnZXQgbGl0ZXJhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpdGVyYWxzIHx8IHBvTG9va3VwTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICB9XG5cbiAgLyoqIFTDrXR1bG8gZGEgbW9kYWwuICovXG4gIEBJbnB1dCgncC10aXRsZScpIHNldCB0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGl0bGUgPSBpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpID8gdmFsdWUgOiB0aGlzLmxpdGVyYWxzLm1vZGFsVGl0bGU7XG4gIH1cblxuICBnZXQgdGl0bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RpdGxlO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSwgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG93TW9yZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zaG93TW9yZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0QWR2YW5jZWRGaWx0ZXJNb2RhbFByb3BlcnRpZXMoKTtcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhKCk7XG4gICAgdGhpcy5zZXRUYWJsZUxpdGVyYWxzKCk7XG4gIH1cblxuICBjcmVhdGVEaXNjbGFpbWVyKCkge1xuICAgIHRoaXMuZGlzY2xhaW1lckdyb3VwLmRpc2NsYWltZXJzID0gW107XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5keW5hbWljRm9ybVZhbHVlKSkge1xuICAgICAgdGhpcy5hZGREaXNjbGFpbWVyKHZhbHVlLCBrZXkpO1xuICAgIH1cblxuICAgIGlmICghT2JqZWN0LnZhbHVlcyh0aGlzLmR5bmFtaWNGb3JtVmFsdWUpLnNvbWUodiA9PiB2ICE9PSBudWxsICYmIHR5cGVvZiB2ICE9PSAndW5kZWZpbmVkJykpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBhZGREaXNjbGFpbWVyKHZhbHVlOiBhbnksIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpc2NsYWltZXIgPSA8YW55PnsgcHJvcGVydHk6IHByb3BlcnR5IH07XG4gICAgdGhpcy5kaXNjbGFpbWVyLnZhbHVlID0gdmFsdWU7XG5cbiAgICB0aGlzLmRpc2NsYWltZXJHcm91cC5kaXNjbGFpbWVycyA9IFsuLi50aGlzLmRpc2NsYWltZXJHcm91cC5kaXNjbGFpbWVycywgdGhpcy5kaXNjbGFpbWVyXTtcbiAgfVxuXG4gIG9uQ2hhbmdlRGlzY2xhaW1lckdyb3VwKCkge1xuICAgIGlmICghdGhpcy5zZWFyY2hWYWx1ZSkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuXG4gICAgICB0aGlzLnNlYXJjaEZpbHRlcmVkSXRlbXMoKTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlID0gMTtcblxuICAgIGlmICh0aGlzLnNlYXJjaFZhbHVlKSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmRpc2NsYWltZXJHcm91cC5kaXNjbGFpbWVycyA9IFtdO1xuXG4gICAgICB0aGlzLnNlYXJjaEZpbHRlcmVkSXRlbXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsaXplRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaEZpbHRlcmVkSXRlbXMoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPSB0aGlzLmdldEZpbHRlcmVkSXRlbXModGhpcy5zZWFyY2hWYWx1ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLnNldExvb2t1cFJlc3BvbnNlUHJvcGVydGllcygpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChkYXRhOiBQb0xvb2t1cFJlc3BvbnNlQXBpKSA9PiB0aGlzLnNldExvb2t1cFJlc3BvbnNlUHJvcGVydGllcyhkYXRhKSxcbiAgICAgICAgKCkgPT4ge31cbiAgICAgICk7XG4gIH1cblxuICBzaG93TW9yZUV2ZW50KCkge1xuICAgIHRoaXMucGFnZSsrO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuc2hvd01vcmVTdWJzY3JpcHRpb24gPSB0aGlzLmdldEZpbHRlcmVkSXRlbXModGhpcy5zZWFyY2hWYWx1ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmhhc05leHQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChkYXRhOiBQb0xvb2t1cFJlc3BvbnNlQXBpKSA9PiB7XG4gICAgICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zLCAuLi5kYXRhLml0ZW1zXTtcbiAgICAgICAgICB0aGlzLmhhc05leHQgPSBkYXRhLmhhc05leHQ7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkSXRlbXMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge31cbiAgICAgICk7XG4gIH1cblxuICAvL03DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBzZWxlY2lvbmFyIGFzIGxpbmhhcyBxdWFuZG8gYWJyZSBvIG1vZGFsLlxuICBzZXRTZWxlY3RlZEl0ZW1zKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRzLmZvckVhY2goc2VsZWN0ZWRJdGVtID0+IHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMucG9UYWJsZS5zZWxlY3RSb3dJdGVtKGl0ZW0gPT4gaXRlbVt0aGlzLmZpZWxkVmFsdWVdID09PSBzZWxlY3RlZEl0ZW0udmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wb1RhYmxlLnNlbGVjdFJvd0l0ZW0oaXRlbSA9PiBpdGVtW3RoaXMuZmllbGRWYWx1ZV0gPT09IHNlbGVjdGVkSXRlbVt0aGlzLmZpZWxkVmFsdWVdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIGNyaWFyIG9zIGRpc2NsYWltZXJzIHF1YW5kbyBhYnJlIG8gbW9kYWwuXG4gIHNldERpc2NsYWltZXJzSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiAhQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkSXRlbXMpKSB7XG4gICAgICB0aGlzLm11bHRpcGxlID8gKHRoaXMuc2VsZWN0ZWRzID0gW3sgdmFsdWU6IHRoaXMuc2VsZWN0ZWRJdGVtcyB9XSkgOiAodGhpcy5zZWxlY3RlZHMgPSBbdGhpcy5zZWxlY3RlZEl0ZW1zXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkcyA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0QWR2YW5jZWRGaWx0ZXJNb2RhbFByb3BlcnRpZXMoKSB7XG4gICAgdGhpcy5hZHZhbmNlZEZpbHRlck1vZGFsVGl0bGUgPSB0aGlzLmxpdGVyYWxzLm1vZGFsQWR2YW5jZWRTZWFyY2hUaXRsZTtcblxuICAgIHRoaXMuZGlzY2xhaW1lckdyb3VwID0ge1xuICAgICAgdGl0bGU6IHRoaXMubGl0ZXJhbHMubW9kYWxEaXNjbGFpbWVyR3JvdXBUaXRsZSxcbiAgICAgIGRpc2NsYWltZXJzOiBbXVxuICAgIH07XG5cbiAgICB0aGlzLnByaW1hcnlBY3Rpb25BZHZhbmNlZEZpbHRlciA9IHtcbiAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmRlc3Ryb3lEeW5hbWljRm9ybSgpO1xuICAgICAgICB0aGlzLmlzQWR2YW5jZWRGaWx0ZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jcmVhdGVEaXNjbGFpbWVyKCk7XG4gICAgICB9LFxuICAgICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMubW9kYWxBZHZhbmNlZFNlYXJjaFByaW1hcnlBY3Rpb25MYWJlbFxuICAgIH07XG5cbiAgICB0aGlzLnNlY29uZGFyeUFjdGlvbkFkdmFuY2VkRmlsdGVyID0ge1xuICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZGVzdHJveUR5bmFtaWNGb3JtKCk7XG4gICAgICAgIHRoaXMuaXNBZHZhbmNlZEZpbHRlciA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLm1vZGFsQWR2YW5jZWRTZWFyY2hTZWNvbmRhcnlBY3Rpb25MYWJlbFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEFkdmFuY2VkRmlsdGVycyhhZHZhbmNlZFBhcmFtczogYW55KSB7XG4gICAgaWYgKGFkdmFuY2VkUGFyYW1zICYmIGFkdmFuY2VkUGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnM6IE9iamVjdCA9IHt9O1xuICAgICAgbGV0IHZhbGlkYXRlZEFkdmFjZW5kRmlsdGVyczogYW55O1xuXG4gICAgICBhZHZhbmNlZFBhcmFtcy5mb3JFYWNoKChmaWx0ZXI6IGFueSkgPT4ge1xuICAgICAgICBmaWx0ZXJzW2ZpbHRlci5wcm9wZXJ0eV0gPSBmaWx0ZXIudmFsdWUgaW5zdGFuY2VvZiBBcnJheSA/IGZpbHRlci52YWx1ZS5qb2luKCkgOiBmaWx0ZXIudmFsdWU7XG5cbiAgICAgICAgdmFsaWRhdGVkQWR2YWNlbmRGaWx0ZXJzID0geyAuLi52YWxpZGF0ZWRBZHZhY2VuZEZpbHRlcnMsIC4uLmZpbHRlcnMgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVkQWR2YWNlbmRGaWx0ZXJzO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcmVkSXRlbXMoZmlsdGVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFBvTG9va3VwUmVzcG9uc2VBcGk+IHtcbiAgICBjb25zdCBmaWx0ZXJlZFBhcmFtczogUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zID0gdGhpcy5nZXRGaWx0ZXJlZFBhcmFtcyhmaWx0ZXIpO1xuXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyU2VydmljZS5nZXRGaWx0ZXJlZEl0ZW1zKGZpbHRlcmVkUGFyYW1zKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyZWRQYXJhbXMoZmlsdGVyOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IHBhZ2UsIHBhZ2VTaXplLCBmaWx0ZXJQYXJhbXMsIHNvcnQgfSA9IHRoaXM7XG5cbiAgICBjb25zdCBmaWx0ZXJlZFBhcmFtcyA9IHt9O1xuICAgIGNvbnN0IG9yZGVyID0gdGhpcy5nZXRPcmRlclBhcmFtKHNvcnQpO1xuICAgIGNvbnN0IGFkdmFuY2VkRmlsdGVycyA9IHRoaXMuZ2V0QWR2YW5jZWRGaWx0ZXJzKHRoaXMuZGlzY2xhaW1lckdyb3VwLmRpc2NsYWltZXJzKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7IGZpbHRlciwgcGFnZSwgcGFnZVNpemUsIG9yZGVyLCBmaWx0ZXJQYXJhbXMsIGFkdmFuY2VkRmlsdGVycyB9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zKSB7XG4gICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkgJiYgcGFyYW1zW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaWx0ZXJlZFBhcmFtc1trZXldID0gcGFyYW1zW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlcmVkUGFyYW1zO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcmRlclBhcmFtKHNvcnQ6IFBvVGFibGVDb2x1bW5Tb3J0ID0geyB0eXBlOiB1bmRlZmluZWQgfSkge1xuICAgIGNvbnN0IHsgY29sdW1uLCB0eXBlIH0gPSBzb3J0O1xuXG4gICAgaWYgKCFjb2x1bW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gUG9UYWJsZUNvbHVtblNvcnRUeXBlLkRlc2NlbmRpbmcpIHtcbiAgICAgIHJldHVybiBgLSR7Y29sdW1uLnByb3BlcnR5fWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvbHVtbi5wcm9wZXJ0eX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG5cbiAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0RmlsdGVyZWRJdGVtcygnJykuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5zZXRMb29rdXBSZXNwb25zZVByb3BlcnRpZXMoZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldExvb2t1cFJlc3BvbnNlUHJvcGVydGllcyhkYXRhPzogUG9Mb29rdXBSZXNwb25zZUFwaSkge1xuICAgIHRoaXMuaXRlbXMgPSBkYXRhPy5pdGVtcyA/PyBbXTtcbiAgICB0aGlzLmhhc05leHQgPSBkYXRhPy5oYXNOZXh0ID8/IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZXREaXNjbGFpbWVyc0l0ZW1zKCk7XG4gICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFRhYmxlTGl0ZXJhbHMoKSB7XG4gICAgdGhpcy50YWJsZUxpdGVyYWxzID0ge1xuICAgICAgJ25vQ29sdW1ucyc6IHRoaXMubGl0ZXJhbHMubW9kYWxUYWJsZU5vQ29sdW1ucyxcbiAgICAgICdub0RhdGEnOiB0aGlzLmxpdGVyYWxzLm1vZGFsVGFibGVOb0RhdGEsXG4gICAgICAnbG9hZGluZ0RhdGEnOiB0aGlzLmxpdGVyYWxzLm1vZGFsVGFibGVMb2FkaW5nRGF0YSxcbiAgICAgICdsb2FkTW9yZURhdGEnOiB0aGlzLmxpdGVyYWxzLm1vZGFsVGFibGVMb2FkTW9yZURhdGFcbiAgICB9O1xuICB9XG5cbiAgLy8gTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIGFicmlyIGEgbW9kYWwgZGUgYnVzY2EgZGFzIGluZm9ybWHDp8O1ZXMuXG4gIGFic3RyYWN0IG9wZW5Nb2RhbCgpOiB2b2lkO1xuXG4gIC8vIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBkZXN0cnVpciBvIGR5bmFtaWNGb3JtXG4gIGFic3RyYWN0IGRlc3Ryb3lEeW5hbWljRm9ybSgpOiB2b2lkO1xufVxuIl19
|
|
402
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLW1vZGFsLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvb2t1cC9wby1sb29rdXAtbW9kYWwvcG8tbG9va3VwLW1vZGFsLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFBNEIsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUV4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUV0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQVduRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7O0FBRTFFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ3JDLEVBQUUsRUFBb0I7UUFDcEIsdUJBQXVCLEVBQUUsUUFBUTtRQUNqQyx5QkFBeUIsRUFBRSxRQUFRO1FBQ25DLGdCQUFnQixFQUFFLFFBQVE7UUFDMUIsVUFBVSxFQUFFLGlCQUFpQjtRQUM3QixtQkFBbUIsRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsU0FBUztR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RUFBaUM7QUFHdkM7SUFBZixZQUFZLEVBQUU7NERBQTJCO3VGQXBDM0MsMEJBQTBCO2NBRC9DLFNBQVM7b0dBRXVDLE9BQU87a0JBQXJELFNBQVM7bUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ0UsT0FBTztrQkFBckQsU0FBUzttQkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFhaEIsZUFBZTtrQkFBM0MsS0FBSzttQkFBQyxvQkFBb0I7WUFNUCxPQUFPO2tCQUExQixLQUFLO21CQUFDLFdBQVc7WUFHQSxLQUFLO2tCQUF0QixLQUFLO21CQUFDLFNBQVM7WUFHVyxhQUFhO2tCQUF2QyxLQUFLO21CQUFDLGtCQUFrQjtZQUdDLFlBQVk7a0JBQXJDLEtBQUs7bUJBQUMsaUJBQWlCO1lBR29CLGNBQWM7a0JBQXpELEtBQUs7bUJBQUMsbUJBQW1CO1lBR1csUUFBUTtrQkFBNUMsS0FBSzttQkFBQyxZQUFZO1lBR08sS0FBSztrQkFBOUIsTUFBTTttQkFBQyxnQkFBZ0I7WUFHRyxhQUFhO2tCQUF2QyxLQUFLO21CQUFDLGtCQUFrQjtZQUdELFVBQVU7a0JBQWpDLEtBQUs7bUJBQUMsZUFBZTtZQVNFLFVBQVU7a0JBQWpDLEtBQUs7bUJBQUMsZUFBZTtZQTBERyxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUF1QkcsS0FBSztrQkFBMUIsS0FBSzttQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBEaXJlY3RpdmUsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycyc7XG5cbmltcG9ydCB7IGlzVHlwZW9mIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBwb0xvY2FsZURlZmF1bHQgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5jb25zdGFudCc7XG5pbXBvcnQgeyBQb01vZGFsQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wby1tb2RhbCc7XG5pbXBvcnQgeyBQb01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wby1tb2RhbC9wby1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9UYWJsZUNvbHVtblNvcnQgfSBmcm9tICcuLi8uLi8uLi9wby10YWJsZS9pbnRlcmZhY2VzL3BvLXRhYmxlLWNvbHVtbi1zb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uU29ydFR5cGUgfSBmcm9tICcuLi8uLi8uLi9wby10YWJsZSc7XG5pbXBvcnQgeyBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0IH0gZnJvbSAnLi4vLi4vLi4vcG8tdGFibGUvcG8tdGFibGUtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcblxuaW1wb3J0IHsgUG9Mb29rdXBDb2x1bW4gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwRmlsdGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wby1sb29rdXAtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cEZpbHRlcmVkSXRlbXNQYXJhbXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1maWx0ZXJlZC1pdGVtcy1wYXJhbXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwTGl0ZXJhbHMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBSZXNwb25zZUFwaSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG8tbG9va3VwLXJlc3BvbnNlLWFwaS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9EaXNjbGFpbWVyIH0gZnJvbSAnLi8uLi8uLi8uLi9wby1kaXNjbGFpbWVyL3BvLWRpc2NsYWltZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvRGlzY2xhaW1lckdyb3VwIH0gZnJvbSAnLi8uLi8uLi8uLi9wby1kaXNjbGFpbWVyLWdyb3VwL3BvLWRpc2NsYWltZXItZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwQWR2YW5jZWRGaWx0ZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1hZHZhbmNlZC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVDb21wb25lbnQgfSBmcm9tICcuLy4uLy4uLy4uL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBwb0xvb2t1cExpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IDxQb0xvb2t1cExpdGVyYWxzPntcbiAgICBtb2RhbFByaW1hcnlBY3Rpb25MYWJlbDogJ1NlbGVjdCcsXG4gICAgbW9kYWxTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ0NhbmNlbCcsXG4gICAgbW9kYWxQbGFjZWhvbGRlcjogJ1NlYXJjaCcsXG4gICAgbW9kYWxUaXRsZTogJ1NlbGVjdCBhIHJlY29yZCcsXG4gICAgbW9kYWxUYWJsZU5vQ29sdW1uczogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5lbi5ub0NvbHVtbnMsXG4gICAgbW9kYWxUYWJsZU5vRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5lbi5ub0RhdGEsXG4gICAgbW9kYWxUYWJsZUxvYWRpbmdEYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LmVuLmxvYWRpbmdEYXRhLFxuICAgIG1vZGFsVGFibGVMb2FkTW9yZURhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQuZW4ubG9hZE1vcmVEYXRhLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2g6ICdBZHZhbmNlZCBzZWFyY2gnLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hUaXRsZTogJ0FkdmFuY2VkIHNlYXJjaCcsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFByaW1hcnlBY3Rpb25MYWJlbDogJ0ZpbHRlcicsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnUmV0dXJuJyxcbiAgICBtb2RhbERpc2NsYWltZXJHcm91cFRpdGxlOiAnUHJlc2VudGluZyByZXN1bHRzIGZpbHRlcmVkIGJ5OidcbiAgfSxcbiAgZXM6IDxQb0xvb2t1cExpdGVyYWxzPntcbiAgICBtb2RhbFByaW1hcnlBY3Rpb25MYWJlbDogJ1NlbGVjY2lvbmFyJyxcbiAgICBtb2RhbFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnQ2FuY2VsYXInLFxuICAgIG1vZGFsUGxhY2Vob2xkZXI6ICdCdXNjYXInLFxuICAgIG1vZGFsVGl0bGU6ICdTZWxlY2Npb25lIHVuIHJlZ2lzdHJvJyxcbiAgICBtb2RhbFRhYmxlTm9Db2x1bW5zOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LmVzLm5vQ29sdW1ucyxcbiAgICBtb2RhbFRhYmxlTm9EYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LmVzLm5vRGF0YSxcbiAgICBtb2RhbFRhYmxlTG9hZGluZ0RhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQuZXMubG9hZGluZ0RhdGEsXG4gICAgbW9kYWxUYWJsZUxvYWRNb3JlRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5lcy5sb2FkTW9yZURhdGEsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaDogJ0LDunNxdWVkYSBBdmFuemFkYScsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFRpdGxlOiAnQsO6c3F1ZWRhIEF2YW56YWRhJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoUHJpbWFyeUFjdGlvbkxhYmVsOiAnRmlsdHJhcicsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnVnVlbHZlJyxcbiAgICBtb2RhbERpc2NsYWltZXJHcm91cFRpdGxlOiAnUHJlc2VudGFyIHJlc3VsdGFkb3MgZmlsdHJhZG9zIHBvcjonXG4gIH0sXG4gIHB0OiA8UG9Mb29rdXBMaXRlcmFscz57XG4gICAgbW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw6ICdTZWxlY2lvbmFyJyxcbiAgICBtb2RhbFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnQ2FuY2VsYXInLFxuICAgIG1vZGFsUGxhY2Vob2xkZXI6ICdQZXNxdWlzYXInLFxuICAgIG1vZGFsVGl0bGU6ICdTZWxlY2lvbmUgdW0gcmVnaXN0cm8nLFxuICAgIG1vZGFsVGFibGVOb0NvbHVtbnM6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQucHQubm9Db2x1bW5zLFxuICAgIG1vZGFsVGFibGVOb0RhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQucHQubm9EYXRhLFxuICAgIG1vZGFsVGFibGVMb2FkaW5nRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5wdC5sb2FkaW5nRGF0YSxcbiAgICBtb2RhbFRhYmxlTG9hZE1vcmVEYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LnB0LmxvYWRNb3JlRGF0YSxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoOiAnQnVzY2EgYXZhbsOnYWRhJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoVGl0bGU6ICdCdXNjYSBBdmFuw6dhZGEnLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hQcmltYXJ5QWN0aW9uTGFiZWw6ICdGaWx0cmFyJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICdWb2x0YXInLFxuICAgIG1vZGFsRGlzY2xhaW1lckdyb3VwVGl0bGU6ICdBcHJlc2VudGFuZG8gcmVzdWx0YWRvcyBmaWx0cmFkb3MgcG9yOidcbiAgfSxcbiAgcnU6IDxQb0xvb2t1cExpdGVyYWxzPntcbiAgICBtb2RhbFByaW1hcnlBY3Rpb25MYWJlbDogJ9Cy0YvQsdC40YDQsNGC0YwnLFxuICAgIG1vZGFsU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICfQvtGC0LzQtdC90LjRgtGMJyxcbiAgICBtb2RhbFBsYWNlaG9sZGVyOiAn0L/QvtC40YHQuicsXG4gICAgbW9kYWxUaXRsZTogJ9CS0YvQsdC10YDQuNGC0LUg0LfQsNC/0LjRgdGMJyxcbiAgICBtb2RhbFRhYmxlTm9Db2x1bW5zOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LnJ1Lm5vQ29sdW1ucyxcbiAgICBtb2RhbFRhYmxlTm9EYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LnJ1Lm5vRGF0YSxcbiAgICBtb2RhbFRhYmxlTG9hZGluZ0RhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQucnUubG9hZGluZ0RhdGEsXG4gICAgbW9kYWxUYWJsZUxvYWRNb3JlRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5ydS5sb2FkTW9yZURhdGEsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaDogJ9Cg0LDRgdGI0LjRgNC10L3QvdGL0Lkg0L/QvtC40YHQuicsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFRpdGxlOiAn0KDQsNGB0YjQuNGA0LXQvdC90YvQuSDQv9C+0LjRgdC6JyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoUHJpbWFyeUFjdGlvbkxhYmVsOiAn0KTQuNC70YzRgtGAJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICfQktC10YDQvdC40YHRjCcsXG4gICAgbW9kYWxEaXNjbGFpbWVyR3JvdXBUaXRsZTogJ9Cf0YDQtdC00YHRgtCw0LLQu9C10L3QuNC1INGA0LXQt9GD0LvRjNGC0LDRgtC+0LIg0L7RgtGE0LjQu9GM0YLRgNC+0LLQsNC90L4g0L/QvjonXG4gIH1cbn07XG5cbi8qKlxuICogQGRvY3NQcml2YXRlXG4gKlxuICogQ2xhc3NlIGJhc2UgZG8gY29tcG9uZW50ZSBQbyBMb29rdXAgTW9kYWwuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvTG9va3VwTW9kYWxCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBAVmlld0NoaWxkKFBvTW9kYWxDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHBvTW9kYWw6IFBvTW9kYWxDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoUG9UYWJsZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgcG9UYWJsZTogUG9UYWJsZUNvbXBvbmVudDtcblxuICAvKipcbiAgICogT2JqZXRvIGNvbSBvcyBjYW1wb3MgcXVlIHNlcsOjbyBjcmlhZG9zIG5vIGJ1c2NhIGF2YW7Dp2FkYS5cbiAgICpcbiAgICogPiBDYXNvIG7Do28gc2VqYSBwYXNzYWRvIHVtIG9iamV0byBvdSBlbnTDo28gZWxlIGVzdGVqYSBlbSBicmFuY28gbyBsaW5rIGRlIGJ1c2NhIGF2YW7Dp2FkYSBmaWNhcsOhIGVzY29uZGlkby5cbiAgICpcbiAgICogRXhlbXBsbyBkZSBVUkwgY29tIGJ1c2NhIGF2YW7Dp2FkYTogaHR0cDovL2xvY2FsaG9zdDozMDAwL3YxL2hlcm9lcz9maWx0ZXI9JnBhZ2U9MSZwYWdlU2l6ZT0xMGAmbmFtZT1Ub255JTIwU3Rhcmsmbmlja25hbWU9SG9tZW0lMjBkZSUyMEZlcnJvJmVtYWlsPWlybm1hbkBtYXJ2ZWwuY29tYFxuICAgKlxuICAgKiBDYXNvIGFsZ3VtIHBhcsOibWV0cm8gc2VqYSB1bWEgbGlzdGEsIGEgY29uY2F0ZW5hw6fDo28gw6kgZmVpdGEgdXRpbGl6YW5kbyB2aXJndWxhLlxuICAgKiBFeGVtcGxvOiBodHRwOi8vbG9jYWxob3N0OjMwMDAvdjEvaGVyb2VzP2ZpbHRlcj0mcGFnZT0xJnBhZ2VTaXplPTEwYCZuYW1lPVRvbnklMjBTdGFyayxQZXRlciUyMFBhcmtlcixHb2hhbmBcbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1hZHZhbmNlZC1maWx0ZXJzJykgYWR2YW5jZWRGaWx0ZXJzOiBBcnJheTxQb0xvb2t1cEFkdmFuY2VkRmlsdGVyPjtcblxuICAvKipcbiAgICogTGlzdGEgZGFzIGNvbHVuYXMgZGEgdGFiZWxhLlxuICAgKiBFc3NhIHByb3ByaWVkYWRlIGRldmUgcmVjZWJlciB1bSBhcnJheSBkZSBvYmpldG9zIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSBQb0xvb2t1cENvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgncC1jb2x1bW5zJykgY29sdW1uczogQXJyYXk8UG9Mb29rdXBDb2x1bW4+O1xuXG4gIC8qKiBMaXN0YSBkZSBpdGVucyBkYSB0YWJlbGEuICovXG4gIEBJbnB1dCgncC1pdGVtcycpIGl0ZW1zOiBBcnJheTxhbnk+O1xuXG4gIC8qKiBDbGFzc2UgZGUgc2VydmnDp28gY29tIGEgaW1wbGVtZW50YcOnw6NvIGRvIGNsaWVudGUuICovXG4gIEBJbnB1dCgncC1maWx0ZXItc2VydmljZScpIGZpbHRlclNlcnZpY2U6IFBvTG9va3VwRmlsdGVyO1xuXG4gIC8qKiBDbGFzc2UgZGUgc2VydmnDp28gY29tIGEgaW1wbGVtZW50YcOnw6NvIGRvIGNsaWVudGUuICovXG4gIEBJbnB1dCgncC1maWx0ZXItcGFyYW1zJykgZmlsdGVyUGFyYW1zOiBhbnk7XG5cbiAgLyoqIFNlIHZlcmRhZGVpcm8sIGF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgc2Nyb2xsIGluZmluaXRvIHBhcmEgYSB0YWJlbGEgZXhpYmlkYSBubyByZXRvcm5vIGRhIGNvbnN1bHRhLiAqL1xuICBASW5wdXQoJ3AtaW5maW5pdGUtc2Nyb2xsJykgQElucHV0Qm9vbGVhbigpIGluZmluaXRlU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFNlIHZlcmRhZGVpcm8sIGF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgbXVsdGlwbGEgc2VsZcOnw6NvLiAqL1xuICBASW5wdXQoJ3AtbXVsdGlwbGUnKSBASW5wdXRCb29sZWFuKCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRXZlbnRvIHV0aWxpemFkbyBhbyBzZWxlY2lvbmFyIHVtIHJlZ2lzdHJvIGRhIHRhYmVsYS4gKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UtbW9kZWwnKSBtb2RlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKiogQ2xhc3NlIGRlIHNlcnZpw6dvIGNvbSBpdGVtcyBzZWxlY2lvbmFkb3MgKi9cbiAgQElucHV0KCdwLXNlbGVjdGVkLWl0ZW1zJykgc2VsZWN0ZWRJdGVtczogYW55O1xuXG4gIC8qKiBJbmRpY2EgYSBjb2x1bmEgcXVlIHNlcsOhIHV0aWxpemFkYSBjb21vIGRlc2NyacOnw6NvIGRvIGNhbXBvIGUgY29tbyBmaWx0cm8gZGVudHJvIGRhIGphbmVsYS4gKi9cbiAgQElucHV0KCdwLWZpZWxkLWxhYmVsJykgZmllbGRMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIGEgY29sdW5hIHF1ZSBzZXLDoSB1dGlsaXphZGEgY29tbyB2YWxvciBkbyBjYW1wby5cbiAgICpcbiAgICogPiBBdGVuw6fDo286IENhc28gbsOjbyBzZWphIHBhc3NhZGEgb3UgdGVuaGEgbyBjb250ZcO6ZG8gaW5jb3JyZXRvLCBuw6NvIGlyw6EgYXR1YWxpemFyIG8gbW9kZWwgZG8gZm9ybXVsw6FyaW8uXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtdmFsdWUnKSBmaWVsZFZhbHVlOiBzdHJpbmc7XG5cbiAgaGFzTmV4dCA9IHRydWU7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBwYWdlID0gMTtcbiAgcGFnZVNpemUgPSAxMDtcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xuICB0YWJsZUxpdGVyYWxzOiBhbnk7XG5cbiAgLy8gUHJvcHJpZWRhZGUgZGEgbW9kYWwgZGUgYnVzY2EgYXZhbsOnYWRhOlxuICBhZHZhbmNlZEZpbHRlck1vZGFsVGl0bGUgPSAnJztcbiAgZHluYW1pY0Zvcm1WYWx1ZSA9IHt9O1xuICBkaXNjbGFpbWVyITogUG9EaXNjbGFpbWVyO1xuICBkaXNjbGFpbWVyR3JvdXAhOiBQb0Rpc2NsYWltZXJHcm91cDtcbiAgaXNBZHZhbmNlZEZpbHRlciA9IGZhbHNlO1xuICBwcmltYXJ5QWN0aW9uQWR2YW5jZWRGaWx0ZXIhOiBQb01vZGFsQWN0aW9uO1xuICBzZWNvbmRhcnlBY3Rpb25BZHZhbmNlZEZpbHRlciE6IFBvTW9kYWxBY3Rpb247XG4gIHNlbGVjdGVkczogQXJyYXk8YW55PiA9IFtdO1xuXG4gIHByb3RlY3RlZCBzb3J0OiBQb1RhYmxlQ29sdW1uU29ydDtcblxuICBwcml2YXRlIGZpbHRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHNlYXJjaFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHNob3dNb3JlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBfbGl0ZXJhbHM6IFBvTG9va3VwTGl0ZXJhbHM7XG4gIHByaXZhdGUgX3RpdGxlOiBzdHJpbmc7XG4gIHByaXZhdGUgbGFuZ3VhZ2U6IHN0cmluZyA9IHBvTG9jYWxlRGVmYXVsdDtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICBwcmltYXJ5QWN0aW9uOiBQb01vZGFsQWN0aW9uID0ge1xuICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgbGV0IHNlbGVjdGVkc0l0ZW1zOiBBcnJheTxhbnk+ID0gW107XG4gICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50Wyckc2VsZWN0ZWQnXSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRzSXRlbXMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRzSXRlbXMgPSB0aGlzLnNlbGVjdGVkcztcbiAgICAgIH1cbiAgICAgIHRoaXMubW9kZWwuZW1pdChzZWxlY3RlZHNJdGVtcyk7XG4gICAgICB0aGlzLnBvTW9kYWwuY2xvc2UoKTtcbiAgICB9LFxuICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLm1vZGFsUHJpbWFyeUFjdGlvbkxhYmVsXG4gIH07XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgc2Vjb25kYXJ5QWN0aW9uOiBQb01vZGFsQWN0aW9uID0ge1xuICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgdGhpcy5tb2RlbC5lbWl0KG51bGwpO1xuICAgICAgdGhpcy5wb01vZGFsLmNsb3NlKCk7XG4gICAgfSxcbiAgICBsYWJlbDogdGhpcy5saXRlcmFscy5tb2RhbFNlY29uZGFyeUFjdGlvbkxhYmVsXG4gIH07XG5cbiAgLyoqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby1sb29rdXAtbW9kYWxgLiAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvTG9va3VwTGl0ZXJhbHMpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSB7XG4gICAgICAgIC4uLnBvTG9va3VwTGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAgIC4uLnBvTG9va3VwTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICAgIGlmICh2YWx1ZS5tb2RhbFRpdGxlKSB7XG4gICAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmxpdGVyYWxzLm1vZGFsVGl0bGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0gcG9Mb29rdXBMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuICAgIHRoaXMucHJpbWFyeUFjdGlvbi5sYWJlbCA9IHRoaXMubGl0ZXJhbHMubW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw7XG4gICAgdGhpcy5zZWNvbmRhcnlBY3Rpb24ubGFiZWwgPSB0aGlzLmxpdGVyYWxzLm1vZGFsU2Vjb25kYXJ5QWN0aW9uTGFiZWw7XG4gICAgdGhpcy5zZXRUYWJsZUxpdGVyYWxzKCk7XG4gIH1cblxuICBnZXQgbGl0ZXJhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpdGVyYWxzIHx8IHBvTG9va3VwTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICB9XG5cbiAgLyoqIFTDrXR1bG8gZGEgbW9kYWwuICovXG4gIEBJbnB1dCgncC10aXRsZScpIHNldCB0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGl0bGUgPSBpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpID8gdmFsdWUgOiB0aGlzLmxpdGVyYWxzLm1vZGFsVGl0bGU7XG4gIH1cblxuICBnZXQgdGl0bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RpdGxlO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSwgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG93TW9yZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zaG93TW9yZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0QWR2YW5jZWRGaWx0ZXJNb2RhbFByb3BlcnRpZXMoKTtcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhKCk7XG4gICAgdGhpcy5zZXRUYWJsZUxpdGVyYWxzKCk7XG4gIH1cblxuICBjcmVhdGVEaXNjbGFpbWVyKCkge1xuICAgIHRoaXMuZGlzY2xhaW1lckdyb3VwLmRpc2NsYWltZXJzID0gW107XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5keW5hbWljRm9ybVZhbHVlKSkge1xuICAgICAgdGhpcy5hZGREaXNjbGFpbWVyKHZhbHVlLCBrZXkpO1xuICAgIH1cblxuICAgIGlmICghT2JqZWN0LnZhbHVlcyh0aGlzLmR5bmFtaWNGb3JtVmFsdWUpLnNvbWUodiA9PiB2ICE9PSBudWxsICYmIHR5cGVvZiB2ICE9PSAndW5kZWZpbmVkJykpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBhZGREaXNjbGFpbWVyKHZhbHVlOiBhbnksIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpc2NsYWltZXIgPSA8YW55PnsgcHJvcGVydHk6IHByb3BlcnR5IH07XG4gICAgdGhpcy5kaXNjbGFpbWVyLnZhbHVlID0gdmFsdWU7XG5cbiAgICB0aGlzLmRpc2NsYWltZXJHcm91cC5kaXNjbGFpbWVycyA9IFsuLi50aGlzLmRpc2NsYWltZXJHcm91cC5kaXNjbGFpbWVycywgdGhpcy5kaXNjbGFpbWVyXTtcbiAgfVxuXG4gIG9uQ2hhbmdlRGlzY2xhaW1lckdyb3VwKCkge1xuICAgIGlmICghdGhpcy5zZWFyY2hWYWx1ZSkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuXG4gICAgICB0aGlzLnNlYXJjaEZpbHRlcmVkSXRlbXMoKTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlID0gMTtcblxuICAgIGlmICh0aGlzLnNlYXJjaFZhbHVlKSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmRpc2NsYWltZXJHcm91cC5kaXNjbGFpbWVycyA9IFtdO1xuXG4gICAgICB0aGlzLnNlYXJjaEZpbHRlcmVkSXRlbXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsaXplRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaEZpbHRlcmVkSXRlbXMoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPSB0aGlzLmdldEZpbHRlcmVkSXRlbXModGhpcy5zZWFyY2hWYWx1ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLnNldExvb2t1cFJlc3BvbnNlUHJvcGVydGllcygpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChkYXRhOiBQb0xvb2t1cFJlc3BvbnNlQXBpKSA9PiB0aGlzLnNldExvb2t1cFJlc3BvbnNlUHJvcGVydGllcyhkYXRhKSxcbiAgICAgICAgKCkgPT4ge31cbiAgICAgICk7XG4gIH1cblxuICBzaG93TW9yZUV2ZW50KCkge1xuICAgIHRoaXMucGFnZSsrO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuc2hvd01vcmVTdWJzY3JpcHRpb24gPSB0aGlzLmdldEZpbHRlcmVkSXRlbXModGhpcy5zZWFyY2hWYWx1ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmhhc05leHQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChkYXRhOiBQb0xvb2t1cFJlc3BvbnNlQXBpKSA9PiB7XG4gICAgICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zLCAuLi5kYXRhLml0ZW1zXTtcbiAgICAgICAgICB0aGlzLmhhc05leHQgPSBkYXRhLmhhc05leHQ7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkSXRlbXMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge31cbiAgICAgICk7XG4gIH1cblxuICAvL03DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBzZWxlY2lvbmFyIGFzIGxpbmhhcyBxdWFuZG8gYWJyZSBvIG1vZGFsLlxuICBzZXRTZWxlY3RlZEl0ZW1zKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRzLmZvckVhY2goc2VsZWN0ZWRJdGVtID0+IHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMucG9UYWJsZS5zZWxlY3RSb3dJdGVtKGl0ZW0gPT4gaXRlbVt0aGlzLmZpZWxkVmFsdWVdID09PSBzZWxlY3RlZEl0ZW0udmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wb1RhYmxlLnNlbGVjdFJvd0l0ZW0oaXRlbSA9PiBpdGVtW3RoaXMuZmllbGRWYWx1ZV0gPT09IHNlbGVjdGVkSXRlbVt0aGlzLmZpZWxkVmFsdWVdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIGNyaWFyIG9zIGRpc2NsYWltZXJzIHF1YW5kbyBhYnJlIG8gbW9kYWwuXG4gIHNldERpc2NsYWltZXJzSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiAhQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkSXRlbXMpKSB7XG4gICAgICB0aGlzLm11bHRpcGxlID8gKHRoaXMuc2VsZWN0ZWRzID0gW3sgdmFsdWU6IHRoaXMuc2VsZWN0ZWRJdGVtcyB9XSkgOiAodGhpcy5zZWxlY3RlZHMgPSBbdGhpcy5zZWxlY3RlZEl0ZW1zXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkcyA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0QWR2YW5jZWRGaWx0ZXJNb2RhbFByb3BlcnRpZXMoKSB7XG4gICAgdGhpcy5hZHZhbmNlZEZpbHRlck1vZGFsVGl0bGUgPSB0aGlzLmxpdGVyYWxzLm1vZGFsQWR2YW5jZWRTZWFyY2hUaXRsZTtcblxuICAgIHRoaXMuZGlzY2xhaW1lckdyb3VwID0ge1xuICAgICAgdGl0bGU6IHRoaXMubGl0ZXJhbHMubW9kYWxEaXNjbGFpbWVyR3JvdXBUaXRsZSxcbiAgICAgIGRpc2NsYWltZXJzOiBbXVxuICAgIH07XG5cbiAgICB0aGlzLnByaW1hcnlBY3Rpb25BZHZhbmNlZEZpbHRlciA9IHtcbiAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmRlc3Ryb3lEeW5hbWljRm9ybSgpO1xuICAgICAgICB0aGlzLmlzQWR2YW5jZWRGaWx0ZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wYWdlID0gMTtcbiAgICAgICAgdGhpcy5jcmVhdGVEaXNjbGFpbWVyKCk7XG4gICAgICB9LFxuICAgICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMubW9kYWxBZHZhbmNlZFNlYXJjaFByaW1hcnlBY3Rpb25MYWJlbFxuICAgIH07XG5cbiAgICB0aGlzLnNlY29uZGFyeUFjdGlvbkFkdmFuY2VkRmlsdGVyID0ge1xuICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZGVzdHJveUR5bmFtaWNGb3JtKCk7XG4gICAgICAgIHRoaXMuaXNBZHZhbmNlZEZpbHRlciA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLm1vZGFsQWR2YW5jZWRTZWFyY2hTZWNvbmRhcnlBY3Rpb25MYWJlbFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEFkdmFuY2VkRmlsdGVycyhhZHZhbmNlZFBhcmFtczogYW55KSB7XG4gICAgaWYgKGFkdmFuY2VkUGFyYW1zICYmIGFkdmFuY2VkUGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnM6IE9iamVjdCA9IHt9O1xuICAgICAgbGV0IHZhbGlkYXRlZEFkdmFjZW5kRmlsdGVyczogYW55O1xuXG4gICAgICBhZHZhbmNlZFBhcmFtcy5mb3JFYWNoKChmaWx0ZXI6IGFueSkgPT4ge1xuICAgICAgICBmaWx0ZXJzW2ZpbHRlci5wcm9wZXJ0eV0gPSBmaWx0ZXIudmFsdWUgaW5zdGFuY2VvZiBBcnJheSA/IGZpbHRlci52YWx1ZS5qb2luKCkgOiBmaWx0ZXIudmFsdWU7XG5cbiAgICAgICAgdmFsaWRhdGVkQWR2YWNlbmRGaWx0ZXJzID0geyAuLi52YWxpZGF0ZWRBZHZhY2VuZEZpbHRlcnMsIC4uLmZpbHRlcnMgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVkQWR2YWNlbmRGaWx0ZXJzO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcmVkSXRlbXMoZmlsdGVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFBvTG9va3VwUmVzcG9uc2VBcGk+IHtcbiAgICBjb25zdCBmaWx0ZXJlZFBhcmFtczogUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zID0gdGhpcy5nZXRGaWx0ZXJlZFBhcmFtcyhmaWx0ZXIpO1xuXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyU2VydmljZS5nZXRGaWx0ZXJlZEl0ZW1zKGZpbHRlcmVkUGFyYW1zKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyZWRQYXJhbXMoZmlsdGVyOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IHBhZ2UsIHBhZ2VTaXplLCBmaWx0ZXJQYXJhbXMsIHNvcnQgfSA9IHRoaXM7XG5cbiAgICBjb25zdCBmaWx0ZXJlZFBhcmFtcyA9IHt9O1xuICAgIGNvbnN0IG9yZGVyID0gdGhpcy5nZXRPcmRlclBhcmFtKHNvcnQpO1xuICAgIGNvbnN0IGFkdmFuY2VkRmlsdGVycyA9IHRoaXMuZ2V0QWR2YW5jZWRGaWx0ZXJzKHRoaXMuZGlzY2xhaW1lckdyb3VwLmRpc2NsYWltZXJzKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7IGZpbHRlciwgcGFnZSwgcGFnZVNpemUsIG9yZGVyLCBmaWx0ZXJQYXJhbXMsIGFkdmFuY2VkRmlsdGVycyB9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zKSB7XG4gICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkgJiYgcGFyYW1zW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaWx0ZXJlZFBhcmFtc1trZXldID0gcGFyYW1zW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlcmVkUGFyYW1zO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcmRlclBhcmFtKHNvcnQ6IFBvVGFibGVDb2x1bW5Tb3J0ID0geyB0eXBlOiB1bmRlZmluZWQgfSkge1xuICAgIGNvbnN0IHsgY29sdW1uLCB0eXBlIH0gPSBzb3J0O1xuXG4gICAgaWYgKCFjb2x1bW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gUG9UYWJsZUNvbHVtblNvcnRUeXBlLkRlc2NlbmRpbmcpIHtcbiAgICAgIHJldHVybiBgLSR7Y29sdW1uLnByb3BlcnR5fWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvbHVtbi5wcm9wZXJ0eX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG5cbiAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0RmlsdGVyZWRJdGVtcygnJykuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5zZXRMb29rdXBSZXNwb25zZVByb3BlcnRpZXMoZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldExvb2t1cFJlc3BvbnNlUHJvcGVydGllcyhkYXRhPzogUG9Mb29rdXBSZXNwb25zZUFwaSkge1xuICAgIHRoaXMuaXRlbXMgPSBkYXRhPy5pdGVtcyA/PyBbXTtcbiAgICB0aGlzLmhhc05leHQgPSBkYXRhPy5oYXNOZXh0ID8/IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZXREaXNjbGFpbWVyc0l0ZW1zKCk7XG4gICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFRhYmxlTGl0ZXJhbHMoKSB7XG4gICAgdGhpcy50YWJsZUxpdGVyYWxzID0ge1xuICAgICAgJ25vQ29sdW1ucyc6IHRoaXMubGl0ZXJhbHMubW9kYWxUYWJsZU5vQ29sdW1ucyxcbiAgICAgICdub0RhdGEnOiB0aGlzLmxpdGVyYWxzLm1vZGFsVGFibGVOb0RhdGEsXG4gICAgICAnbG9hZGluZ0RhdGEnOiB0aGlzLmxpdGVyYWxzLm1vZGFsVGFibGVMb2FkaW5nRGF0YSxcbiAgICAgICdsb2FkTW9yZURhdGEnOiB0aGlzLmxpdGVyYWxzLm1vZGFsVGFibGVMb2FkTW9yZURhdGFcbiAgICB9O1xuICB9XG5cbiAgLy8gTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIGFicmlyIGEgbW9kYWwgZGUgYnVzY2EgZGFzIGluZm9ybWHDp8O1ZXMuXG4gIGFic3RyYWN0IG9wZW5Nb2RhbCgpOiB2b2lkO1xuXG4gIC8vIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBkZXN0cnVpciBvIGR5bmFtaWNGb3JtXG4gIGFic3RyYWN0IGRlc3Ryb3lEeW5hbWljRm9ybSgpOiB2b2lkO1xufVxuIl19
|
|
@@ -41,6 +41,7 @@ export class PoRadioGroupBaseComponent {
|
|
|
41
41
|
*/
|
|
42
42
|
this.change = new EventEmitter();
|
|
43
43
|
this.mdColumns = poRadioGroupColumnsDefaultLength;
|
|
44
|
+
this.onTouched = null;
|
|
44
45
|
this._columns = poRadioGroupColumnsDefaultLength;
|
|
45
46
|
this._disabled = false;
|
|
46
47
|
this._required = false;
|
|
@@ -130,7 +131,9 @@ export class PoRadioGroupBaseComponent {
|
|
|
130
131
|
registerOnChange(fn) {
|
|
131
132
|
this.onChangePropagate = fn;
|
|
132
133
|
}
|
|
133
|
-
registerOnTouched(fn) {
|
|
134
|
+
registerOnTouched(fn) {
|
|
135
|
+
this.onTouched = fn;
|
|
136
|
+
}
|
|
134
137
|
registerOnValidatorChange(fn) {
|
|
135
138
|
this.validatorChange = fn;
|
|
136
139
|
}
|
|
@@ -198,4 +201,4 @@ __decorate([
|
|
|
198
201
|
type: Input,
|
|
199
202
|
args: ['p-options']
|
|
200
203
|
}] }); })();
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcmFkaW8tZ3JvdXAtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tcmFkaW8tZ3JvdXAvcG8tcmFkaW8tZ3JvdXAtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkvQyxNQUFNLGdDQUFnQyxHQUFXLENBQUMsQ0FBQztBQUNuRCxNQUFNLDhCQUE4QixHQUFXLEVBQUUsQ0FBQztBQUVsRDs7Ozs7Ozs7Ozs7R0FXRztBQUVILE1BQU0sT0FBZ0IseUJBQXlCO0lBRC9DO1FBRUU7Ozs7Ozs7Ozs7V0FVRztRQUNvQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBb0JsRTs7Ozs7O1dBTUc7UUFDaUIsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXhFLGNBQVMsR0FBVyxnQ0FBZ0MsQ0FBQztRQUc3QyxhQUFRLEdBQVcsZ0NBQWdDLENBQUM7UUFDcEQsY0FBUyxHQUFhLEtBQUssQ0FBQztRQUU1QixjQUFTLEdBQWEsS0FBSyxDQUFDO1FBRTVCLHNCQUFpQixHQUFRLElBQUksQ0FBQztLQXFKdkM7SUFsSkM7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxJQUF3QixPQUFPLENBQUMsS0FBYTtRQUMzQyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLGdDQUFnQyxDQUFD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Q0FBQyxPQUFPLEVBQUUsVUFBVTtRQUMzQyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFFckIsT0FBTyxPQUFPLElBQUksVUFBVSxJQUFJLE9BQU8sSUFBSSxVQUFVLENBQUM7SUFDeEQsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE9BQWUsRUFBRSxVQUFrQjtRQUM5RCxNQUFNLGlCQUFpQixHQUFHLDhCQUE4QixHQUFHLE9BQU8sQ0FBQztRQUVuRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQztJQUM1RyxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQzs7a0dBbE1tQix5QkFBeUI7NEVBQXpCLHlCQUF5QjtBQVlOO0lBQWYsWUFBWSxFQUFFOzREQUE0Qjt1RkFaOUMseUJBQXlCO2NBRDlDLFNBQVM7Z0JBYStCLFNBQVM7a0JBQS9DLEtBQUs7bUJBQUMsY0FBYztZQUdOLElBQUk7a0JBQWxCLEtBQUs7bUJBQUMsTUFBTTtZQWVRLFFBQVE7a0JBQTVCLEtBQUs7bUJBQUMsWUFBWTtZQVNDLE1BQU07a0JBQXpCLE1BQU07bUJBQUMsVUFBVTtZQTRCTSxPQUFPO2tCQUE5QixLQUFLO21CQUFDLFdBQVc7WUFvQk8sUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBbUJNLFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWTtZQWNLLE9BQU87a0JBQTlCLEtBQUs7bUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4sIGNvbnZlcnRUb0ludCwgcmVtb3ZlRHVwbGljYXRlZE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcblxuaW1wb3J0IHsgUG9SYWRpb0dyb3VwT3B0aW9uIH0gZnJvbSAnLi9wby1yYWRpby1ncm91cC1vcHRpb24uaW50ZXJmYWNlJztcblxuY29uc3QgcG9SYWRpb0dyb3VwQ29sdW1uc0RlZmF1bHRMZW5ndGg6IG51bWJlciA9IDY7XG5jb25zdCBwb1JhZGlvR3JvdXBDb2x1bW5zVG90YWxMZW5ndGg6IG51bWJlciA9IDEyO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE8gY29tcG9uZW50ZSBgcG8tcmFkaW8tZ3JvdXBgIGRldmUgc2VyIHV0aWxpemFkbyBwYXJhIGRpc3BvbmliaWxpemFyIG3Dumx0aXBsYXMgb3DDp8O1ZXMgYW8gdXN1w6FyaW8sIHBlcm1pdGluZG8gYSBlbGUgcXVlXG4gKiBzZWxlY2lvbmUgYXBlbmFzIHVtYSBkZWxhcy4gU2V1IHVzbyDDqSByZWNvbWVuZGFkbyBwYXJhIHVtIG7Dum1lcm8gcGVxdWVubyBkZSBvcMOnw7VlcywgY2FzbyBjb250csOhcmlvLCByZWNvbWVuZGEtc2UgbyB1c29cbiAqIGRvIFsqKnBvLWNvbWJvKipdKC9kb2N1bWVudGF0aW9uL3BvLWNvbWJvKSBvdSBbKipwby1zZWxlY3QqKl0oL2RvY3VtZW50YXRpb24vcG8tc2VsZWN0KS5cbiAqXG4gKiBFc3RlIG7Do28gw6kgdW0gY29tcG9uZW50ZSBkZSBtdWx0aXNlbGXDp8Ojbywgc2UgZm9yIGVzdGUgbyBjYXNvLCBkZXZlLXNlIHV0aWxpemFyIG9cbiAqIFsqKnBvLWNoZWNrYm94LWdyb3VwKipdKC9kb2N1bWVudGF0aW9uL3BvLWNoZWNrYm94LWdyb3VwKS5cbiAqXG4gKiA+IEFvIHBhc3NhciB1bSB2YWxvciBwYXJhIG8gKm1vZGVsKiBxdWUgbsOjbyBlc3RlamEgbmEgbGlzdGEgZGUgb3DDp8O1ZXMsIG8gbWVzbW8gc2Vyw6EgZGVmaW5pZG8gY29tbyBgdW5kZWZpbmVkYC5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9SYWRpb0dyb3VwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBcGxpY2EgZm9jbyBubyBlbGVtZW50byBhbyBzZXIgaW5pY2lhZG8uXG4gICAqXG4gICAqID4gQ2FzbyBtYWlzIGRlIHVtIGVsZW1lbnRvIHNlamEgY29uZmlndXJhZG8gY29tIGVzc2EgcHJvcHJpZWRhZGUsIGFwZW5hcyBvIMO6bHRpbW8gZWxlbWVudG8gZGVjbGFyYWRvIGNvbSBlbGEgdGVyw6EgbyBmb2NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtYXV0by1mb2N1cycpIEBJbnB1dEJvb2xlYW4oKSBhdXRvRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTm9tZSBkYXMgb3DDp8O1ZXMuICovXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvcGNpb25hbCBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25hbCcpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBhbyBhbHRlcmFyIHZhbG9yIGRvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgbWRDb2x1bW5zOiBudW1iZXIgPSBwb1JhZGlvR3JvdXBDb2x1bW5zRGVmYXVsdExlbmd0aDtcbiAgdmFsdWU6IGFueTtcblxuICBwcml2YXRlIF9jb2x1bW5zOiBudW1iZXIgPSBwb1JhZGlvR3JvdXBDb2x1bW5zRGVmYXVsdExlbmd0aDtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX29wdGlvbnM6IEFycmF5PFBvUmFkaW9Hcm91cE9wdGlvbj47XG4gIHByaXZhdGUgX3JlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgb25DaGFuZ2VQcm9wYWdhdGU6IGFueSA9IG51bGw7XG4gIHByaXZhdGUgdmFsaWRhdG9yQ2hhbmdlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhIHF1YW50aWRhZGUgZGUgY29sdW5hcyBwYXJhIGV4aWJpw6fDo28gZGFzIG9ww6fDtWVzLlxuICAgKlxuICAgKiAqKkNvbnNpZGVyYcOnw7VlczoqKlxuICAgKiAgLSDDiSBwb3Nzw612ZWwgZXhpYmlyIGFzIG9ww6fDtWVzIGVudHJlIGAxYCBlIGA0YCBjb2x1bmFzLlxuICAgKiAgLSBPIG7Dum1lcm8gbcOheGltbyBkZSBjb2x1bmFzIMOpIGludmFyacOhdmVsIG5hcyBzZWd1aW50ZXMgcmVzb2x1w6fDtWVzOlxuICAgKiAgICArIGBzbWA6IGAxYFxuICAgKiAgICArIGBtZGA6IGAyYFxuICAgKlxuICAgKiBAZGVmYXVsdCBgMmBcbiAgICovXG4gIEBJbnB1dCgncC1jb2x1bW5zJykgc2V0IGNvbHVtbnModmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IGNvbHVtbnMgPSBjb252ZXJ0VG9JbnQodmFsdWUsIHBvUmFkaW9Hcm91cENvbHVtbnNEZWZhdWx0TGVuZ3RoKTtcblxuICAgIHRoaXMuX2NvbHVtbnMgPSB0aGlzLmdldEdyaWRTeXN0ZW1Db2x1bW5zKGNvbHVtbnMsIDQpO1xuICAgIHRoaXMubWRDb2x1bW5zID0gdGhpcy5nZXRHcmlkU3lzdGVtQ29sdW1ucyhjb2x1bW5zLCAyKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5zKCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHF1ZSBvIGNhbXBvIHNlcsOhIGRlc2FiaWxpdGFkby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWRpc2FibGVkJykgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb252ZXJ0VG9Cb29sZWFuKGRpc2FibGVkKTtcblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBvYnJpZ2F0w7NyaW8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1yZXF1aXJlZCcpIHNldCByZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29udmVydFRvQm9vbGVhbihyZXF1aXJlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGEgZGUgb3DDp8O1ZXMgcXVlIHNlcsOjbyBleGliaWRhcy5cbiAgICogTmVzdGEgcHJvcHJpZWRhZGUgZGV2ZSBzZXIgZGVmaW5pZG8gdW0gYXJyYXkgZGUgb2JqZXRvcyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgUG9SYWRpb0dyb3VwT3B0aW9uLlxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbnMnKSBzZXQgb3B0aW9ucyh2YWx1ZTogQXJyYXk8UG9SYWRpb0dyb3VwT3B0aW9uPikge1xuICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcbiAgICByZW1vdmVEdXBsaWNhdGVkT3B0aW9ucyh0aGlzLm9wdGlvbnMpO1xuICB9XG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gcXVlIGNvbnRyb2xhIHF1YW5kbyBkZXZlIHNlciBlbWl0aWRvIG9uQ2hhbmdlIGUgYXR1YWxpemEgbyBNb2RlbFxuICBjaGFuZ2VWYWx1ZShjaGFuZ2VkVmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKGNoYW5nZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsdWUgIT09IGNoYW5nZWRWYWx1ZSkge1xuICAgICAgdGhpcy5jaGFuZ2UuZW1pdChjaGFuZ2VkVmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSBjaGFuZ2VkVmFsdWU7XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBvcyBlc3RhZG9zIGRlIGhhYmlsaXRhZG8gdmlhIGZvcm1zIGFwaVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMub25DaGFuZ2VQcm9wYWdhdGUgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHt9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHZhbGlkYXRlKGFic3RyYWN0Q29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKHJlcXVpcmVkRmFpbGVkKHRoaXMucmVxdWlyZWQsIHRoaXMuZGlzYWJsZWQsIGFic3RyYWN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlcXVpcmVkOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZShtb2RlbFZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gbW9kZWxWYWx1ZTtcblxuICAgIC8vIEJ1c2NhIHJhZGlvIGNvbSBvIHZhbG9yIGVzcGVjaWZpY2Fkb1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdldEVsZW1lbnRCeVZhbHVlKG1vZGVsVmFsdWUpO1xuICAgIGlmICghZWxlbWVudCAmJiB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQ29sdW1uc1JhbmdlKGNvbHVtbnMsIG1heENvbHVtbnMpOiBib29sZWFuIHtcbiAgICBjb25zdCBtaW5Db2x1bW5zID0gMTtcblxuICAgIHJldHVybiBjb2x1bW5zID49IG1pbkNvbHVtbnMgJiYgY29sdW1ucyA8PSBtYXhDb2x1bW5zO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHcmlkU3lzdGVtQ29sdW1ucyhjb2x1bW5zOiBudW1iZXIsIG1heENvbHVtbnM6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgZ3JpZFN5c3RlbUNvbHVtbnMgPSBwb1JhZGlvR3JvdXBDb2x1bW5zVG90YWxMZW5ndGggLyBjb2x1bW5zO1xuXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tDb2x1bW5zUmFuZ2UoY29sdW1ucywgbWF4Q29sdW1ucykgPyBncmlkU3lzdGVtQ29sdW1ucyA6IHBvUmFkaW9Hcm91cENvbHVtbnNEZWZhdWx0TGVuZ3RoO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU1vZGVsKCkge1xuICAgIGlmICh0aGlzLnZhbGlkYXRvckNoYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICAvLyBEZXZlIHJldG9ybmFyIG8gdmFsb3IgZWxlbWVudG8gcXVlIGNvbnTDqW0gbyB2YWxvciBwYXNzYWRvIHBvciBwYXLDom1ldHJvXG4gIGFic3RyYWN0IGdldEVsZW1lbnRCeVZhbHVlKHZhbHVlOiBhbnkpOiBhbnk7XG59XG4iXX0=
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcmFkaW8tZ3JvdXAtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tcmFkaW8tZ3JvdXAvcG8tcmFkaW8tZ3JvdXAtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkvQyxNQUFNLGdDQUFnQyxHQUFXLENBQUMsQ0FBQztBQUNuRCxNQUFNLDhCQUE4QixHQUFXLEVBQUUsQ0FBQztBQUVsRDs7Ozs7Ozs7Ozs7R0FXRztBQUVILE1BQU0sT0FBZ0IseUJBQXlCO0lBRC9DO1FBRUU7Ozs7Ozs7Ozs7V0FVRztRQUNvQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBb0JsRTs7Ozs7O1dBTUc7UUFDaUIsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXhFLGNBQVMsR0FBVyxnQ0FBZ0MsQ0FBQztRQUczQyxjQUFTLEdBQVEsSUFBSSxDQUFDO1FBRXhCLGFBQVEsR0FBVyxnQ0FBZ0MsQ0FBQztRQUNwRCxjQUFTLEdBQWEsS0FBSyxDQUFDO1FBRTVCLGNBQVMsR0FBYSxLQUFLLENBQUM7UUFFNUIsc0JBQWlCLEdBQVEsSUFBSSxDQUFDO0tBdUp2QztJQXBKQzs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILElBQXdCLE9BQU8sQ0FBQyxLQUFhO1FBQzNDLE1BQU0sT0FBTyxHQUFHLFlBQVks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QWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxVQUFVO1FBQzNDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztRQUVyQixPQUFPLE9BQU8sSUFBSSxVQUFVLElBQUksT0FBTyxJQUFJLFVBQVUsQ0FBQztJQUN4RCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsT0FBZSxFQUFFLFVBQWtCO1FBQzlELE1BQU0saUJBQWlCLEdBQUcsOEJBQThCLEdBQUcsT0FBTyxDQUFDO1FBRW5FLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDO0lBQzVHLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDOztrR0F0TW1CLHlCQUF5Qjs0RUFBekIseUJBQXlCO0FBWU47SUFBZixZQUFZLEVBQUU7NERBQTRCO3VGQVo5Qyx5QkFBeUI7Y0FEOUMsU0FBUztnQkFhK0IsU0FBUztrQkFBL0MsS0FBSzttQkFBQyxjQUFjO1lBR04sSUFBSTtrQkFBbEIsS0FBSzttQkFBQyxNQUFNO1lBZVEsUUFBUTtrQkFBNUIsS0FBSzttQkFBQyxZQUFZO1lBU0MsTUFBTTtrQkFBekIsTUFBTTttQkFBQyxVQUFVO1lBOEJNLE9BQU87a0JBQTlCLEtBQUs7bUJBQUMsV0FBVztZQW9CTyxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUFtQk0sUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBY0ssT0FBTztrQkFBOUIsS0FBSzttQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiwgY29udmVydFRvSW50LCByZW1vdmVEdXBsaWNhdGVkT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyByZXF1aXJlZEZhaWxlZCB9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuXG5pbXBvcnQgeyBQb1JhZGlvR3JvdXBPcHRpb24gfSBmcm9tICcuL3BvLXJhZGlvLWdyb3VwLW9wdGlvbi5pbnRlcmZhY2UnO1xuXG5jb25zdCBwb1JhZGlvR3JvdXBDb2x1bW5zRGVmYXVsdExlbmd0aDogbnVtYmVyID0gNjtcbmNvbnN0IHBvUmFkaW9Hcm91cENvbHVtbnNUb3RhbExlbmd0aDogbnVtYmVyID0gMTI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBjb21wb25lbnRlIGBwby1yYWRpby1ncm91cGAgZGV2ZSBzZXIgdXRpbGl6YWRvIHBhcmEgZGlzcG9uaWJpbGl6YXIgbcO6bHRpcGxhcyBvcMOnw7VlcyBhbyB1c3XDoXJpbywgcGVybWl0aW5kbyBhIGVsZSBxdWVcbiAqIHNlbGVjaW9uZSBhcGVuYXMgdW1hIGRlbGFzLiBTZXUgdXNvIMOpIHJlY29tZW5kYWRvIHBhcmEgdW0gbsO6bWVybyBwZXF1ZW5vIGRlIG9ww6fDtWVzLCBjYXNvIGNvbnRyw6FyaW8sIHJlY29tZW5kYS1zZSBvIHVzb1xuICogZG8gWyoqcG8tY29tYm8qKl0oL2RvY3VtZW50YXRpb24vcG8tY29tYm8pIG91IFsqKnBvLXNlbGVjdCoqXSgvZG9jdW1lbnRhdGlvbi9wby1zZWxlY3QpLlxuICpcbiAqIEVzdGUgbsOjbyDDqSB1bSBjb21wb25lbnRlIGRlIG11bHRpc2VsZcOnw6NvLCBzZSBmb3IgZXN0ZSBvIGNhc28sIGRldmUtc2UgdXRpbGl6YXIgb1xuICogWyoqcG8tY2hlY2tib3gtZ3JvdXAqKl0oL2RvY3VtZW50YXRpb24vcG8tY2hlY2tib3gtZ3JvdXApLlxuICpcbiAqID4gQW8gcGFzc2FyIHVtIHZhbG9yIHBhcmEgbyAqbW9kZWwqIHF1ZSBuw6NvIGVzdGVqYSBuYSBsaXN0YSBkZSBvcMOnw7VlcywgbyBtZXNtbyBzZXLDoSBkZWZpbmlkbyBjb21vIGB1bmRlZmluZWRgLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb1JhZGlvR3JvdXBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEFwbGljYSBmb2NvIG5vIGVsZW1lbnRvIGFvIHNlciBpbmljaWFkby5cbiAgICpcbiAgICogPiBDYXNvIG1haXMgZGUgdW0gZWxlbWVudG8gc2VqYSBjb25maWd1cmFkbyBjb20gZXNzYSBwcm9wcmllZGFkZSwgYXBlbmFzIG8gw7psdGltbyBlbGVtZW50byBkZWNsYXJhZG8gY29tIGVsYSB0ZXLDoSBvIGZvY28uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1hdXRvLWZvY3VzJykgQElucHV0Qm9vbGVhbigpIGF1dG9Gb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBOb21lIGRhcyBvcMOnw7Vlcy4gKi9cbiAgQElucHV0KCduYW1lJykgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGFvIGFsdGVyYXIgdmFsb3IgZG8gY2FtcG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZScpIGNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBtZENvbHVtbnM6IG51bWJlciA9IHBvUmFkaW9Hcm91cENvbHVtbnNEZWZhdWx0TGVuZ3RoO1xuICB2YWx1ZTogYW55O1xuXG4gIHByb3RlY3RlZCBvblRvdWNoZWQ6IGFueSA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfY29sdW1uczogbnVtYmVyID0gcG9SYWRpb0dyb3VwQ29sdW1uc0RlZmF1bHRMZW5ndGg7XG4gIHByaXZhdGUgX2Rpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9vcHRpb25zOiBBcnJheTxQb1JhZGlvR3JvdXBPcHRpb24+O1xuICBwcml2YXRlIF9yZXF1aXJlZD86IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIG9uQ2hhbmdlUHJvcGFnYXRlOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIHZhbGlkYXRvckNoYW5nZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgYSBxdWFudGlkYWRlIGRlIGNvbHVuYXMgcGFyYSBleGliacOnw6NvIGRhcyBvcMOnw7Vlcy5cbiAgICpcbiAgICogKipDb25zaWRlcmHDp8O1ZXM6KipcbiAgICogIC0gw4kgcG9zc8OtdmVsIGV4aWJpciBhcyBvcMOnw7VlcyBlbnRyZSBgMWAgZSBgNGAgY29sdW5hcy5cbiAgICogIC0gTyBuw7ptZXJvIG3DoXhpbW8gZGUgY29sdW5hcyDDqSBpbnZhcmnDoXZlbCBuYXMgc2VndWludGVzIHJlc29sdcOnw7VlczpcbiAgICogICAgKyBgc21gOiBgMWBcbiAgICogICAgKyBgbWRgOiBgMmBcbiAgICpcbiAgICogQGRlZmF1bHQgYDJgXG4gICAqL1xuICBASW5wdXQoJ3AtY29sdW1ucycpIHNldCBjb2x1bW5zKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBjb2x1bW5zID0gY29udmVydFRvSW50KHZhbHVlLCBwb1JhZGlvR3JvdXBDb2x1bW5zRGVmYXVsdExlbmd0aCk7XG5cbiAgICB0aGlzLl9jb2x1bW5zID0gdGhpcy5nZXRHcmlkU3lzdGVtQ29sdW1ucyhjb2x1bW5zLCA0KTtcbiAgICB0aGlzLm1kQ29sdW1ucyA9IHRoaXMuZ2V0R3JpZFN5c3RlbUNvbHVtbnMoY29sdW1ucywgMik7XG4gIH1cblxuICBnZXQgY29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBkZXNhYmlsaXRhZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1kaXNhYmxlZCcpIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29udmVydFRvQm9vbGVhbihkaXNhYmxlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egb2JyaWdhdMOzcmlvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvbnZlcnRUb0Jvb2xlYW4ocmVxdWlyZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RhIGRlIG9ww6fDtWVzIHF1ZSBzZXLDo28gZXhpYmlkYXMuXG4gICAqIE5lc3RhIHByb3ByaWVkYWRlIGRldmUgc2VyIGRlZmluaWRvIHVtIGFycmF5IGRlIG9iamV0b3MgcXVlIGltcGxlbWVudGFtIGEgaW50ZXJmYWNlIFBvUmFkaW9Hcm91cE9wdGlvbi5cbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25zJykgc2V0IG9wdGlvbnModmFsdWU6IEFycmF5PFBvUmFkaW9Hcm91cE9wdGlvbj4pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gdmFsdWU7XG4gICAgcmVtb3ZlRHVwbGljYXRlZE9wdGlvbnModGhpcy5vcHRpb25zKTtcbiAgfVxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIHF1ZSBjb250cm9sYSBxdWFuZG8gZGV2ZSBzZXIgZW1pdGlkbyBvbkNoYW5nZSBlIGF0dWFsaXphIG8gTW9kZWxcbiAgY2hhbmdlVmFsdWUoY2hhbmdlZFZhbHVlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSkge1xuICAgICAgdGhpcy5vbkNoYW5nZVByb3BhZ2F0ZShjaGFuZ2VkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZhbHVlICE9PSBjaGFuZ2VkVmFsdWUpIHtcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQoY2hhbmdlZFZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gY2hhbmdlZFZhbHVlO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgb3MgZXN0YWRvcyBkZSBoYWJpbGl0YWRvIHZpYSBmb3JtcyBhcGlcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICB2YWxpZGF0ZShhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBhYnN0cmFjdENvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUobW9kZWxWYWx1ZTogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IG1vZGVsVmFsdWU7XG5cbiAgICAvLyBCdXNjYSByYWRpbyBjb20gbyB2YWxvciBlc3BlY2lmaWNhZG9cbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZXRFbGVtZW50QnlWYWx1ZShtb2RlbFZhbHVlKTtcbiAgICBpZiAoIWVsZW1lbnQgJiYgdGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMub25DaGFuZ2VQcm9wYWdhdGUodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0NvbHVtbnNSYW5nZShjb2x1bW5zLCBtYXhDb2x1bW5zKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWluQ29sdW1ucyA9IDE7XG5cbiAgICByZXR1cm4gY29sdW1ucyA+PSBtaW5Db2x1bW5zICYmIGNvbHVtbnMgPD0gbWF4Q29sdW1ucztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3JpZFN5c3RlbUNvbHVtbnMoY29sdW1uczogbnVtYmVyLCBtYXhDb2x1bW5zOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGdyaWRTeXN0ZW1Db2x1bW5zID0gcG9SYWRpb0dyb3VwQ29sdW1uc1RvdGFsTGVuZ3RoIC8gY29sdW1ucztcblxuICAgIHJldHVybiB0aGlzLmNoZWNrQ29sdW1uc1JhbmdlKGNvbHVtbnMsIG1heENvbHVtbnMpID8gZ3JpZFN5c3RlbUNvbHVtbnMgOiBwb1JhZGlvR3JvdXBDb2x1bW5zRGVmYXVsdExlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVNb2RlbCgpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gRGV2ZSByZXRvcm5hciBvIHZhbG9yIGVsZW1lbnRvIHF1ZSBjb250w6ltIG8gdmFsb3IgcGFzc2FkbyBwb3IgcGFyw6JtZXRyb1xuICBhYnN0cmFjdCBnZXRFbGVtZW50QnlWYWx1ZSh2YWx1ZTogYW55KTogYW55O1xufVxuIl19
|