UNPKG

@senx/warpview-editor

Version:

WarpView Editor Elements

87 lines 15.3 kB
/* * Copyright 2020 SenX S.A.S. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { GTSLib } from '../../model/gts.lib'; import { Component, Input, ViewEncapsulation } from '@angular/core'; import { Logger } from '../../model/logger'; import { JsonLib } from '../../model/jsonLib'; import * as i0 from "@angular/core"; import * as i1 from "../../model/gts.lib"; import * as i2 from "@angular/common"; export class WarpViewImageResult { constructor(gtsLib) { this.gtsLib = gtsLib; this.config = {}; // tslint:disable-next-line:variable-name this._theme = 'light'; // tslint:disable-next-line:variable-name this._debug = false; this.loading = false; this.imageList = []; this.LOG = new Logger(WarpViewImageResult, this._debug); } set debug(debug) { if (typeof debug === 'string') { debug = 'true' === debug; } this._debug = debug; this.LOG.setDebug(debug); } get debug() { return this._debug; } set result(res) { this._res = res; this._result = new JsonLib().parse(res || '[]', undefined); this.loading = true; this.LOG.debug(['isArray'], 'The new value of result is: ', res); if (res && this.gtsLib.isArray(this._result)) { this.imageList = this._result.filter((v) => { return ((typeof (v) === 'string') && (String(v).startsWith('data:image/png;base64,'))); }); } else { this.imageList = []; } this.loading = false; } get result() { return this._res; } set theme(newValue) { this._theme = newValue; } get theme() { return this._theme; } isArray(arr) { return this.gtsLib.isArray(arr); } } WarpViewImageResult.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: WarpViewImageResult, deps: [{ token: i1.GTSLib }], target: i0.ɵɵFactoryTarget.Component }); WarpViewImageResult.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: WarpViewImageResult, selector: "warpview-image-result", inputs: { debug: "debug", result: "result", theme: "theme", config: "config" }, ngImport: i0, template: "<!--\n ~ Copyright 2020 SenX S.A.S.\n ~\n ~ Licensed under the Apache License, Version 2.0 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ http://www.apache.org/licenses/LICENSE-2.0\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" BASIS,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div [class]=\"'wrapper-result ' + _theme\">\n <div *ngIf=\"_result && isArray(_result)\" [class]=\"_theme + ' image'\">\n <div *ngFor=\"let img of imageList; let i = index\" class=\"image\"><h2>Image {{i + 1}}</h2>\n <img [src]=\"img\" alt=\"Image\"/>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2020 SenX S.A.S.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */:host .wrapper-result{padding:10px}:host img{border-style:solid;border-color:var(--warp-view-image-border-color, #404040);border-width:1.1px;background-color:#fff;background-image:linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef),linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef);background-position:0 0,10px 10px;background-size:21px 21px}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: WarpViewImageResult, decorators: [{ type: Component, args: [{ selector: 'warpview-image-result', encapsulation: ViewEncapsulation.Emulated, template: "<!--\n ~ Copyright 2020 SenX S.A.S.\n ~\n ~ Licensed under the Apache License, Version 2.0 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ http://www.apache.org/licenses/LICENSE-2.0\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" BASIS,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div [class]=\"'wrapper-result ' + _theme\">\n <div *ngIf=\"_result && isArray(_result)\" [class]=\"_theme + ' image'\">\n <div *ngFor=\"let img of imageList; let i = index\" class=\"image\"><h2>Image {{i + 1}}</h2>\n <img [src]=\"img\" alt=\"Image\"/>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2020 SenX S.A.S.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */:host .wrapper-result{padding:10px}:host img{border-style:solid;border-color:var(--warp-view-image-border-color, #404040);border-width:1.1px;background-color:#fff;background-image:linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef),linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef);background-position:0 0,10px 10px;background-size:21px 21px}\n"] }] }], ctorParameters: function () { return [{ type: i1.GTSLib }]; }, propDecorators: { debug: [{ type: Input }], result: [{ type: Input }], theme: [{ type: Input }], config: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FycC12aWV3LWltYWdlLXJlc3VsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcnB2aWV3LWVkaXRvci1uZy9zcmMvbGliL2VsZW1lbnRzL3dhcnAtdmlldy1pbWFnZS1yZXN1bHQvd2FycC12aWV3LWltYWdlLXJlc3VsdC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcnB2aWV3LWVkaXRvci1uZy9zcmMvbGliL2VsZW1lbnRzL3dhcnAtdmlldy1pbWFnZS1yZXN1bHQvd2FycC12aWV3LWltYWdlLXJlc3VsdC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFRNUMsTUFBTSxPQUFPLG1CQUFtQjtJQXVEOUIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFkekIsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQU03Qix5Q0FBeUM7UUFDekMsV0FBTSxHQUFHLE9BQU8sQ0FBQztRQUNqQix5Q0FBeUM7UUFDekMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUl2QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBdkRELElBQWEsS0FBSyxDQUFDLEtBQXVCO1FBQ3hDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLEtBQUssR0FBRyxNQUFNLEtBQUssS0FBSyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsR0FBVztRQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSw4QkFBOEIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUM5QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pGLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsUUFBZ0I7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBb0JELE9BQU8sQ0FBQyxHQUFRO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDOztpSEE3RFUsbUJBQW1CO3FHQUFuQixtQkFBbUIsNklDM0JoQyxzNkJBc0JBOzRGREthLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSx1QkFBdUIsaUJBR2xCLGlCQUFpQixDQUFDLFFBQVE7NkZBSTVCLEtBQUs7c0JBQWpCLEtBQUs7Z0JBWU8sTUFBTTtzQkFBbEIsS0FBSztnQkFtQk8sS0FBSztzQkFBakIsS0FBSztnQkFRRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogIENvcHlyaWdodCAyMDIwIFNlblggUy5BLlMuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0dUU0xpYn0gZnJvbSAnLi4vLi4vbW9kZWwvZ3RzLmxpYic7XG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi8uLi9tb2RlbC9sb2dnZXInO1xuaW1wb3J0IHtKc29uTGlifSBmcm9tICcuLi8uLi9tb2RlbC9qc29uTGliJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2FycHZpZXctaW1hZ2UtcmVzdWx0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dhcnAtdmlldy1pbWFnZS1yZXN1bHQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dhcnAtdmlldy1pbWFnZS1yZXN1bHQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZFxufSlcbmV4cG9ydCBjbGFzcyBXYXJwVmlld0ltYWdlUmVzdWx0IHtcblxuICBASW5wdXQoKSBzZXQgZGVidWcoZGVidWc6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIGRlYnVnID09PSAnc3RyaW5nJykge1xuICAgICAgZGVidWcgPSAndHJ1ZScgPT09IGRlYnVnO1xuICAgIH1cbiAgICB0aGlzLl9kZWJ1ZyA9IGRlYnVnO1xuICAgIHRoaXMuTE9HLnNldERlYnVnKGRlYnVnKTtcbiAgfVxuXG4gIGdldCBkZWJ1ZygpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVidWc7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcmVzdWx0KHJlczogc3RyaW5nKSB7XG4gICAgdGhpcy5fcmVzID0gcmVzO1xuICAgIHRoaXMuX3Jlc3VsdCA9IG5ldyBKc29uTGliKCkucGFyc2UocmVzIHx8ICdbXScsIHVuZGVmaW5lZCk7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLkxPRy5kZWJ1ZyhbJ2lzQXJyYXknXSwgJ1RoZSBuZXcgdmFsdWUgb2YgcmVzdWx0IGlzOiAnLCByZXMpO1xuICAgIGlmIChyZXMgJiYgdGhpcy5ndHNMaWIuaXNBcnJheSh0aGlzLl9yZXN1bHQpKSB7XG4gICAgICB0aGlzLmltYWdlTGlzdCA9IHRoaXMuX3Jlc3VsdC5maWx0ZXIoKHY6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gKCh0eXBlb2YgKHYpID09PSAnc3RyaW5nJykgJiYgKFN0cmluZyh2KS5zdGFydHNXaXRoKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsJykpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmltYWdlTGlzdCA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGdldCByZXN1bHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRoZW1lKG5ld1ZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90aGVtZSA9IG5ld1ZhbHVlO1xuICB9XG5cbiAgZ2V0IHRoZW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RoZW1lO1xuICB9XG5cbiAgQElucHV0KCkgY29uZmlnOiBvYmplY3QgPSB7fTtcblxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIF9yZXN1bHQ6IGFueVtdO1xuICBfcmVzOiBzdHJpbmc7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIF90aGVtZSA9ICdsaWdodCc7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIF9kZWJ1ZyA9IGZhbHNlO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIGltYWdlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBMT0c6IExvZ2dlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGd0c0xpYjogR1RTTGliKSB7XG4gICAgdGhpcy5MT0cgPSBuZXcgTG9nZ2VyKFdhcnBWaWV3SW1hZ2VSZXN1bHQsIHRoaXMuX2RlYnVnKTtcbiAgfVxuXG4gIGlzQXJyYXkoYXJyOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5ndHNMaWIuaXNBcnJheShhcnIpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gIENvcHlyaWdodCAyMDIwIFNlblggUy5BLlMuXG4gIH5cbiAgfiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+ICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICB+XG4gIH4gIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICB+ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+ICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG48ZGl2IFtjbGFzc109XCInd3JhcHBlci1yZXN1bHQgJyArIF90aGVtZVwiPlxuICA8ZGl2ICpuZ0lmPVwiX3Jlc3VsdCAmJiBpc0FycmF5KF9yZXN1bHQpXCIgW2NsYXNzXT1cIl90aGVtZSArICcgaW1hZ2UnXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgaW1nIG9mIGltYWdlTGlzdDsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiaW1hZ2VcIj48aDI+SW1hZ2Uge3tpICsgMX19PC9oMj5cbiAgICAgIDxpbWcgW3NyY109XCJpbWdcIiBhbHQ9XCJJbWFnZVwiLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==