UNPKG

@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).

96 lines 14.4 kB
import { Component, Input, ViewEncapsulation } from '@angular/core'; import { DsfrButtonVariantConst, DsfrPositionConst, DsfrSizeConst, } from '../../shared'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; export class DsfrButtonComponent { constructor() { /** Style du bouton, `primary` par défaut. */ this.variant = DsfrButtonVariantConst.PRIMARY; /** Taille du bouton, `MD` par défaut */ this.size = DsfrSizeConst.MD; /** Permet de désactiver le bouton d'action, `false` par défaut. */ this.disabled = false; /** * @deprecated (since 1.1.0) * Permet de passer le libellé du bouton en majuscules, 'false' par défaut. */ /** @internal */ this.uppercase = false; /** * @deprecated (since 1.1.0) * Permet d'activer un visuel dénotant un "chargement" (busy), 'false' par défaut. * */ /** @internal */ this.loader = false; /** Permet d'inverser le contraste du marqueur de focus, `false` par défaut. */ this.invertedOutlineContrast = false; } /** @internal */ getClasses() { const classes = ['fr-btn']; if (this.customClass) classes.push(this.customClass); if (this.variant === DsfrButtonVariantConst.SECONDARY) classes.push('fr-btn--secondary'); else if (this.variant === DsfrButtonVariantConst.TERTIARY) classes.push('fr-btn--tertiary'); else if (this.variant === DsfrButtonVariantConst.TERTIARY_NO_OUTLINE) classes.push('fr-btn--tertiary-no-outline'); if (this.icon) { classes.push(this.icon); if (this.label) { if (this.iconPosition === DsfrPositionConst.RIGHT) classes.push('fr-btn--icon-right'); else classes.push('fr-btn--icon-left'); } } if (this.size === DsfrSizeConst.SM) classes.push('fr-btn--sm'); else if (this.size === DsfrSizeConst.LG) classes.push('fr-btn--lg'); // 'déprécié' if (this.uppercase) classes.push('uppercase'); if (this.invertedOutlineContrast) classes.push('inverted-outline-contrast'); return classes; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DsfrButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DsfrButtonComponent, selector: "dsfr-button", inputs: { label: "label", type: "type", tooltipMessage: "tooltipMessage", variant: "variant", size: "size", icon: "icon", iconPosition: "iconPosition", disabled: "disabled", uppercase: "uppercase", loader: "loader", ariaLabel: "ariaLabel", invertedOutlineContrast: "invertedOutlineContrast", id: "id", ariaControls: "ariaControls", customClass: "customClass" }, ngImport: i0, template: "<button\n [ngClass]=\"getClasses()\"\n [attr.type]=\"type || null\"\n [attr.title]=\"tooltipMessage || null\"\n [disabled]=\"disabled || null\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-controls]=\"ariaControls || null\"\n [attr.data-fr-opened]=\"ariaControls ? false : null\">\n <ng-container *ngIf=\"label\">{{ label }}</ng-container>\n <span *ngIf=\"!label && tooltipMessage\" class=\"sr-only\">{{ tooltipMessage }}</span>\n</button>\n", styles: [".sr-only{position:absolute!important;border:0!important;height:1px!important;width:1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important}.fr-btn--icon{padding:.5rem;min-width:2.5rem;display:flex;justify-content:center}.fr-btn--icon:before{margin:0}.uppercase{text-transform:uppercase}button.inverted-outline-contrast:focus-visible{outline-color:var(--grey-950-100)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DsfrButtonComponent, decorators: [{ type: Component, args: [{ selector: 'dsfr-button', encapsulation: ViewEncapsulation.None, template: "<button\n [ngClass]=\"getClasses()\"\n [attr.type]=\"type || null\"\n [attr.title]=\"tooltipMessage || null\"\n [disabled]=\"disabled || null\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-controls]=\"ariaControls || null\"\n [attr.data-fr-opened]=\"ariaControls ? false : null\">\n <ng-container *ngIf=\"label\">{{ label }}</ng-container>\n <span *ngIf=\"!label && tooltipMessage\" class=\"sr-only\">{{ tooltipMessage }}</span>\n</button>\n", styles: [".sr-only{position:absolute!important;border:0!important;height:1px!important;width:1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important}.fr-btn--icon{padding:.5rem;min-width:2.5rem;display:flex;justify-content:center}.fr-btn--icon:before{margin:0}.uppercase{text-transform:uppercase}button.inverted-outline-contrast:focus-visible{outline-color:var(--grey-950-100)}\n"] }] }], propDecorators: { label: [{ type: Input }], type: [{ type: Input }], tooltipMessage: [{ type: Input }], variant: [{ type: Input }], size: [{ type: Input }], icon: [{ type: Input }], iconPosition: [{ type: Input }], disabled: [{ type: Input }], uppercase: [{ type: Input }], loader: [{ type: Input }], ariaLabel: [{ type: Input }], invertedOutlineContrast: [{ type: Input }], id: [{ type: Input }], ariaControls: [{ type: Input }], customClass: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1kc2ZyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBSUwsc0JBQXNCLEVBRXRCLGlCQUFpQixFQUVqQixhQUFhLEdBQ2QsTUFBTSxjQUFjLENBQUM7OztBQVF0QixNQUFNLE9BQU8sbUJBQW1CO0lBTmhDO1FBa0JFLDZDQUE2QztRQUNwQyxZQUFPLEdBQXNCLHNCQUFzQixDQUFDLE9BQU8sQ0FBQztRQUVyRSx5Q0FBeUM7UUFDaEMsU0FBSSxHQUFhLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFRM0MsbUVBQW1FO1FBQzFELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7OztXQUdHO1FBQ0gsZ0JBQWdCO1FBQ1AsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUzQjs7O2FBR0s7UUFDTCxnQkFBZ0I7UUFDUCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBS3hCLCtFQUErRTtRQUN0RSw0QkFBdUIsR0FBRyxLQUFLLENBQUM7S0EwQzFDO0lBM0JDLGdCQUFnQjtJQUNoQixVQUFVO1FBQ1IsTUFBTSxPQUFPLEdBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVyQyxJQUFJLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFckQsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLHNCQUFzQixDQUFDLFNBQVM7WUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDcEYsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLHNCQUFzQixDQUFDLFFBQVE7WUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDdkYsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLHNCQUFzQixDQUFDLG1CQUFtQjtZQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUVsSCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLGlCQUFpQixDQUFDLEtBQUs7b0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDOztvQkFDakYsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQ3hDO1NBQ0Y7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLEVBQUU7WUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQzFELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsRUFBRTtZQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFcEUsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLElBQUksSUFBSSxDQUFDLHVCQUF1QjtZQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUU1RSxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOytHQXRGVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiw2WkNsQmhDLDhjQVdBOzs0RkRPYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsYUFBYSxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJOzhCQUk1QixLQUFLO3NCQUFiLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUtHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFHRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csTUFBTTtzQkFBZCxLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUdHLEVBQUU7c0JBQVYsS0FBSztnQkFPRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRHNmckJ1dHRvbixcbiAgRHNmckJ1dHRvblR5cGUsXG4gIERzZnJCdXR0b25WYXJpYW50LFxuICBEc2ZyQnV0dG9uVmFyaWFudENvbnN0LFxuICBEc2ZyUG9zaXRpb24sXG4gIERzZnJQb3NpdGlvbkNvbnN0LFxuICBEc2ZyU2l6ZSxcbiAgRHNmclNpemVDb25zdCxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZHNmci1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIERzZnJCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBEc2ZyQnV0dG9uIHtcbiAgLyoqIExpYmVsbMOpIGR1IGJvdXRvbiwgb2JsaWdhdG9pcmUuICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqIFR5cGUgZHUgYnV0dG9uLCBgc3VibWl0YCBwYXIgZMOpZmF1dC4gKi9cbiAgQElucHV0KCkgdHlwZTogRHNmckJ1dHRvblR5cGU7XG5cbiAgLyoqXG4gICAqIE1lc3NhZ2UgZHUgYHRvb2x0aXBgIChhdHRyaWJ1dCBgdGl0bGVgIGR1IGJvdXRvbikgb3UgYWpvdXQgZCd1biBgc3BhbmAgZW4gYHNyLW9ubHlgIHNpIHBhcyBkZSBsYWJlbC5cbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBNZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqIFN0eWxlIGR1IGJvdXRvbiwgYHByaW1hcnlgIHBhciBkw6lmYXV0LiAqL1xuICBASW5wdXQoKSB2YXJpYW50OiBEc2ZyQnV0dG9uVmFyaWFudCA9IERzZnJCdXR0b25WYXJpYW50Q29uc3QuUFJJTUFSWTtcblxuICAvKiogVGFpbGxlIGR1IGJvdXRvbiwgYE1EYCBwYXIgZMOpZmF1dCAgKi9cbiAgQElucHV0KCkgc2l6ZTogRHNmclNpemUgPSBEc2ZyU2l6ZUNvbnN0Lk1EO1xuXG4gIC8qKiBOb20gZGUgbCdpY8O0bmUuICovXG4gIEBJbnB1dCgpIGljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKiogUG9zaXRpb24gZGUgbCdpY8O0bmUsIMOgIGdhdWNoZSBwYXIgZMOpZmF1dC4gKi9cbiAgQElucHV0KCkgaWNvblBvc2l0aW9uOiBEc2ZyUG9zaXRpb247XG5cbiAgLyoqIFBlcm1ldCBkZSBkw6lzYWN0aXZlciBsZSBib3V0b24gZCdhY3Rpb24sIGBmYWxzZWAgcGFyIGTDqWZhdXQuICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqICBAZGVwcmVjYXRlZCAoc2luY2UgMS4xLjApXG4gICAqICBQZXJtZXQgZGUgcGFzc2VyIGxlIGxpYmVsbMOpIGR1IGJvdXRvbiBlbiBtYWp1c2N1bGVzLCAnZmFsc2UnIHBhciBkw6lmYXV0LlxuICAgKi9cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBASW5wdXQoKSB1cHBlcmNhc2UgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgKHNpbmNlIDEuMS4wKVxuICAgKiBQZXJtZXQgZCdhY3RpdmVyIHVuIHZpc3VlbCBkw6lub3RhbnQgdW4gXCJjaGFyZ2VtZW50XCIgKGJ1c3kpLCAnZmFsc2UnIHBhciBkw6lmYXV0LlxuICAgKiAqL1xuICAvKiogQGludGVybmFsICovXG4gIEBJbnB1dCgpIGxvYWRlciA9IGZhbHNlO1xuXG4gIC8qKiDwn5GTIFNww6ljaWZpZSBsZSBsaWJlbGzDqSBxdWkgc2VyYSByZXRyYW5zY3JpdCBwYXIgbGVzIG5hcnJhdGV1cnMgZCfDqWNyYW4uICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gIC8qKiBQZXJtZXQgZCdpbnZlcnNlciBsZSBjb250cmFzdGUgZHUgbWFycXVldXIgZGUgZm9jdXMsIGBmYWxzZWAgcGFyIGTDqWZhdXQuICovXG4gIEBJbnB1dCgpIGludmVydGVkT3V0bGluZUNvbnRyYXN0ID0gZmFsc2U7XG5cbiAgLyoqIFBlcm1ldCBkJ2lkZW50aWZpZXIgbGUgYnV0dG9uLiAqL1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiDwn5GTIGBhcmlhQ29udHJvbHNgIGVzdCB1dGlsaXPDqSBwb3VyIGxhIG1hbmlwdWxhdGlvbiBkJ3VuZSBtb2RhbGUgcGFyIGV4ZW1wbGUuXG4gICAqIChwcmlzZSBlbiBjaGFyZ2UgZHUgcmV0b3VyIGRlIGZvY3VzIMOgIGxhIGZlcm1ldHVyZSBkZSBsYSBtb2RhbGUpLlxuICAgKi9cbiAgLy8gYXJpYUNvbnRyb2xzIG5lIGZhaXQgcGFzIHBhcnRpZSBkZSBsJ2ludGVyZmFjZSA/XG4gIEBJbnB1dCgpIGFyaWFDb250cm9sczogc3RyaW5nO1xuXG4gIC8qKiBTdHlsZSBwZXJzb25uYWxpc8OpIGBAc2luY2UgMS4zLjBgICovXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzOiBzdHJpbmc7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBnZXRDbGFzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBjbGFzc2VzOiBzdHJpbmdbXSA9IFsnZnItYnRuJ107XG5cbiAgICBpZiAodGhpcy5jdXN0b21DbGFzcykgY2xhc3Nlcy5wdXNoKHRoaXMuY3VzdG9tQ2xhc3MpO1xuXG4gICAgaWYgKHRoaXMudmFyaWFudCA9PT0gRHNmckJ1dHRvblZhcmlhbnRDb25zdC5TRUNPTkRBUlkpIGNsYXNzZXMucHVzaCgnZnItYnRuLS1zZWNvbmRhcnknKTtcbiAgICBlbHNlIGlmICh0aGlzLnZhcmlhbnQgPT09IERzZnJCdXR0b25WYXJpYW50Q29uc3QuVEVSVElBUlkpIGNsYXNzZXMucHVzaCgnZnItYnRuLS10ZXJ0aWFyeScpO1xuICAgIGVsc2UgaWYgKHRoaXMudmFyaWFudCA9PT0gRHNmckJ1dHRvblZhcmlhbnRDb25zdC5URVJUSUFSWV9OT19PVVRMSU5FKSBjbGFzc2VzLnB1c2goJ2ZyLWJ0bi0tdGVydGlhcnktbm8tb3V0bGluZScpO1xuXG4gICAgaWYgKHRoaXMuaWNvbikge1xuICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuaWNvbik7XG4gICAgICBpZiAodGhpcy5sYWJlbCkge1xuICAgICAgICBpZiAodGhpcy5pY29uUG9zaXRpb24gPT09IERzZnJQb3NpdGlvbkNvbnN0LlJJR0hUKSBjbGFzc2VzLnB1c2goJ2ZyLWJ0bi0taWNvbi1yaWdodCcpO1xuICAgICAgICBlbHNlIGNsYXNzZXMucHVzaCgnZnItYnRuLS1pY29uLWxlZnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaXplID09PSBEc2ZyU2l6ZUNvbnN0LlNNKSBjbGFzc2VzLnB1c2goJ2ZyLWJ0bi0tc20nKTtcbiAgICBlbHNlIGlmICh0aGlzLnNpemUgPT09IERzZnJTaXplQ29uc3QuTEcpIGNsYXNzZXMucHVzaCgnZnItYnRuLS1sZycpO1xuXG4gICAgLy8gJ2TDqXByw6ljacOpJ1xuICAgIGlmICh0aGlzLnVwcGVyY2FzZSkgY2xhc3Nlcy5wdXNoKCd1cHBlcmNhc2UnKTtcbiAgICBpZiAodGhpcy5pbnZlcnRlZE91dGxpbmVDb250cmFzdCkgY2xhc3Nlcy5wdXNoKCdpbnZlcnRlZC1vdXRsaW5lLWNvbnRyYXN0Jyk7XG5cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxufVxuIiwiPGJ1dHRvblxuICBbbmdDbGFzc109XCJnZXRDbGFzc2VzKClcIlxuICBbYXR0ci50eXBlXT1cInR5cGUgfHwgbnVsbFwiXG4gIFthdHRyLnRpdGxlXT1cInRvb2x0aXBNZXNzYWdlIHx8IG51bGxcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbnVsbFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8IG51bGxcIlxuICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImFyaWFDb250cm9scyB8fCBudWxsXCJcbiAgW2F0dHIuZGF0YS1mci1vcGVuZWRdPVwiYXJpYUNvbnRyb2xzID8gZmFsc2UgOiBudWxsXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9uZy1jb250YWluZXI+XG4gIDxzcGFuICpuZ0lmPVwiIWxhYmVsICYmIHRvb2x0aXBNZXNzYWdlXCIgY2xhc3M9XCJzci1vbmx5XCI+e3sgdG9vbHRpcE1lc3NhZ2UgfX08L3NwYW4+XG48L2J1dHRvbj5cbiJdfQ==