survey-angular-ui 1.9.55 → 1.9.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,12 +4,13 @@ import { BaseAngular } from "./base-angular";
4
4
  import { AngularComponentFactory } from "./component-factory";
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "./components/survey-header/survey-header.component";
7
- import * as i2 from "./components/action-bar/action-bar.component";
8
- import * as i3 from "./page.component";
9
- import * as i4 from "./components/brand-info/brand-info.component";
10
- import * as i5 from "@angular/common";
11
- import * as i6 from "@angular/forms";
12
- import * as i7 from "./utils/dynamic.directive";
7
+ import * as i2 from "./components/timer-panel/timer-panel.component";
8
+ import * as i3 from "./components/action-bar/action-bar.component";
9
+ import * as i4 from "./page.component";
10
+ import * as i5 from "./components/brand-info/brand-info.component";
11
+ import * as i6 from "@angular/common";
12
+ import * as i7 from "@angular/forms";
13
+ import * as i8 from "./utils/dynamic.directive";
13
14
  export class SurveyContentComponent extends BaseAngular {
14
15
  getModel() {
15
16
  return this.model;
@@ -34,10 +35,10 @@ export class SurveyContentComponent extends BaseAngular {
34
35
  }
35
36
  }
36
37
  SurveyContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyContentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
37
- SurveyContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SurveyContentComponent, selector: "survey-content", inputs: { model: "model" }, viewQueries: [{ propertyName: "rootEl", first: true, predicate: ["surveyContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div #surveyContainer *ngIf=\"!!model\" [class]=\"model.getRootCss()\">\n <form onsubmit=\"return false;\">\n <div class=\"sv_custom_header\" [hidden]=\"model.hasLogo\"></div>\n <div [class]=\"model.css.container\">\n <div *ngIf=\"model.renderedHasHeader\" [class]=\"model.css.header\" [survey]=\"model\" sv-ng-survey-header></div>\n <ng-container *ngIf=\"model.isShowProgressBarOnTop && !model.isShowStartingPage\">\n <ng-template [component]='{ name: \"sv-progress-\" + this.model.progressBarType, data: { model } }'></ng-template>\n </ng-container>\n <div *ngIf=\"model.isShowingPage\" [class]=\"model.bodyCss\" [style.width]=\"model.renderedWidth\" [style.maxWidth]=\"model.renderedWidth\">\n <!-- ko if: isTimerPanelShowingOnTop && !isShowStartingPage -->\n <!-- ko template: { name: 'survey-timerpanel' } -->\n <!-- /ko -->\n <!-- /ko -->\n <sv-action-bar *ngIf=\"model.isNavigationButtonsShowingOnTop\" [model]=\"model.navigationBar\"></sv-action-bar>\n <!-- ko if: activePage -->\n <ng-container *ngIf=\"model.activePage\">\n <div [id]=\"model.activePage.id\">\n <page [model]=\"model.activePage\" [survey]=\"model\"></page>\n </div>\n </ng-container>\n <!-- ko if: activePage.rows.length == 0 && $data.emptyPageTemplate -->\n <!-- ko template: { name: emptyPageTemplate, data: $data.emptyPageTemplateData || $data } -->\n <!-- /ko -->\n <!-- /ko -->\n <!-- /ko -->\n <!-- ko if: isTimerPanelShowingOnBottom && !isShowStartingPage -->\n <!-- ko template: { name: 'survey-timerpanel' } -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-container *ngIf=\"model.isShowProgressBarOnBottom && !model.isShowStartingPage\">\n <ng-template [component]='{ name: \"sv-progress-\" + this.model.progressBarType, data: { model } }'></ng-template>\n </ng-container>\n <sv-action-bar *ngIf=\"model.isNavigationButtonsShowingOnBottom\" [model]=\"model.navigationBar\"></sv-action-bar>\n </div>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml\"></div>\n <div [hidden]=\"model.completedState === ''\" [class]=\"model.css.saveData.root\">\n <div [class]=\"model.completedStateCss\">\n <span>{{model.completedStateText}}</span>\n <input type=\"button\" [hidden]=\"model.completedState != 'error'\"\n [value]=\"model.getLocString('saveAgainButton')\" (click)=\"model.doComplete()\"\n [class]=\"model.css.saveData.saveAgainButton\">\n </div>\n </div>\n <div *ngIf=\"model.state === 'completedbefore'\" [class]=\"model.css.body\"\n [innerHtml]=\"model.processedCompletedBeforeHtml\"></div>\n <div *ngIf=\"model.state === 'loading'\" [class]=\"model.css.body\" [innerHtml]=\"model.processedLoadingHtml\"></div>\n <div *ngIf=\"model.state === 'empty'\" [class]=\"model.css.bodyEmpty\">{{model.emptySurveyText}}</div>\n </div>\n </form>\n <sv-brand-info *ngIf=\"model.showBrandInfo\"></sv-brand-info>\n </div>\n</ng-template>", components: [{ type: i1.SurveyHeaderComponent, selector: "'[sv-ng-survey-header]'", inputs: ["survey"] }, { type: i2.ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: i3.PageComponent, selector: "page", inputs: ["model", "survey"] }, { type: i4.BrandInfoComponent, selector: "sv-brand-info" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
38
+ SurveyContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SurveyContentComponent, selector: "survey-content", inputs: { model: "model" }, viewQueries: [{ propertyName: "rootEl", first: true, predicate: ["surveyContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div #surveyContainer *ngIf=\"!!model\" [class]=\"model.getRootCss()\">\n <form onsubmit=\"return false;\">\n <div class=\"sv_custom_header\" [hidden]=\"model.hasLogo\"></div>\n <div [class]=\"model.css.container\">\n <div *ngIf=\"model.renderedHasHeader\" [class]=\"model.css.header\" [survey]=\"model\" sv-ng-survey-header></div>\n <ng-container *ngIf=\"model.isTimerPanelShowingOnTop && !model.isShowStartingPage\">\n <sv-timer-panel [model]=\"model.timerModel\"></sv-timer-panel>\n </ng-container>\n <ng-container *ngIf=\"model.isShowProgressBarOnTop && !model.isShowStartingPage\">\n <ng-template [component]='{ name: \"sv-progress-\" + this.model.progressBarType, data: { model } }'></ng-template>\n </ng-container>\n <div *ngIf=\"model.isShowingPage\" [class]=\"model.bodyCss\" [style.width]=\"model.renderedWidth\" [style.maxWidth]=\"model.renderedWidth\">\n <sv-action-bar *ngIf=\"model.isNavigationButtonsShowingOnTop\" [model]=\"model.navigationBar\"></sv-action-bar>\n <!-- ko if: activePage -->\n <ng-container *ngIf=\"model.activePage\">\n <div [id]=\"model.activePage.id\">\n <page [model]=\"model.activePage\" [survey]=\"model\"></page>\n </div>\n </ng-container>\n <!-- ko if: activePage.rows.length == 0 && $data.emptyPageTemplate -->\n <!-- ko template: { name: emptyPageTemplate, data: $data.emptyPageTemplateData || $data } -->\n <!-- /ko -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-container *ngIf=\"model.isShowProgressBarOnBottom && !model.isShowStartingPage\">\n <ng-template [component]='{ name: \"sv-progress-\" + this.model.progressBarType, data: { model } }'></ng-template>\n </ng-container>\n <ng-container *ngIf=\"model.isTimerPanelShowingOnBottom && !model.isShowStartingPage\">\n <sv-timer-panel [model]=\"model.timerModel\"></sv-timer-panel>\n </ng-container>\n <sv-action-bar *ngIf=\"model.isNavigationButtonsShowingOnBottom\" [model]=\"model.navigationBar\"></sv-action-bar>\n </div>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml\"></div>\n <div [hidden]=\"model.completedState === ''\" [class]=\"model.css.saveData.root\">\n <div [class]=\"model.completedStateCss\">\n <span>{{model.completedStateText}}</span>\n <input type=\"button\" [hidden]=\"model.completedState != 'error'\"\n [value]=\"model.getLocString('saveAgainButton')\" (click)=\"model.doComplete()\"\n [class]=\"model.css.saveData.saveAgainButton\">\n </div>\n </div>\n <div *ngIf=\"model.state === 'completedbefore'\" [class]=\"model.css.body\"\n [innerHtml]=\"model.processedCompletedBeforeHtml\"></div>\n <div *ngIf=\"model.state === 'loading'\" [class]=\"model.css.body\" [innerHtml]=\"model.processedLoadingHtml\"></div>\n <div *ngIf=\"model.state === 'empty'\" [class]=\"model.css.bodyEmpty\">{{model.emptySurveyText}}</div>\n </div>\n </form>\n <sv-brand-info *ngIf=\"model.showBrandInfo\"></sv-brand-info>\n </div>\n</ng-template>", components: [{ type: i1.SurveyHeaderComponent, selector: "'[sv-ng-survey-header]'", inputs: ["survey"] }, { type: i2.TimerPanelComponent, selector: "sv-timer-panel", inputs: ["model"] }, { type: i3.ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: i4.PageComponent, selector: "page", inputs: ["model", "survey"] }, { type: i5.BrandInfoComponent, selector: "sv-brand-info" }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
38
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyContentComponent, decorators: [{
39
40
  type: Component,
40
- args: [{ selector: "survey-content", template: "<ng-template #template>\n <div #surveyContainer *ngIf=\"!!model\" [class]=\"model.getRootCss()\">\n <form onsubmit=\"return false;\">\n <div class=\"sv_custom_header\" [hidden]=\"model.hasLogo\"></div>\n <div [class]=\"model.css.container\">\n <div *ngIf=\"model.renderedHasHeader\" [class]=\"model.css.header\" [survey]=\"model\" sv-ng-survey-header></div>\n <ng-container *ngIf=\"model.isShowProgressBarOnTop && !model.isShowStartingPage\">\n <ng-template [component]='{ name: \"sv-progress-\" + this.model.progressBarType, data: { model } }'></ng-template>\n </ng-container>\n <div *ngIf=\"model.isShowingPage\" [class]=\"model.bodyCss\" [style.width]=\"model.renderedWidth\" [style.maxWidth]=\"model.renderedWidth\">\n <!-- ko if: isTimerPanelShowingOnTop && !isShowStartingPage -->\n <!-- ko template: { name: 'survey-timerpanel' } -->\n <!-- /ko -->\n <!-- /ko -->\n <sv-action-bar *ngIf=\"model.isNavigationButtonsShowingOnTop\" [model]=\"model.navigationBar\"></sv-action-bar>\n <!-- ko if: activePage -->\n <ng-container *ngIf=\"model.activePage\">\n <div [id]=\"model.activePage.id\">\n <page [model]=\"model.activePage\" [survey]=\"model\"></page>\n </div>\n </ng-container>\n <!-- ko if: activePage.rows.length == 0 && $data.emptyPageTemplate -->\n <!-- ko template: { name: emptyPageTemplate, data: $data.emptyPageTemplateData || $data } -->\n <!-- /ko -->\n <!-- /ko -->\n <!-- /ko -->\n <!-- ko if: isTimerPanelShowingOnBottom && !isShowStartingPage -->\n <!-- ko template: { name: 'survey-timerpanel' } -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-container *ngIf=\"model.isShowProgressBarOnBottom && !model.isShowStartingPage\">\n <ng-template [component]='{ name: \"sv-progress-\" + this.model.progressBarType, data: { model } }'></ng-template>\n </ng-container>\n <sv-action-bar *ngIf=\"model.isNavigationButtonsShowingOnBottom\" [model]=\"model.navigationBar\"></sv-action-bar>\n </div>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml\"></div>\n <div [hidden]=\"model.completedState === ''\" [class]=\"model.css.saveData.root\">\n <div [class]=\"model.completedStateCss\">\n <span>{{model.completedStateText}}</span>\n <input type=\"button\" [hidden]=\"model.completedState != 'error'\"\n [value]=\"model.getLocString('saveAgainButton')\" (click)=\"model.doComplete()\"\n [class]=\"model.css.saveData.saveAgainButton\">\n </div>\n </div>\n <div *ngIf=\"model.state === 'completedbefore'\" [class]=\"model.css.body\"\n [innerHtml]=\"model.processedCompletedBeforeHtml\"></div>\n <div *ngIf=\"model.state === 'loading'\" [class]=\"model.css.body\" [innerHtml]=\"model.processedLoadingHtml\"></div>\n <div *ngIf=\"model.state === 'empty'\" [class]=\"model.css.bodyEmpty\">{{model.emptySurveyText}}</div>\n </div>\n </form>\n <sv-brand-info *ngIf=\"model.showBrandInfo\"></sv-brand-info>\n </div>\n</ng-template>" }]
41
+ args: [{ selector: "survey-content", template: "<ng-template #template>\n <div #surveyContainer *ngIf=\"!!model\" [class]=\"model.getRootCss()\">\n <form onsubmit=\"return false;\">\n <div class=\"sv_custom_header\" [hidden]=\"model.hasLogo\"></div>\n <div [class]=\"model.css.container\">\n <div *ngIf=\"model.renderedHasHeader\" [class]=\"model.css.header\" [survey]=\"model\" sv-ng-survey-header></div>\n <ng-container *ngIf=\"model.isTimerPanelShowingOnTop && !model.isShowStartingPage\">\n <sv-timer-panel [model]=\"model.timerModel\"></sv-timer-panel>\n </ng-container>\n <ng-container *ngIf=\"model.isShowProgressBarOnTop && !model.isShowStartingPage\">\n <ng-template [component]='{ name: \"sv-progress-\" + this.model.progressBarType, data: { model } }'></ng-template>\n </ng-container>\n <div *ngIf=\"model.isShowingPage\" [class]=\"model.bodyCss\" [style.width]=\"model.renderedWidth\" [style.maxWidth]=\"model.renderedWidth\">\n <sv-action-bar *ngIf=\"model.isNavigationButtonsShowingOnTop\" [model]=\"model.navigationBar\"></sv-action-bar>\n <!-- ko if: activePage -->\n <ng-container *ngIf=\"model.activePage\">\n <div [id]=\"model.activePage.id\">\n <page [model]=\"model.activePage\" [survey]=\"model\"></page>\n </div>\n </ng-container>\n <!-- ko if: activePage.rows.length == 0 && $data.emptyPageTemplate -->\n <!-- ko template: { name: emptyPageTemplate, data: $data.emptyPageTemplateData || $data } -->\n <!-- /ko -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-container *ngIf=\"model.isShowProgressBarOnBottom && !model.isShowStartingPage\">\n <ng-template [component]='{ name: \"sv-progress-\" + this.model.progressBarType, data: { model } }'></ng-template>\n </ng-container>\n <ng-container *ngIf=\"model.isTimerPanelShowingOnBottom && !model.isShowStartingPage\">\n <sv-timer-panel [model]=\"model.timerModel\"></sv-timer-panel>\n </ng-container>\n <sv-action-bar *ngIf=\"model.isNavigationButtonsShowingOnBottom\" [model]=\"model.navigationBar\"></sv-action-bar>\n </div>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml\"></div>\n <div [hidden]=\"model.completedState === ''\" [class]=\"model.css.saveData.root\">\n <div [class]=\"model.completedStateCss\">\n <span>{{model.completedStateText}}</span>\n <input type=\"button\" [hidden]=\"model.completedState != 'error'\"\n [value]=\"model.getLocString('saveAgainButton')\" (click)=\"model.doComplete()\"\n [class]=\"model.css.saveData.saveAgainButton\">\n </div>\n </div>\n <div *ngIf=\"model.state === 'completedbefore'\" [class]=\"model.css.body\"\n [innerHtml]=\"model.processedCompletedBeforeHtml\"></div>\n <div *ngIf=\"model.state === 'loading'\" [class]=\"model.css.body\" [innerHtml]=\"model.processedLoadingHtml\"></div>\n <div *ngIf=\"model.state === 'empty'\" [class]=\"model.css.bodyEmpty\">{{model.emptySurveyText}}</div>\n </div>\n </form>\n <sv-brand-info *ngIf=\"model.showBrandInfo\"></sv-brand-info>\n </div>\n</ng-template>" }]
41
42
  }], propDecorators: { model: [{
42
43
  type: Input
43
44
  }], rootEl: [{
@@ -45,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
45
46
  args: ["surveyContainer", { static: false }]
46
47
  }] } });
47
48
  AngularComponentFactory.Instance.registerComponent("survey", SurveyContentComponent);
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvc3VydmV5LWFuZ3VsYXItdWkvc3JjL3N1cnZleS1jb250ZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3BhY2thZ2VzL3N1cnZleS1hbmd1bGFyLXVpL3NyYy9zdXJ2ZXktY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFLOUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFdBQXdCO0lBR3hELFFBQVE7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDa0IsY0FBYztRQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDUSxRQUFRO1FBQ2YsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ2hDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFDUSxXQUFXO1FBQ2xCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBUSxTQUFTLENBQUM7SUFDN0MsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7bUhBdkJVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLG9OQ1RuQyxxeUdBcURjOzJGRDVDRCxzQkFBc0I7a0JBSmxDLFNBQVM7K0JBQ0UsZ0JBQWdCOzhCQUlqQixLQUFLO3NCQUFiLEtBQUs7Z0JBQzJDLE1BQU07c0JBQXRELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztBQXdCakQsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTdXJ2ZXlNb2RlbCwgU3ZnUmVnaXN0cnkgfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcbmltcG9ydCB7IEJhc2VBbmd1bGFyIH0gZnJvbSBcIi4vYmFzZS1hbmd1bGFyXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCIuL2NvbXBvbmVudC1mYWN0b3J5XCI7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3VydmV5LWNvbnRlbnRcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9zdXJ2ZXktY29udGVudC5jb21wb25lbnQuaHRtbFwiXG59KVxuZXhwb3J0IGNsYXNzIFN1cnZleUNvbnRlbnRDb21wb25lbnQgZXh0ZW5kcyBCYXNlQW5ndWxhcjxTdXJ2ZXlNb2RlbD4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBtb2RlbCE6IFN1cnZleU1vZGVsO1xuICBAVmlld0NoaWxkKFwic3VydmV5Q29udGFpbmVyXCIsIHsgc3RhdGljOiBmYWxzZSB9KSByb290RWwhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgcHJvdGVjdGVkIGdldE1vZGVsKCk6IFN1cnZleU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgfVxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25Nb2RlbENoYW5nZWQoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbC5yZW5kZXJDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG4gIH1cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBpZih0aGlzLm1vZGVsW1wibmVlZFJlbmRlckljb25zXCJdKSB7XG4gICAgICBTdmdSZWdpc3RyeS5yZW5kZXJJY29ucygpO1xuICAgIH1cbiAgfVxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMubW9kZWwucmVuZGVyQ2FsbGJhY2sgPSA8YW55PnVuZGVmaW5lZDtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbC5hZnRlclJlbmRlclN1cnZleSh0aGlzLnJvb3RFbC5uYXRpdmVFbGVtZW50KTtcbiAgfVxufVxuXG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcInN1cnZleVwiLCBTdXJ2ZXlDb250ZW50Q29tcG9uZW50KTsiLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICA8ZGl2ICNzdXJ2ZXlDb250YWluZXIgKm5nSWY9XCIhIW1vZGVsXCIgW2NsYXNzXT1cIm1vZGVsLmdldFJvb3RDc3MoKVwiPlxuICAgIDxmb3JtIG9uc3VibWl0PVwicmV0dXJuIGZhbHNlO1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInN2X2N1c3RvbV9oZWFkZXJcIiBbaGlkZGVuXT1cIm1vZGVsLmhhc0xvZ29cIj48L2Rpdj5cbiAgICAgIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzcy5jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGVsLnJlbmRlcmVkSGFzSGVhZGVyXCIgW2NsYXNzXT1cIm1vZGVsLmNzcy5oZWFkZXJcIiBbc3VydmV5XT1cIm1vZGVsXCIgc3Ytbmctc3VydmV5LWhlYWRlcj48L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGVsLmlzU2hvd1Byb2dyZXNzQmFyT25Ub3AgJiYgIW1vZGVsLmlzU2hvd1N0YXJ0aW5nUGFnZVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT0neyBuYW1lOiBcInN2LXByb2dyZXNzLVwiICsgdGhpcy5tb2RlbC5wcm9ncmVzc0JhclR5cGUsIGRhdGE6IHsgbW9kZWwgfSB9Jz48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGVsLmlzU2hvd2luZ1BhZ2VcIiBbY2xhc3NdPVwibW9kZWwuYm9keUNzc1wiIFtzdHlsZS53aWR0aF09XCJtb2RlbC5yZW5kZXJlZFdpZHRoXCIgW3N0eWxlLm1heFdpZHRoXT1cIm1vZGVsLnJlbmRlcmVkV2lkdGhcIj5cbiAgICAgICAgICA8IS0tIGtvIGlmOiBpc1RpbWVyUGFuZWxTaG93aW5nT25Ub3AgJiYgIWlzU2hvd1N0YXJ0aW5nUGFnZSAtLT5cbiAgICAgICAgICA8IS0tIGtvIHRlbXBsYXRlOiB7IG5hbWU6ICdzdXJ2ZXktdGltZXJwYW5lbCcgfSAtLT5cbiAgICAgICAgICA8IS0tIC9rbyAtLT5cbiAgICAgICAgICA8IS0tIC9rbyAtLT5cbiAgICAgICAgICA8c3YtYWN0aW9uLWJhciAqbmdJZj1cIm1vZGVsLmlzTmF2aWdhdGlvbkJ1dHRvbnNTaG93aW5nT25Ub3BcIiBbbW9kZWxdPVwibW9kZWwubmF2aWdhdGlvbkJhclwiPjwvc3YtYWN0aW9uLWJhcj5cbiAgICAgICAgICA8IS0tIGtvIGlmOiBhY3RpdmVQYWdlIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGVsLmFjdGl2ZVBhZ2VcIj5cbiAgICAgICAgICAgICAgPGRpdiBbaWRdPVwibW9kZWwuYWN0aXZlUGFnZS5pZFwiPlxuICAgICAgICAgICAgICAgIDxwYWdlIFttb2RlbF09XCJtb2RlbC5hY3RpdmVQYWdlXCIgW3N1cnZleV09XCJtb2RlbFwiPjwvcGFnZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwhLS0ga28gaWY6IGFjdGl2ZVBhZ2Uucm93cy5sZW5ndGggPT0gMCAmJiAkZGF0YS5lbXB0eVBhZ2VUZW1wbGF0ZSAtLT5cbiAgICAgICAgICAgIDwhLS0ga28gdGVtcGxhdGU6IHsgbmFtZTogZW1wdHlQYWdlVGVtcGxhdGUsIGRhdGE6ICRkYXRhLmVtcHR5UGFnZVRlbXBsYXRlRGF0YSB8fCAkZGF0YSB9IC0tPlxuICAgICAgICAgICAgPCEtLSAva28gLS0+XG4gICAgICAgICAgICA8IS0tIC9rbyAtLT5cbiAgICAgICAgICA8IS0tIC9rbyAtLT5cbiAgICAgICAgICA8IS0tIGtvIGlmOiBpc1RpbWVyUGFuZWxTaG93aW5nT25Cb3R0b20gJiYgIWlzU2hvd1N0YXJ0aW5nUGFnZSAtLT5cbiAgICAgICAgICA8IS0tIGtvIHRlbXBsYXRlOiB7IG5hbWU6ICdzdXJ2ZXktdGltZXJwYW5lbCcgfSAtLT5cbiAgICAgICAgICA8IS0tIC9rbyAtLT5cbiAgICAgICAgICA8IS0tIC9rbyAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwuaXNTaG93UHJvZ3Jlc3NCYXJPbkJvdHRvbSAmJiAhbW9kZWwuaXNTaG93U3RhcnRpbmdQYWdlXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudF09J3sgbmFtZTogXCJzdi1wcm9ncmVzcy1cIiArIHRoaXMubW9kZWwucHJvZ3Jlc3NCYXJUeXBlLCBkYXRhOiB7IG1vZGVsIH0gfSc+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8c3YtYWN0aW9uLWJhciAqbmdJZj1cIm1vZGVsLmlzTmF2aWdhdGlvbkJ1dHRvbnNTaG93aW5nT25Cb3R0b21cIiBbbW9kZWxdPVwibW9kZWwubmF2aWdhdGlvbkJhclwiPjwvc3YtYWN0aW9uLWJhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlbC5zdGF0ZSA9PT0gJ2NvbXBsZXRlZCcgJiYgbW9kZWwuc2hvd0NvbXBsZXRlZFBhZ2VcIiBbY2xhc3NdPVwibW9kZWwuY29tcGxldGVkQ3NzXCJcbiAgICAgICAgICBbaW5uZXJIdG1sXT1cIm1vZGVsLnByb2Nlc3NlZENvbXBsZXRlZEh0bWxcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBbaGlkZGVuXT1cIm1vZGVsLmNvbXBsZXRlZFN0YXRlID09PSAnJ1wiIFtjbGFzc109XCJtb2RlbC5jc3Muc2F2ZURhdGEucm9vdFwiPlxuICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNvbXBsZXRlZFN0YXRlQ3NzXCI+XG4gICAgICAgICAgICA8c3Bhbj57e21vZGVsLmNvbXBsZXRlZFN0YXRlVGV4dH19PC9zcGFuPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJidXR0b25cIiBbaGlkZGVuXT1cIm1vZGVsLmNvbXBsZXRlZFN0YXRlICE9ICdlcnJvcidcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwibW9kZWwuZ2V0TG9jU3RyaW5nKCdzYXZlQWdhaW5CdXR0b24nKVwiIChjbGljayk9XCJtb2RlbC5kb0NvbXBsZXRlKClcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwibW9kZWwuY3NzLnNhdmVEYXRhLnNhdmVBZ2FpbkJ1dHRvblwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGVsLnN0YXRlID09PSAnY29tcGxldGVkYmVmb3JlJ1wiIFtjbGFzc109XCJtb2RlbC5jc3MuYm9keVwiXG4gICAgICAgICAgW2lubmVySHRtbF09XCJtb2RlbC5wcm9jZXNzZWRDb21wbGV0ZWRCZWZvcmVIdG1sXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlbC5zdGF0ZSA9PT0gJ2xvYWRpbmcnXCIgW2NsYXNzXT1cIm1vZGVsLmNzcy5ib2R5XCIgW2lubmVySHRtbF09XCJtb2RlbC5wcm9jZXNzZWRMb2FkaW5nSHRtbFwiPjwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZWwuc3RhdGUgPT09ICdlbXB0eSdcIiBbY2xhc3NdPVwibW9kZWwuY3NzLmJvZHlFbXB0eVwiPnt7bW9kZWwuZW1wdHlTdXJ2ZXlUZXh0fX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgICA8c3YtYnJhbmQtaW5mbyAqbmdJZj1cIm1vZGVsLnNob3dCcmFuZEluZm9cIj48L3N2LWJyYW5kLWluZm8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvc3VydmV5LWFuZ3VsYXItdWkvc3JjL3N1cnZleS1jb250ZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3BhY2thZ2VzL3N1cnZleS1hbmd1bGFyLXVpL3NyYy9zdXJ2ZXktY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7O0FBSzlELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxXQUF3QjtJQUd4RCxRQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ2tCLGNBQWM7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFO1lBQy9CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUM7SUFDSixDQUFDO0lBQ1EsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUNoQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBQ1EsV0FBVztRQUNsQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQVEsU0FBUyxDQUFDO0lBQzdDLENBQUM7SUFDRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFELENBQUM7O21IQXZCVSxzQkFBc0I7dUdBQXRCLHNCQUFzQixvTkNUbkMseXpHQW1EYzsyRkQxQ0Qsc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLGdCQUFnQjs4QkFJakIsS0FBSztzQkFBYixLQUFLO2dCQUMyQyxNQUFNO3NCQUF0RCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7QUF3QmpELHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3VydmV5TW9kZWwsIFN2Z1JlZ2lzdHJ5IH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBCYXNlQW5ndWxhciB9IGZyb20gXCIuL2Jhc2UtYW5ndWxhclwiO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudEZhY3RvcnkgfSBmcm9tIFwiLi9jb21wb25lbnQtZmFjdG9yeVwiO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInN1cnZleS1jb250ZW50XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vc3VydmV5LWNvbnRlbnQuY29tcG9uZW50Lmh0bWxcIlxufSlcbmV4cG9ydCBjbGFzcyBTdXJ2ZXlDb250ZW50Q29tcG9uZW50IGV4dGVuZHMgQmFzZUFuZ3VsYXI8U3VydmV5TW9kZWw+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgbW9kZWwhOiBTdXJ2ZXlNb2RlbDtcbiAgQFZpZXdDaGlsZChcInN1cnZleUNvbnRhaW5lclwiLCB7IHN0YXRpYzogZmFsc2UgfSkgcm9vdEVsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIHByb3RlY3RlZCBnZXRNb2RlbCgpOiBTdXJ2ZXlNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWw7XG4gIH1cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG9uTW9kZWxDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwucmVuZGVyQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgICB9O1xuICB9XG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYodGhpcy5tb2RlbFtcIm5lZWRSZW5kZXJJY29uc1wiXSkge1xuICAgICAgU3ZnUmVnaXN0cnkucmVuZGVySWNvbnMoKTtcbiAgICB9XG4gIH1cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLm1vZGVsLnJlbmRlckNhbGxiYWNrID0gPGFueT51bmRlZmluZWQ7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwuYWZ0ZXJSZW5kZXJTdXJ2ZXkodGhpcy5yb290RWwubmF0aXZlRWxlbWVudCk7XG4gIH1cbn1cblxuQW5ndWxhckNvbXBvbmVudEZhY3RvcnkuSW5zdGFuY2UucmVnaXN0ZXJDb21wb25lbnQoXCJzdXJ2ZXlcIiwgU3VydmV5Q29udGVudENvbXBvbmVudCk7IiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgPGRpdiAjc3VydmV5Q29udGFpbmVyICpuZ0lmPVwiISFtb2RlbFwiIFtjbGFzc109XCJtb2RlbC5nZXRSb290Q3NzKClcIj5cbiAgICA8Zm9ybSBvbnN1Ym1pdD1cInJldHVybiBmYWxzZTtcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdl9jdXN0b21faGVhZGVyXCIgW2hpZGRlbl09XCJtb2RlbC5oYXNMb2dvXCI+PC9kaXY+XG4gICAgICA8ZGl2IFtjbGFzc109XCJtb2RlbC5jc3MuY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlbC5yZW5kZXJlZEhhc0hlYWRlclwiIFtjbGFzc109XCJtb2RlbC5jc3MuaGVhZGVyXCIgW3N1cnZleV09XCJtb2RlbFwiIHN2LW5nLXN1cnZleS1oZWFkZXI+PC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbC5pc1RpbWVyUGFuZWxTaG93aW5nT25Ub3AgJiYgIW1vZGVsLmlzU2hvd1N0YXJ0aW5nUGFnZVwiPlxuICAgICAgICAgIDxzdi10aW1lci1wYW5lbCBbbW9kZWxdPVwibW9kZWwudGltZXJNb2RlbFwiPjwvc3YtdGltZXItcGFuZWw+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwuaXNTaG93UHJvZ3Jlc3NCYXJPblRvcCAmJiAhbW9kZWwuaXNTaG93U3RhcnRpbmdQYWdlXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtjb21wb25lbnRdPSd7IG5hbWU6IFwic3YtcHJvZ3Jlc3MtXCIgKyB0aGlzLm1vZGVsLnByb2dyZXNzQmFyVHlwZSwgZGF0YTogeyBtb2RlbCB9IH0nPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZWwuaXNTaG93aW5nUGFnZVwiIFtjbGFzc109XCJtb2RlbC5ib2R5Q3NzXCIgW3N0eWxlLndpZHRoXT1cIm1vZGVsLnJlbmRlcmVkV2lkdGhcIiBbc3R5bGUubWF4V2lkdGhdPVwibW9kZWwucmVuZGVyZWRXaWR0aFwiPlxuICAgICAgICAgIDxzdi1hY3Rpb24tYmFyICpuZ0lmPVwibW9kZWwuaXNOYXZpZ2F0aW9uQnV0dG9uc1Nob3dpbmdPblRvcFwiIFttb2RlbF09XCJtb2RlbC5uYXZpZ2F0aW9uQmFyXCI+PC9zdi1hY3Rpb24tYmFyPlxuICAgICAgICAgIDwhLS0ga28gaWY6IGFjdGl2ZVBhZ2UgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwuYWN0aXZlUGFnZVwiPlxuICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJtb2RlbC5hY3RpdmVQYWdlLmlkXCI+XG4gICAgICAgICAgICAgICAgPHBhZ2UgW21vZGVsXT1cIm1vZGVsLmFjdGl2ZVBhZ2VcIiBbc3VydmV5XT1cIm1vZGVsXCI+PC9wYWdlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPCEtLSBrbyBpZjogYWN0aXZlUGFnZS5yb3dzLmxlbmd0aCA9PSAwICYmICRkYXRhLmVtcHR5UGFnZVRlbXBsYXRlIC0tPlxuICAgICAgICAgICAgPCEtLSBrbyB0ZW1wbGF0ZTogeyBuYW1lOiBlbXB0eVBhZ2VUZW1wbGF0ZSwgZGF0YTogJGRhdGEuZW1wdHlQYWdlVGVtcGxhdGVEYXRhIHx8ICRkYXRhIH0gLS0+XG4gICAgICAgICAgICA8IS0tIC9rbyAtLT5cbiAgICAgICAgICAgIDwhLS0gL2tvIC0tPlxuICAgICAgICAgIDwhLS0gL2tvIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbC5pc1Nob3dQcm9ncmVzc0Jhck9uQm90dG9tICYmICFtb2RlbC5pc1Nob3dTdGFydGluZ1BhZ2VcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT0neyBuYW1lOiBcInN2LXByb2dyZXNzLVwiICsgdGhpcy5tb2RlbC5wcm9ncmVzc0JhclR5cGUsIGRhdGE6IHsgbW9kZWwgfSB9Jz48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbC5pc1RpbWVyUGFuZWxTaG93aW5nT25Cb3R0b20gJiYgIW1vZGVsLmlzU2hvd1N0YXJ0aW5nUGFnZVwiPlxuICAgICAgICAgICAgPHN2LXRpbWVyLXBhbmVsIFttb2RlbF09XCJtb2RlbC50aW1lck1vZGVsXCI+PC9zdi10aW1lci1wYW5lbD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8c3YtYWN0aW9uLWJhciAqbmdJZj1cIm1vZGVsLmlzTmF2aWdhdGlvbkJ1dHRvbnNTaG93aW5nT25Cb3R0b21cIiBbbW9kZWxdPVwibW9kZWwubmF2aWdhdGlvbkJhclwiPjwvc3YtYWN0aW9uLWJhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlbC5zdGF0ZSA9PT0gJ2NvbXBsZXRlZCcgJiYgbW9kZWwuc2hvd0NvbXBsZXRlZFBhZ2VcIiBbY2xhc3NdPVwibW9kZWwuY29tcGxldGVkQ3NzXCJcbiAgICAgICAgICBbaW5uZXJIdG1sXT1cIm1vZGVsLnByb2Nlc3NlZENvbXBsZXRlZEh0bWxcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBbaGlkZGVuXT1cIm1vZGVsLmNvbXBsZXRlZFN0YXRlID09PSAnJ1wiIFtjbGFzc109XCJtb2RlbC5jc3Muc2F2ZURhdGEucm9vdFwiPlxuICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNvbXBsZXRlZFN0YXRlQ3NzXCI+XG4gICAgICAgICAgICA8c3Bhbj57e21vZGVsLmNvbXBsZXRlZFN0YXRlVGV4dH19PC9zcGFuPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJidXR0b25cIiBbaGlkZGVuXT1cIm1vZGVsLmNvbXBsZXRlZFN0YXRlICE9ICdlcnJvcidcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwibW9kZWwuZ2V0TG9jU3RyaW5nKCdzYXZlQWdhaW5CdXR0b24nKVwiIChjbGljayk9XCJtb2RlbC5kb0NvbXBsZXRlKClcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwibW9kZWwuY3NzLnNhdmVEYXRhLnNhdmVBZ2FpbkJ1dHRvblwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGVsLnN0YXRlID09PSAnY29tcGxldGVkYmVmb3JlJ1wiIFtjbGFzc109XCJtb2RlbC5jc3MuYm9keVwiXG4gICAgICAgICAgW2lubmVySHRtbF09XCJtb2RlbC5wcm9jZXNzZWRDb21wbGV0ZWRCZWZvcmVIdG1sXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlbC5zdGF0ZSA9PT0gJ2xvYWRpbmcnXCIgW2NsYXNzXT1cIm1vZGVsLmNzcy5ib2R5XCIgW2lubmVySHRtbF09XCJtb2RlbC5wcm9jZXNzZWRMb2FkaW5nSHRtbFwiPjwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZWwuc3RhdGUgPT09ICdlbXB0eSdcIiBbY2xhc3NdPVwibW9kZWwuY3NzLmJvZHlFbXB0eVwiPnt7bW9kZWwuZW1wdHlTdXJ2ZXlUZXh0fX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgICA8c3YtYnJhbmQtaW5mbyAqbmdJZj1cIm1vZGVsLnNob3dCcmFuZEluZm9cIj48L3N2LWJyYW5kLWluZm8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=