@senx/warpview-editor
Version:
WarpView Editor Elements
132 lines • 14.5 kB
JavaScript
/*
* 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 { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
export class GTSLib {
constructor() {
this.color = ['#4D4D4D', '#5DA5DA', '#FAA43A', '#60BD68', '#F17CB0', '#B2912F', '#B276B2', '#DECF3F', '#F15854', '#607D8B'];
}
getColor(i) {
return this.color[i % this.color.length];
}
unique(arr) {
const u = {};
const a = [];
for (let i = 0, l = arr.length; i < l; ++i) {
if (!u.hasOwnProperty(arr[i])) {
a.push(arr[i]);
u[arr[i]] = 1;
}
}
return a;
}
hexToRgb(hex) {
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? [
parseInt(result[1], 16),
parseInt(result[2], 16),
parseInt(result[3], 16)
] : null;
}
transparentize(color, alpha) {
return 'rgba(' + this.hexToRgb(color).concat(alpha).join(',') + ')';
}
isArray(value) {
return value && typeof value === 'object' && value instanceof Array && typeof value.length === 'number'
&& typeof value.splice === 'function' && !(value.propertyIsEnumerable('length'));
}
isEmbeddedImage(item) {
return !(typeof item !== 'string' || !/^data:image/.test(item));
}
isEmbeddedImageObject(item) {
return !((item === null) || (item.image === null) ||
(item.caption === null) || !this.isEmbeddedImage(item.image));
}
gtsFromJSON(json, id) {
return {
gts: {
c: json.c,
l: json.l,
a: json.a,
v: json.v,
id,
},
};
}
gtsFromJSONList(jsonList, prefixId) {
const gtsList = [];
let id;
jsonList.forEach((item, i) => {
let gts = item;
if (item.gts) {
gts = item.gts;
}
if ((prefixId !== undefined) && (prefixId !== '')) {
id = prefixId + '-' + i;
}
else {
id = '' + i;
}
if (this.isArray(gts)) {
gtsList.push(this.gtsFromJSONList(gts, id));
}
if (this.isGts(gts)) {
gtsList.push(this.gtsFromJSON(gts, id));
}
if (this.isEmbeddedImage(gts)) {
gtsList.push({
image: gts,
caption: 'Image',
id,
});
}
if (this.isEmbeddedImageObject(gts)) {
gtsList.push({
image: gts.image,
caption: gts.caption,
id,
});
}
});
return {
content: gtsList,
};
}
flatDeep(arr1) {
// tslint:disable-next-line:only-arrow-functions
return arr1.reduce((acc, val) => {
if (Array.isArray(val)) {
acc.concat(this.flatDeep(val));
}
else {
acc.concat(val);
}
}, []);
}
isGts(item) {
return !(!item || item.c === null || item.l === null ||
item.a === null || item.v === null || !this.isArray(item.v));
}
isObject(item) {
return (item && typeof item === 'object' && !Array.isArray(item));
}
}
GTSLib.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GTSLib, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
GTSLib.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GTSLib });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GTSLib, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3RzLmxpYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcnB2aWV3LWVkaXRvci1uZy9zcmMvbGliL21vZGVsL2d0cy5saWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUd6QyxNQUFNLE9BQU8sTUFBTTtJQURuQjtRQUdFLFVBQUssR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBb0h4SDtJQWxIQyxRQUFRLENBQUMsQ0FBQztRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUc7UUFDUixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDYixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNmLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDZjtTQUNGO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQUc7UUFDVixNQUFNLE1BQU0sR0FBRywyQ0FBMkMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2QsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDeEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ1gsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBYTtRQUNqQyxPQUFPLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBSztRQUNYLE9BQU8sS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRO2VBQ2xHLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBSTtRQUNsQixPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQUk7UUFDeEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQztZQUMvQyxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDbEIsT0FBTztZQUNMLEdBQUcsRUFBRTtnQkFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ1QsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNULENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDVCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ1QsRUFBRTthQUNIO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsUUFBUSxFQUFFLFFBQVE7UUFDaEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksRUFBRSxDQUFDO1FBQ1AsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUM7WUFDZixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDaEI7WUFDRCxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2dCQUNqRCxFQUFFLEdBQUcsUUFBUSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7YUFDekI7aUJBQU07Z0JBQ0wsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDYjtZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzdDO1lBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDekM7WUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ1gsS0FBSyxFQUFFLEdBQUc7b0JBQ1YsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLEVBQUU7aUJBQ0gsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7b0JBQ2hCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztvQkFDcEIsRUFBRTtpQkFDSCxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQUk7UUFDWCxnREFBZ0Q7UUFDaEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7aUJBQU07Z0JBQ0wsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNqQjtRQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSTtZQUNsRCxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFJO1FBQ1gsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQzs7b0dBcEhVLE1BQU07d0dBQU4sTUFBTTs0RkFBTixNQUFNO2tCQURsQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqICBDb3B5cmlnaHQgMjAyMCBTZW5YIFMuQS5TLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHVFNMaWIge1xuXG4gIGNvbG9yID0gWycjNEQ0RDREJywgJyM1REE1REEnLCAnI0ZBQTQzQScsICcjNjBCRDY4JywgJyNGMTdDQjAnLCAnI0IyOTEyRicsICcjQjI3NkIyJywgJyNERUNGM0YnLCAnI0YxNTg1NCcsICcjNjA3RDhCJ107XG5cbiAgZ2V0Q29sb3IoaSkge1xuICAgIHJldHVybiB0aGlzLmNvbG9yW2kgJSB0aGlzLmNvbG9yLmxlbmd0aF07XG4gIH1cblxuICB1bmlxdWUoYXJyKSB7XG4gICAgY29uc3QgdSA9IHt9O1xuICAgIGNvbnN0IGEgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGFyci5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICAgIGlmICghdS5oYXNPd25Qcm9wZXJ0eShhcnJbaV0pKSB7XG4gICAgICAgIGEucHVzaChhcnJbaV0pO1xuICAgICAgICB1W2FycltpXV0gPSAxO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxuXG4gIGhleFRvUmdiKGhleCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IC9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kuZXhlYyhoZXgpO1xuICAgIHJldHVybiByZXN1bHQgPyBbXG4gICAgICBwYXJzZUludChyZXN1bHRbMV0sIDE2KSxcbiAgICAgIHBhcnNlSW50KHJlc3VsdFsyXSwgMTYpLFxuICAgICAgcGFyc2VJbnQocmVzdWx0WzNdLCAxNilcbiAgICBdIDogbnVsbDtcbiAgfVxuXG4gIHRyYW5zcGFyZW50aXplKGNvbG9yLCBhbHBoYTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3JnYmEoJyArIHRoaXMuaGV4VG9SZ2IoY29sb3IpLmNvbmNhdChhbHBoYSkuam9pbignLCcpICsgJyknO1xuICB9XG5cbiAgaXNBcnJheSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXkgJiYgdHlwZW9mIHZhbHVlLmxlbmd0aCA9PT0gJ251bWJlcidcbiAgICAgICYmIHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09ICdmdW5jdGlvbicgJiYgISh2YWx1ZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgnbGVuZ3RoJykpO1xuICB9XG5cbiAgaXNFbWJlZGRlZEltYWdlKGl0ZW0pIHtcbiAgICByZXR1cm4gISh0eXBlb2YgaXRlbSAhPT0gJ3N0cmluZycgfHwgIS9eZGF0YTppbWFnZS8udGVzdChpdGVtKSk7XG4gIH1cblxuICBpc0VtYmVkZGVkSW1hZ2VPYmplY3QoaXRlbSkge1xuICAgIHJldHVybiAhKChpdGVtID09PSBudWxsKSB8fCAoaXRlbS5pbWFnZSA9PT0gbnVsbCkgfHxcbiAgICAgIChpdGVtLmNhcHRpb24gPT09IG51bGwpIHx8ICF0aGlzLmlzRW1iZWRkZWRJbWFnZShpdGVtLmltYWdlKSk7XG4gIH1cblxuICBndHNGcm9tSlNPTihqc29uLCBpZCkge1xuICAgIHJldHVybiB7XG4gICAgICBndHM6IHtcbiAgICAgICAgYzoganNvbi5jLFxuICAgICAgICBsOiBqc29uLmwsXG4gICAgICAgIGE6IGpzb24uYSxcbiAgICAgICAgdjoganNvbi52LFxuICAgICAgICBpZCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGd0c0Zyb21KU09OTGlzdChqc29uTGlzdCwgcHJlZml4SWQpIHtcbiAgICBjb25zdCBndHNMaXN0ID0gW107XG4gICAgbGV0IGlkO1xuICAgIGpzb25MaXN0LmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgIGxldCBndHMgPSBpdGVtO1xuICAgICAgaWYgKGl0ZW0uZ3RzKSB7XG4gICAgICAgIGd0cyA9IGl0ZW0uZ3RzO1xuICAgICAgfVxuICAgICAgaWYgKChwcmVmaXhJZCAhPT0gdW5kZWZpbmVkKSAmJiAocHJlZml4SWQgIT09ICcnKSkge1xuICAgICAgICBpZCA9IHByZWZpeElkICsgJy0nICsgaTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlkID0gJycgKyBpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNBcnJheShndHMpKSB7XG4gICAgICAgIGd0c0xpc3QucHVzaCh0aGlzLmd0c0Zyb21KU09OTGlzdChndHMsIGlkKSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc0d0cyhndHMpKSB7XG4gICAgICAgIGd0c0xpc3QucHVzaCh0aGlzLmd0c0Zyb21KU09OKGd0cywgaWQpKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzRW1iZWRkZWRJbWFnZShndHMpKSB7XG4gICAgICAgIGd0c0xpc3QucHVzaCh7XG4gICAgICAgICAgaW1hZ2U6IGd0cyxcbiAgICAgICAgICBjYXB0aW9uOiAnSW1hZ2UnLFxuICAgICAgICAgIGlkLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzRW1iZWRkZWRJbWFnZU9iamVjdChndHMpKSB7XG4gICAgICAgIGd0c0xpc3QucHVzaCh7XG4gICAgICAgICAgaW1hZ2U6IGd0cy5pbWFnZSxcbiAgICAgICAgICBjYXB0aW9uOiBndHMuY2FwdGlvbixcbiAgICAgICAgICBpZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IGd0c0xpc3QsXG4gICAgfTtcbiAgfVxuXG4gIGZsYXREZWVwKGFycjEpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6b25seS1hcnJvdy1mdW5jdGlvbnNcbiAgICByZXR1cm4gYXJyMS5yZWR1Y2UoKGFjYywgdmFsKSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIGFjYy5jb25jYXQodGhpcy5mbGF0RGVlcCh2YWwpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjYy5jb25jYXQodmFsKTtcbiAgICAgIH1cbiAgICB9LCBbXSk7XG4gIH1cblxuICBpc0d0cyhpdGVtKSB7XG4gICAgcmV0dXJuICEoIWl0ZW0gfHwgaXRlbS5jID09PSBudWxsIHx8IGl0ZW0ubCA9PT0gbnVsbCB8fFxuICAgICAgaXRlbS5hID09PSBudWxsIHx8IGl0ZW0udiA9PT0gbnVsbCB8fCAhdGhpcy5pc0FycmF5KGl0ZW0udikpO1xuICB9XG5cbiAgaXNPYmplY3QoaXRlbSkge1xuICAgIHJldHVybiAoaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSkpO1xuICB9XG5cbn1cbiJdfQ==