UNPKG

@netgrif/components

Version:

Netgrif Application Engine frontend Angular components

29 lines 24.3 kB
import { Component, Inject, Optional } from '@angular/core'; import { AbstractEnumerationStepperFieldComponent, DATA_FIELD_PORTAL_DATA } from '@netgrif/components-core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@ngbracket/ngx-layout"; import * as i3 from "@ngbracket/ngx-layout/extended"; import * as i4 from "@angular/material/icon"; import * as i5 from "@angular/material/form-field"; import * as i6 from "@angular/material/tooltip"; import * as i7 from "../../required-label/required-label.component"; export class EnumerationStepperFieldComponent extends AbstractEnumerationStepperFieldComponent { ref; constructor(ref, dataFieldPortalData) { super(ref, dataFieldPortalData); this.ref = ref; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EnumerationStepperFieldComponent, deps: [{ token: i0.ElementRef }, { token: DATA_FIELD_PORTAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EnumerationStepperFieldComponent, selector: "nc-enumeration-stepper-field", usesInheritance: true, ngImport: i0, template: "<mat-label class=\"stepper-label netgrif-label\" [ngClass]=\"{'netgrif-label-disabled': formControlRef.disabled}\" *ngIf=\"!showLargeLayout.value && hasTitle()\"\n matTooltipClass=\"stepper-tooltip-text\" [matTooltip]=\"dataField.description\" matTooltipPosition=\"right\">\n {{dataField.title}}\n <nc-required-label *ngIf=\"dataField.behavior.required\" [isIn]=\"!dataField.disabled\" ></nc-required-label>\n</mat-label>\n\n<div *ngIf=\"!arrowStepper\" [matTooltip]=\"dataField.description\" [ngClass.lt-sm]=\"'touch-action-enabled'\"\n class=\"horizontal-stepper\" fxLayout=\"row\" fxLayout.lt-sm=\"column\" matTooltipPosition=\"above\">\n <div class=\"horizontal-step\" fxShow.gt-xs fxHide.lt-sm>\n <ng-template ngFor let-option [ngForOf]=\"dataField.choices\" let-i=\"index\">\n <div class=\"horizontal-step-header\" #oneStep>\n <div class=\"horizontal-state\" [ngClass]=\"{'horizontal-state-primary': canShowDoneIcon(i), 'horizontal-state-secondary': !canShowDoneIcon(i)}\">\n <mat-icon *ngIf=\"canShowDoneIcon(i + 1)\">done</mat-icon>\n </div>\n <div class=\"horizontal-state-label\">{{option.value}}</div>\n </div>\n <div class=\"horizontal-line\" fxFlex *ngIf=\"i < dataField.choices.length - 1\"></div>\n </ng-template>\n </div>\n <div class=\"vertical-step\" fxLayout=\"column\" fxShow.lt-sm fxHide.gt-xs>\n <ng-template ngFor let-option [ngForOf]=\"dataField.choices\" let-i=\"index\">\n <div class=\"vertical-step-header\" fxFlex fxLayout=\"row\">\n <div class=\"vertical-state\"\n [ngClass]=\"{'horizontal-state-primary': canShowDoneIcon(i), 'horizontal-state-secondary': !canShowDoneIcon(i)}\">\n <mat-icon *ngIf=\"canShowDoneIcon(i + 1)\">done</mat-icon>\n </div>\n <div class=\"vertical-state-label\">{{option.value}}</div>\n </div>\n <div class=\"vertical-line\" fxFlex *ngIf=\"i < dataField.choices.length - 1\"></div>\n </ng-template>\n </div>\n</div>\n\n<div *ngIf=\"arrowStepper\" class=\"stepper-min-height\" fxLayoutAlign=\"stretch center\" fxLayout=\"row\" fxLayout.lt-sm=\"column\"\n [matTooltip]=\"dataField.description\" matTooltipPosition=\"above\" [ngClass]=\"{'stepper-disabled': formControlRef.disabled}\">\n <ng-template ngFor let-option [ngForOf]=\"dataField.choices\" let-i=\"index\">\n <span class=\"stepper-arrow-text\" [ngClass]=\"{'stepper-arrow-selected': isSelected(option.key)}\"\n (click)=\"setStepperValue(option.key)\" fxFlex fxLayoutAlign=\"center center\" fxHide.lt-sm>{{option.value}}</span>\n <span fxFlex.gt-sm class=\"stepper-arrow-text\" *ngIf=\"i < dataField.choices.length - 1\" fxLayoutAlign=\"center center\" fxHide.lt-sm>\n <mat-icon>arrow_forward_ios</mat-icon>\n </span>\n </ng-template>\n <span class=\"stepper-arrow-text stepper-arrow-selected\" fxShow.lt-sm fxHide.gt-xs\n fxFlex fxLayoutAlign=\"center center\">{{resolveValue(dataField.value)}}</span>\n</div>\n", styles: [".horizontal-stepper{display:flex}.horizontal-step-header{box-sizing:border-box;flex-direction:column;height:auto;padding:24px;overflow:hidden;outline:none;position:relative;-webkit-tap-highlight-color:transparent;display:flex;align-items:center}.horizontal-step-header:not(:first-child):before{left:0}.horizontal-step-header:not(:last-child):after{right:0}.horizontal-step-header:not(:last-child):after,.horizontal-step-header:not(:first-child):before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);top:36px}.horizontal-state{color:#fff;border-radius:50%;height:24px;width:24px;flex-shrink:0;position:relative}.horizontal-state-label{display:inline-block;overflow:hidden;text-overflow:ellipsis;min-width:36px;vertical-align:middle;padding:16px 0 0;text-align:center;width:100%;word-wrap:break-word}.horizontal-line{position:relative;top:36px;border-top-width:1px;border-top-style:solid;flex:auto;height:0;min-width:12px}.horizontal-step{flex:auto;display:flex}.vertical-step-header{box-sizing:border-box;flex-direction:column;height:auto;padding:24px;overflow:hidden;outline:none;position:relative;-webkit-tap-highlight-color:transparent;display:flex;align-items:center}.vertical-step-header:first-child:before{top:44px}.vertical-step-header:not(:first-child):before{top:0}.vertical-step-header:not(:last-child):after{bottom:0}.vertical-step-header:not(:last-child):after,.vertical-step-header:not(:first-child):before{border-left-width:1px;border-left-style:solid;content:\"\";display:inline-block;width:0;position:absolute;height:calc(50% - 20px);left:36px}.vertical-state{color:#fff;border-radius:50%;height:24px;width:24px;flex-shrink:0;position:relative}.vertical-state-label{display:inline-block;overflow:hidden;text-overflow:ellipsis;min-width:36px;vertical-align:middle;text-align:center;width:100%;word-wrap:break-word;white-space:break-spaces}.vertical-line{position:relative;border-left-width:1px;border-left-style:solid;flex:auto;height:0;margin:0 36px;min-height:12px}.vertical-step{flex:auto;display:flex}.stepper-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;max-width:100%}.stepper-tooltip-text{color:#fff;padding:10px 15px}.stepper-min-height{border-radius:10px;min-height:70px;background-color:#f9f9f9;padding:0 32px}.stepper-arrow-text{font-weight:500;font-size:16px;letter-spacing:-.2;line-height:24px;color:#64748b;cursor:pointer;text-align:center}.stepper-disabled{cursor:unset!important}.stepper-disabled .stepper-arrow-text{color:#94a3b8;cursor:alias}.touch-action-enabled{touch-action:auto!important;-webkit-user-drag:auto!important}@media only screen and (max-width: 959px){.stepper-arrow-text{word-break:break-word}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i3.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i3.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i7.RequiredLabelComponent, selector: "nc-required-label", inputs: ["isIn"] }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EnumerationStepperFieldComponent, decorators: [{ type: Component, args: [{ selector: 'nc-enumeration-stepper-field', template: "<mat-label class=\"stepper-label netgrif-label\" [ngClass]=\"{'netgrif-label-disabled': formControlRef.disabled}\" *ngIf=\"!showLargeLayout.value && hasTitle()\"\n matTooltipClass=\"stepper-tooltip-text\" [matTooltip]=\"dataField.description\" matTooltipPosition=\"right\">\n {{dataField.title}}\n <nc-required-label *ngIf=\"dataField.behavior.required\" [isIn]=\"!dataField.disabled\" ></nc-required-label>\n</mat-label>\n\n<div *ngIf=\"!arrowStepper\" [matTooltip]=\"dataField.description\" [ngClass.lt-sm]=\"'touch-action-enabled'\"\n class=\"horizontal-stepper\" fxLayout=\"row\" fxLayout.lt-sm=\"column\" matTooltipPosition=\"above\">\n <div class=\"horizontal-step\" fxShow.gt-xs fxHide.lt-sm>\n <ng-template ngFor let-option [ngForOf]=\"dataField.choices\" let-i=\"index\">\n <div class=\"horizontal-step-header\" #oneStep>\n <div class=\"horizontal-state\" [ngClass]=\"{'horizontal-state-primary': canShowDoneIcon(i), 'horizontal-state-secondary': !canShowDoneIcon(i)}\">\n <mat-icon *ngIf=\"canShowDoneIcon(i + 1)\">done</mat-icon>\n </div>\n <div class=\"horizontal-state-label\">{{option.value}}</div>\n </div>\n <div class=\"horizontal-line\" fxFlex *ngIf=\"i < dataField.choices.length - 1\"></div>\n </ng-template>\n </div>\n <div class=\"vertical-step\" fxLayout=\"column\" fxShow.lt-sm fxHide.gt-xs>\n <ng-template ngFor let-option [ngForOf]=\"dataField.choices\" let-i=\"index\">\n <div class=\"vertical-step-header\" fxFlex fxLayout=\"row\">\n <div class=\"vertical-state\"\n [ngClass]=\"{'horizontal-state-primary': canShowDoneIcon(i), 'horizontal-state-secondary': !canShowDoneIcon(i)}\">\n <mat-icon *ngIf=\"canShowDoneIcon(i + 1)\">done</mat-icon>\n </div>\n <div class=\"vertical-state-label\">{{option.value}}</div>\n </div>\n <div class=\"vertical-line\" fxFlex *ngIf=\"i < dataField.choices.length - 1\"></div>\n </ng-template>\n </div>\n</div>\n\n<div *ngIf=\"arrowStepper\" class=\"stepper-min-height\" fxLayoutAlign=\"stretch center\" fxLayout=\"row\" fxLayout.lt-sm=\"column\"\n [matTooltip]=\"dataField.description\" matTooltipPosition=\"above\" [ngClass]=\"{'stepper-disabled': formControlRef.disabled}\">\n <ng-template ngFor let-option [ngForOf]=\"dataField.choices\" let-i=\"index\">\n <span class=\"stepper-arrow-text\" [ngClass]=\"{'stepper-arrow-selected': isSelected(option.key)}\"\n (click)=\"setStepperValue(option.key)\" fxFlex fxLayoutAlign=\"center center\" fxHide.lt-sm>{{option.value}}</span>\n <span fxFlex.gt-sm class=\"stepper-arrow-text\" *ngIf=\"i < dataField.choices.length - 1\" fxLayoutAlign=\"center center\" fxHide.lt-sm>\n <mat-icon>arrow_forward_ios</mat-icon>\n </span>\n </ng-template>\n <span class=\"stepper-arrow-text stepper-arrow-selected\" fxShow.lt-sm fxHide.gt-xs\n fxFlex fxLayoutAlign=\"center center\">{{resolveValue(dataField.value)}}</span>\n</div>\n", styles: [".horizontal-stepper{display:flex}.horizontal-step-header{box-sizing:border-box;flex-direction:column;height:auto;padding:24px;overflow:hidden;outline:none;position:relative;-webkit-tap-highlight-color:transparent;display:flex;align-items:center}.horizontal-step-header:not(:first-child):before{left:0}.horizontal-step-header:not(:last-child):after{right:0}.horizontal-step-header:not(:last-child):after,.horizontal-step-header:not(:first-child):before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);top:36px}.horizontal-state{color:#fff;border-radius:50%;height:24px;width:24px;flex-shrink:0;position:relative}.horizontal-state-label{display:inline-block;overflow:hidden;text-overflow:ellipsis;min-width:36px;vertical-align:middle;padding:16px 0 0;text-align:center;width:100%;word-wrap:break-word}.horizontal-line{position:relative;top:36px;border-top-width:1px;border-top-style:solid;flex:auto;height:0;min-width:12px}.horizontal-step{flex:auto;display:flex}.vertical-step-header{box-sizing:border-box;flex-direction:column;height:auto;padding:24px;overflow:hidden;outline:none;position:relative;-webkit-tap-highlight-color:transparent;display:flex;align-items:center}.vertical-step-header:first-child:before{top:44px}.vertical-step-header:not(:first-child):before{top:0}.vertical-step-header:not(:last-child):after{bottom:0}.vertical-step-header:not(:last-child):after,.vertical-step-header:not(:first-child):before{border-left-width:1px;border-left-style:solid;content:\"\";display:inline-block;width:0;position:absolute;height:calc(50% - 20px);left:36px}.vertical-state{color:#fff;border-radius:50%;height:24px;width:24px;flex-shrink:0;position:relative}.vertical-state-label{display:inline-block;overflow:hidden;text-overflow:ellipsis;min-width:36px;vertical-align:middle;text-align:center;width:100%;word-wrap:break-word;white-space:break-spaces}.vertical-line{position:relative;border-left-width:1px;border-left-style:solid;flex:auto;height:0;margin:0 36px;min-height:12px}.vertical-step{flex:auto;display:flex}.stepper-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;max-width:100%}.stepper-tooltip-text{color:#fff;padding:10px 15px}.stepper-min-height{border-radius:10px;min-height:70px;background-color:#f9f9f9;padding:0 32px}.stepper-arrow-text{font-weight:500;font-size:16px;letter-spacing:-.2;line-height:24px;color:#64748b;cursor:pointer;text-align:center}.stepper-disabled{cursor:unset!important}.stepper-disabled .stepper-arrow-text{color:#94a3b8;cursor:alias}.touch-action-enabled{touch-action:auto!important;-webkit-user-drag:auto!important}@media only screen and (max-width: 959px){.stepper-arrow-text{word-break:break-word}}\n"] }] }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DATA_FIELD_PORTAL_DATA] }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bWVyYXRpb24tc3RlcHBlci1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMvc3JjL2xpYi9kYXRhLWZpZWxkcy9lbnVtZXJhdGlvbi1maWVsZC9lbnVtZXJhdGlvbi1zdGVwcGVyLWZpZWxkL2VudW1lcmF0aW9uLXN0ZXBwZXItZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvZGF0YS1maWVsZHMvZW51bWVyYXRpb24tZmllbGQvZW51bWVyYXRpb24tc3RlcHBlci1maWVsZC9lbnVtZXJhdGlvbi1zdGVwcGVyLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQWMsTUFBTSxFQUFFLFFBQVEsRUFDMUMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILHdDQUF3QyxFQUN4QyxzQkFBc0IsRUFFekIsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7O0FBT2xDLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSx3Q0FBd0M7SUFFcEU7SUFBdEIsWUFBc0IsR0FBZSxFQUNtQixtQkFBMEQ7UUFDOUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBRmQsUUFBRyxHQUFILEdBQUcsQ0FBWTtJQUdyQyxDQUFDO3dHQUxRLGdDQUFnQyw0Q0FHVCxzQkFBc0I7NEZBSDdDLGdDQUFnQywyRkNkN0MsOG1HQTZDQTs7NEZEL0JhLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDSSw4QkFBOEI7OzBCQU8zQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdEVudW1lcmF0aW9uU3RlcHBlckZpZWxkQ29tcG9uZW50LFxuICAgIERBVEFfRklFTERfUE9SVEFMX0RBVEEsXG4gICAgRGF0YUZpZWxkUG9ydGFsRGF0YSwgRW51bWVyYXRpb25GaWVsZFxufSBmcm9tICdAbmV0Z3JpZi9jb21wb25lbnRzLWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jLWVudW1lcmF0aW9uLXN0ZXBwZXItZmllbGQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lbnVtZXJhdGlvbi1zdGVwcGVyLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lbnVtZXJhdGlvbi1zdGVwcGVyLWZpZWxkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRW51bWVyYXRpb25TdGVwcGVyRmllbGRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEVudW1lcmF0aW9uU3RlcHBlckZpZWxkQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRBX0ZJRUxEX1BPUlRBTF9EQVRBKSBkYXRhRmllbGRQb3J0YWxEYXRhOiBEYXRhRmllbGRQb3J0YWxEYXRhPEVudW1lcmF0aW9uRmllbGQ+KSB7XG4gICAgICAgIHN1cGVyKHJlZiwgZGF0YUZpZWxkUG9ydGFsRGF0YSk7XG4gICAgfVxufVxuIiwiPG1hdC1sYWJlbCBjbGFzcz1cInN0ZXBwZXItbGFiZWwgbmV0Z3JpZi1sYWJlbFwiIFtuZ0NsYXNzXT1cInsnbmV0Z3JpZi1sYWJlbC1kaXNhYmxlZCc6IGZvcm1Db250cm9sUmVmLmRpc2FibGVkfVwiICpuZ0lmPVwiIXNob3dMYXJnZUxheW91dC52YWx1ZSAmJiBoYXNUaXRsZSgpXCJcbiAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwic3RlcHBlci10b29sdGlwLXRleHRcIiBbbWF0VG9vbHRpcF09XCJkYXRhRmllbGQuZGVzY3JpcHRpb25cIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxuICAgIHt7ZGF0YUZpZWxkLnRpdGxlfX1cbiAgICA8bmMtcmVxdWlyZWQtbGFiZWwgKm5nSWY9XCJkYXRhRmllbGQuYmVoYXZpb3IucmVxdWlyZWRcIiBbaXNJbl09XCIhZGF0YUZpZWxkLmRpc2FibGVkXCIgPjwvbmMtcmVxdWlyZWQtbGFiZWw+XG48L21hdC1sYWJlbD5cblxuPGRpdiAqbmdJZj1cIiFhcnJvd1N0ZXBwZXJcIiBbbWF0VG9vbHRpcF09XCJkYXRhRmllbGQuZGVzY3JpcHRpb25cIiBbbmdDbGFzcy5sdC1zbV09XCIndG91Y2gtYWN0aW9uLWVuYWJsZWQnXCJcbiAgICAgY2xhc3M9XCJob3Jpem9udGFsLXN0ZXBwZXJcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0Lmx0LXNtPVwiY29sdW1uXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1zdGVwXCIgZnhTaG93Lmd0LXhzIGZ4SGlkZS5sdC1zbT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1vcHRpb24gW25nRm9yT2ZdPVwiZGF0YUZpZWxkLmNob2ljZXNcIiBsZXQtaT1cImluZGV4XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1zdGVwLWhlYWRlclwiICNvbmVTdGVwPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLXN0YXRlXCIgW25nQ2xhc3NdPVwieydob3Jpem9udGFsLXN0YXRlLXByaW1hcnknOiBjYW5TaG93RG9uZUljb24oaSksICdob3Jpem9udGFsLXN0YXRlLXNlY29uZGFyeSc6ICFjYW5TaG93RG9uZUljb24oaSl9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImNhblNob3dEb25lSWNvbihpICsgMSlcIj5kb25lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1zdGF0ZS1sYWJlbFwiPnt7b3B0aW9uLnZhbHVlfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtbGluZVwiIGZ4RmxleCAqbmdJZj1cImkgPCBkYXRhRmllbGQuY2hvaWNlcy5sZW5ndGggLSAxXCI+PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLXN0ZXBcIiBmeExheW91dD1cImNvbHVtblwiIGZ4U2hvdy5sdC1zbSBmeEhpZGUuZ3QteHM+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtb3B0aW9uIFtuZ0Zvck9mXT1cImRhdGFGaWVsZC5jaG9pY2VzXCIgbGV0LWk9XCJpbmRleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLXN0ZXAtaGVhZGVyXCIgZnhGbGV4IGZ4TGF5b3V0PVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLXN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaG9yaXpvbnRhbC1zdGF0ZS1wcmltYXJ5JzogY2FuU2hvd0RvbmVJY29uKGkpLCAnaG9yaXpvbnRhbC1zdGF0ZS1zZWNvbmRhcnknOiAhY2FuU2hvd0RvbmVJY29uKGkpfVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjYW5TaG93RG9uZUljb24oaSArIDEpXCI+ZG9uZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLXN0YXRlLWxhYmVsXCI+e3tvcHRpb24udmFsdWV9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtbGluZVwiIGZ4RmxleCAqbmdJZj1cImkgPCBkYXRhRmllbGQuY2hvaWNlcy5sZW5ndGggLSAxXCI+PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImFycm93U3RlcHBlclwiIGNsYXNzPVwic3RlcHBlci1taW4taGVpZ2h0XCIgZnhMYXlvdXRBbGlnbj1cInN0cmV0Y2ggY2VudGVyXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dC5sdC1zbT1cImNvbHVtblwiXG4gICAgIFttYXRUb29sdGlwXT1cImRhdGFGaWVsZC5kZXNjcmlwdGlvblwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgW25nQ2xhc3NdPVwieydzdGVwcGVyLWRpc2FibGVkJzogZm9ybUNvbnRyb2xSZWYuZGlzYWJsZWR9XCI+XG4gICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1vcHRpb24gW25nRm9yT2ZdPVwiZGF0YUZpZWxkLmNob2ljZXNcIiBsZXQtaT1cImluZGV4XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItYXJyb3ctdGV4dFwiIFtuZ0NsYXNzXT1cInsnc3RlcHBlci1hcnJvdy1zZWxlY3RlZCc6IGlzU2VsZWN0ZWQob3B0aW9uLmtleSl9XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRTdGVwcGVyVmFsdWUob3B0aW9uLmtleSlcIiBmeEZsZXggZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeEhpZGUubHQtc20+e3tvcHRpb24udmFsdWV9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gZnhGbGV4Lmd0LXNtIGNsYXNzPVwic3RlcHBlci1hcnJvdy10ZXh0XCIgKm5nSWY9XCJpIDwgZGF0YUZpZWxkLmNob2ljZXMubGVuZ3RoIC0gMVwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgZnhIaWRlLmx0LXNtPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19mb3J3YXJkX2lvczwvbWF0LWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItYXJyb3ctdGV4dCBzdGVwcGVyLWFycm93LXNlbGVjdGVkXCIgZnhTaG93Lmx0LXNtIGZ4SGlkZS5ndC14c1xuICAgICAgICAgIGZ4RmxleCBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPnt7cmVzb2x2ZVZhbHVlKGRhdGFGaWVsZC52YWx1ZSl9fTwvc3Bhbj5cbjwvZGl2PlxuIl19