@edugouvfr/ngx-dsfr
Version:
NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).
43 lines • 15.8 kB
JavaScript
import { CommonModule } from '@angular/common';
import { Component, ContentChildren, Input, ViewEncapsulation } from '@angular/core';
import { EduMessageSeverityDirective } from '../../shared/directives/message-severity.directive';
import { BaseFieldsetComponent } from './base-fieldset.component';
import { DsfrFormFieldsetElementDirective } from './form-fieldset-element.directive';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
export class DsfrFormFieldsetComponent extends BaseFieldsetComponent {
constructor() {
super(...arguments);
/**
* Ensemble des champs de formulaire sur une même ligne.
*/
this.inline = false;
}
/** @internal */
getFieldsetElementClass(elem) {
const classes = ['fr-fieldset__element'];
if (this.inline) {
classes.push('fr-fieldset__element--inline');
}
if (elem.fieldsetElement) {
const elemClasses = elem.fieldsetElement.split(/\s+/g);
elemClasses.forEach((c) => classes.push(c));
}
return classes;
}
isMessageArray() {
return Array.isArray(this.message);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DsfrFormFieldsetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DsfrFormFieldsetComponent, isStandalone: true, selector: "dsfr-fieldset, dsfr-form-fieldset", inputs: { inline: "inline" }, queries: [{ propertyName: "elements", predicate: DsfrFormFieldsetElementDirective }], usesInheritance: true, ngImport: i0, template: "<fieldset\n [attr.id]=\"nativeElementId\"\n class=\"fr-fieldset\"\n [ngClass]=\"{\n 'fr-fieldset--error': message && messageSeverity === DsfrSeverity.ERROR,\n 'fr-fieldset--valid':\n (message && messageSeverity === DsfrSeverity.SUCCESS) || (message && messageSeverity === DsfrSeverity.VALID),\n 'fr-fieldset--info': message && messageSeverity === DsfrSeverity.INFO,\n 'edu-fieldset--warning': message && messageSeverity === DsfrSeverity.WARNING,\n }\"\n [attr.role]=\"\n message &&\n (messageSeverity === DsfrSeverity.ERROR ||\n messageSeverity === DsfrSeverity.SUCCESS ||\n messageSeverity === DsfrSeverity.VALID)\n ? 'group'\n : null\n \"\n [attr.aria-labelledby]=\"\n legendId +\n (message &&\n (messageSeverity === DsfrSeverity.ERROR ||\n messageSeverity === DsfrSeverity.SUCCESS ||\n messageSeverity === DsfrSeverity.VALID)\n ? ' ' + messagesId\n : '')\n \"\n [disabled]=\"disabled || null\">\n <legend\n id=\"{{ legendId }}\"\n [ngClass]=\"{\n 'fr-fieldset__legend': true,\n 'fr-fieldset__legend--regular': isLegendRegular(),\n 'fr-sr-only': legendSrOnly,\n }\">\n @if (legend) {\n {{ legend }}\n } @else {\n <ng-content select=\"[legend]\"></ng-content>\n }\n\n @if (hint) {\n <span class=\"fr-hint-text\">{{ hint }}</span>\n }\n </legend>\n\n @for (elem of elements; track elem) {\n <div [class]=\"getFieldsetElementClass(elem)\">\n <ng-container *ngTemplateOutlet=\"elem.templateRef\"></ng-container>\n </div>\n }\n\n <div class=\"fr-messages-group\" id=\"{{ messagesId }}\" aria-live=\"polite\">\n @if (isMessageArray()) {\n @for (individualMessage of message; track individualMessage) {\n <ng-container\n [ngTemplateOutlet]=\"messageTemplate\"\n [ngTemplateOutletContext]=\"{ message: individualMessage }\"></ng-container>\n }\n } @else if (!!message) {\n <ng-container\n [ngTemplateOutlet]=\"messageTemplate\"\n [ngTemplateOutletContext]=\"{ message: message }\"></ng-container>\n }\n </div>\n</fieldset>\n\n<ng-template #messageTemplate let-fieldmessage=\"message\">\n <p class=\"fr-message\" [eduMessageSeverity]=\"messageSeverity\">\n {{ fieldmessage }}\n </p>\n</ng-template>\n", styles: [".fr-fieldset.edu-fieldset--warning{color:var(--text-default-warning);background-position:0 -2.25rem;background-repeat:no-repeat;background-size:2px calc(100% + 1.25rem);background-image:linear-gradient(0deg,var(--border-plain-warning),var(--border-plain-warning))}.fr-fieldset.edu-fieldset--warning .fr-fieldset__legend{color:var(--text-default-warning);background-position:0 0;background-repeat:no-repeat;background-size:2px 100%;background-image:linear-gradient(0deg,var(--border-plain-warning),var(--border-plain-warning))}.fr-fieldset.edu-fieldset--warning .fr-label{color:var(--text-default-warning)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: EduMessageSeverityDirective, selector: "[eduMessageSeverity]", inputs: ["eduMessageSeverity"] }], encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DsfrFormFieldsetComponent, decorators: [{
type: Component,
args: [{ selector: 'dsfr-fieldset, dsfr-form-fieldset', encapsulation: ViewEncapsulation.None, standalone: true, imports: [CommonModule, EduMessageSeverityDirective], template: "<fieldset\n [attr.id]=\"nativeElementId\"\n class=\"fr-fieldset\"\n [ngClass]=\"{\n 'fr-fieldset--error': message && messageSeverity === DsfrSeverity.ERROR,\n 'fr-fieldset--valid':\n (message && messageSeverity === DsfrSeverity.SUCCESS) || (message && messageSeverity === DsfrSeverity.VALID),\n 'fr-fieldset--info': message && messageSeverity === DsfrSeverity.INFO,\n 'edu-fieldset--warning': message && messageSeverity === DsfrSeverity.WARNING,\n }\"\n [attr.role]=\"\n message &&\n (messageSeverity === DsfrSeverity.ERROR ||\n messageSeverity === DsfrSeverity.SUCCESS ||\n messageSeverity === DsfrSeverity.VALID)\n ? 'group'\n : null\n \"\n [attr.aria-labelledby]=\"\n legendId +\n (message &&\n (messageSeverity === DsfrSeverity.ERROR ||\n messageSeverity === DsfrSeverity.SUCCESS ||\n messageSeverity === DsfrSeverity.VALID)\n ? ' ' + messagesId\n : '')\n \"\n [disabled]=\"disabled || null\">\n <legend\n id=\"{{ legendId }}\"\n [ngClass]=\"{\n 'fr-fieldset__legend': true,\n 'fr-fieldset__legend--regular': isLegendRegular(),\n 'fr-sr-only': legendSrOnly,\n }\">\n @if (legend) {\n {{ legend }}\n } @else {\n <ng-content select=\"[legend]\"></ng-content>\n }\n\n @if (hint) {\n <span class=\"fr-hint-text\">{{ hint }}</span>\n }\n </legend>\n\n @for (elem of elements; track elem) {\n <div [class]=\"getFieldsetElementClass(elem)\">\n <ng-container *ngTemplateOutlet=\"elem.templateRef\"></ng-container>\n </div>\n }\n\n <div class=\"fr-messages-group\" id=\"{{ messagesId }}\" aria-live=\"polite\">\n @if (isMessageArray()) {\n @for (individualMessage of message; track individualMessage) {\n <ng-container\n [ngTemplateOutlet]=\"messageTemplate\"\n [ngTemplateOutletContext]=\"{ message: individualMessage }\"></ng-container>\n }\n } @else if (!!message) {\n <ng-container\n [ngTemplateOutlet]=\"messageTemplate\"\n [ngTemplateOutletContext]=\"{ message: message }\"></ng-container>\n }\n </div>\n</fieldset>\n\n<ng-template #messageTemplate let-fieldmessage=\"message\">\n <p class=\"fr-message\" [eduMessageSeverity]=\"messageSeverity\">\n {{ fieldmessage }}\n </p>\n</ng-template>\n", styles: [".fr-fieldset.edu-fieldset--warning{color:var(--text-default-warning);background-position:0 -2.25rem;background-repeat:no-repeat;background-size:2px calc(100% + 1.25rem);background-image:linear-gradient(0deg,var(--border-plain-warning),var(--border-plain-warning))}.fr-fieldset.edu-fieldset--warning .fr-fieldset__legend{color:var(--text-default-warning);background-position:0 0;background-repeat:no-repeat;background-size:2px 100%;background-image:linear-gradient(0deg,var(--border-plain-warning),var(--border-plain-warning))}.fr-fieldset.edu-fieldset--warning .fr-label{color:var(--text-default-warning)}\n"] }]
}], propDecorators: { inline: [{
type: Input
}], elements: [{
type: ContentChildren,
args: [DsfrFormFieldsetElementDirective]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZHNldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHNmci1jb21wb25lbnRzL3NyYy9saWIvZm9ybXMvZmllbGRzZXQvZm9ybS1maWVsZHNldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHNmci1jb21wb25lbnRzL3NyYy9saWIvZm9ybXMvZmllbGRzZXQvZm9ybS1maWVsZHNldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFhLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7QUFVckYsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHFCQUFxQjtJQVJwRTs7UUFTRTs7V0FFRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQUM7S0EyQnpCO0lBbkJDLGdCQUFnQjtJQUNoQix1QkFBdUIsQ0FBQyxJQUFzQztRQUM1RCxNQUFNLE9BQU8sR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFekMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixNQUFNLFdBQVcsR0FBYSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDOytHQTlCVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixvSkFVbkIsZ0NBQWdDLG9EQ3hCbkQsMndFQXdFQSx3cEJENURZLFlBQVksb1NBQUUsMkJBQTJCOzs0RkFFeEMseUJBQXlCO2tCQVJyQyxTQUFTOytCQUNFLG1DQUFtQyxpQkFHOUIsaUJBQWlCLENBQUMsSUFBSSxjQUN6QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsMkJBQTJCLENBQUM7OEJBTTNDLE1BQU07c0JBQWQsS0FBSztnQkFNNkMsUUFBUTtzQkFBMUQsZUFBZTt1QkFBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIElucHV0LCBRdWVyeUxpc3QsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFZHVNZXNzYWdlU2V2ZXJpdHlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGlyZWN0aXZlcy9tZXNzYWdlLXNldmVyaXR5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCYXNlRmllbGRzZXRDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtZmllbGRzZXQuY29tcG9uZW50JztcbmltcG9ydCB7IERzZnJGb3JtRmllbGRzZXRFbGVtZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtLWZpZWxkc2V0LWVsZW1lbnQuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZHNmci1maWVsZHNldCwgZHNmci1mb3JtLWZpZWxkc2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGRzZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZm9ybS1maWVsZHNldC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEVkdU1lc3NhZ2VTZXZlcml0eURpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIERzZnJGb3JtRmllbGRzZXRDb21wb25lbnQgZXh0ZW5kcyBCYXNlRmllbGRzZXRDb21wb25lbnQge1xuICAvKipcbiAgICogRW5zZW1ibGUgZGVzIGNoYW1wcyBkZSBmb3JtdWxhaXJlIHN1ciB1bmUgbcOqbWUgbGlnbmUuXG4gICAqL1xuICBASW5wdXQoKSBpbmxpbmUgPSBmYWxzZTtcblxuICAvKipcbiAgICogTGVzIGNoYW1wcyBjb21wb3NhbnQgbGUgZm9ybXVsYWlyZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKERzZnJGb3JtRmllbGRzZXRFbGVtZW50RGlyZWN0aXZlKSBlbGVtZW50cyE6IFF1ZXJ5TGlzdDxEc2ZyRm9ybUZpZWxkc2V0RWxlbWVudERpcmVjdGl2ZT47XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBnZXRGaWVsZHNldEVsZW1lbnRDbGFzcyhlbGVtOiBEc2ZyRm9ybUZpZWxkc2V0RWxlbWVudERpcmVjdGl2ZSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBjbGFzc2VzID0gWydmci1maWVsZHNldF9fZWxlbWVudCddO1xuXG4gICAgaWYgKHRoaXMuaW5saW5lKSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ2ZyLWZpZWxkc2V0X19lbGVtZW50LS1pbmxpbmUnKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbS5maWVsZHNldEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGVsZW1DbGFzc2VzOiBzdHJpbmdbXSA9IGVsZW0uZmllbGRzZXRFbGVtZW50LnNwbGl0KC9cXHMrL2cpO1xuICAgICAgZWxlbUNsYXNzZXMuZm9yRWFjaCgoYykgPT4gY2xhc3Nlcy5wdXNoKGMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIGlzTWVzc2FnZUFycmF5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMubWVzc2FnZSk7XG4gIH1cbn1cbiIsIjxmaWVsZHNldFxuICBbYXR0ci5pZF09XCJuYXRpdmVFbGVtZW50SWRcIlxuICBjbGFzcz1cImZyLWZpZWxkc2V0XCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdmci1maWVsZHNldC0tZXJyb3InOiBtZXNzYWdlICYmIG1lc3NhZ2VTZXZlcml0eSA9PT0gRHNmclNldmVyaXR5LkVSUk9SLFxuICAgICdmci1maWVsZHNldC0tdmFsaWQnOlxuICAgICAgKG1lc3NhZ2UgJiYgbWVzc2FnZVNldmVyaXR5ID09PSBEc2ZyU2V2ZXJpdHkuU1VDQ0VTUykgfHwgKG1lc3NhZ2UgJiYgbWVzc2FnZVNldmVyaXR5ID09PSBEc2ZyU2V2ZXJpdHkuVkFMSUQpLFxuICAgICdmci1maWVsZHNldC0taW5mbyc6IG1lc3NhZ2UgJiYgbWVzc2FnZVNldmVyaXR5ID09PSBEc2ZyU2V2ZXJpdHkuSU5GTyxcbiAgICAnZWR1LWZpZWxkc2V0LS13YXJuaW5nJzogbWVzc2FnZSAmJiBtZXNzYWdlU2V2ZXJpdHkgPT09IERzZnJTZXZlcml0eS5XQVJOSU5HLFxuICB9XCJcbiAgW2F0dHIucm9sZV09XCJcbiAgICBtZXNzYWdlICYmXG4gICAgKG1lc3NhZ2VTZXZlcml0eSA9PT0gRHNmclNldmVyaXR5LkVSUk9SIHx8XG4gICAgICBtZXNzYWdlU2V2ZXJpdHkgPT09IERzZnJTZXZlcml0eS5TVUNDRVNTIHx8XG4gICAgICBtZXNzYWdlU2V2ZXJpdHkgPT09IERzZnJTZXZlcml0eS5WQUxJRClcbiAgICAgID8gJ2dyb3VwJ1xuICAgICAgOiBudWxsXG4gIFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJcbiAgICBsZWdlbmRJZCArXG4gICAgKG1lc3NhZ2UgJiZcbiAgICAobWVzc2FnZVNldmVyaXR5ID09PSBEc2ZyU2V2ZXJpdHkuRVJST1IgfHxcbiAgICAgIG1lc3NhZ2VTZXZlcml0eSA9PT0gRHNmclNldmVyaXR5LlNVQ0NFU1MgfHxcbiAgICAgIG1lc3NhZ2VTZXZlcml0eSA9PT0gRHNmclNldmVyaXR5LlZBTElEKVxuICAgICAgPyAnICcgKyBtZXNzYWdlc0lkXG4gICAgICA6ICcnKVxuICBcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbnVsbFwiPlxuICA8bGVnZW5kXG4gICAgaWQ9XCJ7eyBsZWdlbmRJZCB9fVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2ZyLWZpZWxkc2V0X19sZWdlbmQnOiB0cnVlLFxuICAgICAgJ2ZyLWZpZWxkc2V0X19sZWdlbmQtLXJlZ3VsYXInOiBpc0xlZ2VuZFJlZ3VsYXIoKSxcbiAgICAgICdmci1zci1vbmx5JzogbGVnZW5kU3JPbmx5LFxuICAgIH1cIj5cbiAgICBAaWYgKGxlZ2VuZCkge1xuICAgICAge3sgbGVnZW5kIH19XG4gICAgfSBAZWxzZSB7XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbGVnZW5kXVwiPjwvbmctY29udGVudD5cbiAgICB9XG5cbiAgICBAaWYgKGhpbnQpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwiZnItaGludC10ZXh0XCI+e3sgaGludCB9fTwvc3Bhbj5cbiAgICB9XG4gIDwvbGVnZW5kPlxuXG4gIEBmb3IgKGVsZW0gb2YgZWxlbWVudHM7IHRyYWNrIGVsZW0pIHtcbiAgICA8ZGl2IFtjbGFzc109XCJnZXRGaWVsZHNldEVsZW1lbnRDbGFzcyhlbGVtKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVsZW0udGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJmci1tZXNzYWdlcy1ncm91cFwiIGlkPVwie3sgbWVzc2FnZXNJZCB9fVwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgIEBpZiAoaXNNZXNzYWdlQXJyYXkoKSkge1xuICAgICAgQGZvciAoaW5kaXZpZHVhbE1lc3NhZ2Ugb2YgbWVzc2FnZTsgdHJhY2sgaW5kaXZpZHVhbE1lc3NhZ2UpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1lc3NhZ2VUZW1wbGF0ZVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbWVzc2FnZTogaW5kaXZpZHVhbE1lc3NhZ2UgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgKCEhbWVzc2FnZSkge1xuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZXNzYWdlVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBtZXNzYWdlOiBtZXNzYWdlIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gIDwvZGl2PlxuPC9maWVsZHNldD5cblxuPG5nLXRlbXBsYXRlICNtZXNzYWdlVGVtcGxhdGUgbGV0LWZpZWxkbWVzc2FnZT1cIm1lc3NhZ2VcIj5cbiAgPHAgY2xhc3M9XCJmci1tZXNzYWdlXCIgW2VkdU1lc3NhZ2VTZXZlcml0eV09XCJtZXNzYWdlU2V2ZXJpdHlcIj5cbiAgICB7eyBmaWVsZG1lc3NhZ2UgfX1cbiAgPC9wPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==