@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
123 lines • 14 kB
JavaScript
import { Component, Input } from '@angular/core';
import { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';
import { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';
import { StatusIconType } from '../icon/layered-icon/status/status-icon.component';
import * as i0 from "@angular/core";
export class PropertyGridItemComponent {
constructor() {
/**
* The status for the property grid item.
*/
this.status = null;
/**
* It indicates the column span for the layout.
*/
this.columnSpan = 1;
/**
* It indicates the rendering of loading wheel when data unloaded.
*/
this.isAsync = false;
/**
* It indicates whether the property grid is loading.
* This parameter has to have isAsync set to true to use.
*/
this.loading = true;
}
/**
* The setter for value/context.
*/
set value(input) {
if (this.isAsync && this.loading) {
this.loading = false;
}
this.internalValue = input;
}
/**
* The getter for value/context.
*/
get value() {
return this.internalValue;
}
/**
* Gets the status class to apply to this components value section
*/
get statusClass() {
if (MsftSme.isNullOrUndefined(this.status)) {
return null;
}
const statusValue = StatusIconType.fromBindableType(this.status);
switch (statusValue) {
case StatusIconType.Critical:
return 'sme-color-critical';
case StatusIconType.Error:
return 'sme-color-error';
case StatusIconType.Warning:
return 'sme-color-warning';
case StatusIconType.Info:
return 'sme-color-info';
case StatusIconType.Progress:
return 'sme-color-progress';
case StatusIconType.Success:
return 'sme-color-success';
case StatusIconType.Unknown:
return 'sme-color-neutral';
default:
return null;
}
}
ngOnInit() {
// Edge case when the data has been assigned before the UI renders,
// the functionality to make sure the data is actually loaded.
// Basically in this case the set function will be skipped.
if (this.isAsync && this.loading && this.value !== undefined) {
this.loading = false;
}
if (!this.link && !this.isExternalLink && !this.action && this.prefixString) {
Logging.log({
level: LogLevel.Warning,
message: 'prefixString is set but will not be respected because property grid item is not a link or action',
source: 'PropertyGridItem.ngOnInit'
});
}
}
/**
* Give the ability to reset loading.
*/
resetLoading() {
if (!this.loading) {
this.loading = true;
}
}
}
/** @nocollapse */ PropertyGridItemComponent.ɵfac = function PropertyGridItemComponent_Factory(t) { return new (t || PropertyGridItemComponent)(); };
/** @nocollapse */ PropertyGridItemComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: PropertyGridItemComponent, selectors: [["sme-property-grid-item"]], inputs: { label: "label", prefixString: "prefixString", value: "value", action: "action", link: "link", tooltip: "tooltip", isExternalLink: "isExternalLink", iconClass: "iconClass", status: "status", columnSpan: "columnSpan", isAsync: "isAsync" }, decls: 0, vars: 0, template: function PropertyGridItemComponent_Template(rf, ctx) { }, encapsulation: 2 });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PropertyGridItemComponent, [{
type: Component,
args: [{
selector: 'sme-property-grid-item',
template: ''
}]
}], null, { label: [{
type: Input
}], prefixString: [{
type: Input
}], value: [{
type: Input
}], action: [{
type: Input
}], link: [{
type: Input
}], tooltip: [{
type: Input
}], isExternalLink: [{
type: Input
}], iconClass: [{
type: Input
}], status: [{
type: Input
}], columnSpan: [{
type: Input
}], isAsync: [{
type: Input
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZ3JpZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL3Byb3BlcnR5LWdyaWQvcHJvcGVydHktZ3JpZC1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQzs7QUFNbkYsTUFBTSxPQUFPLHlCQUF5QjtJQUp0QztRQXNFSTs7V0FFRztRQUVJLFdBQU0sR0FBNEIsSUFBSSxDQUFDO1FBRTlDOztXQUVHO1FBRUksZUFBVSxHQUFHLENBQUMsQ0FBQztRQUV0Qjs7V0FFRztRQUVJLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFdkI7OztXQUdHO1FBQ0ksWUFBTyxHQUFHLElBQUksQ0FBQztLQXlEekI7SUFoSUc7O09BRUc7SUFDSCxJQUNXLEtBQUssQ0FBQyxLQUFVO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUF3REQ7O09BRUc7SUFDSCxJQUFXLFdBQVc7UUFDbEIsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWpFLFFBQVEsV0FBVyxFQUFFO1lBQ2pCLEtBQUssY0FBYyxDQUFDLFFBQVE7Z0JBQ3hCLE9BQU8sb0JBQW9CLENBQUM7WUFDaEMsS0FBSyxjQUFjLENBQUMsS0FBSztnQkFDckIsT0FBTyxpQkFBaUIsQ0FBQztZQUM3QixLQUFLLGNBQWMsQ0FBQyxPQUFPO2dCQUN2QixPQUFPLG1CQUFtQixDQUFDO1lBQy9CLEtBQUssY0FBYyxDQUFDLElBQUk7Z0JBQ3BCLE9BQU8sZ0JBQWdCLENBQUM7WUFDNUIsS0FBSyxjQUFjLENBQUMsUUFBUTtnQkFDeEIsT0FBTyxvQkFBb0IsQ0FBQztZQUNoQyxLQUFLLGNBQWMsQ0FBQyxPQUFPO2dCQUN2QixPQUFPLG1CQUFtQixDQUFDO1lBQy9CLEtBQUssY0FBYyxDQUFDLE9BQU87Z0JBQ3ZCLE9BQU8sbUJBQW1CLENBQUM7WUFDL0I7Z0JBQ0ksT0FBTyxJQUFJLENBQUM7U0FDbkI7SUFDTCxDQUFDO0lBRU0sUUFBUTtRQUNYLG1FQUFtRTtRQUNuRSw4REFBOEQ7UUFDOUQsMkRBQTJEO1FBQzNELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3pFLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ1IsS0FBSyxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUN2QixPQUFPLEVBQUUsa0dBQWtHO2dCQUMzRyxNQUFNLEVBQUUsMkJBQTJCO2FBQ3RDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksWUFBWTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDdkI7SUFDTCxDQUFDOztxSEFoSlEseUJBQXlCOzJHQUF6Qix5QkFBeUI7dUZBQXpCLHlCQUF5QjtjQUpyQyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsUUFBUSxFQUFFLEVBQUU7YUFDZjtnQkFVVSxLQUFLO2tCQURYLEtBQUs7WUFPQyxZQUFZO2tCQURsQixLQUFLO1lBT0ssS0FBSztrQkFEZixLQUFLO1lBb0JDLE1BQU07a0JBRFosS0FBSztZQU9DLElBQUk7a0JBRFYsS0FBSztZQU9DLE9BQU87a0JBRGIsS0FBSztZQU9DLGNBQWM7a0JBRHBCLEtBQUs7WUFPQyxTQUFTO2tCQURmLEtBQUs7WUFPQyxNQUFNO2tCQURaLEtBQUs7WUFPQyxVQUFVO2tCQURoQixLQUFLO1lBT0MsT0FBTztrQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvZ0xldmVsIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kaWFnbm9zdGljcy9sb2ctbGV2ZWwnO1xyXG5pbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kaWFnbm9zdGljcy9sb2dnaW5nJztcclxuaW1wb3J0IHsgU3RhdHVzSWNvblR5cGUgfSBmcm9tICcuLi9pY29uL2xheWVyZWQtaWNvbi9zdGF0dXMvc3RhdHVzLWljb24uY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtcHJvcGVydHktZ3JpZC1pdGVtJyxcclxuICAgIHRlbXBsYXRlOiAnJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBpbnRlcm5hbCB2YWx1ZS9jb250ZXh0IGZvciB0aGUgcHJvcGVydHkgZ3JpZCBpdGVtLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGludGVybmFsVmFsdWU6IGFueTtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGxhYmVsIGZvciB0aGUgcHJvcGVydHkgZ3JpZCBpdGVtLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxhYmVsOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgcGxhaW4gc3RyaW5nIGNvbnRlbnQgZm9yIHZhbHVlIHdoZW4gdmFsdWUgaXMgbGluayBvciBhY3Rpb24uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcHJlZml4U3RyaW5nOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc2V0dGVyIGZvciB2YWx1ZS9jb250ZXh0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCB2YWx1ZShpbnB1dDogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNBc3luYyAmJiB0aGlzLmxvYWRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmludGVybmFsVmFsdWUgPSBpbnB1dDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBnZXR0ZXIgZm9yIHZhbHVlL2NvbnRleHQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHRoZSBhY3Rpb24gZm9yIHRoZSBwcm9wZXJ0eSBncmlkIGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWN0aW9uOiBNc2Z0U21lLkFjdGlvbjE8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbGluayBmb3IgdGhlIHByb3BlcnR5IGdyaWQgaXRlbS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsaW5rOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdG9vbHRpcCBmb3IgdGhlIHByb3BlcnR5IGdyaWQgaXRlbS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB0b29sdGlwOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcHJvcGVydHkgZ3JpZCBpdGVtIGlzIGV4dGVybmFsIGxpbmsuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaXNFeHRlcm5hbExpbms6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgaWNvbiBjbGFzcyBmb3IgdGhlIHByb3BlcnR5IGdyaWQgaXRlbS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpY29uQ2xhc3M6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzdGF0dXMgZm9yIHRoZSBwcm9wZXJ0eSBncmlkIGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc3RhdHVzOiBTdGF0dXNJY29uVHlwZS5CaW5kYWJsZSA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCBpbmRpY2F0ZXMgdGhlIGNvbHVtbiBzcGFuIGZvciB0aGUgbGF5b3V0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNvbHVtblNwYW4gPSAxO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHRoZSByZW5kZXJpbmcgb2YgbG9hZGluZyB3aGVlbCB3aGVuIGRhdGEgdW5sb2FkZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaXNBc3luYyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByb3BlcnR5IGdyaWQgaXMgbG9hZGluZy5cclxuICAgICAqIFRoaXMgcGFyYW1ldGVyIGhhcyB0byBoYXZlIGlzQXN5bmMgc2V0IHRvIHRydWUgdG8gdXNlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBzdGF0dXMgY2xhc3MgdG8gYXBwbHkgdG8gdGhpcyBjb21wb25lbnRzIHZhbHVlIHNlY3Rpb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBzdGF0dXNDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmIChNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuc3RhdHVzKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHN0YXR1c1ZhbHVlID0gU3RhdHVzSWNvblR5cGUuZnJvbUJpbmRhYmxlVHlwZSh0aGlzLnN0YXR1cyk7XHJcblxyXG4gICAgICAgIHN3aXRjaCAoc3RhdHVzVmFsdWUpIHtcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5Dcml0aWNhbDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnc21lLWNvbG9yLWNyaXRpY2FsJztcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5FcnJvcjpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnc21lLWNvbG9yLWVycm9yJztcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5XYXJuaW5nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdzbWUtY29sb3Itd2FybmluZyc7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuSW5mbzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnc21lLWNvbG9yLWluZm8nO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLlByb2dyZXNzOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdzbWUtY29sb3ItcHJvZ3Jlc3MnO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLlN1Y2Nlc3M6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NtZS1jb2xvci1zdWNjZXNzJztcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5Vbmtub3duOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdzbWUtY29sb3ItbmV1dHJhbCc7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIEVkZ2UgY2FzZSB3aGVuIHRoZSBkYXRhIGhhcyBiZWVuIGFzc2lnbmVkIGJlZm9yZSB0aGUgVUkgcmVuZGVycyxcclxuICAgICAgICAvLyB0aGUgZnVuY3Rpb25hbGl0eSB0byBtYWtlIHN1cmUgdGhlIGRhdGEgaXMgYWN0dWFsbHkgbG9hZGVkLlxyXG4gICAgICAgIC8vIEJhc2ljYWxseSBpbiB0aGlzIGNhc2UgdGhlIHNldCBmdW5jdGlvbiB3aWxsIGJlIHNraXBwZWQuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNBc3luYyAmJiB0aGlzLmxvYWRpbmcgJiYgdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmxpbmsgJiYgIXRoaXMuaXNFeHRlcm5hbExpbmsgJiYgIXRoaXMuYWN0aW9uICYmIHRoaXMucHJlZml4U3RyaW5nKSB7XHJcbiAgICAgICAgICAgIExvZ2dpbmcubG9nKHtcclxuICAgICAgICAgICAgICAgIGxldmVsOiBMb2dMZXZlbC5XYXJuaW5nLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ3ByZWZpeFN0cmluZyBpcyBzZXQgYnV0IHdpbGwgbm90IGJlIHJlc3BlY3RlZCBiZWNhdXNlIHByb3BlcnR5IGdyaWQgaXRlbSBpcyBub3QgYSBsaW5rIG9yIGFjdGlvbicsXHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6ICdQcm9wZXJ0eUdyaWRJdGVtLm5nT25Jbml0J1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHaXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IGxvYWRpbmcuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZXNldExvYWRpbmcoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19