UNPKG

survey-creator-angular

Version:

Use SurveyJS Creator to create or edit JSON for SurveyJS Form Library.

75 lines 14 kB
import { Component, ElementRef, Input, ViewChild } from "@angular/core"; import { AngularComponentFactory } from "survey-angular-ui"; import { ItemValueWrapperViewModel } from "survey-creator-core"; import { CreatorModelComponent } from "../creator-model.component"; import * as i0 from "@angular/core"; import * as i1 from "survey-angular-ui"; import * as i2 from "@angular/common"; export class ItemValueDesignerComponent extends CreatorModelComponent { get creator() { return this.componentData.data.creator; } get question() { return this.componentData.question; } get item() { return this.componentData.model; } onBlur(event) { this.adorner.onFocusOut(event); } setupContainer() { var _a; if (this.item && ((_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement)) { this.item.setRootElement(this.container.nativeElement); } } cleanContainer(item) { if (!!item) { item.setRootElement(undefined); } } createModel() { if (this.componentData) { this.adorner = new ItemValueWrapperViewModel(this.creator, this.question, this.item); if (this.prevItem !== this.item) { this.setupContainer(); this.cleanContainer(this.prevItem); this.prevItem = this.item; } } } getPropertiesToTrack() { return ["creator", "question", "item"]; } getModel() { return this.adorner; } ngOnDestroy() { super.ngOnDestroy(); this.adorner.dispose(); this.cleanContainer(this.item); } ngAfterViewInit() { this.setupContainer(); } } ItemValueDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ItemValueDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); ItemValueDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ItemValueDesignerComponent, selector: "svc-item-value", inputs: { componentName: "componentName", componentData: "componentData" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div class=\"svc-item-value-wrapper\" (pointerdown)=\"adorner.onPointerDown($event)\"\n [attr.data-sv-drop-target-item-value]=\"adorner.isDraggable ? item.value : null\"\n [ngClass]=\"{'svc-item-value--new': adorner.isNew, 'svc-item-value--dragging': adorner.isDragging, 'svc-item-value--ghost': adorner.isDragDropGhost, 'svc-item-value--movedown': adorner.isDragDropMoveDown, 'svc-item-value--moveup': adorner.isDragDropMoveUp}\"\n #container>\n <div class=\"svc-item-value__ghost\"></div>\n <div class=\"svc-item-value-controls\">\n <span *ngIf=\"adorner.isDraggable\" class=\"svc-item-value-controls__button svc-item-value-controls__drag\">\n <svg class=\"svc-item-value-controls__drag-icon\" [iconName]=\"'icon-drag-24x24'\" [size]=\"'auto'\"\n [attr.title]=\"adorner.dragTooltip\" sv-ng-svg-icon></svg>\n </span>\n <span *ngIf=\"adorner.allowAdd\" class=\"svc-item-value-controls__button svc-item-value-controls__add\" [key2click]\n (click)=\"adorner.add(adorner)\" [attr.aria-label]=\"undefined\"><svg [iconName]=\"'icon-add_16x16'\" [size]=\"'auto'\"\n [attr.title]=\"undefined\" sv-ng-svg-icon></svg></span>\n <span *ngIf=\"adorner.allowRemove\" class=\"svc-item-value-controls__button svc-item-value-controls__remove\"\n [key2click] (click)=\"adorner.remove(adorner)\" (blur)=\"onBlur($event)\" [attr.aria-label]=\"undefined\"><svg\n [iconName]=\"'icon-remove_16x16'\" [size]=\"'auto'\" [attr.title]=\"undefined\" sv-ng-svg-icon></svg></span>\n </div>\n\n <div class=\"svc-item-value__item\" (click)=\"adorner.select(adorner, $event)\">\n <ng-template [component]=\"{ name: componentName, data: componentData }\"></ng-template>\n </div>\n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: i1.SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }, { type: i1.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ItemValueDesignerComponent, decorators: [{ type: Component, args: [{ selector: "svc-item-value", templateUrl: "./item-value.component.html", styles: [":host { display: none; }"] }] }], propDecorators: { componentName: [{ type: Input }], componentData: [{ type: Input }], container: [{ type: ViewChild, args: ["container", { read: ElementRef }] }] } }); AngularComponentFactory.Instance.registerComponent("svc-item-value", ItemValueDesignerComponent); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS12YWx1ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRvcm5lcnMvaXRlbS12YWx1ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9zcmMvYWRvcm5lcnMvaXRlbS12YWx1ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQW9DLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLHVCQUF1QixFQUE2QyxNQUFNLG1CQUFtQixDQUFDO0FBRXZHLE9BQU8sRUFBc0IseUJBQXlCLEVBQTRCLE1BQU0scUJBQXFCLENBQUM7QUFDOUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFPbkUsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHFCQUFnRDtJQU05RixJQUFZLE9BQU87UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDekMsQ0FBQztJQUNELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFDTSxNQUFNLENBQUMsS0FBVTtRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sY0FBYzs7UUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFJLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsYUFBYSxDQUFBLEVBQUU7WUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFDTyxjQUFjLENBQUMsSUFBZTtRQUNwQyxJQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQWdCLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFUyxXQUFXO1FBQ25CLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUkseUJBQXlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRixJQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDOUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQzNCO1NBQ0Y7SUFDSCxDQUFDO0lBQ1Msb0JBQW9CO1FBQzVCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDUyxRQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ1EsV0FBVztRQUNsQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDOzt3SEFyRFUsMEJBQTBCOzRHQUExQiwwQkFBMEIscU5BR0wsVUFBVSxvRENmNUMscXdEQXVCYzs0RkRYRCwwQkFBMEI7a0JBTHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsTUFBTSxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3JDOzhCQUVVLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDd0MsU0FBUztzQkFBdEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOztBQXFEOUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLDBCQUEwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudEZhY3RvcnksIEJhc2VBbmd1bGFyLCBFbWJlZGRlZFZpZXdDb250ZW50Q29tcG9uZW50IH0gZnJvbSBcInN1cnZleS1hbmd1bGFyLXVpXCI7XG5pbXBvcnQgeyBJdGVtVmFsdWUsIFBhZ2VNb2RlbCwgUGFuZWxNb2RlbCwgUXVlc3Rpb24sIFF1ZXN0aW9uU2VsZWN0QmFzZSwgU3VydmV5TW9kZWwgfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcbmltcG9ydCB7IFN1cnZleUNyZWF0b3JNb2RlbCwgSXRlbVZhbHVlV3JhcHBlclZpZXdNb2RlbCwgUXVlc3Rpb25BZG9ybmVyVmlld01vZGVsIH0gZnJvbSBcInN1cnZleS1jcmVhdG9yLWNvcmVcIjtcbmltcG9ydCB7IENyZWF0b3JNb2RlbENvbXBvbmVudCB9IGZyb20gXCIuLi9jcmVhdG9yLW1vZGVsLmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3ZjLWl0ZW0tdmFsdWVcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9pdGVtLXZhbHVlLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlczogW1wiOmhvc3QgeyBkaXNwbGF5OiBub25lOyB9XCJdXG59KVxuZXhwb3J0IGNsYXNzIEl0ZW1WYWx1ZURlc2lnbmVyQ29tcG9uZW50IGV4dGVuZHMgQ3JlYXRvck1vZGVsQ29tcG9uZW50PEl0ZW1WYWx1ZVdyYXBwZXJWaWV3TW9kZWw+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGNvbXBvbmVudE5hbWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbXBvbmVudERhdGEhOiBhbnk7XG4gIEBWaWV3Q2hpbGQoXCJjb250YWluZXJcIiwgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+XG4gIHB1YmxpYyBhZG9ybmVyITogSXRlbVZhbHVlV3JhcHBlclZpZXdNb2RlbDtcbiAgcHJpdmF0ZSBwcmV2SXRlbSE6IEl0ZW1WYWx1ZTtcbiAgcHJpdmF0ZSBnZXQgY3JlYXRvcigpOiBTdXJ2ZXlDcmVhdG9yTW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudERhdGEuZGF0YS5jcmVhdG9yO1xuICB9XG4gIHB1YmxpYyBnZXQgcXVlc3Rpb24oKTogUXVlc3Rpb25TZWxlY3RCYXNlIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnREYXRhLnF1ZXN0aW9uO1xuICB9XG4gIHB1YmxpYyBnZXQgaXRlbSgpOiBJdGVtVmFsdWUge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudERhdGEubW9kZWw7XG4gIH1cbiAgcHVibGljIG9uQmx1cihldmVudDogYW55KSB7XG4gICAgdGhpcy5hZG9ybmVyLm9uRm9jdXNPdXQoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENvbnRhaW5lcigpIHtcbiAgICBpZiAodGhpcy5pdGVtICYmIHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLml0ZW0uc2V0Um9vdEVsZW1lbnQodGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgY2xlYW5Db250YWluZXIoaXRlbTogSXRlbVZhbHVlKSB7XG4gICAgaWYoISFpdGVtKSB7XG4gICAgICBpdGVtLnNldFJvb3RFbGVtZW50KHVuZGVmaW5lZCBhcyBhbnkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVNb2RlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnREYXRhKSB7XG4gICAgICB0aGlzLmFkb3JuZXIgPSBuZXcgSXRlbVZhbHVlV3JhcHBlclZpZXdNb2RlbCh0aGlzLmNyZWF0b3IsIHRoaXMucXVlc3Rpb24sIHRoaXMuaXRlbSk7XG4gICAgICBpZih0aGlzLnByZXZJdGVtICE9PSB0aGlzLml0ZW0pIHtcbiAgICAgICAgdGhpcy5zZXR1cENvbnRhaW5lcigpO1xuICAgICAgICB0aGlzLmNsZWFuQ29udGFpbmVyKHRoaXMucHJldkl0ZW0pO1xuICAgICAgICB0aGlzLnByZXZJdGVtID0gdGhpcy5pdGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgZ2V0UHJvcGVydGllc1RvVHJhY2soKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXCJjcmVhdG9yXCIsIFwicXVlc3Rpb25cIiwgXCJpdGVtXCJdO1xuICB9XG4gIHByb3RlY3RlZCBnZXRNb2RlbCgpOiBJdGVtVmFsdWVXcmFwcGVyVmlld01vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5hZG9ybmVyO1xuICB9XG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5hZG9ybmVyLmRpc3Bvc2UoKTtcbiAgICB0aGlzLmNsZWFuQ29udGFpbmVyKHRoaXMuaXRlbSk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc2V0dXBDb250YWluZXIoKTtcbiAgfVxufVxuXG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcInN2Yy1pdGVtLXZhbHVlXCIsIEl0ZW1WYWx1ZURlc2lnbmVyQ29tcG9uZW50KTtcbiIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJzdmMtaXRlbS12YWx1ZS13cmFwcGVyXCIgKHBvaW50ZXJkb3duKT1cImFkb3JuZXIub25Qb2ludGVyRG93bigkZXZlbnQpXCJcbiAgICBbYXR0ci5kYXRhLXN2LWRyb3AtdGFyZ2V0LWl0ZW0tdmFsdWVdPVwiYWRvcm5lci5pc0RyYWdnYWJsZSA/IGl0ZW0udmFsdWUgOiBudWxsXCJcbiAgICBbbmdDbGFzc109XCJ7J3N2Yy1pdGVtLXZhbHVlLS1uZXcnOiBhZG9ybmVyLmlzTmV3LCAnc3ZjLWl0ZW0tdmFsdWUtLWRyYWdnaW5nJzogYWRvcm5lci5pc0RyYWdnaW5nLCAnc3ZjLWl0ZW0tdmFsdWUtLWdob3N0JzogYWRvcm5lci5pc0RyYWdEcm9wR2hvc3QsICdzdmMtaXRlbS12YWx1ZS0tbW92ZWRvd24nOiBhZG9ybmVyLmlzRHJhZ0Ryb3BNb3ZlRG93biwgJ3N2Yy1pdGVtLXZhbHVlLS1tb3ZldXAnOiBhZG9ybmVyLmlzRHJhZ0Ryb3BNb3ZlVXB9XCJcbiAgICAjY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJzdmMtaXRlbS12YWx1ZV9fZ2hvc3RcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3ZjLWl0ZW0tdmFsdWUtY29udHJvbHNcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiYWRvcm5lci5pc0RyYWdnYWJsZVwiIGNsYXNzPVwic3ZjLWl0ZW0tdmFsdWUtY29udHJvbHNfX2J1dHRvbiBzdmMtaXRlbS12YWx1ZS1jb250cm9sc19fZHJhZ1wiPlxuICAgICAgICA8c3ZnIGNsYXNzPVwic3ZjLWl0ZW0tdmFsdWUtY29udHJvbHNfX2RyYWctaWNvblwiIFtpY29uTmFtZV09XCInaWNvbi1kcmFnLTI0eDI0J1wiIFtzaXplXT1cIidhdXRvJ1wiXG4gICAgICAgICAgW2F0dHIudGl0bGVdPVwiYWRvcm5lci5kcmFnVG9vbHRpcFwiIHN2LW5nLXN2Zy1pY29uPjwvc3ZnPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJhZG9ybmVyLmFsbG93QWRkXCIgY2xhc3M9XCJzdmMtaXRlbS12YWx1ZS1jb250cm9sc19fYnV0dG9uIHN2Yy1pdGVtLXZhbHVlLWNvbnRyb2xzX19hZGRcIiBba2V5MmNsaWNrXVxuICAgICAgICAoY2xpY2spPVwiYWRvcm5lci5hZGQoYWRvcm5lcilcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInVuZGVmaW5lZFwiPjxzdmcgW2ljb25OYW1lXT1cIidpY29uLWFkZF8xNngxNidcIiBbc2l6ZV09XCInYXV0bydcIlxuICAgICAgICAgIFthdHRyLnRpdGxlXT1cInVuZGVmaW5lZFwiIHN2LW5nLXN2Zy1pY29uPjwvc3ZnPjwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiYWRvcm5lci5hbGxvd1JlbW92ZVwiIGNsYXNzPVwic3ZjLWl0ZW0tdmFsdWUtY29udHJvbHNfX2J1dHRvbiBzdmMtaXRlbS12YWx1ZS1jb250cm9sc19fcmVtb3ZlXCJcbiAgICAgICAgW2tleTJjbGlja10gKGNsaWNrKT1cImFkb3JuZXIucmVtb3ZlKGFkb3JuZXIpXCIgKGJsdXIpPVwib25CbHVyKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInVuZGVmaW5lZFwiPjxzdmdcbiAgICAgICAgICBbaWNvbk5hbWVdPVwiJ2ljb24tcmVtb3ZlXzE2eDE2J1wiIFtzaXplXT1cIidhdXRvJ1wiIFthdHRyLnRpdGxlXT1cInVuZGVmaW5lZFwiIHN2LW5nLXN2Zy1pY29uPjwvc3ZnPjwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJzdmMtaXRlbS12YWx1ZV9faXRlbVwiIChjbGljayk9XCJhZG9ybmVyLnNlbGVjdChhZG9ybmVyLCAkZXZlbnQpXCI+XG4gICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudF09XCJ7IG5hbWU6IGNvbXBvbmVudE5hbWUsIGRhdGE6IGNvbXBvbmVudERhdGEgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=