UNPKG

ng-zorro-antd

Version:

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

254 lines 19.9 kB
/** * @fileoverview added by tsickle * Generated from: alert.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __decorate, __metadata } from "tslib"; /** * @license * Copyright Alibaba.com All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core'; import { slideAlertMotion } from 'ng-zorro-antd/core/animation'; import { NzConfigService, WithConfig } from 'ng-zorro-antd/core/config'; import { InputBoolean } from 'ng-zorro-antd/core/util'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; /** @type {?} */ const NZ_CONFIG_COMPONENT_NAME = 'alert'; export class NzAlertComponent { /** * @param {?} nzConfigService * @param {?} cdr */ constructor(nzConfigService, cdr) { this.nzConfigService = nzConfigService; this.cdr = cdr; this.nzCloseText = null; this.nzIconType = null; this.nzMessage = null; this.nzDescription = null; this.nzType = 'info'; this.nzCloseable = false; this.nzShowIcon = false; this.nzBanner = false; this.nzNoAnimation = false; this.nzOnClose = new EventEmitter(); this.closed = false; this.iconTheme = 'fill'; this.inferredIconType = 'info-circle'; this.isTypeSet = false; this.isShowIconSet = false; this.destroy$ = new Subject(); this.nzConfigService .getConfigChangeEventForComponent(NZ_CONFIG_COMPONENT_NAME) .pipe(takeUntil(this.destroy$)) .subscribe((/** * @return {?} */ () => { this.cdr.markForCheck(); })); } /** * @return {?} */ closeAlert() { this.closed = true; } /** * @return {?} */ onFadeAnimationDone() { if (this.closed) { this.nzOnClose.emit(true); } } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { const { nzShowIcon, nzDescription, nzType, nzBanner } = changes; if (nzShowIcon) { this.isShowIconSet = true; } if (nzType) { this.isTypeSet = true; switch (this.nzType) { case 'error': this.inferredIconType = 'close-circle'; break; case 'success': this.inferredIconType = 'check-circle'; break; case 'info': this.inferredIconType = 'info-circle'; break; case 'warning': this.inferredIconType = 'exclamation-circle'; break; } } if (nzDescription) { this.iconTheme = this.nzDescription ? 'outline' : 'fill'; } if (nzBanner) { if (!this.isTypeSet) { this.nzType = 'warning'; } if (!this.isShowIconSet) { this.nzShowIcon = true; } } } /** * @return {?} */ ngOnDestroy() { this.destroy$.next(); this.destroy$.complete(); } } NzAlertComponent.decorators = [ { type: Component, args: [{ selector: 'nz-alert', exportAs: 'nzAlert', animations: [slideAlertMotion], template: ` <div *ngIf="!closed" class="ant-alert" [class.ant-alert-success]="nzType === 'success'" [class.ant-alert-info]="nzType === 'info'" [class.ant-alert-warning]="nzType === 'warning'" [class.ant-alert-error]="nzType === 'error'" [class.ant-alert-no-icon]="!nzShowIcon" [class.ant-alert-banner]="nzBanner" [class.ant-alert-closable]="nzCloseable" [class.ant-alert-with-description]="!!nzDescription" [@.disabled]="nzNoAnimation" [@slideAlertMotion] (@slideAlertMotion.done)="onFadeAnimationDone()" > <ng-container *ngIf="nzShowIcon"> <i nz-icon class="ant-alert-icon" [nzType]="nzIconType || inferredIconType" [nzTheme]="iconTheme"></i> </ng-container> <span class="ant-alert-message" *ngIf="nzMessage"> <ng-container *nzStringTemplateOutlet="nzMessage">{{ nzMessage }}</ng-container> </span> <span class="ant-alert-description" *ngIf="nzDescription"> <ng-container *nzStringTemplateOutlet="nzDescription">{{ nzDescription }}</ng-container> </span> <button type="button" tabindex="0" *ngIf="nzCloseable || nzCloseText" class="ant-alert-close-icon" (click)="closeAlert()"> <ng-template #closeDefaultTemplate> <i nz-icon nzType="close"></i> </ng-template> <ng-container *ngIf="nzCloseText; else closeDefaultTemplate"> <ng-container *nzStringTemplateOutlet="nzCloseText"> <span class="ant-alert-close-text">{{ nzCloseText }}</span> </ng-container> </ng-container> </button> </div> `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false }] } ]; /** @nocollapse */ NzAlertComponent.ctorParameters = () => [ { type: NzConfigService }, { type: ChangeDetectorRef } ]; NzAlertComponent.propDecorators = { nzCloseText: [{ type: Input }], nzIconType: [{ type: Input }], nzMessage: [{ type: Input }], nzDescription: [{ type: Input }], nzType: [{ type: Input }], nzCloseable: [{ type: Input }], nzShowIcon: [{ type: Input }], nzBanner: [{ type: Input }], nzNoAnimation: [{ type: Input }], nzOnClose: [{ type: Output }] }; __decorate([ WithConfig(NZ_CONFIG_COMPONENT_NAME), InputBoolean(), __metadata("design:type", Boolean) ], NzAlertComponent.prototype, "nzCloseable", void 0); __decorate([ WithConfig(NZ_CONFIG_COMPONENT_NAME), InputBoolean(), __metadata("design:type", Boolean) ], NzAlertComponent.prototype, "nzShowIcon", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzAlertComponent.prototype, "nzBanner", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzAlertComponent.prototype, "nzNoAnimation", void 0); if (false) { /** @type {?} */ NzAlertComponent.ngAcceptInputType_nzCloseable; /** @type {?} */ NzAlertComponent.ngAcceptInputType_nzShowIcon; /** @type {?} */ NzAlertComponent.ngAcceptInputType_nzBanner; /** @type {?} */ NzAlertComponent.ngAcceptInputType_nzNoAnimation; /** @type {?} */ NzAlertComponent.prototype.nzCloseText; /** @type {?} */ NzAlertComponent.prototype.nzIconType; /** @type {?} */ NzAlertComponent.prototype.nzMessage; /** @type {?} */ NzAlertComponent.prototype.nzDescription; /** @type {?} */ NzAlertComponent.prototype.nzType; /** @type {?} */ NzAlertComponent.prototype.nzCloseable; /** @type {?} */ NzAlertComponent.prototype.nzShowIcon; /** @type {?} */ NzAlertComponent.prototype.nzBanner; /** @type {?} */ NzAlertComponent.prototype.nzNoAnimation; /** @type {?} */ NzAlertComponent.prototype.nzOnClose; /** @type {?} */ NzAlertComponent.prototype.closed; /** @type {?} */ NzAlertComponent.prototype.iconTheme; /** @type {?} */ NzAlertComponent.prototype.inferredIconType; /** * @type {?} * @private */ NzAlertComponent.prototype.isTypeSet; /** * @type {?} * @private */ NzAlertComponent.prototype.isShowIconSet; /** * @type {?} * @private */ NzAlertComponent.prototype.destroy$; /** @type {?} */ NzAlertComponent.prototype.nzConfigService; /** * @type {?} * @private */ NzAlertComponent.prototype.cdr; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctem9ycm8tYW50ZC9hbGVydC8iLCJzb3VyY2VzIjpbImFsZXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUdOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7TUFFckMsd0JBQXdCLEdBQUcsT0FBTztBQStDeEMsTUFBTSxPQUFPLGdCQUFnQjs7Ozs7SUF1QjNCLFlBQW1CLGVBQWdDLEVBQVUsR0FBc0I7UUFBaEUsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFqQjFFLGdCQUFXLEdBQXNDLElBQUksQ0FBQztRQUN0RCxlQUFVLEdBQWtCLElBQUksQ0FBQztRQUNqQyxjQUFTLEdBQXNDLElBQUksQ0FBQztRQUNwRCxrQkFBYSxHQUFzQyxJQUFJLENBQUM7UUFDeEQsV0FBTSxHQUE2QyxNQUFNLENBQUM7UUFDSixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQ2xFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDNUIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7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TCxLQUFLO3lCQUNMLEtBQUs7dUJBQ0wsS0FBSzs0QkFDTCxLQUFLO3dCQUNMLE1BQU07O0FBSndEO0lBQXJELFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLFlBQVksRUFBRTs7cURBQThCO0FBQzdCO0lBQXJELFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLFlBQVksRUFBRTs7b0RBQTZCO0FBQ2xFO0lBQWYsWUFBWSxFQUFFOztrREFBa0I7QUFDakI7SUFBZixZQUFZLEVBQUU7O3VEQUF1Qjs7O0lBYi9DLCtDQUFtRDs7SUFDbkQsOENBQWtEOztJQUNsRCw0Q0FBZ0Q7O0lBQ2hELGlEQUFxRDs7SUFFckQsdUNBQStEOztJQUMvRCxzQ0FBMEM7O0lBQzFDLHFDQUE2RDs7SUFDN0QseUNBQWlFOztJQUNqRSxrQ0FBbUU7O0lBQ25FLHVDQUE0Rjs7SUFDNUYsc0NBQTJGOztJQUMzRixvQ0FBMEM7O0lBQzFDLHlDQUErQzs7SUFDL0MscUNBQTJEOztJQUMzRCxrQ0FBZTs7SUFDZixxQ0FBdUM7O0lBQ3ZDLDRDQUF5Qzs7Ozs7SUFDekMscUNBQTBCOzs7OztJQUMxQix5Q0FBOEI7Ozs7O0lBQzlCLG9DQUFpQzs7SUFFckIsMkNBQXVDOzs7OztJQUFFLCtCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2xpZGVBbGVydE1vdGlvbiB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9hbmltYXRpb24nO1xuaW1wb3J0IHsgTnpDb25maWdTZXJ2aWNlLCBXaXRoQ29uZmlnIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL2NvbmZpZyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3V0aWwnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBOWl9DT05GSUdfQ09NUE9ORU5UX05BTUUgPSAnYWxlcnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduei1hbGVydCcsXG4gIGV4cG9ydEFzOiAnbnpBbGVydCcsXG4gIGFuaW1hdGlvbnM6IFtzbGlkZUFsZXJ0TW90aW9uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIiFjbG9zZWRcIlxuICAgICAgY2xhc3M9XCJhbnQtYWxlcnRcIlxuICAgICAgW2NsYXNzLmFudC1hbGVydC1zdWNjZXNzXT1cIm56VHlwZSA9PT0gJ3N1Y2Nlc3MnXCJcbiAgICAgIFtjbGFzcy5hbnQtYWxlcnQtaW5mb109XCJuelR5cGUgPT09ICdpbmZvJ1wiXG4gICAgICBbY2xhc3MuYW50LWFsZXJ0LXdhcm5pbmddPVwibnpUeXBlID09PSAnd2FybmluZydcIlxuICAgICAgW2NsYXNzLmFudC1hbGVydC1lcnJvcl09XCJuelR5cGUgPT09ICdlcnJvcidcIlxuICAgICAgW2NsYXNzLmFudC1hbGVydC1uby1pY29uXT1cIiFuelNob3dJY29uXCJcbiAgICAgIFtjbGFzcy5hbnQtYWxlcnQtYmFubmVyXT1cIm56QmFubmVyXCJcbiAgICAgIFtjbGFzcy5hbnQtYWxlcnQtY2xvc2FibGVdPVwibnpDbG9zZWFibGVcIlxuICAgICAgW2NsYXNzLmFudC1hbGVydC13aXRoLWRlc2NyaXB0aW9uXT1cIiEhbnpEZXNjcmlwdGlvblwiXG4gICAgICBbQC5kaXNhYmxlZF09XCJuek5vQW5pbWF0aW9uXCJcbiAgICAgIFtAc2xpZGVBbGVydE1vdGlvbl1cbiAgICAgIChAc2xpZGVBbGVydE1vdGlvbi5kb25lKT1cIm9uRmFkZUFuaW1hdGlvbkRvbmUoKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm56U2hvd0ljb25cIj5cbiAgICAgICAgPGkgbnotaWNvbiBjbGFzcz1cImFudC1hbGVydC1pY29uXCIgW256VHlwZV09XCJuekljb25UeXBlIHx8IGluZmVycmVkSWNvblR5cGVcIiBbbnpUaGVtZV09XCJpY29uVGhlbWVcIj48L2k+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYW50LWFsZXJ0LW1lc3NhZ2VcIiAqbmdJZj1cIm56TWVzc2FnZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuelN0cmluZ1RlbXBsYXRlT3V0bGV0PVwibnpNZXNzYWdlXCI+e3sgbnpNZXNzYWdlIH19PC9uZy1jb250YWluZXI+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImFudC1hbGVydC1kZXNjcmlwdGlvblwiICpuZ0lmPVwibnpEZXNjcmlwdGlvblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuelN0cmluZ1RlbXBsYXRlT3V0bGV0PVwibnpEZXNjcmlwdGlvblwiPnt7IG56RGVzY3JpcHRpb24gfX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiICpuZ0lmPVwibnpDbG9zZWFibGUgfHwgbnpDbG9zZVRleHRcIiBjbGFzcz1cImFudC1hbGVydC1jbG9zZS1pY29uXCIgKGNsaWNrKT1cImNsb3NlQWxlcnQoKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2Nsb3NlRGVmYXVsdFRlbXBsYXRlPlxuICAgICAgICAgIDxpIG56LWljb24gbnpUeXBlPVwiY2xvc2VcIj48L2k+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuekNsb3NlVGV4dDsgZWxzZSBjbG9zZURlZmF1bHRUZW1wbGF0ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm56U3RyaW5nVGVtcGxhdGVPdXRsZXQ9XCJuekNsb3NlVGV4dFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbnQtYWxlcnQtY2xvc2UtdGV4dFwiPnt7IG56Q2xvc2VUZXh0IH19PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTnpBbGVydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256Q2xvc2VhYmxlOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelNob3dJY29uOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uekJhbm5lcjogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpOb0FuaW1hdGlvbjogQm9vbGVhbklucHV0O1xuXG4gIEBJbnB1dCgpIG56Q2xvc2VUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBuekljb25UeXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbnpNZXNzYWdlOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBuekRlc2NyaXB0aW9uOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBuelR5cGU6ICdzdWNjZXNzJyB8ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdlcnJvcicgPSAnaW5mbyc7XG4gIEBJbnB1dCgpIEBXaXRoQ29uZmlnKE5aX0NPTkZJR19DT01QT05FTlRfTkFNRSkgQElucHV0Qm9vbGVhbigpIG56Q2xvc2VhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBXaXRoQ29uZmlnKE5aX0NPTkZJR19DT01QT05FTlRfTkFNRSkgQElucHV0Qm9vbGVhbigpIG56U2hvd0ljb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56QmFubmVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuek5vQW5pbWF0aW9uID0gZmFsc2U7XG4gIEBPdXRwdXQoKSByZWFkb25seSBuek9uQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIGNsb3NlZCA9IGZhbHNlO1xuICBpY29uVGhlbWU6ICdvdXRsaW5lJyB8ICdmaWxsJyA9ICdmaWxsJztcbiAgaW5mZXJyZWRJY29uVHlwZTogc3RyaW5nID0gJ2luZm8tY2lyY2xlJztcbiAgcHJpdmF0ZSBpc1R5cGVTZXQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1Nob3dJY29uU2V0ID0gZmFsc2U7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuekNvbmZpZ1NlcnZpY2U6IE56Q29uZmlnU2VydmljZSwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5uekNvbmZpZ1NlcnZpY2VcbiAgICAgIC5nZXRDb25maWdDaGFuZ2VFdmVudEZvckNvbXBvbmVudChOWl9DT05GSUdfQ09NUE9ORU5UX05BTUUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGNsb3NlQWxlcnQoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICB9XG5cbiAgb25GYWRlQW5pbWF0aW9uRG9uZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgIHRoaXMubnpPbkNsb3NlLmVtaXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgbnpTaG93SWNvbiwgbnpEZXNjcmlwdGlvbiwgbnpUeXBlLCBuekJhbm5lciB9ID0gY2hhbmdlcztcbiAgICBpZiAobnpTaG93SWNvbikge1xuICAgICAgdGhpcy5pc1Nob3dJY29uU2V0ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG56VHlwZSkge1xuICAgICAgdGhpcy5pc1R5cGVTZXQgPSB0cnVlO1xuICAgICAgc3dpdGNoICh0aGlzLm56VHlwZSkge1xuICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgdGhpcy5pbmZlcnJlZEljb25UeXBlID0gJ2Nsb3NlLWNpcmNsZSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICAgIHRoaXMuaW5mZXJyZWRJY29uVHlwZSA9ICdjaGVjay1jaXJjbGUnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpbmZvJzpcbiAgICAgICAgICB0aGlzLmluZmVycmVkSWNvblR5cGUgPSAnaW5mby1jaXJjbGUnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgICB0aGlzLmluZmVycmVkSWNvblR5cGUgPSAnZXhjbGFtYXRpb24tY2lyY2xlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG56RGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuaWNvblRoZW1lID0gdGhpcy5uekRlc2NyaXB0aW9uID8gJ291dGxpbmUnIDogJ2ZpbGwnO1xuICAgIH1cbiAgICBpZiAobnpCYW5uZXIpIHtcbiAgICAgIGlmICghdGhpcy5pc1R5cGVTZXQpIHtcbiAgICAgICAgdGhpcy5uelR5cGUgPSAnd2FybmluZyc7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuaXNTaG93SWNvblNldCkge1xuICAgICAgICB0aGlzLm56U2hvd0ljb24gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==