UNPKG

ng-zorro-antd

Version:

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

187 lines (185 loc) 17.9 kB
import { ChangeDetectionStrategy, Component, Input, 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: "18.1.2", ngImport: i0, type: NzResultComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Directionality }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", 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: "18.1.2", 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 }], propDecorators: { nzIcon: [{ type: Input }], nzTitle: [{ type: Input }], nzStatus: [{ type: Input }], nzSubTitle: [{ type: Input }], nzExtra: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvcmVzdWx0L3Jlc3VsdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUtMLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQU12RSxNQUFNLE9BQU8sR0FBRztJQUNkLE9BQU8sRUFBRSxjQUFjO0lBQ3ZCLEtBQUssRUFBRSxjQUFjO0lBQ3JCLElBQUksRUFBRSxvQkFBb0I7SUFDMUIsT0FBTyxFQUFFLFNBQVM7Q0FDbkIsQ0FBQztBQUNGLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQXdFOUMsTUFBTSxPQUFPLGlCQUFpQjtJQWE1QixZQUNVLEdBQXNCLEVBQ3RCLGNBQThCO1FBRDlCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVovQixhQUFRLEdBQXVCLE1BQU0sQ0FBQztRQUsvQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixRQUFHLEdBQWMsS0FBSyxDQUFDO1FBRWYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFLcEMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQW9CLEVBQUUsRUFBRTtZQUM1RixJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztZQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRXpCLElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJO1lBQ2QsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBd0IsQ0FBQyxJQUFJLElBQUk7Z0JBQzNDLENBQUMsQ0FBQyxJQUFJO1lBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXO2dCQUNoQixDQUFDLENBQUMsU0FBUztnQkFDWCxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUE0QixDQUFDLENBQUM7SUFDbkQsQ0FBQzs4R0EvQ1UsaUJBQWlCO2tHQUFqQixpQkFBaUIsdWhCQWpFbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0NULDJEQVVDLGNBQWMsZ1BBQ2QsWUFBWSxrTkFDWix5QkFBeUIsZ0dBQ3pCLDRCQUE0QixzR0FDNUIsNkJBQTZCOzsyRkFJcEIsaUJBQWlCO2tCQXRFN0IsU0FBUzttQkFBQztvQkFDVCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUUsVUFBVTtvQkFDcEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStDVDtvQkFDRCxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLFlBQVk7d0JBQ25CLDRCQUE0QixFQUFFLHdCQUF3Qjt3QkFDdEQsMEJBQTBCLEVBQUUsc0JBQXNCO3dCQUNsRCx5QkFBeUIsRUFBRSxxQkFBcUI7d0JBQ2hELDRCQUE0QixFQUFFLHdCQUF3Qjt3QkFDdEQsd0JBQXdCLEVBQUUsZUFBZTtxQkFDMUM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWix5QkFBeUI7d0JBQ3pCLDRCQUE0Qjt3QkFDNUIsNkJBQTZCO3FCQUM5QjtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7bUhBRVUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgRGlyZWN0aW9uLCBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBOek91dGxldE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9vdXRsZXQnO1xuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcblxuaW1wb3J0IHsgTnpSZXN1bHROb3RGb3VuZENvbXBvbmVudCB9IGZyb20gJy4vcGFydGlhbC9ub3QtZm91bmQnO1xuaW1wb3J0IHsgTnpSZXN1bHRTZXJ2ZXJFcnJvckNvbXBvbmVudCB9IGZyb20gJy4vcGFydGlhbC9zZXJ2ZXItZXJyb3IuY29tcG9uZW50JztcbmltcG9ydCB7IE56UmVzdWx0VW5hdXRob3JpemVkQ29tcG9uZW50IH0gZnJvbSAnLi9wYXJ0aWFsL3VuYXV0aG9yaXplZCc7XG5cbmV4cG9ydCB0eXBlIE56UmVzdWx0SWNvblR5cGUgPSAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ2luZm8nIHwgJ3dhcm5pbmcnO1xuZXhwb3J0IHR5cGUgTnpFeGNlcHRpb25TdGF0dXNUeXBlID0gJzQwNCcgfCAnNTAwJyB8ICc0MDMnO1xuZXhwb3J0IHR5cGUgTnpSZXN1bHRTdGF0dXNUeXBlID0gTnpFeGNlcHRpb25TdGF0dXNUeXBlIHwgTnpSZXN1bHRJY29uVHlwZTtcblxuY29uc3QgSWNvbk1hcCA9IHtcbiAgc3VjY2VzczogJ2NoZWNrLWNpcmNsZScsXG4gIGVycm9yOiAnY2xvc2UtY2lyY2xlJyxcbiAgaW5mbzogJ2V4Y2xhbWF0aW9uLWNpcmNsZScsXG4gIHdhcm5pbmc6ICd3YXJuaW5nJ1xufTtcbmNvbnN0IEV4Y2VwdGlvblN0YXR1cyA9IFsnNDA0JywgJzUwMCcsICc0MDMnXTtcblxuQENvbXBvbmVudCh7XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzZWxlY3RvcjogJ256LXJlc3VsdCcsXG4gIGV4cG9ydEFzOiAnbnpSZXN1bHQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJhbnQtcmVzdWx0LWljb25cIj5cbiAgICAgIEBpZiAoIWlzRXhjZXB0aW9uKSB7XG4gICAgICAgIEBpZiAoaWNvbikge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm56U3RyaW5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uOyBsZXQgaWNvblwiPlxuICAgICAgICAgICAgPHNwYW4gbnotaWNvbiBbbnpUeXBlXT1cImljb25cIiBuelRoZW1lPVwiZmlsbFwiPjwvc3Bhbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW256LXJlc3VsdC1pY29uXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgfVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBzd2l0Y2ggKG56U3RhdHVzKSB7XG4gICAgICAgICAgQGNhc2UgKCc0MDQnKSB7XG4gICAgICAgICAgICA8bnotcmVzdWx0LW5vdC1mb3VuZCAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoJzUwMCcpIHtcbiAgICAgICAgICAgIDxuei1yZXN1bHQtc2VydmVyLWVycm9yIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBjYXNlICgnNDAzJykge1xuICAgICAgICAgICAgPG56LXJlc3VsdC11bmF1dGhvcml6ZWQgLz5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICBAaWYgKG56VGl0bGUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJhbnQtcmVzdWx0LXRpdGxlXCIgKm56U3RyaW5nVGVtcGxhdGVPdXRsZXQ9XCJuelRpdGxlXCI+XG4gICAgICAgIHt7IG56VGl0bGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGl2W256LXJlc3VsdC10aXRsZV1cIj48L25nLWNvbnRlbnQ+XG4gICAgfVxuXG4gICAgQGlmIChuelN1YlRpdGxlKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYW50LXJlc3VsdC1zdWJ0aXRsZVwiICpuelN0cmluZ1RlbXBsYXRlT3V0bGV0PVwibnpTdWJUaXRsZVwiPlxuICAgICAgICB7eyBuelN1YlRpdGxlIH19XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRpdltuei1yZXN1bHQtc3VidGl0bGVdXCI+PC9uZy1jb250ZW50PlxuICAgIH1cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJuei1yZXN1bHQtY29udGVudCwgW256LXJlc3VsdC1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICBAaWYgKG56RXh0cmEpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJhbnQtcmVzdWx0LWV4dHJhXCIgKm56U3RyaW5nVGVtcGxhdGVPdXRsZXQ9XCJuekV4dHJhXCI+XG4gICAgICAgIHt7IG56RXh0cmEgfX1cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGl2W256LXJlc3VsdC1leHRyYV1cIj48L25nLWNvbnRlbnQ+XG4gICAgfVxuICBgLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdhbnQtcmVzdWx0JyxcbiAgICAnW2NsYXNzLmFudC1yZXN1bHQtc3VjY2Vzc10nOiBgbnpTdGF0dXMgPT09ICdzdWNjZXNzJ2AsXG4gICAgJ1tjbGFzcy5hbnQtcmVzdWx0LWVycm9yXSc6IGBuelN0YXR1cyA9PT0gJ2Vycm9yJ2AsXG4gICAgJ1tjbGFzcy5hbnQtcmVzdWx0LWluZm9dJzogYG56U3RhdHVzID09PSAnaW5mbydgLFxuICAgICdbY2xhc3MuYW50LXJlc3VsdC13YXJuaW5nXSc6IGBuelN0YXR1cyA9PT0gJ3dhcm5pbmcnYCxcbiAgICAnW2NsYXNzLmFudC1yZXN1bHQtcnRsXSc6IGBkaXIgPT09ICdydGwnYFxuICB9LFxuICBpbXBvcnRzOiBbXG4gICAgTnpPdXRsZXRNb2R1bGUsXG4gICAgTnpJY29uTW9kdWxlLFxuICAgIE56UmVzdWx0Tm90Rm91bmRDb21wb25lbnQsXG4gICAgTnpSZXN1bHRTZXJ2ZXJFcnJvckNvbXBvbmVudCxcbiAgICBOelJlc3VsdFVuYXV0aG9yaXplZENvbXBvbmVudFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE56UmVzdWx0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG56SWNvbj86IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBASW5wdXQoKSBuelRpdGxlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBJbnB1dCgpIG56U3RhdHVzOiBOelJlc3VsdFN0YXR1c1R5cGUgPSAnaW5mbyc7XG4gIEBJbnB1dCgpIG56U3ViVGl0bGU/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQElucHV0KCkgbnpFeHRyYT86IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIGljb24/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgaXNFeGNlcHRpb24gPSBmYWxzZTtcbiAgZGlyOiBEaXJlY3Rpb24gPSAnbHRyJztcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBkaXJlY3Rpb25hbGl0eTogRGlyZWN0aW9uYWxpdHlcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGlyZWN0aW9uYWxpdHkuY2hhbmdlPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChkaXJlY3Rpb246IERpcmVjdGlvbikgPT4ge1xuICAgICAgdGhpcy5kaXIgPSBkaXJlY3Rpb247XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRpciA9IHRoaXMuZGlyZWN0aW9uYWxpdHkudmFsdWU7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXR1c0ljb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3RhdHVzSWNvbigpOiB2b2lkIHtcbiAgICBjb25zdCBpY29uID0gdGhpcy5uekljb247XG5cbiAgICB0aGlzLmlzRXhjZXB0aW9uID0gRXhjZXB0aW9uU3RhdHVzLmluZGV4T2YodGhpcy5uelN0YXR1cykgIT09IC0xO1xuICAgIHRoaXMuaWNvbiA9IGljb25cbiAgICAgID8gdHlwZW9mIGljb24gPT09ICdzdHJpbmcnXG4gICAgICAgID8gSWNvbk1hcFtpY29uIGFzIE56UmVzdWx0SWNvblR5cGVdIHx8IGljb25cbiAgICAgICAgOiBpY29uXG4gICAgICA6IHRoaXMuaXNFeGNlcHRpb25cbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiBJY29uTWFwW3RoaXMubnpTdGF0dXMgYXMgTnpSZXN1bHRJY29uVHlwZV07XG4gIH1cbn1cbiJdfQ==