@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
240 lines • 26.2 kB
JavaScript
import { Component, HostBinding, Injector, Input } from '@angular/core';
import { SpacerBaseDirective } from '../common/spacer-base.component';
import { StatusIconType } from '../icon/layered-icon/status/status-icon.component';
import { HealthAlertSeverity } from './models/page-alert';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "../icon/layered-icon/status/status-icon.component";
import * as i3 from "../tooltip/tooltip.directive";
function PageAlertBarComponent_sme_status_icon_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "sme-status-icon", 3);
} if (rf & 2) {
const ctx_r0 = i0.ɵɵnextContext();
i0.ɵɵproperty("status", ctx_r0.statusIcon);
} }
function PageAlertBarComponent_a_4_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "a", 4);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext();
i0.ɵɵclassMap(ctx_r1.alert == null ? null : ctx_r1.alert.externalLink == null ? null : ctx_r1.alert.externalLink.iconClass);
i0.ɵɵclassProp("sme-icon", !!(ctx_r1.alert == null ? null : ctx_r1.alert.externalLink == null ? null : ctx_r1.alert.externalLink.iconClass));
i0.ɵɵpropertyInterpolate("href", ctx_r1.alert.externalLink.url, i0.ɵɵsanitizeUrl);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate(ctx_r1.alert.externalLink.title);
} }
function PageAlertBarComponent_a_5_Template(rf, ctx) { if (rf & 1) {
const _r4 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "a", 5);
i0.ɵɵlistener("click", function PageAlertBarComponent_a_5_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.alert.detailsCommand($event)); });
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r2 = i0.ɵɵnextContext();
i0.ɵɵproperty("title", !!ctx_r2.alert.detailsCaption ? ctx_r2.alert.detailsCaption : ctx_r2.defaultDetailsLabel);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate1(" ", !!ctx_r2.alert.detailsLabel ? ctx_r2.alert.detailsLabel : ctx_r2.defaultDetailsLabel, "\n");
} }
/**
*
* @smeDoc {@label Page Alert Bar @id sme-page-alert-bar-component}
*
* @overview
* @file {@filepath ./examples/page-alert-bar-overview.md}
*
* @example {@label Basic Usage @id basic-usage}
* @file {@filename component.html @filepath ./examples/basic-usage.component.html}
* @file {@filename component.ts @filepath ./examples/basic-usage.component.ts}
*
* @example {@label Custom Usage @id custom-usage}
* @file {@filename component.html @filepath ./examples/custom-usage.component.html}
* @file {@filename component.ts @filepath ./examples/custom-usage.component.ts}
*/
export class PageAlertBarComponent extends SpacerBaseDirective {
constructor(injector) {
super(injector);
this.defaultDetailsLabel = this.strings.MsftSmeShell.Angular.Common.details;
/**
* It indicates whether the alert bar is transparent or not.
*/
this.isBackgroundTransparent = false;
}
/**
* The source name to use for logging
*/
get logSourceName() {
return 'PageAlertBarComponent';
}
/**
* Critical alerts.
*/
get isCritical() {
return this.alert && this.alert.severity === HealthAlertSeverity.Critical;
}
/**
* Error alerts.
*/
get isError() {
return this.alert && this.alert.severity === HealthAlertSeverity.Error;
}
/**
* Warning alerts.
*/
get isWarning() {
return this.alert && this.alert.severity === HealthAlertSeverity.Warning;
}
/**
* Progress alerts.
*/
get isPending() {
return this.alert && this.alert.severity === HealthAlertSeverity.Progress;
}
/**
* Informational alerts.
*/
get isInformational() {
return this.alert && this.alert.severity === HealthAlertSeverity.Info;
}
/**
* Success alerts.
*/
get isSuccessful() {
return this.alert && this.alert.severity === HealthAlertSeverity.Success;
}
/**
* Upsell alerts.
*/
get isUpsell() {
return this.alert && this.alert.severity === HealthAlertSeverity.Upsell;
}
/**
* Neutral alerts.
*/
get isNeutral() {
return this.alert && this.alert.severity === HealthAlertSeverity.Neutral;
}
/**
* Transparent alerts.
*/
get isTransparent() {
return this.alert && this.isBackgroundTransparent;
}
/**
* When the background is transparent, we can optionally remove the left padding for allignment with other UI elements.
* When with the backgound color, we need to keep the left padding for visually bordering the alert.
*/
get isNoLeftPadding() {
return this.alert && this.isBackgroundTransparent && this.noLeftPadding;
}
get iconClass() {
if (!this.alert) {
return '';
}
if (this.alert.iconClass) {
return this.alert.iconClass;
}
}
/**
* Gets the status icon type based on the alert severity.
*/
get statusIcon() {
if (!this.alert) {
return null;
}
if (this.alert.iconClass) {
return null;
}
switch (this.alert.severity) {
case HealthAlertSeverity.Critical:
return StatusIconType.Critical;
case HealthAlertSeverity.Error:
return StatusIconType.Error;
case HealthAlertSeverity.Warning:
return StatusIconType.Warning;
case HealthAlertSeverity.Info:
return StatusIconType.Info;
case HealthAlertSeverity.Progress:
return StatusIconType.Progress;
case HealthAlertSeverity.Success:
return StatusIconType.Success;
case HealthAlertSeverity.Neutral:
return StatusIconType.Unknown;
default:
return null;
}
}
/**
* Gets the initial host classes to be applied to this element
*/
getInitialHostClasses() {
return super.getInitialHostClasses().concat([
'sme-alert',
'sme-page-alert',
'sme-alert-background'
]);
}
}
/** @nocollapse */ PageAlertBarComponent.ɵfac = function PageAlertBarComponent_Factory(t) { return new (t || PageAlertBarComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
/** @nocollapse */ PageAlertBarComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: PageAlertBarComponent, selectors: [["sme-page-alert-bar"]], hostVars: 20, hostBindings: function PageAlertBarComponent_HostBindings(rf, ctx) { if (rf & 2) {
i0.ɵɵclassProp("sme-alert-critical", ctx.isCritical)("sme-alert-error", ctx.isError)("sme-alert-warning", ctx.isWarning)("sme-alert-pending", ctx.isPending)("sme-alert-informational", ctx.isInformational)("sme-alert-success", ctx.isSuccessful)("sme-alert-upsell", ctx.isUpsell)("sme-alert-neutral", ctx.isNeutral)("sme-alert-transparent", ctx.isTransparent)("sme-override-padding-left-none", ctx.isNoLeftPadding);
} }, inputs: { isBackgroundTransparent: "isBackgroundTransparent", alert: "alert" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 6, vars: 9, consts: [["class", "sme-layout-inline-block", "size", "16px", 3, "status", 4, "ngIf"], ["class", "sme-link sme-focus-zone sme-icon-after", "target", "_blank", 3, "class", "sme-icon", "href", 4, "ngIf"], ["class", "sme-margin-left-xs sme-position-flex-none sme-link sme-focus-zone", "tabindex", "0", "role", "link", 3, "title", "click", 4, "ngIf"], ["size", "16px", 1, "sme-layout-inline-block", 3, "status"], ["target", "_blank", 1, "sme-link", "sme-focus-zone", "sme-icon-after", 3, "href"], ["tabindex", "0", "role", "link", 1, "sme-margin-left-xs", "sme-position-flex-none", "sme-link", "sme-focus-zone", 3, "title", "click"]], template: function PageAlertBarComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "span");
i0.ɵɵtemplate(1, PageAlertBarComponent_sme_status_icon_1_Template, 1, 1, "sme-status-icon", 0);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(2, "span");
i0.ɵɵtext(3);
i0.ɵɵtemplate(4, PageAlertBarComponent_a_4_Template, 2, 6, "a", 1);
i0.ɵɵelementEnd();
i0.ɵɵtemplate(5, PageAlertBarComponent_a_5_Template, 2, 2, "a", 2);
} if (rf & 2) {
i0.ɵɵclassMapInterpolate1("sme-margin-right-xs sme-position-flex-none ", ctx.iconClass, "");
i0.ɵɵclassProp("sme-icon", !!ctx.iconClass);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.statusIcon !== null);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate1(" ", ctx.alert.message, " ");
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.alert.externalLink);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", !!ctx.alert.detailsCommand);
} }, dependencies: [i1.NgIf, i2.StatusIconComponent, i3.TooltipDirective], encapsulation: 2 });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PageAlertBarComponent, [{
type: Component,
args: [{ selector: 'sme-page-alert-bar', template: "<span class=\"sme-margin-right-xs sme-position-flex-none {{iconClass}}\" [class.sme-icon]=\"!!iconClass\">\r\n <sme-status-icon *ngIf=\"statusIcon !== null\" class=\"sme-layout-inline-block\" [status]=\"statusIcon\" size=\"16px\">\r\n </sme-status-icon>\r\n</span>\r\n\r\n<span>\r\n {{ alert.message }}\r\n <a *ngIf=\"alert.externalLink\" class=\"sme-link sme-focus-zone sme-icon-after\" [class]=\"alert?.externalLink?.iconClass\"\r\n [class.sme-icon]=\"!!alert?.externalLink?.iconClass\" href=\"{{alert.externalLink.url}}\"\r\n target=\"_blank\">{{ alert.externalLink.title }}</a>\r\n</span>\r\n\r\n<a *ngIf=\"!!alert.detailsCommand\" class=\"sme-margin-left-xs sme-position-flex-none sme-link sme-focus-zone\" tabindex=\"0\" role=\"link\"\r\n [title]=\"!!alert.detailsCaption ? alert.detailsCaption : defaultDetailsLabel\" (click)=\"alert.detailsCommand($event)\">\r\n {{ !!alert.detailsLabel ? alert.detailsLabel : defaultDetailsLabel }}\r\n</a>\r\n" }]
}], function () { return [{ type: i0.Injector }]; }, { isBackgroundTransparent: [{
type: Input
}], isCritical: [{
type: HostBinding,
args: ['class.sme-alert-critical']
}], isError: [{
type: HostBinding,
args: ['class.sme-alert-error']
}], isWarning: [{
type: HostBinding,
args: ['class.sme-alert-warning']
}], isPending: [{
type: HostBinding,
args: ['class.sme-alert-pending']
}], isInformational: [{
type: HostBinding,
args: ['class.sme-alert-informational']
}], isSuccessful: [{
type: HostBinding,
args: ['class.sme-alert-success']
}], isUpsell: [{
type: HostBinding,
args: ['class.sme-alert-upsell']
}], isNeutral: [{
type: HostBinding,
args: ['class.sme-alert-neutral']
}], isTransparent: [{
type: HostBinding,
args: ['class.sme-alert-transparent']
}], isNoLeftPadding: [{
type: HostBinding,
args: ['class.sme-override-padding-left-none']
}], alert: [{
type: Input
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1hbGVydC1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcGFnZS1hbGVydC1iYXIvcGFnZS1hbGVydC1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcGFnZS1hbGVydC1iYXIvcGFnZS1hbGVydC1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFhLE1BQU0scUJBQXFCLENBQUM7Ozs7OztJQ0ZuRSxxQ0FDa0I7OztJQUQyRCwwQ0FBcUI7OztJQU1sRyw0QkFFa0I7SUFBQSxZQUE4QjtJQUFBLGlCQUFJOzs7SUFGeUIsMkhBQXdDO0lBQ25ILDRJQUFtRDtJQUFDLGlGQUFpQztJQUNyRSxlQUE4QjtJQUE5QixxREFBOEI7Ozs7SUFHbEQsNEJBQ3VIO0lBQXZDLGlLQUFTLGVBQUEsbUNBQTRCLENBQUEsSUFBQztJQUNwSCxZQUNGO0lBQUEsaUJBQUk7OztJQUZGLGdIQUE2RTtJQUM3RSxlQUNGO0lBREUsc0hBQ0Y7O0FEVkE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFNSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsbUJBQW1CO0lBOEkxRCxZQUFZLFFBQWtCO1FBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQXZJYix3QkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUU5RTs7V0FFRztRQUVJLDRCQUF1QixHQUFHLEtBQUssQ0FBQztJQWtJdkMsQ0FBQztJQS9JRDs7T0FFRztJQUNILElBQWMsYUFBYTtRQUN2QixPQUFPLHVCQUF1QixDQUFDO0lBQ25DLENBQUM7SUFVRDs7T0FFRztJQUNILElBQ1csVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssbUJBQW1CLENBQUMsUUFBUSxDQUFDO0lBQzlFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ1csT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7SUFDM0UsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7SUFDN0UsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7SUFDOUUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7SUFDMUUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7SUFDN0UsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztJQUM1RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztJQUM3RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsdUJBQXVCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1RSxDQUFDO0lBT0QsSUFBVyxTQUFTO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2IsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztTQUMvQjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsVUFBVTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNiLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3pCLEtBQUssbUJBQW1CLENBQUMsUUFBUTtnQkFDN0IsT0FBTyxjQUFjLENBQUMsUUFBUSxDQUFDO1lBQ25DLEtBQUssbUJBQW1CLENBQUMsS0FBSztnQkFDMUIsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDO1lBQ2hDLEtBQUssbUJBQW1CLENBQUMsT0FBTztnQkFDNUIsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDO1lBQ2xDLEtBQUssbUJBQW1CLENBQUMsSUFBSTtnQkFDekIsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQy9CLEtBQUssbUJBQW1CLENBQUMsUUFBUTtnQkFDN0IsT0FBTyxjQUFjLENBQUMsUUFBUSxDQUFDO1lBQ25DLEtBQUssbUJBQW1CLENBQUMsT0FBTztnQkFDNUIsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDO1lBQ2xDLEtBQUssbUJBQW1CLENBQUMsT0FBTztnQkFDNUIsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDO1lBQ2xDO2dCQUNJLE9BQU8sSUFBSSxDQUFDO1NBQ25CO0lBQ0wsQ0FBQztJQU1EOztPQUVHO0lBQ08scUJBQXFCO1FBQzNCLE9BQU8sS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ3hDLFdBQVc7WUFDWCxnQkFBZ0I7WUFDaEIsc0JBQXNCO1NBQ3pCLENBQUMsQ0FBQztJQUNQLENBQUM7OzZHQTNKUSxxQkFBcUI7dUdBQXJCLHFCQUFxQjs7O1FDekJsQyw0QkFBc0c7UUFDcEcsOEZBQ2tCO1FBQ3BCLGlCQUFPO1FBRVAsNEJBQU07UUFDSixZQUNBO1FBQUEsa0VBRW9EO1FBQ3RELGlCQUFPO1FBRVAsa0VBR0k7O1FBZkUsMkZBQWdFO1FBQUMsMkNBQThCO1FBQ2pGLGVBQXlCO1FBQXpCLDhDQUF5QjtRQUszQyxlQUNBO1FBREEsa0RBQ0E7UUFBSSxlQUF3QjtRQUF4Qiw2Q0FBd0I7UUFLMUIsZUFBNEI7UUFBNUIsaURBQTRCOzt1RkRhbkIscUJBQXFCO2NBSmpDLFNBQVM7MkJBQ0ksb0JBQW9COzJEQWlCdkIsdUJBQXVCO2tCQUQ3QixLQUFLO1lBT0ssVUFBVTtrQkFEcEIsV0FBVzttQkFBQywwQkFBMEI7WUFTNUIsT0FBTztrQkFEakIsV0FBVzttQkFBQyx1QkFBdUI7WUFTekIsU0FBUztrQkFEbkIsV0FBVzttQkFBQyx5QkFBeUI7WUFTM0IsU0FBUztrQkFEbkIsV0FBVzttQkFBQyx5QkFBeUI7WUFTM0IsZUFBZTtrQkFEekIsV0FBVzttQkFBQywrQkFBK0I7WUFTakMsWUFBWTtrQkFEdEIsV0FBVzttQkFBQyx5QkFBeUI7WUFTM0IsUUFBUTtrQkFEbEIsV0FBVzttQkFBQyx3QkFBd0I7WUFTMUIsU0FBUztrQkFEbkIsV0FBVzttQkFBQyx5QkFBeUI7WUFTM0IsYUFBYTtrQkFEdkIsV0FBVzttQkFBQyw2QkFBNkI7WUFVL0IsZUFBZTtrQkFEekIsV0FBVzttQkFBQyxzQ0FBc0M7WUFRbkMsS0FBSztrQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIEluamVjdG9yLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTcGFjZXJCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vY29tbW9uL3NwYWNlci1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN0YXR1c0ljb25UeXBlIH0gZnJvbSAnLi4vaWNvbi9sYXllcmVkLWljb24vc3RhdHVzL3N0YXR1cy1pY29uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEhlYWx0aEFsZXJ0U2V2ZXJpdHksIFBhZ2VBbGVydCB9IGZyb20gJy4vbW9kZWxzL3BhZ2UtYWxlcnQnO1xyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBzbWVEb2Mge0BsYWJlbCBQYWdlIEFsZXJ0IEJhciBAaWQgc21lLXBhZ2UtYWxlcnQtYmFyLWNvbXBvbmVudH1cclxuICpcclxuICogQG92ZXJ2aWV3XHJcbiAqIEBmaWxlIHtAZmlsZXBhdGggLi9leGFtcGxlcy9wYWdlLWFsZXJ0LWJhci1vdmVydmlldy5tZH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBCYXNpYyBVc2FnZSBAaWQgYmFzaWMtdXNhZ2V9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYmFzaWMtdXNhZ2UuY29tcG9uZW50Lmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2Jhc2ljLXVzYWdlLmNvbXBvbmVudC50c31cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBDdXN0b20gVXNhZ2UgQGlkIGN1c3RvbS11c2FnZX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9jdXN0b20tdXNhZ2UuY29tcG9uZW50Lmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2N1c3RvbS11c2FnZS5jb21wb25lbnQudHN9XHJcbiAqL1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1wYWdlLWFsZXJ0LWJhcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGFnZS1hbGVydC1iYXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYWdlQWxlcnRCYXJDb21wb25lbnQgZXh0ZW5kcyBTcGFjZXJCYXNlRGlyZWN0aXZlIHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNvdXJjZSBuYW1lIHRvIHVzZSBmb3IgbG9nZ2luZ1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGxvZ1NvdXJjZU5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuICdQYWdlQWxlcnRCYXJDb21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkZWZhdWx0RGV0YWlsc0xhYmVsID0gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5kZXRhaWxzO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGFsZXJ0IGJhciBpcyB0cmFuc3BhcmVudCBvciBub3QuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaXNCYWNrZ3JvdW5kVHJhbnNwYXJlbnQgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENyaXRpY2FsIGFsZXJ0cy5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWUtYWxlcnQtY3JpdGljYWwnKVxyXG4gICAgcHVibGljIGdldCBpc0NyaXRpY2FsKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFsZXJ0ICYmIHRoaXMuYWxlcnQuc2V2ZXJpdHkgPT09IEhlYWx0aEFsZXJ0U2V2ZXJpdHkuQ3JpdGljYWw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFcnJvciBhbGVydHMuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3Muc21lLWFsZXJ0LWVycm9yJylcclxuICAgIHB1YmxpYyBnZXQgaXNFcnJvcigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbGVydCAmJiB0aGlzLmFsZXJ0LnNldmVyaXR5ID09PSBIZWFsdGhBbGVydFNldmVyaXR5LkVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2FybmluZyBhbGVydHMuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3Muc21lLWFsZXJ0LXdhcm5pbmcnKVxyXG4gICAgcHVibGljIGdldCBpc1dhcm5pbmcoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxlcnQgJiYgdGhpcy5hbGVydC5zZXZlcml0eSA9PT0gSGVhbHRoQWxlcnRTZXZlcml0eS5XYXJuaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvZ3Jlc3MgYWxlcnRzLlxyXG4gICAgICovXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNtZS1hbGVydC1wZW5kaW5nJylcclxuICAgIHB1YmxpYyBnZXQgaXNQZW5kaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFsZXJ0ICYmIHRoaXMuYWxlcnQuc2V2ZXJpdHkgPT09IEhlYWx0aEFsZXJ0U2V2ZXJpdHkuUHJvZ3Jlc3M7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmZvcm1hdGlvbmFsIGFsZXJ0cy5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWUtYWxlcnQtaW5mb3JtYXRpb25hbCcpXHJcbiAgICBwdWJsaWMgZ2V0IGlzSW5mb3JtYXRpb25hbCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbGVydCAmJiB0aGlzLmFsZXJ0LnNldmVyaXR5ID09PSBIZWFsdGhBbGVydFNldmVyaXR5LkluZm87XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTdWNjZXNzIGFsZXJ0cy5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWUtYWxlcnQtc3VjY2VzcycpXHJcbiAgICBwdWJsaWMgZ2V0IGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbGVydCAmJiB0aGlzLmFsZXJ0LnNldmVyaXR5ID09PSBIZWFsdGhBbGVydFNldmVyaXR5LlN1Y2Nlc3M7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcHNlbGwgYWxlcnRzLlxyXG4gICAgICovXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNtZS1hbGVydC11cHNlbGwnKVxyXG4gICAgcHVibGljIGdldCBpc1Vwc2VsbCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbGVydCAmJiB0aGlzLmFsZXJ0LnNldmVyaXR5ID09PSBIZWFsdGhBbGVydFNldmVyaXR5LlVwc2VsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE5ldXRyYWwgYWxlcnRzLlxyXG4gICAgICovXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNtZS1hbGVydC1uZXV0cmFsJylcclxuICAgIHB1YmxpYyBnZXQgaXNOZXV0cmFsKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFsZXJ0ICYmIHRoaXMuYWxlcnQuc2V2ZXJpdHkgPT09IEhlYWx0aEFsZXJ0U2V2ZXJpdHkuTmV1dHJhbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRyYW5zcGFyZW50IGFsZXJ0cy5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWUtYWxlcnQtdHJhbnNwYXJlbnQnKVxyXG4gICAgcHVibGljIGdldCBpc1RyYW5zcGFyZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFsZXJ0ICYmIHRoaXMuaXNCYWNrZ3JvdW5kVHJhbnNwYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGVuIHRoZSBiYWNrZ3JvdW5kIGlzIHRyYW5zcGFyZW50LCB3ZSBjYW4gb3B0aW9uYWxseSByZW1vdmUgdGhlIGxlZnQgcGFkZGluZyBmb3IgYWxsaWdubWVudCB3aXRoIG90aGVyIFVJIGVsZW1lbnRzLlxyXG4gICAgICogV2hlbiB3aXRoIHRoZSBiYWNrZ291bmQgY29sb3IsIHdlIG5lZWQgdG8ga2VlcCB0aGUgbGVmdCBwYWRkaW5nIGZvciB2aXN1YWxseSBib3JkZXJpbmcgdGhlIGFsZXJ0LlxyXG4gICAgICovXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNtZS1vdmVycmlkZS1wYWRkaW5nLWxlZnQtbm9uZScpXHJcbiAgICBwdWJsaWMgZ2V0IGlzTm9MZWZ0UGFkZGluZygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbGVydCAmJiB0aGlzLmlzQmFja2dyb3VuZFRyYW5zcGFyZW50ICYmIHRoaXMubm9MZWZ0UGFkZGluZztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFuIGludGVyZmFjZSB0aGF0IGRpY3RhdGVzIGhvdyB0byBkaXNwbGF5IHRoZSBhbGVydC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIGFsZXJ0OiBQYWdlQWxlcnQ7XHJcblxyXG4gICAgcHVibGljIGdldCBpY29uQ2xhc3MoKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIXRoaXMuYWxlcnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5hbGVydC5pY29uQ2xhc3MpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxlcnQuaWNvbkNsYXNzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHN0YXR1cyBpY29uIHR5cGUgYmFzZWQgb24gdGhlIGFsZXJ0IHNldmVyaXR5LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHN0YXR1c0ljb24oKTogU3RhdHVzSWNvblR5cGUge1xyXG4gICAgICAgIGlmICghdGhpcy5hbGVydCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuYWxlcnQuaWNvbkNsYXNzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLmFsZXJ0LnNldmVyaXR5KSB7XHJcbiAgICAgICAgICAgIGNhc2UgSGVhbHRoQWxlcnRTZXZlcml0eS5Dcml0aWNhbDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXNJY29uVHlwZS5Dcml0aWNhbDtcclxuICAgICAgICAgICAgY2FzZSBIZWFsdGhBbGVydFNldmVyaXR5LkVycm9yOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1c0ljb25UeXBlLkVycm9yO1xyXG4gICAgICAgICAgICBjYXNlIEhlYWx0aEFsZXJ0U2V2ZXJpdHkuV2FybmluZzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXNJY29uVHlwZS5XYXJuaW5nO1xyXG4gICAgICAgICAgICBjYXNlIEhlYWx0aEFsZXJ0U2V2ZXJpdHkuSW5mbzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXNJY29uVHlwZS5JbmZvO1xyXG4gICAgICAgICAgICBjYXNlIEhlYWx0aEFsZXJ0U2V2ZXJpdHkuUHJvZ3Jlc3M6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzSWNvblR5cGUuUHJvZ3Jlc3M7XHJcbiAgICAgICAgICAgIGNhc2UgSGVhbHRoQWxlcnRTZXZlcml0eS5TdWNjZXNzOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1c0ljb25UeXBlLlN1Y2Nlc3M7XHJcbiAgICAgICAgICAgIGNhc2UgSGVhbHRoQWxlcnRTZXZlcml0eS5OZXV0cmFsOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1c0ljb25UeXBlLlVua25vd247XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgaW5pdGlhbCBob3N0IGNsYXNzZXMgdG8gYmUgYXBwbGllZCB0byB0aGlzIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldEluaXRpYWxIb3N0Q2xhc3NlcygpIHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkuY29uY2F0KFtcclxuICAgICAgICAgICAgJ3NtZS1hbGVydCcsXHJcbiAgICAgICAgICAgICdzbWUtcGFnZS1hbGVydCcsXHJcbiAgICAgICAgICAgICdzbWUtYWxlcnQtYmFja2dyb3VuZCdcclxuICAgICAgICBdKTtcclxuICAgIH1cclxufVxyXG4iLCI8c3BhbiBjbGFzcz1cInNtZS1tYXJnaW4tcmlnaHQteHMgc21lLXBvc2l0aW9uLWZsZXgtbm9uZSB7e2ljb25DbGFzc319XCIgW2NsYXNzLnNtZS1pY29uXT1cIiEhaWNvbkNsYXNzXCI+XHJcbiAgPHNtZS1zdGF0dXMtaWNvbiAqbmdJZj1cInN0YXR1c0ljb24gIT09IG51bGxcIiBjbGFzcz1cInNtZS1sYXlvdXQtaW5saW5lLWJsb2NrXCIgW3N0YXR1c109XCJzdGF0dXNJY29uXCIgc2l6ZT1cIjE2cHhcIj5cclxuICA8L3NtZS1zdGF0dXMtaWNvbj5cclxuPC9zcGFuPlxyXG5cclxuPHNwYW4+XHJcbiAge3sgYWxlcnQubWVzc2FnZSB9fVxyXG4gIDxhICpuZ0lmPVwiYWxlcnQuZXh0ZXJuYWxMaW5rXCIgY2xhc3M9XCJzbWUtbGluayBzbWUtZm9jdXMtem9uZSBzbWUtaWNvbi1hZnRlclwiIFtjbGFzc109XCJhbGVydD8uZXh0ZXJuYWxMaW5rPy5pY29uQ2xhc3NcIlxyXG4gICAgW2NsYXNzLnNtZS1pY29uXT1cIiEhYWxlcnQ/LmV4dGVybmFsTGluaz8uaWNvbkNsYXNzXCIgaHJlZj1cInt7YWxlcnQuZXh0ZXJuYWxMaW5rLnVybH19XCJcclxuICAgIHRhcmdldD1cIl9ibGFua1wiPnt7IGFsZXJ0LmV4dGVybmFsTGluay50aXRsZSB9fTwvYT5cclxuPC9zcGFuPlxyXG5cclxuPGEgKm5nSWY9XCIhIWFsZXJ0LmRldGFpbHNDb21tYW5kXCIgY2xhc3M9XCJzbWUtbWFyZ2luLWxlZnQteHMgc21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtbGluayBzbWUtZm9jdXMtem9uZVwiIHRhYmluZGV4PVwiMFwiIHJvbGU9XCJsaW5rXCJcclxuICBbdGl0bGVdPVwiISFhbGVydC5kZXRhaWxzQ2FwdGlvbiA/IGFsZXJ0LmRldGFpbHNDYXB0aW9uIDogZGVmYXVsdERldGFpbHNMYWJlbFwiIChjbGljayk9XCJhbGVydC5kZXRhaWxzQ29tbWFuZCgkZXZlbnQpXCI+XHJcbiAge3sgISFhbGVydC5kZXRhaWxzTGFiZWwgPyBhbGVydC5kZXRhaWxzTGFiZWwgOiBkZWZhdWx0RGV0YWlsc0xhYmVsIH19XHJcbjwvYT5cclxuIl19