UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

189 lines (187 loc) 18 kB
import { ChangeDetectionStrategy, Component, Input, Optional, ViewEncapsulation } from '@angular/core'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { NzOutletModule } from 'ng-zorro-antd/core/outlet'; import { NzIconModule } from 'ng-zorro-antd/icon'; import { NzResultNotFoundComponent } from './partial/not-found'; import { NzResultServerErrorComponent } from './partial/server-error.component'; import { NzResultUnauthorizedComponent } from './partial/unauthorized'; import * as i0 from "@angular/core"; import * as i1 from "@angular/cdk/bidi"; import * as i2 from "ng-zorro-antd/core/outlet"; import * as i3 from "ng-zorro-antd/icon"; const IconMap = { success: 'check-circle', error: 'close-circle', info: 'exclamation-circle', warning: 'warning' }; const ExceptionStatus = ['404', '500', '403']; export class NzResultComponent { constructor(cdr, directionality) { this.cdr = cdr; this.directionality = directionality; this.nzStatus = 'info'; this.isException = false; this.dir = 'ltr'; this.destroy$ = new Subject(); } ngOnInit() { this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { this.dir = direction; this.cdr.detectChanges(); }); this.dir = this.directionality.value; } ngOnChanges() { this.setStatusIcon(); } ngOnDestroy() { this.destroy$.next(); this.destroy$.complete(); } setStatusIcon() { const icon = this.nzIcon; this.isException = ExceptionStatus.indexOf(this.nzStatus) !== -1; this.icon = icon ? typeof icon === 'string' ? IconMap[icon] || icon : icon : this.isException ? undefined : IconMap[this.nzStatus]; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: NzResultComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: NzResultComponent, isStandalone: true, selector: "nz-result", inputs: { nzIcon: "nzIcon", nzTitle: "nzTitle", nzStatus: "nzStatus", nzSubTitle: "nzSubTitle", nzExtra: "nzExtra" }, host: { properties: { "class.ant-result-success": "nzStatus === 'success'", "class.ant-result-error": "nzStatus === 'error'", "class.ant-result-info": "nzStatus === 'info'", "class.ant-result-warning": "nzStatus === 'warning'", "class.ant-result-rtl": "dir === 'rtl'" }, classAttribute: "ant-result" }, exportAs: ["nzResult"], usesOnChanges: true, ngImport: i0, template: ` <div class="ant-result-icon"> @if (!isException) { @if (icon) { <ng-container *nzStringTemplateOutlet="icon; let icon"> <span nz-icon [nzType]="icon" nzTheme="fill"></span> </ng-container> } @else { <ng-content select="[nz-result-icon]"></ng-content> } } @else { @switch (nzStatus) { @case ('404') { <nz-result-not-found /> } @case ('500') { <nz-result-server-error /> } @case ('403') { <nz-result-unauthorized /> } } } </div> @if (nzTitle) { <div class="ant-result-title" *nzStringTemplateOutlet="nzTitle"> {{ nzTitle }} </div> } @else { <ng-content select="div[nz-result-title]"></ng-content> } @if (nzSubTitle) { <div class="ant-result-subtitle" *nzStringTemplateOutlet="nzSubTitle"> {{ nzSubTitle }} </div> } @else { <ng-content select="div[nz-result-subtitle]"></ng-content> } <ng-content select="nz-result-content, [nz-result-content]"></ng-content> @if (nzExtra) { <div class="ant-result-extra" *nzStringTemplateOutlet="nzExtra"> {{ nzExtra }} </div> } @else { <ng-content select="div[nz-result-extra]"></ng-content> } `, isInline: true, dependencies: [{ kind: "ngmodule", type: NzOutletModule }, { kind: "directive", type: i2.NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: NzResultNotFoundComponent, selector: "nz-result-not-found", exportAs: ["nzResultNotFound"] }, { kind: "component", type: NzResultServerErrorComponent, selector: "nz-result-server-error", exportAs: ["nzResultServerError"] }, { kind: "component", type: NzResultUnauthorizedComponent, selector: "nz-result-unauthorized", exportAs: ["nzResultUnauthorized"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: NzResultComponent, decorators: [{ type: Component, args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: 'nz-result', exportAs: 'nzResult', template: ` <div class="ant-result-icon"> @if (!isException) { @if (icon) { <ng-container *nzStringTemplateOutlet="icon; let icon"> <span nz-icon [nzType]="icon" nzTheme="fill"></span> </ng-container> } @else { <ng-content select="[nz-result-icon]"></ng-content> } } @else { @switch (nzStatus) { @case ('404') { <nz-result-not-found /> } @case ('500') { <nz-result-server-error /> } @case ('403') { <nz-result-unauthorized /> } } } </div> @if (nzTitle) { <div class="ant-result-title" *nzStringTemplateOutlet="nzTitle"> {{ nzTitle }} </div> } @else { <ng-content select="div[nz-result-title]"></ng-content> } @if (nzSubTitle) { <div class="ant-result-subtitle" *nzStringTemplateOutlet="nzSubTitle"> {{ nzSubTitle }} </div> } @else { <ng-content select="div[nz-result-subtitle]"></ng-content> } <ng-content select="nz-result-content, [nz-result-content]"></ng-content> @if (nzExtra) { <div class="ant-result-extra" *nzStringTemplateOutlet="nzExtra"> {{ nzExtra }} </div> } @else { <ng-content select="div[nz-result-extra]"></ng-content> } `, host: { class: 'ant-result', '[class.ant-result-success]': `nzStatus === 'success'`, '[class.ant-result-error]': `nzStatus === 'error'`, '[class.ant-result-info]': `nzStatus === 'info'`, '[class.ant-result-warning]': `nzStatus === 'warning'`, '[class.ant-result-rtl]': `dir === 'rtl'` }, imports: [ NzOutletModule, NzIconModule, NzResultNotFoundComponent, NzResultServerErrorComponent, NzResultUnauthorizedComponent ], standalone: true }] }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.Directionality, decorators: [{ type: Optional }] }], propDecorators: { nzIcon: [{ type: Input }], nzTitle: [{ type: Input }], nzStatus: [{ type: Input }], nzSubTitle: [{ type: Input }], nzExtra: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvcmVzdWx0L3Jlc3VsdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUlMLFFBQVEsRUFFUixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFNdkUsTUFBTSxPQUFPLEdBQUc7SUFDZCxPQUFPLEVBQUUsY0FBYztJQUN2QixLQUFLLEVBQUUsY0FBYztJQUNyQixJQUFJLEVBQUUsb0JBQW9CO0lBQzFCLE9BQU8sRUFBRSxTQUFTO0NBQ25CLENBQUM7QUFDRixNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUF3RTlDLE1BQU0sT0FBTyxpQkFBaUI7SUFhNUIsWUFDVSxHQUFzQixFQUNWLGNBQThCO1FBRDFDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ1YsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBWjNDLGFBQVEsR0FBdUIsTUFBTSxDQUFDO1FBSy9DLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLFFBQUcsR0FBYyxLQUFLLENBQUM7UUFFZixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUtwQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBb0IsRUFBRSxFQUFFO1lBQzVGLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxhQUFhO1FBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUk7WUFDZCxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssUUFBUTtnQkFDeEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUF3QixDQUFDLElBQUksSUFBSTtnQkFDM0MsQ0FBQyxDQUFDLElBQUk7WUFDUixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVc7Z0JBQ2hCLENBQUMsQ0FBQyxTQUFTO2dCQUNYLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQTRCLENBQUMsQ0FBQztJQUNuRCxDQUFDOzhHQS9DVSxpQkFBaUI7a0dBQWpCLGlCQUFpQix1aEJBakVsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ1QsMkRBVUMsY0FBYyxnUEFDZCxZQUFZLGtOQUNaLHlCQUF5QixnR0FDekIsNEJBQTRCLHNHQUM1Qiw2QkFBNkI7OzJGQUlwQixpQkFBaUI7a0JBdEU3QixTQUFTO21CQUFDO29CQUNULGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSxVQUFVO29CQUNwQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0NUO29CQUNELElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsWUFBWTt3QkFDbkIsNEJBQTRCLEVBQUUsd0JBQXdCO3dCQUN0RCwwQkFBMEIsRUFBRSxzQkFBc0I7d0JBQ2xELHlCQUF5QixFQUFFLHFCQUFxQjt3QkFDaEQsNEJBQTRCLEVBQUUsd0JBQXdCO3dCQUN0RCx3QkFBd0IsRUFBRSxlQUFlO3FCQUMxQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLHlCQUF5Qjt3QkFDekIsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7cUJBQzlCO29CQUNELFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBZ0JJLFFBQVE7eUNBZEYsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgRGlyZWN0aW9uLCBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTnpPdXRsZXRNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvb3V0bGV0JztcbmltcG9ydCB7IE56SWNvbk1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaWNvbic7XG5cbmltcG9ydCB7IE56UmVzdWx0Tm90Rm91bmRDb21wb25lbnQgfSBmcm9tICcuL3BhcnRpYWwvbm90LWZvdW5kJztcbmltcG9ydCB7IE56UmVzdWx0U2VydmVyRXJyb3JDb21wb25lbnQgfSBmcm9tICcuL3BhcnRpYWwvc2VydmVyLWVycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOelJlc3VsdFVuYXV0aG9yaXplZENvbXBvbmVudCB9IGZyb20gJy4vcGFydGlhbC91bmF1dGhvcml6ZWQnO1xuXG5leHBvcnQgdHlwZSBOelJlc3VsdEljb25UeXBlID0gJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICdpbmZvJyB8ICd3YXJuaW5nJztcbmV4cG9ydCB0eXBlIE56RXhjZXB0aW9uU3RhdHVzVHlwZSA9ICc0MDQnIHwgJzUwMCcgfCAnNDAzJztcbmV4cG9ydCB0eXBlIE56UmVzdWx0U3RhdHVzVHlwZSA9IE56RXhjZXB0aW9uU3RhdHVzVHlwZSB8IE56UmVzdWx0SWNvblR5cGU7XG5cbmNvbnN0IEljb25NYXAgPSB7XG4gIHN1Y2Nlc3M6ICdjaGVjay1jaXJjbGUnLFxuICBlcnJvcjogJ2Nsb3NlLWNpcmNsZScsXG4gIGluZm86ICdleGNsYW1hdGlvbi1jaXJjbGUnLFxuICB3YXJuaW5nOiAnd2FybmluZydcbn07XG5jb25zdCBFeGNlcHRpb25TdGF0dXMgPSBbJzQwNCcsICc1MDAnLCAnNDAzJ107XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc2VsZWN0b3I6ICduei1yZXN1bHQnLFxuICBleHBvcnRBczogJ256UmVzdWx0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYW50LXJlc3VsdC1pY29uXCI+XG4gICAgICBAaWYgKCFpc0V4Y2VwdGlvbikge1xuICAgICAgICBAaWYgKGljb24pIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuelN0cmluZ1RlbXBsYXRlT3V0bGV0PVwiaWNvbjsgbGV0IGljb25cIj5cbiAgICAgICAgICAgIDxzcGFuIG56LWljb24gW256VHlwZV09XCJpY29uXCIgbnpUaGVtZT1cImZpbGxcIj48L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltuei1yZXN1bHQtaWNvbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIH1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAc3dpdGNoIChuelN0YXR1cykge1xuICAgICAgICAgIEBjYXNlICgnNDA0Jykge1xuICAgICAgICAgICAgPG56LXJlc3VsdC1ub3QtZm91bmQgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGNhc2UgKCc1MDAnKSB7XG4gICAgICAgICAgICA8bnotcmVzdWx0LXNlcnZlci1lcnJvciAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoJzQwMycpIHtcbiAgICAgICAgICAgIDxuei1yZXN1bHQtdW5hdXRob3JpemVkIC8+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChuelRpdGxlKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYW50LXJlc3VsdC10aXRsZVwiICpuelN0cmluZ1RlbXBsYXRlT3V0bGV0PVwibnpUaXRsZVwiPlxuICAgICAgICB7eyBuelRpdGxlIH19XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRpdltuei1yZXN1bHQtdGl0bGVdXCI+PC9uZy1jb250ZW50PlxuICAgIH1cblxuICAgIEBpZiAobnpTdWJUaXRsZSkge1xuICAgICAgPGRpdiBjbGFzcz1cImFudC1yZXN1bHQtc3VidGl0bGVcIiAqbnpTdHJpbmdUZW1wbGF0ZU91dGxldD1cIm56U3ViVGl0bGVcIj5cbiAgICAgICAge3sgbnpTdWJUaXRsZSB9fVxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkaXZbbnotcmVzdWx0LXN1YnRpdGxlXVwiPjwvbmctY29udGVudD5cbiAgICB9XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibnotcmVzdWx0LWNvbnRlbnQsIFtuei1yZXN1bHQtY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgQGlmIChuekV4dHJhKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYW50LXJlc3VsdC1leHRyYVwiICpuelN0cmluZ1RlbXBsYXRlT3V0bGV0PVwibnpFeHRyYVwiPlxuICAgICAgICB7eyBuekV4dHJhIH19XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRpdltuei1yZXN1bHQtZXh0cmFdXCI+PC9uZy1jb250ZW50PlxuICAgIH1cbiAgYCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYW50LXJlc3VsdCcsXG4gICAgJ1tjbGFzcy5hbnQtcmVzdWx0LXN1Y2Nlc3NdJzogYG56U3RhdHVzID09PSAnc3VjY2VzcydgLFxuICAgICdbY2xhc3MuYW50LXJlc3VsdC1lcnJvcl0nOiBgbnpTdGF0dXMgPT09ICdlcnJvcidgLFxuICAgICdbY2xhc3MuYW50LXJlc3VsdC1pbmZvXSc6IGBuelN0YXR1cyA9PT0gJ2luZm8nYCxcbiAgICAnW2NsYXNzLmFudC1yZXN1bHQtd2FybmluZ10nOiBgbnpTdGF0dXMgPT09ICd3YXJuaW5nJ2AsXG4gICAgJ1tjbGFzcy5hbnQtcmVzdWx0LXJ0bF0nOiBgZGlyID09PSAncnRsJ2BcbiAgfSxcbiAgaW1wb3J0czogW1xuICAgIE56T3V0bGV0TW9kdWxlLFxuICAgIE56SWNvbk1vZHVsZSxcbiAgICBOelJlc3VsdE5vdEZvdW5kQ29tcG9uZW50LFxuICAgIE56UmVzdWx0U2VydmVyRXJyb3JDb21wb25lbnQsXG4gICAgTnpSZXN1bHRVbmF1dGhvcml6ZWRDb21wb25lbnRcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBOelJlc3VsdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQge1xuICBASW5wdXQoKSBuekljb24/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQElucHV0KCkgbnpUaXRsZT86IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBASW5wdXQoKSBuelN0YXR1czogTnpSZXN1bHRTdGF0dXNUeXBlID0gJ2luZm8nO1xuICBASW5wdXQoKSBuelN1YlRpdGxlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBJbnB1dCgpIG56RXh0cmE/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICBpY29uPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD47XG4gIGlzRXhjZXB0aW9uID0gZmFsc2U7XG4gIGRpcjogRGlyZWN0aW9uID0gJ2x0cic7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlyZWN0aW9uYWxpdHk6IERpcmVjdGlvbmFsaXR5XG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpcmVjdGlvbmFsaXR5LmNoYW5nZT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZGlyZWN0aW9uOiBEaXJlY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuZGlyID0gZGlyZWN0aW9uO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kaXIgPSB0aGlzLmRpcmVjdGlvbmFsaXR5LnZhbHVlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTdGF0dXNJY29uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFN0YXR1c0ljb24oKTogdm9pZCB7XG4gICAgY29uc3QgaWNvbiA9IHRoaXMubnpJY29uO1xuXG4gICAgdGhpcy5pc0V4Y2VwdGlvbiA9IEV4Y2VwdGlvblN0YXR1cy5pbmRleE9mKHRoaXMubnpTdGF0dXMpICE9PSAtMTtcbiAgICB0aGlzLmljb24gPSBpY29uXG4gICAgICA/IHR5cGVvZiBpY29uID09PSAnc3RyaW5nJ1xuICAgICAgICA/IEljb25NYXBbaWNvbiBhcyBOelJlc3VsdEljb25UeXBlXSB8fCBpY29uXG4gICAgICAgIDogaWNvblxuICAgICAgOiB0aGlzLmlzRXhjZXB0aW9uXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogSWNvbk1hcFt0aGlzLm56U3RhdHVzIGFzIE56UmVzdWx0SWNvblR5cGVdO1xuICB9XG59XG4iXX0=