survey-angular-ui
Version:
survey.js is a JavaScript Survey Library. It is a modern way to add a survey to your website. It uses JSON for survey metadata and results.
72 lines • 14.4 kB
JavaScript
import { Component } from "@angular/core";
import { QuestionAngular } from "../question";
import { AngularComponentFactory } from "../component-factory";
import * as i0 from "@angular/core";
import * as i1 from "../components/action-bar/action-bar.component";
import * as i2 from "../components/paneldynamicplaceholder/paneldynamicplaceholder.component";
import * as i3 from "../components/paneldynamic-actions/paneldynamic-add-btn.component";
import * as i4 from "@angular/common";
import * as i5 from "../utils/dynamic.directive";
export class PanelDynamicQuestionComponent extends QuestionAngular {
trackPanelBy(_, panel) {
return panel.id;
}
onModelChanged() {
super.onModelChanged();
this.model.panelCountChangedCallback = () => {
this.update();
};
this.model.currentIndexChangedCallback = () => {
this.update();
};
this.model.renderModeChangedCallback = () => {
this.update();
};
}
get progressCssClass() {
return this.model.isProgressTopShowing
? this.model.cssClasses.progressTop
: this.model.cssClasses.progressBottom;
}
ngOnDestroy() {
this.model.panelCountChangedCallback = () => { };
this.model.currentIndexChangedCallback = () => { };
this.model.renderModeChangedCallback = () => { };
super.ngOnDestroy();
}
getPanelComponentName(panel) {
const survey = this.surveyModel;
if (!!survey) {
const name = survey.getElementWrapperComponentName(panel);
if (!!name) {
return name;
}
}
return "panel";
}
getPanelComponentData(panel) {
const survey = this.surveyModel;
let data;
if (!!survey) {
data = survey.getElementWrapperComponentData(panel);
}
return {
componentName: "panel",
componentData: {
model: panel,
data: data
}
};
}
}
PanelDynamicQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
PanelDynamicQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PanelDynamicQuestionComponent, selector: "sv-ng-paneldynamic-question", usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.cssClasses.root\" #contentElement>\n <div *ngIf=\"model.hasTabbedMenu\" [class]=\"model.getTabsContainerCss()\">\n <sv-action-bar [model]=\"model.tabbedMenu\"></sv-action-bar>\n </div>\n <sv-ng-placeholder-paneldynamic [question]=\"model\"></sv-ng-placeholder-paneldynamic>\n <div [class]=\"model.cssClasses.progress\" *ngIf=\"model.isProgressTopShowing && model.isRangeShowing\">\n <div [class]=\"model.cssClasses.progressBar\" [style]=\"{ width: model.progress }\"\n role=\"progressbar\" [attr.aria-label]=\"model.progressBarAriaLabel\"\n ></div>\n </div>\n <div [class]=\"model.cssClasses.panelsContainer\">\n <ng-container *ngFor=\"let panel of model.renderedPanels; index as index; trackBy: trackPanelBy\">\n <div [class]=\"model.getPanelWrapperCss(panel)\">\n <ng-template\n [component]=\"{ name: getPanelComponentName(panel), data: getPanelComponentData(panel) }\"></ng-template>\n <ng-container *ngIf=\"model.canRenderRemovePanelOnRight(panel)\">\n <ng-template\n [component]=\"{ name: 'sv-paneldynamic-remove-btn', data: { data: { panel, question: model }}}\"></ng-template>\n </ng-container>\n </div>\n <hr [class]=\"model.cssClasses.separator\" *ngIf=\"model.showSeparator(index)\" />\n </ng-container>\n </div>\n <sv-ng-paneldynamic-add-btn *ngIf=\"model.showLegacyNavigation && model.isRenderModeList\"\n [data]=\"{ question: model }\"></sv-ng-paneldynamic-add-btn>\n <ng-container [ngTemplateOutlet]=\"progressV2\" *ngIf=\"model.showNavigation\"></ng-container>\n</div>\n<ng-template #progressV2>\n <div [class]=\"model.cssClasses.footer\" *ngIf=\"!!model.cssClasses.footer\">\n <hr [class]=\"model.cssClasses.separator\" />\n <div [class]=\"model.cssClasses.progress\" *ngIf=\"model.isRangeShowing && model.isProgressBottomShowing\">\n <div [class]=\"model.cssClasses.progressBar\" [style]=\"{ width: model.progress }\" \n role=\"progressbar\" [attr.aria-label]=\"model.progressBarAriaLabel\"\n ></div>\n </div>\n <div *ngIf=\"model.showFooterToolbar\" [class]=\"model.cssClasses.footerButtonsContainer\">\n <sv-ng-action-bar [model]=\"model.footerToolbar\"></sv-ng-action-bar>\n </div>\n </div>\n</ng-template>", components: [{ type: i1.ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: i2.PanelDynamicPlaceholderComponent, selector: "sv-ng-placeholder-paneldynamic", inputs: ["question"] }, { type: i3.PanelDynamicAddBtn, selector: "sv-ng-paneldynamic-add-btn" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicQuestionComponent, decorators: [{
type: Component,
args: [{
selector: "sv-ng-paneldynamic-question",
templateUrl: "./paneldynamic.component.html"
}]
}] });
AngularComponentFactory.Instance.registerComponent("paneldynamic-question", PanelDynamicQuestionComponent);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWxkeW5hbWljLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9xdWVzdGlvbnMvcGFuZWxkeW5hbWljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9xdWVzdGlvbnMvcGFuZWxkeW5hbWljLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7OztBQU0vRCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsZUFBZ0Q7SUFDMUYsWUFBWSxDQUFDLENBQVMsRUFBRSxLQUFpQjtRQUM5QyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUNrQixjQUFjO1FBQy9CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixHQUFHLEdBQUcsRUFBRTtZQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsR0FBRyxHQUFHLEVBQUU7WUFDNUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMseUJBQXlCLEdBQUcsR0FBRyxFQUFFO1lBQzFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQjtZQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVztZQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDO0lBQzNDLENBQUM7SUFDUSxXQUFXO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMseUJBQXlCLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMseUJBQXlCLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ2hELEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ00scUJBQXFCLENBQUMsS0FBaUI7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQTBCLENBQUM7UUFDL0MsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQ1osTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTtnQkFDVixPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBQ00scUJBQXFCLENBQUMsS0FBaUI7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQTBCLENBQUM7UUFDL0MsSUFBSSxJQUFTLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFDWixJQUFJLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3JEO1FBQ0QsT0FBTztZQUNMLGFBQWEsRUFBRSxPQUFPO1lBQ3RCLGFBQWEsRUFBRTtnQkFDYixLQUFLLEVBQUUsS0FBSztnQkFDWixJQUFJLEVBQUUsSUFBSTthQUNYO1NBQ0YsQ0FBQztJQUNKLENBQUM7OzJIQWxEVSw2QkFBNkI7K0dBQTdCLDZCQUE2QiwwRkNUMUMseXVFQXVDYzs0RkQ5QkQsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFdBQVcsRUFBRSwrQkFBK0I7aUJBQzdDOztBQXNERCx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVBQUUsNkJBQTZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFF1ZXN0aW9uQW5ndWxhciB9IGZyb20gXCIuLi9xdWVzdGlvblwiO1xuaW1wb3J0IHsgUGFuZWxNb2RlbCwgUXVlc3Rpb25QYW5lbER5bmFtaWNNb2RlbCwgU3VydmV5TW9kZWwgfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRGYWN0b3J5IH0gZnJvbSBcIi4uL2NvbXBvbmVudC1mYWN0b3J5XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzdi1uZy1wYW5lbGR5bmFtaWMtcXVlc3Rpb25cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9wYW5lbGR5bmFtaWMuY29tcG9uZW50Lmh0bWxcIlxufSlcbmV4cG9ydCBjbGFzcyBQYW5lbER5bmFtaWNRdWVzdGlvbkNvbXBvbmVudCBleHRlbmRzIFF1ZXN0aW9uQW5ndWxhcjxRdWVzdGlvblBhbmVsRHluYW1pY01vZGVsIHwgYW55PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyB0cmFja1BhbmVsQnkoXzogbnVtYmVyLCBwYW5lbDogUGFuZWxNb2RlbCkge1xuICAgIHJldHVybiBwYW5lbC5pZDtcbiAgfVxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25Nb2RlbENoYW5nZWQoKTogdm9pZCB7XG4gICAgc3VwZXIub25Nb2RlbENoYW5nZWQoKTtcbiAgICB0aGlzLm1vZGVsLnBhbmVsQ291bnRDaGFuZ2VkQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH07XG4gICAgdGhpcy5tb2RlbC5jdXJyZW50SW5kZXhDaGFuZ2VkQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH07XG4gICAgdGhpcy5tb2RlbC5yZW5kZXJNb2RlQ2hhbmdlZENhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9O1xuICB9XG4gIGdldCBwcm9ncmVzc0Nzc0NsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsLmlzUHJvZ3Jlc3NUb3BTaG93aW5nXG4gICAgICA/IHRoaXMubW9kZWwuY3NzQ2xhc3Nlcy5wcm9ncmVzc1RvcFxuICAgICAgOiB0aGlzLm1vZGVsLmNzc0NsYXNzZXMucHJvZ3Jlc3NCb3R0b207XG4gIH1cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbC5wYW5lbENvdW50Q2hhbmdlZENhbGxiYWNrID0gKCkgPT4ge307XG4gICAgdGhpcy5tb2RlbC5jdXJyZW50SW5kZXhDaGFuZ2VkQ2FsbGJhY2sgPSAoKSA9PiB7fTtcbiAgICB0aGlzLm1vZGVsLnJlbmRlck1vZGVDaGFuZ2VkQ2FsbGJhY2sgPSAoKSA9PiB7fTtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG4gIHB1YmxpYyBnZXRQYW5lbENvbXBvbmVudE5hbWUocGFuZWw6IFBhbmVsTW9kZWwpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1cnZleSA9IHRoaXMuc3VydmV5TW9kZWwgYXMgU3VydmV5TW9kZWw7XG4gICAgaWYgKCEhc3VydmV5KSB7XG4gICAgICBjb25zdCBuYW1lID0gc3VydmV5LmdldEVsZW1lbnRXcmFwcGVyQ29tcG9uZW50TmFtZShwYW5lbCk7XG4gICAgICBpZiAoISFuYW1lKSB7XG4gICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gXCJwYW5lbFwiO1xuICB9XG4gIHB1YmxpYyBnZXRQYW5lbENvbXBvbmVudERhdGEocGFuZWw6IFBhbmVsTW9kZWwpOiBhbnkge1xuICAgIGNvbnN0IHN1cnZleSA9IHRoaXMuc3VydmV5TW9kZWwgYXMgU3VydmV5TW9kZWw7XG4gICAgbGV0IGRhdGE6IGFueTtcbiAgICBpZiAoISFzdXJ2ZXkpIHtcbiAgICAgIGRhdGEgPSBzdXJ2ZXkuZ2V0RWxlbWVudFdyYXBwZXJDb21wb25lbnREYXRhKHBhbmVsKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbXBvbmVudE5hbWU6IFwicGFuZWxcIixcbiAgICAgIGNvbXBvbmVudERhdGE6IHtcbiAgICAgICAgbW9kZWw6IHBhbmVsLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcInBhbmVsZHluYW1pYy1xdWVzdGlvblwiLCBQYW5lbER5bmFtaWNRdWVzdGlvbkNvbXBvbmVudCk7IiwiPGRpdiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5yb290XCIgI2NvbnRlbnRFbGVtZW50PlxuICA8ZGl2ICpuZ0lmPVwibW9kZWwuaGFzVGFiYmVkTWVudVwiIFtjbGFzc109XCJtb2RlbC5nZXRUYWJzQ29udGFpbmVyQ3NzKClcIj5cbiAgICA8c3YtYWN0aW9uLWJhciBbbW9kZWxdPVwibW9kZWwudGFiYmVkTWVudVwiPjwvc3YtYWN0aW9uLWJhcj5cbiAgPC9kaXY+XG4gIDxzdi1uZy1wbGFjZWhvbGRlci1wYW5lbGR5bmFtaWMgW3F1ZXN0aW9uXT1cIm1vZGVsXCI+PC9zdi1uZy1wbGFjZWhvbGRlci1wYW5lbGR5bmFtaWM+XG4gIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMucHJvZ3Jlc3NcIiAqbmdJZj1cIm1vZGVsLmlzUHJvZ3Jlc3NUb3BTaG93aW5nICYmIG1vZGVsLmlzUmFuZ2VTaG93aW5nXCI+XG4gICAgPGRpdiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5wcm9ncmVzc0JhclwiIFtzdHlsZV09XCJ7IHdpZHRoOiBtb2RlbC5wcm9ncmVzcyB9XCJcbiAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vZGVsLnByb2dyZXNzQmFyQXJpYUxhYmVsXCJcbiAgICA+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLnBhbmVsc0NvbnRhaW5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhbmVsIG9mIG1vZGVsLnJlbmRlcmVkUGFuZWxzOyBpbmRleCBhcyBpbmRleDsgdHJhY2tCeTogdHJhY2tQYW5lbEJ5XCI+XG4gICAgICA8ZGl2IFtjbGFzc109XCJtb2RlbC5nZXRQYW5lbFdyYXBwZXJDc3MocGFuZWwpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgIFtjb21wb25lbnRdPVwieyBuYW1lOiBnZXRQYW5lbENvbXBvbmVudE5hbWUocGFuZWwpLCBkYXRhOiBnZXRQYW5lbENvbXBvbmVudERhdGEocGFuZWwpIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwuY2FuUmVuZGVyUmVtb3ZlUGFuZWxPblJpZ2h0KHBhbmVsKVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgW2NvbXBvbmVudF09XCJ7IG5hbWU6ICdzdi1wYW5lbGR5bmFtaWMtcmVtb3ZlLWJ0bicsIGRhdGE6IHsgZGF0YTogeyBwYW5lbCwgcXVlc3Rpb246IG1vZGVsIH19fVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8aHIgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMuc2VwYXJhdG9yXCIgKm5nSWY9XCJtb2RlbC5zaG93U2VwYXJhdG9yKGluZGV4KVwiIC8+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8c3YtbmctcGFuZWxkeW5hbWljLWFkZC1idG4gKm5nSWY9XCJtb2RlbC5zaG93TGVnYWN5TmF2aWdhdGlvbiAmJiBtb2RlbC5pc1JlbmRlck1vZGVMaXN0XCJcbiAgICBbZGF0YV09XCJ7IHF1ZXN0aW9uOiBtb2RlbCB9XCI+PC9zdi1uZy1wYW5lbGR5bmFtaWMtYWRkLWJ0bj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1YyXCIgKm5nSWY9XCJtb2RlbC5zaG93TmF2aWdhdGlvblwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI3Byb2dyZXNzVjI+XG4gIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMuZm9vdGVyXCIgKm5nSWY9XCIhIW1vZGVsLmNzc0NsYXNzZXMuZm9vdGVyXCI+XG4gICAgPGhyIFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLnNlcGFyYXRvclwiIC8+XG4gICAgPGRpdiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5wcm9ncmVzc1wiICpuZ0lmPVwibW9kZWwuaXNSYW5nZVNob3dpbmcgJiYgbW9kZWwuaXNQcm9ncmVzc0JvdHRvbVNob3dpbmdcIj5cbiAgICAgIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMucHJvZ3Jlc3NCYXJcIiBbc3R5bGVdPVwieyB3aWR0aDogbW9kZWwucHJvZ3Jlc3MgfVwiIFxuICAgICAgcm9sZT1cInByb2dyZXNzYmFyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJtb2RlbC5wcm9ncmVzc0JhckFyaWFMYWJlbFwiXG4gICAgICA+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIm1vZGVsLnNob3dGb290ZXJUb29sYmFyXCIgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMuZm9vdGVyQnV0dG9uc0NvbnRhaW5lclwiPlxuICAgICAgPHN2LW5nLWFjdGlvbi1iYXIgW21vZGVsXT1cIm1vZGVsLmZvb3RlclRvb2xiYXJcIj48L3N2LW5nLWFjdGlvbi1iYXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=