@hpe/angular-toolkit
Version:
Hewlett-Packard Enterprise : Angular toolkit for rapid project development
171 lines (163 loc) • 16 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
//=============================================================================
//===
//=== (C) Copyright 2018 Hewlett Packard Enterprise Development LP.
//===
//=== Use of this source code is governed by an MIT-style license that can be
//=== found in the LICENSE file
//=============================================================================
import { Component } from '@angular/core';
import { AppEvent } from "@hpe/angular-toolkit/model";
import { Credentials } from "@hpe/angular-toolkit/model";
import { Lib } from "@hpe/angular-toolkit/lib";
import { AbstractSubscriber } from "@hpe/angular-toolkit/service";
import { EventBusService } from "@hpe/angular-toolkit/service";
import { HttpService } from "@hpe/angular-toolkit/service";
import { LabelService } from "@hpe/angular-toolkit/service";
import { NotificationService } from "@hpe/angular-toolkit/service";
import { SessionService } from "@hpe/angular-toolkit/service";
//=============================================================================
export class LoginPanel extends AbstractSubscriber {
/**
* @param {?} eventBusService
* @param {?} sessionService
* @param {?} notificationService
* @param {?} labelService
* @param {?} httpService
*/
constructor(eventBusService, sessionService, notificationService, labelService, httpService) {
super(eventBusService);
this.sessionService = sessionService;
this.notificationService = notificationService;
this.labelService = labelService;
this.httpService = httpService;
//-------------------------------------------------------------------------
//---
//--- Variables
//---
//-------------------------------------------------------------------------
this.cred = new Credentials();
super.subscribeToApp(AppEvent.LOGIN_FAILED, event => this.onLoginFailed(event));
}
/**
* @return {?}
*/
login() {
if (!this.areCredentialsValid()) {
let /** @type {?} */ msg = this.labelService.getLabel("login-panel", "missing.info");
this.notificationService.showWarn(msg["title"], msg["descr"]);
}
else {
this.sessionService.login(this.cred);
}
}
/**
* @return {?}
*/
get title() {
return this.loc("title");
}
/**
* @return {?}
*/
get username() {
return this.loc("username");
}
/**
* @return {?}
*/
get password() {
return this.loc("password");
}
/**
* @return {?}
*/
get button() {
return this.loc("button");
}
/**
* @param {?} event
* @return {?}
*/
onLoginFailed(event) {
let /** @type {?} */ msg = this.labelService.getLabel("login-panel", "login.error");
this.notificationService.showError(msg["title"], msg["descr"]);
}
/**
* @return {?}
*/
areCredentialsValid() {
return Lib.str.isProvided(this.cred.username) && Lib.str.isProvided(this.cred.password);
}
/**
* @param {?} code
* @return {?}
*/
loc(code) {
return this.labelService.getLabel("login-panel", code);
}
}
LoginPanel.decorators = [
{ type: Component, args: [{
selector: 'hpe-login',
template: `<!--
=============================================================================
===
=== (C) Copyright 2018 Hewlett Packard Enterprise Development LP.
===
=== Use of this source code is governed by an MIT-style license that can be
=== found in the LICENSE file
=============================================================================
-->
<hpe-card-panel icon="fa-sign-in" [title]="title" [toggleButton]="false">
<div cpBody>
<hpe-form-panel>
<hpe-form-column width="500px">
<hpe-input-text icon="fa-user" [label]="username" [(ngModel)]="cred.username" required></hpe-input-text>
<hpe-input-text icon="fa-key" [label]="password" [(ngModel)]="cred.password" required></hpe-input-text>
</hpe-form-column>
</hpe-form-panel>
<hpe-button-panel>
<div class="spinner" *ngIf="httpService.loading">
<i class="fa fa-circle-o-notch fa-pulse"></i>
</div>
<button mat-button hpeButton (click)="login()">{{button}}</button>
</hpe-button-panel>
</div>
</hpe-card-panel>
`,
styles: [`.spinner{position:absolute;left:16px;bottom:16px;font-size:32px}`]
},] },
];
/** @nocollapse */
LoginPanel.ctorParameters = () => [
{ type: EventBusService, },
{ type: SessionService, },
{ type: NotificationService, },
{ type: LabelService, },
{ type: HttpService, },
];
function LoginPanel_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
LoginPanel.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
LoginPanel.ctorParameters;
/** @type {?} */
LoginPanel.prototype.cred;
/** @type {?} */
LoginPanel.prototype.sessionService;
/** @type {?} */
LoginPanel.prototype.notificationService;
/** @type {?} */
LoginPanel.prototype.labelService;
/** @type {?} */
LoginPanel.prototype.httpService;
}
//=============================================================================
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaHBlL2FuZ3VsYXItdG9vbGtpdC9ndWkvZm9ybS8iLCJzb3VyY2VzIjpbImxvZ2luL2xvZ2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV4QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQWlCLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBYyw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQXNCLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFPLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBVSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQWMsOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFhLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBVyw4QkFBOEIsQ0FBQztBQUlqRTtBQXdDQSxNQUFNLGlCQUFrQixTQUFRLGtCQUFrQjs7Ozs7Ozs7SUFnQmpELFlBQW9CLGVBQW9DLEVBQzdDLGdCQUNBLHFCQUNBLGNBQ0E7UUFFVixLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFMYixtQkFBYyxHQUFkLGNBQWM7UUFDZCx3QkFBbUIsR0FBbkIsbUJBQW1CO1FBQ25CLGlCQUFZLEdBQVosWUFBWTtRQUNaLGdCQUFXLEdBQVgsV0FBVzs7Ozs7O29CQVpELElBQUksV0FBVyxFQUFFO1FBZXJDLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUNoRjs7OztJQVFNLEtBQUs7UUFFWCxFQUFFLENBQUMsQ0FBRSxDQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuQyxxQkFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRXBFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsSUFBSSxDQUFDLENBQUM7WUFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckM7Ozs7O0lBT0YsSUFBSSxLQUFLO1FBQ1IsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDekI7Ozs7SUFJRCxJQUFJLFFBQVE7UUFDWCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUM1Qjs7OztJQUlELElBQUksUUFBUTtRQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQzVCOzs7O0lBSUQsSUFBSSxNQUFNO1FBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDMUI7Ozs7O0lBUU8sYUFBYSxDQUFDLEtBQWdCO1FBRXJDLHFCQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFbkUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Ozs7O0lBU3hELG1CQUFtQjtRQUMxQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzs7Ozs7SUFLakYsR0FBRyxDQUFDLElBQWE7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQzs7OztZQXhJeEQsU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBVSxXQUFXO2dCQUM3QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0NiO2dCQUNBLE1BQU0sRUFBRSxDQUFDLGtFQUFrRSxDQUFDO2FBQzVFOzs7O1lBNUNPLGVBQWU7WUFJZixjQUFjO1lBRGQsbUJBQW1CO1lBRG5CLFlBQVk7WUFEWixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy89PT1cbi8vPT09IChDKSBDb3B5cmlnaHQgMjAxOCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUC5cbi8vPT09XG4vLz09PSBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuLy89PT0gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZVxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5pbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QXBwRXZlbnR9ICAgICAgICAgICAgZnJvbSBcIkBocGUvYW5ndWxhci10b29sa2l0L21vZGVsXCI7XG5pbXBvcnQge0NyZWRlbnRpYWxzfSAgICAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtMaWJ9ICAgICAgICAgICAgICAgICBmcm9tIFwiQGhwZS9hbmd1bGFyLXRvb2xraXQvbGliXCI7XG5pbXBvcnQge0Fic3RyYWN0U3Vic2NyaWJlcn0gIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9zZXJ2aWNlXCI7XG5pbXBvcnQge0V2ZW50QnVzU2VydmljZX0gICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9zZXJ2aWNlXCI7XG5pbXBvcnQge0h0dHBTZXJ2aWNlfSAgICAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9zZXJ2aWNlXCI7XG5pbXBvcnQge0xhYmVsU2VydmljZX0gICAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9zZXJ2aWNlXCI7XG5pbXBvcnQge05vdGlmaWNhdGlvblNlcnZpY2V9IGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9zZXJ2aWNlXCI7XG5pbXBvcnQge1Nlc3Npb25TZXJ2aWNlfSAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9zZXJ2aWNlXCI7XG5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3IgICAgOiAgICAgJ2hwZS1sb2dpbicsXG4gICAgdGVtcGxhdGU6IGA8IS0tXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuPT09XG49PT0gKEMpIENvcHlyaWdodCAyMDE4IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQLlxuPT09XG49PT0gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbj09PSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLS0+XG5cbjxocGUtY2FyZC1wYW5lbCBpY29uPVwiZmEtc2lnbi1pblwiIFt0aXRsZV09XCJ0aXRsZVwiIFt0b2dnbGVCdXR0b25dPVwiZmFsc2VcIj5cblx0PGRpdiBjcEJvZHk+XG5cdFx0PGhwZS1mb3JtLXBhbmVsPlxuXG5cdFx0XHQ8aHBlLWZvcm0tY29sdW1uIHdpZHRoPVwiNTAwcHhcIj5cblx0XHRcdFx0PGhwZS1pbnB1dC10ZXh0IGljb249XCJmYS11c2VyXCIgW2xhYmVsXT1cInVzZXJuYW1lXCIgWyhuZ01vZGVsKV09XCJjcmVkLnVzZXJuYW1lXCIgcmVxdWlyZWQ+PC9ocGUtaW5wdXQtdGV4dD5cblx0XHRcdFx0PGhwZS1pbnB1dC10ZXh0IGljb249XCJmYS1rZXlcIiAgW2xhYmVsXT1cInBhc3N3b3JkXCIgWyhuZ01vZGVsKV09XCJjcmVkLnBhc3N3b3JkXCIgcmVxdWlyZWQ+PC9ocGUtaW5wdXQtdGV4dD5cblx0XHRcdDwvaHBlLWZvcm0tY29sdW1uPlxuXG5cdFx0PC9ocGUtZm9ybS1wYW5lbD5cblxuXHRcdDxocGUtYnV0dG9uLXBhbmVsPlxuXHRcdFx0PGRpdiBjbGFzcz1cInNwaW5uZXJcIiAqbmdJZj1cImh0dHBTZXJ2aWNlLmxvYWRpbmdcIj5cblx0XHRcdFx0PGkgY2xhc3M9XCJmYSBmYS1jaXJjbGUtby1ub3RjaCBmYS1wdWxzZVwiPjwvaT5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGJ1dHRvbiBtYXQtYnV0dG9uIGhwZUJ1dHRvbiAoY2xpY2spPVwibG9naW4oKVwiPnt7YnV0dG9ufX08L2J1dHRvbj5cblx0XHQ8L2hwZS1idXR0b24tcGFuZWw+XG5cdDwvZGl2PlxuPC9ocGUtY2FyZC1wYW5lbD5cblxuXG5cbmAsXG5cdHN0eWxlczogW2Auc3Bpbm5lcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjE2cHg7Ym90dG9tOjE2cHg7Zm9udC1zaXplOjMycHh9YF1cbn0pXG5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNsYXNzIExvZ2luUGFuZWwgZXh0ZW5kcyBBYnN0cmFjdFN1YnNjcmliZXIge1xuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLVxuXHQvLy0tLSBWYXJpYWJsZXNcblx0Ly8tLS1cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0Y3JlZCA6IENyZWRlbnRpYWxzID0gbmV3IENyZWRlbnRpYWxzKCk7XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vLS0tXG5cdC8vLS0tIENvbnN0cnVjdG9yXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdGNvbnN0cnVjdG9yKCAgICAgICAgZXZlbnRCdXNTZXJ2aWNlICAgIDogRXZlbnRCdXNTZXJ2aWNlLFxuXHRcdFx0XHRwcml2YXRlIHNlc3Npb25TZXJ2aWNlICAgICA6IFNlc3Npb25TZXJ2aWNlLFxuXHRcdFx0XHRwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG5cdFx0XHRcdHByaXZhdGUgbGFiZWxTZXJ2aWNlICAgICAgIDogTGFiZWxTZXJ2aWNlLFxuXHRcdFx0XHRwdWJsaWMgIGh0dHBTZXJ2aWNlICAgICAgICA6IEh0dHBTZXJ2aWNlKSB7XG5cblx0XHRzdXBlcihldmVudEJ1c1NlcnZpY2UpO1xuXHRcdHN1cGVyLnN1YnNjcmliZVRvQXBwKEFwcEV2ZW50LkxPR0lOX0ZBSUxFRCwgZXZlbnQgPT4gdGhpcy5vbkxvZ2luRmFpbGVkKGV2ZW50KSk7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8tLS1cblx0Ly8tLS0gQVBJIG1ldGhvZHNcblx0Ly8tLS1cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0cHVibGljIGxvZ2luKCkgOiB2b2lkIHtcblxuXHRcdGlmICggISB0aGlzLmFyZUNyZWRlbnRpYWxzVmFsaWQoKSkge1xuXHRcdFx0bGV0IG1zZyA9IHRoaXMubGFiZWxTZXJ2aWNlLmdldExhYmVsKFwibG9naW4tcGFuZWxcIiwgXCJtaXNzaW5nLmluZm9cIik7XG5cblx0XHRcdHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93V2Fybihtc2dbXCJ0aXRsZVwiXSwgbXNnW1wiZGVzY3JcIl0pO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHRoaXMuc2Vzc2lvblNlcnZpY2UubG9naW4odGhpcy5jcmVkKTtcblx0XHR9XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8tLS0gTG9jYWxpemVkIHN0cmluZ3Ncblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0Z2V0IHRpdGxlKCkgOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmxvYyhcInRpdGxlXCIpO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0Z2V0IHVzZXJuYW1lKCkgOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmxvYyhcInVzZXJuYW1lXCIpO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0Z2V0IHBhc3N3b3JkKCkgOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmxvYyhcInBhc3N3b3JkXCIpO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0Z2V0IGJ1dHRvbigpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5sb2MoXCJidXR0b25cIik7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8tLS1cblx0Ly8tLS0gRXZlbnRzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdHByaXZhdGUgb25Mb2dpbkZhaWxlZChldmVudCA6IEFwcEV2ZW50KSB7XG5cblx0XHRsZXQgbXNnID0gdGhpcy5sYWJlbFNlcnZpY2UuZ2V0TGFiZWwoXCJsb2dpbi1wYW5lbFwiLCBcImxvZ2luLmVycm9yXCIpO1xuXG5cdFx0dGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dFcnJvcihtc2dbXCJ0aXRsZVwiXSwgbXNnW1wiZGVzY3JcIl0pO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vLS0tXG5cdC8vLS0tIFByaXZhdGUgbWV0aG9kc1xuXHQvLy0tLVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRwcml2YXRlIGFyZUNyZWRlbnRpYWxzVmFsaWQoKSB7XG5cdFx0cmV0dXJuIExpYi5zdHIuaXNQcm92aWRlZCh0aGlzLmNyZWQudXNlcm5hbWUpICYmIExpYi5zdHIuaXNQcm92aWRlZCh0aGlzLmNyZWQucGFzc3dvcmQpO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0cHJpdmF0ZSBsb2MoY29kZSA6IHN0cmluZykgOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmxhYmVsU2VydmljZS5nZXRMYWJlbChcImxvZ2luLXBhbmVsXCIsIGNvZGUpO1xuXHR9XG59XG5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiJdfQ==