truly-ui
Version:
Web Components for Desktop Applications.
107 lines (105 loc) • 14.6 kB
JavaScript
/*
MIT License
Copyright (c) 2019 Temainfo Software
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
import { Component, Input, TemplateRef, ViewChild } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "./parts/tl-dx-icon/tl-dx-icon.component";
import * as i3 from "./parts/tl-fa-icon/tl-fa-icon.component";
import * as i4 from "./parts/tl-ion-icon/tl-ion-icon.component";
export class TlIcons {
constructor(change) {
this.change = change;
}
ngAfterViewInit() {
this.contentIconCode();
}
contentIconCode() {
if (this.content.nativeElement.innerText) {
this.icon = this.content.nativeElement.innerText;
if (this.isFullCode()) {
this.lib = this.icon.substr(0, 2);
this.lib = (this.lib === 'io') ? 'ion' : this.lib;
this.getStyle();
}
this.change.detectChanges();
}
}
isFullCode() {
const space = this.icon.indexOf(' ');
return space !== -1;
}
getStyle() {
let fistSplit, secondSplit;
if (this.lib === 'fa') {
fistSplit = 0;
secondSplit = this.icon.indexOf(' ');
}
if (this.lib === 'ion') {
fistSplit = this.icon.indexOf('-') + 1;
secondSplit = this.icon.indexOf('-', fistSplit) - fistSplit;
}
this.setStyle(fistSplit, secondSplit);
}
setStyle(start, length) {
this.style = this.icon.substr(start, length);
switch (this.lib) {
case 'dx':
this.setIcon(16);
break;
case 'fa':
const fistSplit = this.icon.indexOf('-') + 1;
this.setIcon(fistSplit);
break;
case 'ion':
this.setIcon((start + length) + 1);
break;
}
}
setIcon(start) {
this.icon = this.icon.substr(start);
}
}
/** @nocollapse */ TlIcons.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TlIcons, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ TlIcons.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TlIcons, selector: "tl-icon", inputs: { icon: "icon", lib: "lib", style: "style", size: "size", animation: "animation", color: "color", align: "align" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }, { propertyName: "template", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<tl-dx-icon [icon]=\"icon\" [size]=\"size\" [animation]=\"animation\" [color]=\"color\" [align]=\"align\" *ngIf=\"lib === 'dx'\"></tl-dx-icon>\n<tl-fa-icon [icon]=\"icon\" [style]=\"style\" [size]=\"size\" [animation]=\"animation\" [color]=\"color\" [align]=\"align\" *ngIf=\"lib === 'fa'\"></tl-fa-icon>\n<tl-ion-icon [icon]=\"icon\" [style]=\"style\" [size]=\"size\" [animation]=\"animation\" [color]=\"color\" [align]=\"align\" *ngIf=\"lib === 'ion'\"></tl-ion-icon>\n<div hidden #content>\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TlDxIconComponent, selector: "tl-dx-icon", inputs: ["icon", "size", "animation", "color", "align"] }, { kind: "component", type: i3.TlFaIconComponent, selector: "tl-fa-icon", inputs: ["icon", "style", "size", "animation", "color", "align"] }, { kind: "component", type: i4.TlIonIconComponent, selector: "tl-ion-icon", inputs: ["icon", "style", "size", "animation", "color", "align"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TlIcons, decorators: [{
type: Component,
args: [{ selector: 'tl-icon', template: "<tl-dx-icon [icon]=\"icon\" [size]=\"size\" [animation]=\"animation\" [color]=\"color\" [align]=\"align\" *ngIf=\"lib === 'dx'\"></tl-dx-icon>\n<tl-fa-icon [icon]=\"icon\" [style]=\"style\" [size]=\"size\" [animation]=\"animation\" [color]=\"color\" [align]=\"align\" *ngIf=\"lib === 'fa'\"></tl-fa-icon>\n<tl-ion-icon [icon]=\"icon\" [style]=\"style\" [size]=\"size\" [animation]=\"animation\" [color]=\"color\" [align]=\"align\" *ngIf=\"lib === 'ion'\"></tl-ion-icon>\n<div hidden #content>\n <ng-content></ng-content>\n</div>\n" }]
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{
type: Input
}], lib: [{
type: Input
}], style: [{
type: Input
}], size: [{
type: Input
}], animation: [{
type: Input
}], color: [{
type: Input
}], align: [{
type: Input
}], content: [{
type: ViewChild,
args: ['content', { static: true }]
}], template: [{
type: ViewChild,
args: [TemplateRef, { static: true }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90cnVseS11aS9zcmMvY29tcG9uZW50cy9pY29ucy9pY29ucy50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RydWx5LXVpL3NyYy9jb21wb25lbnRzL2ljb25zL2ljb25zLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0JFO0FBRUYsT0FBTyxFQUdMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBT3ZCLE1BQU0sT0FBTyxPQUFPO0lBb0JsQixZQUFvQixNQUF5QjtRQUF6QixXQUFNLEdBQU4sTUFBTSxDQUFtQjtJQUFHLENBQUM7SUFFakQsZUFBZTtRQUNiLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO1lBRWpELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFFbEQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ2pCO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLFNBQVMsRUFBRSxXQUFXLENBQUM7UUFFM0IsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksRUFBRTtZQUNyQixTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLEtBQUssRUFBRTtZQUN0QixTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQzdEO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU3QyxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDaEIsS0FBSyxJQUFJO2dCQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pCLE1BQU07WUFDUixLQUFLLElBQUk7Z0JBQ1AsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN4QixNQUFNO1lBQ1IsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsS0FBYTtRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7O3dIQWhGVSxPQUFPOzRHQUFQLE9BQU8sd1RBa0JQLFdBQVcsOERDdkR4QixxaEJBTUE7NEZEK0JhLE9BQU87a0JBTG5CLFNBQVM7K0JBQ0UsU0FBUzt3R0FNVixJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsR0FBRztzQkFBWCxLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVpQyxPQUFPO3NCQUE3QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBRUssUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBNSVQgTGljZW5zZVxuXG4gICAgQ29weXJpZ2h0IChjKSAyMDE5IFRlbWFpbmZvIFNvZnR3YXJlXG5cbiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gICAgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICAgIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAgICB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gICAgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gICAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAgICBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAgICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAgICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAgICBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gICAgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAgICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICAgIFNPRlRXQVJFLlxuKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RsLWljb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbnMuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ljb25zLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGxJY29ucyBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcblxuICBASW5wdXQoKSBsaWI6IHN0cmluZztcblxuICBASW5wdXQoKSBzdHlsZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHNpemU6IHN0cmluZztcblxuICBASW5wdXQoKSBhbmltYXRpb246IHN0cmluZztcblxuICBASW5wdXQoKSBjb2xvcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGFsaWduOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudCcsIHtzdGF0aWM6IHRydWV9ICkgY29udGVudDogRWxlbWVudFJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYsIHtzdGF0aWM6IHRydWV9ICkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2U6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNvbnRlbnRJY29uQ29kZSgpO1xuICB9XG5cbiAgY29udGVudEljb25Db2RlKCkge1xuICAgIGlmICh0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5pbm5lclRleHQpIHtcbiAgICAgIHRoaXMuaWNvbiA9IHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LmlubmVyVGV4dDtcblxuICAgICAgaWYgKHRoaXMuaXNGdWxsQ29kZSgpKSB7XG4gICAgICAgIHRoaXMubGliID0gdGhpcy5pY29uLnN1YnN0cigwLCAyKTtcbiAgICAgICAgdGhpcy5saWIgPSAodGhpcy5saWIgPT09ICdpbycpID8gJ2lvbicgOiB0aGlzLmxpYjtcblxuICAgICAgICB0aGlzLmdldFN0eWxlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgaXNGdWxsQ29kZSgpIHtcbiAgICBjb25zdCBzcGFjZSA9IHRoaXMuaWNvbi5pbmRleE9mKCcgJyk7XG4gICAgcmV0dXJuIHNwYWNlICE9PSAtMTtcbiAgfVxuXG4gIGdldFN0eWxlKCkge1xuICAgIGxldCBmaXN0U3BsaXQsIHNlY29uZFNwbGl0O1xuXG4gICAgaWYgKHRoaXMubGliID09PSAnZmEnKSB7XG4gICAgICBmaXN0U3BsaXQgPSAwO1xuICAgICAgc2Vjb25kU3BsaXQgPSB0aGlzLmljb24uaW5kZXhPZignICcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxpYiA9PT0gJ2lvbicpIHtcbiAgICAgIGZpc3RTcGxpdCA9IHRoaXMuaWNvbi5pbmRleE9mKCctJykgKyAxO1xuICAgICAgc2Vjb25kU3BsaXQgPSB0aGlzLmljb24uaW5kZXhPZignLScsIGZpc3RTcGxpdCkgLSBmaXN0U3BsaXQ7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdHlsZShmaXN0U3BsaXQsIHNlY29uZFNwbGl0KTtcbiAgfVxuXG4gIHNldFN0eWxlKHN0YXJ0LCBsZW5ndGgpIHtcbiAgICB0aGlzLnN0eWxlID0gdGhpcy5pY29uLnN1YnN0cihzdGFydCwgbGVuZ3RoKTtcblxuICAgIHN3aXRjaCAodGhpcy5saWIpIHtcbiAgICAgIGNhc2UgJ2R4JzpcbiAgICAgICAgdGhpcy5zZXRJY29uKDE2KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmYSc6XG4gICAgICAgIGNvbnN0IGZpc3RTcGxpdCA9IHRoaXMuaWNvbi5pbmRleE9mKCctJykgKyAxO1xuICAgICAgICB0aGlzLnNldEljb24oZmlzdFNwbGl0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpb24nOlxuICAgICAgICB0aGlzLnNldEljb24oKHN0YXJ0ICsgbGVuZ3RoKSArIDEpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZXRJY29uKHN0YXJ0OiBudW1iZXIpIHtcbiAgICB0aGlzLmljb24gPSB0aGlzLmljb24uc3Vic3RyKHN0YXJ0KTtcbiAgfVxuXG59XG4iLCI8dGwtZHgtaWNvbiBbaWNvbl09XCJpY29uXCIgW3NpemVdPVwic2l6ZVwiIFthbmltYXRpb25dPVwiYW5pbWF0aW9uXCIgW2NvbG9yXT1cImNvbG9yXCIgW2FsaWduXT1cImFsaWduXCIgKm5nSWY9XCJsaWIgPT09ICdkeCdcIj48L3RsLWR4LWljb24+XG48dGwtZmEtaWNvbiBbaWNvbl09XCJpY29uXCIgW3N0eWxlXT1cInN0eWxlXCIgW3NpemVdPVwic2l6ZVwiIFthbmltYXRpb25dPVwiYW5pbWF0aW9uXCIgW2NvbG9yXT1cImNvbG9yXCIgW2FsaWduXT1cImFsaWduXCIgKm5nSWY9XCJsaWIgPT09ICdmYSdcIj48L3RsLWZhLWljb24+XG48dGwtaW9uLWljb24gW2ljb25dPVwiaWNvblwiIFtzdHlsZV09XCJzdHlsZVwiIFtzaXplXT1cInNpemVcIiBbYW5pbWF0aW9uXT1cImFuaW1hdGlvblwiIFtjb2xvcl09XCJjb2xvclwiIFthbGlnbl09XCJhbGlnblwiICpuZ0lmPVwibGliID09PSAnaW9uJ1wiPjwvdGwtaW9uLWljb24+XG48ZGl2IGhpZGRlbiAjY29udGVudD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=