ctt-babylon 0.12.23 → 0.12.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/core/babylon-fo-c3-img-txt/babylon-fo-c3-img-txt.component.mjs +11 -6
- package/esm2022/lib/components/core/babylon-he-svg-list/babylon-he-svg-list.component.mjs +27 -6
- package/esm2022/lib/components/core/babylon-list-c3-img-txt/babylon-list-c3-img-txt.component.mjs +11 -6
- package/esm2022/lib/components/external/core/lis-c4-txt-des-cta/lis-c4-txt-des-cta.component.mjs +249 -92
- package/esm2022/lib/utils/utils.mjs +42 -1
- package/fesm2022/ctt-babylon.mjs +332 -106
- package/fesm2022/ctt-babylon.mjs.map +1 -1
- package/lib/components/core/babylon-he-svg-list/babylon-he-svg-list.component.d.ts +1 -0
- package/lib/components/external/core/lis-c4-txt-des-cta/lis-c4-txt-des-cta.component.d.ts +13 -4
- package/lib/utils/utils.d.ts +3 -0
- package/package.json +1 -1
|
@@ -175,5 +175,46 @@ export class Utils {
|
|
|
175
175
|
};
|
|
176
176
|
return list.sort((a, b) => toNum(a.order) - toNum(b.order));
|
|
177
177
|
}
|
|
178
|
+
static toSlug(input) {
|
|
179
|
+
return (input ?? '')
|
|
180
|
+
.toString()
|
|
181
|
+
.trim()
|
|
182
|
+
.toLowerCase()
|
|
183
|
+
.normalize('NFD')
|
|
184
|
+
.replace(/[\u0300-\u036f]/g, '') // quita tildes
|
|
185
|
+
.replace(/&/g, 'and') // opcional
|
|
186
|
+
.replace(/[^a-z0-9\s-]/g, '') // quita caracteres raros
|
|
187
|
+
.replace(/\s+/g, '-') // espacios -> -
|
|
188
|
+
.replace(/-+/g, '-') // colapsa ---
|
|
189
|
+
.replace(/^-|-$/g, ''); // quita - al inicio/fin
|
|
190
|
+
}
|
|
191
|
+
static uniqueSlug(label, used) {
|
|
192
|
+
const base = this.toSlug(label) || 'item';
|
|
193
|
+
if (!used.has(base)) {
|
|
194
|
+
used.add(base);
|
|
195
|
+
return base;
|
|
196
|
+
}
|
|
197
|
+
let i = 2;
|
|
198
|
+
while (used.has(`${base}-${i}`))
|
|
199
|
+
i++;
|
|
200
|
+
const slug = `${base}-${i}`;
|
|
201
|
+
used.add(slug);
|
|
202
|
+
return slug;
|
|
203
|
+
}
|
|
204
|
+
static canonicalHotelTypeSlug(label) {
|
|
205
|
+
// slug base (sin tildes/raros)
|
|
206
|
+
let s = Utils.toSlug(label);
|
|
207
|
+
// normaliza plurales comunes ES (hotel(es), apartamento(s))
|
|
208
|
+
// puedes ampliar aquí si tienes "apartamentos turísticos", etc.
|
|
209
|
+
if (s === 'hoteles')
|
|
210
|
+
return 'hotel';
|
|
211
|
+
if (s === 'apartamentos')
|
|
212
|
+
return 'apartamento';
|
|
213
|
+
// regla genérica suave: si termina en 's' y no es 'dos/tres/...' etc.
|
|
214
|
+
// (evita cargarte cosas como "pools" si existieran, pero aquí aplica bien)
|
|
215
|
+
if (s.endsWith('s'))
|
|
216
|
+
s = s.slice(0, -1);
|
|
217
|
+
return s;
|
|
218
|
+
}
|
|
178
219
|
}
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdsQyxNQUFNLE9BQU8sS0FBSztJQUNkLDhEQUE4RDtJQUM5RCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWE7UUFDN0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELGdGQUFnRjtJQUNoRixNQUFNLENBQUMsNEJBQTRCLENBQUMsR0FBUTtRQUN4QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNyRTthQUFNLElBQ0gsR0FBRztZQUNILE9BQU8sR0FBRyxLQUFLLFFBQVE7WUFDdkIsR0FBRyxDQUFDLFdBQVcsS0FBSyxNQUFNLEVBQzVCO1lBQ0UsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDL0QsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQyxFQUFF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QUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUVqRCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQU0sRUFBVSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBQzdELENBQUMsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhYnlsb25CdXR0b25JLCBCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyB7XG4gICAgLy8gRnVuY2nDs24gcGFyYSBjb252ZXJ0aXIgdW5hIGNhZGVuYSBkZSBzbmFrZV9jYXNlIGEgY2FtZWxDYXNlXG4gICAgc3RhdGljIHNuYWtlVG9DYW1lbChzbmFrZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHNuYWtlLnJlcGxhY2UoLyhfXFx3KS9nLCAobWF0Y2hlcykgPT4gbWF0Y2hlc1sxXS50b1VwcGVyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICAvLyBGdW5jacOzbiBwYXJhIGNvbnZlcnRpciBsYXMgcHJvcGllZGFkZXMgZGUgdW4gb2JqZXRvIGRlIHNuYWtlX2Nhc2UgYSBjYW1lbENhc2VcbiAgICBzdGF0aWMgY29udmVydE9iamVjdEtleXNUb0NhbWVsQ2FzZShvYmo6IGFueSk6IGFueSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmoubWFwKChpdGVtKSA9PiB0aGlzLmNvbnZlcnRPYmplY3RLZXlzVG9DYW1lbENhc2UoaXRlbSkpO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgb2JqICYmXG4gICAgICAgICAgICB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgb2JqLmNvbnN0cnVjdG9yID09PSBPYmplY3RcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FtZWxLZXkgPSB0aGlzLnNuYWtlVG9DYW1lbChrZXkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdFtjYW1lbEtleV0gPSB0aGlzLmNvbnZlcnRPYmplY3RLZXlzVG9DYW1lbENhc2Uob2JqW2tleV0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9LCB7fSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgc3RhdGljIGZvcm1hdExpbmtUeXBlKGxpbmtUeXBlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gbGlua1R5cGUgPT09ICdleHRlcm5hbF9saW5rJyB8fCBsaW5rVHlwZSA9PT0gJ2V4dGVybmFsJ1xuICAgICAgICAgICAgPyAnZXh0ZXJuYWwnXG4gICAgICAgICAgICA6IGxpbmtUeXBlID09PSAnaW50ZXJuYWxfbGluaycgfHwgbGlua1R5cGUgPT09ICdpbnRlcm5hbCdcbiAgICAgICAgICAgICAgPyAnaW50ZXJuYWwnXG4gICAgICAgICAgICAgIDogbGlua1R5cGU7XG4gICAgfVxuXG4gICAgc3RhdGljIGZpbmRDb21wb25lbnQ8VD4oXG4gICAgICAgIGJvZHk6IEJvZHlDb21wb25lbnQ8VD5bXSxcbiAgICAgICAgbmFtZTogc3RyaW5nXG4gICAgKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBib2R5LmZpbmQoKGNvbXBvbmVudCkgPT4gY29tcG9uZW50Py5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lKVxuICAgICAgICAgICAgPy5wcm9wcztcbiAgICB9XG5cbiAgICBzdGF0aWMgY29udmVydFRvQmFzZTY0KGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0IGFzIHN0cmluZyk7XG4gICAgICAgICAgICByZWFkZXIub25lcnJvciA9IChlcnJvcikgPT4gcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIG5vcm1hbGl6ZVRleHQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRleHRcbiAgICAgICAgICAgID8ubm9ybWFsaXplKCdORkQnKSAvLyBEZXNjb21wb25lIGxvcyBjYXJhY3RlcmVzIGNvbiBhY2VudG9zXG4gICAgICAgICAgICA/LnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKSAvLyBFbGltaW5hIGxvcyBhY2VudG9zXG4gICAgICAgICAgICA/LnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgc3RhdGljIG1hcEJ1dHRvbnMoXG4gICAgICAgIGJ1dHRvbjogYW55IHwgYW55W10gfCB1bmRlZmluZWQgfCBudWxsLFxuICAgICAgICBidXR0b25UeXBlPzogc3RyaW5nXG4gICAgKTogKEJhYnlsb25CdXR0b25JIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnV0dG9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIFV0aWxzLnNvcnRCdXR0b25zQnlPcmRlcihcbiAgICAgICAgICAgICAgICBidXR0b24/Lm1hcCgoYnRuKSA9PlxuICAgICAgICAgICAgICAgICAgICBidG4ubGFiZWw/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgICAgICAgICBidG4ubGlua1ZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgYnRuLmxpbmtfdmFsdWU/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogYnV0dG9uVHlwZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYnRuPy5sYWJlbCA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogVXRpbHMuZm9ybWF0TGlua1R5cGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuPy5saW5rVHlwZSA/PyBidG4/LmxpbmtfdHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdMaW5rID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuLmxpbmtWYWx1ZSA/PyBidG4ubGlua192YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmF3TGluayAmJiB0eXBlb2YgcmF3TGluayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJpbW1lZFZhbHVlID0gcmF3TGluaz8uZW5kc1dpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByYXdMaW5rLnNsaWNlKDAsIC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdMaW5rO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvXlxcKz9bMC05XSskLy50ZXN0KHRyaW1tZWRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVzIHVuIHRlbMOpZm9ub1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyaW1tZWRWYWx1ZS5zdGFydHNXaXRoKCd0ZWw6JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRyaW1tZWRWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYHRlbDoke3RyaW1tZWRWYWx1ZX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC8udGVzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmltbWVkVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFcyB1biBjb3JyZW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmltbWVkVmFsdWUuc3RhcnRzV2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFpbHRvOidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRyaW1tZWRWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYG1haWx0bzoke3RyaW1tZWRWYWx1ZX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyaW1tZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBidG4uaWNvbiA/IGBpY29uLWAgKyBidG4/Lmljb24gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogYnRuLm9yZGVyPy50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyczogYnRuLmxpbmtWYXJzPy50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25CdXR0b25JKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHsga2VlcE9yaWdpbmFsOiB0cnVlIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGxvYWRTY3JpcHQkKHNyYzogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx2b2lkPigob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3NyYz1cIiR7c3JjfVwiXWApO1xuICAgICAgICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCgpO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgICAgIHNjcmlwdC5zcmMgPSBzcmM7XG4gICAgICAgICAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgICAgICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTtcbiAgICAgICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG5cbiAgICAgICAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCgpO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzY3JpcHQub25lcnJvciA9IChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihuZXcgRXJyb3IoYEVycm9yIGxvYWRpbmcgc2NyaXB0OiAke3NyY31gKSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBsb2FkU3R5bGUkKGhyZWY6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8Ym9vbGVhbj4oKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGxpbmtbaHJlZj1cIiR7aHJlZn1cIl1gKTtcbiAgICAgICAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgICAgICAgICBsaW5rLnJlbCA9ICdwcmVsb2FkJztcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IGhyZWY7XG4gICAgICAgICAgICBsaW5rLmFzID0gJ3N0eWxlJztcbiAgICAgICAgICAgIGxpbmsub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxpbmsub25sb2FkID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIGxpbmsucmVsID0gJ3N0eWxlc2hlZXQnO1xuXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGxpbmsub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgbmV3IEVycm9yKGBObyBzZSBwdWRvIHByZWNhcmdhciBlbCBlc3RpbG86ICR7aHJlZn1gKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuXG4gICAgICAgICAgICAvLyBvcGNpb25hbDogZmFsbGJhY2sgPG5vc2NyaXB0PiAobm8gbG8gbmVjZXNpdGEgQW5ndWxhciBwZXJvIGxvIHB1ZWRlcyBhZ3JlZ2FyKVxuICAgICAgICAgICAgY29uc3Qgbm9zY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdub3NjcmlwdCcpO1xuICAgICAgICAgICAgbm9zY3JpcHQuaW5uZXJIVE1MID0gYDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiJHtocmVmfVwiPmA7XG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG5vc2NyaXB0KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIHNhZmVPcGVuRXh0ZXJuYWwodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF1cmwpIHJldHVybjtcblxuICAgICAgICBjb25zdCB3aW4gPSB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuICAgICAgICBpZiAod2luKSByZXR1cm47XG5cbiAgICAgICAgLy8gRmFsbGJhY2sgc2kgYmxvcXVlYW4gcG9wdXBzXG4gICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGEuaHJlZiA9IHVybDtcbiAgICAgICAgYS50YXJnZXQgPSAnX2JsYW5rJztcbiAgICAgICAgYS5yZWwgPSAnbm9vcGVuZXIgbm9yZWZlcnJlcic7XG4gICAgICAgIGEuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgICAgICAgYS5jbGljaygpO1xuICAgICAgICBhLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBleHRyYWN0TnVtYmVyUmFuZ2UoXG4gICAgICAgIHZhbHVlPzogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgZmFsbGJhY2s6IG51bWJlcltdID0gW11cbiAgICApOiBudW1iZXJbXSB7XG4gICAgICAgIGlmICghdmFsdWUpIHJldHVybiBmYWxsYmFjaztcblxuICAgICAgICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKC9cXGQrLyk7XG4gICAgICAgIGlmICghbWF0Y2gpIHJldHVybiBmYWxsYmFjaztcblxuICAgICAgICBjb25zdCBuID0gTnVtYmVyKG1hdGNoWzBdKTtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihuKSB8fCBuIDw9IDApIHJldHVybiBmYWxsYmFjaztcblxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogbiB9LCAoXywgaSkgPT4gaSArIDEpO1xuICAgIH1cblxuICAgIHN0YXRpYyBzb3J0QnV0dG9uc0J5T3JkZXI8VCBleHRlbmRzIHsgb3JkZXI/OiBhbnkgfT4oXG4gICAgICAgIGJ1dHRvbnM/OiBBcnJheTxUIHwgdW5kZWZpbmVkIHwgbnVsbD4gfCBudWxsLFxuICAgICAgICBvcHRzPzogeyBrZWVwT3JpZ2luYWw/OiBib29sZWFuIH1cbiAgICApOiBUW10ge1xuICAgICAgICBjb25zdCBhcnIgPSAoYnV0dG9ucyA/PyBbXSkuZmlsdGVyKChiKTogYiBpcyBUID0+ICEhYik7XG4gICAgICAgIGlmICghYXJyLmxlbmd0aCkgcmV0dXJuIFtdO1xuXG4gICAgICAgIGNvbnN0IGxpc3QgPSBvcHRzPy5rZWVwT3JpZ2luYWwgPyBbLi4uYXJyXSA6IGFycjtcblxuICAgICAgICBjb25zdCB0b051bSA9ICh2OiBhbnkpOiBudW1iZXIgPT4ge1xuICAgICAgICAgICAgY29uc3QgbiA9IE51bWJlcih2KTtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobikgPyBuIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBsaXN0LnNvcnQoKGEsIGIpID0+IHRvTnVtKGEub3JkZXIpIC0gdG9OdW0oYi5vcmRlcikpO1xuICAgIH1cbn1cbiJdfQ==
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdsQyxNQUFNLE9BQU8sS0FBSztJQUNkLDhEQUE4RDtJQUM5RCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWE7UUFDN0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELGdGQUFnRjtJQUNoRixNQUFNLENBQUMsNEJBQTRCLENBQUMsR0FBUTtRQUN4QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNyRTthQUFNLElBQ0gsR0FBRztZQUNILE9BQU8sR0FBRyxLQUFLLFFBQVE7WUFDdkIsR0FBRyxDQUFDLFdBQVcsS0FBSyxNQUFNLEVBQzVCO1lBQ0UsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDL0QsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQyxFQUFFLEVBQVMsQ0FBQyxDQUFDO1NBQ2pCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFnQjtRQUNsQyxPQUFPLFFBQVEsS0FBSyxlQUFlLElBQUksUUFBUSxLQUFLLFVBQVU7WUFDMUQsQ0FBQyxDQUFDLFVBQVU7WUFDWixDQUFDLENBQUMsUUFBUSxLQUFLLGVBQWUsSUFBSSxRQUFRLEtBQUssVUFBVTtnQkFDdkQsQ0FBQyxDQUFDLFVBQVU7Z0JBQ1osQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FDaEIsSUFBd0IsRUFDeEIsSUFBWTtRQUVaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUM7WUFDcEUsRUFBRSxLQUFLLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBVTtRQUM3QixPQUFPLElBQUksT0FBTyxDQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBZ0IsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLElBQVk7UUFDN0IsT0FBTyxJQUFJO1lBQ1AsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsd0NBQXdDO1lBQzNELEVBQUUsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQjtZQUN4RCxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUNiLE1BQXNDLEVBQ3RDLFVBQW1CO1FBRW5CLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN2QixPQUFPLEtBQUssQ0FBQyxrQkFBa0IsQ0FDM0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ2hCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTTtnQkFDakIsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNO2dCQUNyQixHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLENBQUMsQ0FBRTtvQkFDRyxJQUFJLEVBQUUsVUFBVSxJQUFJLFNBQVM7b0JBQzdCLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxJQUFJLFNBQVM7b0JBQzlCLFFBQVEsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUMxQixHQUFHLEVBQUUsUUFBUSxJQUFJLEdBQUcsRUFBRSxTQUFTLENBQ2xDO29CQUNELEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRTt3QkFDUCxNQUFNLE9BQU8sR0FDVCxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUM7d0JBQ3BDLElBQUksT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTs0QkFDeEMsTUFBTSxZQUFZLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FDbEMsR0FBRyxDQUNOO2dDQUNHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDdEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQzs0QkFFZCxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0NBQ2xDLGlCQUFpQjtnQ0FDakIsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztvQ0FDbEMsQ0FBQyxDQUFDLFlBQVk7b0NBQ2QsQ0FBQyxDQUFDLE9BQU8sWUFBWSxFQUFFLENBQUM7NkJBQy9CO2lDQUFNLElBQ0gsNEJBQTRCLENBQUMsSUFBSSxDQUM3QixZQUFZLENBQ2YsRUFDSDtnQ0FDRSxlQUFlO2dDQUNmLE9BQU8sWUFBWSxDQUFDLFVBQVUsQ0FDMUIsU0FBUyxDQUNaO29DQUNHLENBQUMsQ0FBQyxZQUFZO29DQUNkLENBQUMsQ0FBQyxVQUFVLFlBQVksRUFBRSxDQUFDOzZCQUNsQzs0QkFFRCxPQUFPLFlBQVksQ0FBQzt5QkFDdkI7d0JBQ0QsT0FBTyxTQUFTLENBQUM7b0JBQ3JCLENBQUMsQ0FBQyxFQUFFO29CQUNKLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUztvQkFDaEQsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO29CQUM1QixJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUU7aUJBQ2Q7Z0JBQ3RCLENBQUMsQ0FBQyxTQUFTLENBQ2xCLEVBQ0QsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQ3pCLENBQUM7U0FDTDthQUFNO1lBQ0gsT0FBTyxTQUFTLENBQUM7U0FDcEI7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFXO1FBQzFCLE9BQU8sSUFBSSxVQUFVLENBQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNyQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNoRSxJQUFJLFFBQVEsRUFBRTtnQkFDVixRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsT0FBTzthQUNWO1lBRUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNqQixNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBRXBCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO2dCQUNqQixRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QixDQUFDLENBQUM7WUFFRixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3JCLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5RCxDQUFDLENBQUM7WUFFRixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLElBQVk7UUFDMUIsT0FBTyxJQUFJLFVBQVUsQ0FBVSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3hDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQ2hFLElBQUksUUFBUSxFQUFFO2dCQUNWLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsT0FBTzthQUNWO1lBRUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNqQixJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztZQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDZixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFFbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUM7Z0JBRXhCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QixDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTtnQkFDaEIsUUFBUSxDQUFDLEtBQUssQ0FDVixJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsSUFBSSxFQUFFLENBQUMsQ0FDdkQsQ0FBQztZQUNOLENBQUMsQ0FBQztZQUVGLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWhDLGdGQUFnRjtZQUNoRixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BELFFBQVEsQ0FBQyxTQUFTLEdBQUcsZ0NBQWdDLElBQUksSUFBSSxDQUFDO1lBQzlELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFXO1FBQy9CLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU87UUFFbEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDOUQsSUFBSSxHQUFHO1lBQUUsT0FBTztRQUVoQiw4QkFBOEI7UUFDOUIsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxHQUFHLEdBQUcscUJBQXFCLENBQUM7UUFDOUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNWLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQ3JCLEtBQXFCLEVBQ3JCLFdBQXFCLEVBQUU7UUFFdkIsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUU1QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxRQUFRLENBQUM7UUFFNUIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sUUFBUSxDQUFDO1FBRS9DLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUNyQixPQUE0QyxFQUM1QyxJQUFpQztRQUVqQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU07WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUzQixNQUFNLElBQUksR0FBRyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUVqRCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQU0sRUFBVSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBQzdELENBQUMsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWE7UUFDdkIsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7YUFDZixRQUFRLEVBQUU7YUFDVixJQUFJLEVBQUU7YUFDTixXQUFXLEVBQUU7YUFDYixTQUFTLENBQUMsS0FBSyxDQUFDO2FBQ2hCLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxlQUFlO2FBQy9DLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsV0FBVzthQUNoQyxPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QjthQUN0RCxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQjthQUNyQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLGNBQWM7YUFDbEMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtJQUN4RCxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFhLEVBQUUsSUFBaUI7UUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7WUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2YsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxLQUFhO1FBQ3ZDLCtCQUErQjtRQUMvQixJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVCLDREQUE0RDtRQUM1RCxnRUFBZ0U7UUFDaEUsSUFBSSxDQUFDLEtBQUssU0FBUztZQUFFLE9BQU8sT0FBTyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLGNBQWM7WUFBRSxPQUFPLGFBQWEsQ0FBQztRQUUvQyxzRUFBc0U7UUFDdEUsMkVBQTJFO1FBQzNFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4QyxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhYnlsb25CdXR0b25JLCBCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyB7XG4gICAgLy8gRnVuY2nDs24gcGFyYSBjb252ZXJ0aXIgdW5hIGNhZGVuYSBkZSBzbmFrZV9jYXNlIGEgY2FtZWxDYXNlXG4gICAgc3RhdGljIHNuYWtlVG9DYW1lbChzbmFrZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHNuYWtlLnJlcGxhY2UoLyhfXFx3KS9nLCAobWF0Y2hlcykgPT4gbWF0Y2hlc1sxXS50b1VwcGVyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICAvLyBGdW5jacOzbiBwYXJhIGNvbnZlcnRpciBsYXMgcHJvcGllZGFkZXMgZGUgdW4gb2JqZXRvIGRlIHNuYWtlX2Nhc2UgYSBjYW1lbENhc2VcbiAgICBzdGF0aWMgY29udmVydE9iamVjdEtleXNUb0NhbWVsQ2FzZShvYmo6IGFueSk6IGFueSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmoubWFwKChpdGVtKSA9PiB0aGlzLmNvbnZlcnRPYmplY3RLZXlzVG9DYW1lbENhc2UoaXRlbSkpO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgb2JqICYmXG4gICAgICAgICAgICB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgb2JqLmNvbnN0cnVjdG9yID09PSBPYmplY3RcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FtZWxLZXkgPSB0aGlzLnNuYWtlVG9DYW1lbChrZXkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdFtjYW1lbEtleV0gPSB0aGlzLmNvbnZlcnRPYmplY3RLZXlzVG9DYW1lbENhc2Uob2JqW2tleV0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9LCB7fSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgc3RhdGljIGZvcm1hdExpbmtUeXBlKGxpbmtUeXBlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gbGlua1R5cGUgPT09ICdleHRlcm5hbF9saW5rJyB8fCBsaW5rVHlwZSA9PT0gJ2V4dGVybmFsJ1xuICAgICAgICAgICAgPyAnZXh0ZXJuYWwnXG4gICAgICAgICAgICA6IGxpbmtUeXBlID09PSAnaW50ZXJuYWxfbGluaycgfHwgbGlua1R5cGUgPT09ICdpbnRlcm5hbCdcbiAgICAgICAgICAgICAgPyAnaW50ZXJuYWwnXG4gICAgICAgICAgICAgIDogbGlua1R5cGU7XG4gICAgfVxuXG4gICAgc3RhdGljIGZpbmRDb21wb25lbnQ8VD4oXG4gICAgICAgIGJvZHk6IEJvZHlDb21wb25lbnQ8VD5bXSxcbiAgICAgICAgbmFtZTogc3RyaW5nXG4gICAgKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBib2R5LmZpbmQoKGNvbXBvbmVudCkgPT4gY29tcG9uZW50Py5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lKVxuICAgICAgICAgICAgPy5wcm9wcztcbiAgICB9XG5cbiAgICBzdGF0aWMgY29udmVydFRvQmFzZTY0KGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0IGFzIHN0cmluZyk7XG4gICAgICAgICAgICByZWFkZXIub25lcnJvciA9IChlcnJvcikgPT4gcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIG5vcm1hbGl6ZVRleHQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRleHRcbiAgICAgICAgICAgID8ubm9ybWFsaXplKCdORkQnKSAvLyBEZXNjb21wb25lIGxvcyBjYXJhY3RlcmVzIGNvbiBhY2VudG9zXG4gICAgICAgICAgICA/LnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKSAvLyBFbGltaW5hIGxvcyBhY2VudG9zXG4gICAgICAgICAgICA/LnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgc3RhdGljIG1hcEJ1dHRvbnMoXG4gICAgICAgIGJ1dHRvbjogYW55IHwgYW55W10gfCB1bmRlZmluZWQgfCBudWxsLFxuICAgICAgICBidXR0b25UeXBlPzogc3RyaW5nXG4gICAgKTogKEJhYnlsb25CdXR0b25JIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnV0dG9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIFV0aWxzLnNvcnRCdXR0b25zQnlPcmRlcihcbiAgICAgICAgICAgICAgICBidXR0b24/Lm1hcCgoYnRuKSA9PlxuICAgICAgICAgICAgICAgICAgICBidG4ubGFiZWw/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgICAgICAgICBidG4ubGlua1ZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgYnRuLmxpbmtfdmFsdWU/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogYnV0dG9uVHlwZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYnRuPy5sYWJlbCA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogVXRpbHMuZm9ybWF0TGlua1R5cGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuPy5saW5rVHlwZSA/PyBidG4/LmxpbmtfdHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdMaW5rID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuLmxpbmtWYWx1ZSA/PyBidG4ubGlua192YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmF3TGluayAmJiB0eXBlb2YgcmF3TGluayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJpbW1lZFZhbHVlID0gcmF3TGluaz8uZW5kc1dpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByYXdMaW5rLnNsaWNlKDAsIC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdMaW5rO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvXlxcKz9bMC05XSskLy50ZXN0KHRyaW1tZWRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVzIHVuIHRlbMOpZm9ub1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyaW1tZWRWYWx1ZS5zdGFydHNXaXRoKCd0ZWw6JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRyaW1tZWRWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYHRlbDoke3RyaW1tZWRWYWx1ZX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC8udGVzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmltbWVkVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFcyB1biBjb3JyZW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmltbWVkVmFsdWUuc3RhcnRzV2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFpbHRvOidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRyaW1tZWRWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYG1haWx0bzoke3RyaW1tZWRWYWx1ZX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyaW1tZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBidG4uaWNvbiA/IGBpY29uLWAgKyBidG4/Lmljb24gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogYnRuLm9yZGVyPy50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyczogYnRuLmxpbmtWYXJzPy50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25CdXR0b25JKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHsga2VlcE9yaWdpbmFsOiB0cnVlIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGxvYWRTY3JpcHQkKHNyYzogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx2b2lkPigob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3NyYz1cIiR7c3JjfVwiXWApO1xuICAgICAgICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCgpO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgICAgIHNjcmlwdC5zcmMgPSBzcmM7XG4gICAgICAgICAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgICAgICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTtcbiAgICAgICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG5cbiAgICAgICAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCgpO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzY3JpcHQub25lcnJvciA9IChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihuZXcgRXJyb3IoYEVycm9yIGxvYWRpbmcgc2NyaXB0OiAke3NyY31gKSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBsb2FkU3R5bGUkKGhyZWY6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8Ym9vbGVhbj4oKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGxpbmtbaHJlZj1cIiR7aHJlZn1cIl1gKTtcbiAgICAgICAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgICAgICAgICBsaW5rLnJlbCA9ICdwcmVsb2FkJztcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IGhyZWY7XG4gICAgICAgICAgICBsaW5rLmFzID0gJ3N0eWxlJztcbiAgICAgICAgICAgIGxpbmsub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxpbmsub25sb2FkID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIGxpbmsucmVsID0gJ3N0eWxlc2hlZXQnO1xuXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGxpbmsub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgbmV3IEVycm9yKGBObyBzZSBwdWRvIHByZWNhcmdhciBlbCBlc3RpbG86ICR7aHJlZn1gKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuXG4gICAgICAgICAgICAvLyBvcGNpb25hbDogZmFsbGJhY2sgPG5vc2NyaXB0PiAobm8gbG8gbmVjZXNpdGEgQW5ndWxhciBwZXJvIGxvIHB1ZWRlcyBhZ3JlZ2FyKVxuICAgICAgICAgICAgY29uc3Qgbm9zY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdub3NjcmlwdCcpO1xuICAgICAgICAgICAgbm9zY3JpcHQuaW5uZXJIVE1MID0gYDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiJHtocmVmfVwiPmA7XG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG5vc2NyaXB0KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIHNhZmVPcGVuRXh0ZXJuYWwodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF1cmwpIHJldHVybjtcblxuICAgICAgICBjb25zdCB3aW4gPSB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuICAgICAgICBpZiAod2luKSByZXR1cm47XG5cbiAgICAgICAgLy8gRmFsbGJhY2sgc2kgYmxvcXVlYW4gcG9wdXBzXG4gICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGEuaHJlZiA9IHVybDtcbiAgICAgICAgYS50YXJnZXQgPSAnX2JsYW5rJztcbiAgICAgICAgYS5yZWwgPSAnbm9vcGVuZXIgbm9yZWZlcnJlcic7XG4gICAgICAgIGEuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgICAgICAgYS5jbGljaygpO1xuICAgICAgICBhLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBleHRyYWN0TnVtYmVyUmFuZ2UoXG4gICAgICAgIHZhbHVlPzogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgZmFsbGJhY2s6IG51bWJlcltdID0gW11cbiAgICApOiBudW1iZXJbXSB7XG4gICAgICAgIGlmICghdmFsdWUpIHJldHVybiBmYWxsYmFjaztcblxuICAgICAgICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKC9cXGQrLyk7XG4gICAgICAgIGlmICghbWF0Y2gpIHJldHVybiBmYWxsYmFjaztcblxuICAgICAgICBjb25zdCBuID0gTnVtYmVyKG1hdGNoWzBdKTtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihuKSB8fCBuIDw9IDApIHJldHVybiBmYWxsYmFjaztcblxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogbiB9LCAoXywgaSkgPT4gaSArIDEpO1xuICAgIH1cblxuICAgIHN0YXRpYyBzb3J0QnV0dG9uc0J5T3JkZXI8VCBleHRlbmRzIHsgb3JkZXI/OiBhbnkgfT4oXG4gICAgICAgIGJ1dHRvbnM/OiBBcnJheTxUIHwgdW5kZWZpbmVkIHwgbnVsbD4gfCBudWxsLFxuICAgICAgICBvcHRzPzogeyBrZWVwT3JpZ2luYWw/OiBib29sZWFuIH1cbiAgICApOiBUW10ge1xuICAgICAgICBjb25zdCBhcnIgPSAoYnV0dG9ucyA/PyBbXSkuZmlsdGVyKChiKTogYiBpcyBUID0+ICEhYik7XG4gICAgICAgIGlmICghYXJyLmxlbmd0aCkgcmV0dXJuIFtdO1xuXG4gICAgICAgIGNvbnN0IGxpc3QgPSBvcHRzPy5rZWVwT3JpZ2luYWwgPyBbLi4uYXJyXSA6IGFycjtcblxuICAgICAgICBjb25zdCB0b051bSA9ICh2OiBhbnkpOiBudW1iZXIgPT4ge1xuICAgICAgICAgICAgY29uc3QgbiA9IE51bWJlcih2KTtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobikgPyBuIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBsaXN0LnNvcnQoKGEsIGIpID0+IHRvTnVtKGEub3JkZXIpIC0gdG9OdW0oYi5vcmRlcikpO1xuICAgIH1cblxuICAgIHN0YXRpYyB0b1NsdWcoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAoaW5wdXQgPz8gJycpXG4gICAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpIC8vIHF1aXRhIHRpbGRlc1xuICAgICAgICAgICAgLnJlcGxhY2UoLyYvZywgJ2FuZCcpIC8vIG9wY2lvbmFsXG4gICAgICAgICAgICAucmVwbGFjZSgvW15hLXowLTlcXHMtXS9nLCAnJykgLy8gcXVpdGEgY2FyYWN0ZXJlcyByYXJvc1xuICAgICAgICAgICAgLnJlcGxhY2UoL1xccysvZywgJy0nKSAvLyBlc3BhY2lvcyAtPiAtXG4gICAgICAgICAgICAucmVwbGFjZSgvLSsvZywgJy0nKSAvLyBjb2xhcHNhIC0tLVxuICAgICAgICAgICAgLnJlcGxhY2UoL14tfC0kL2csICcnKTsgLy8gcXVpdGEgLSBhbCBpbmljaW8vZmluXG4gICAgfVxuXG4gICAgc3RhdGljIHVuaXF1ZVNsdWcobGFiZWw6IHN0cmluZywgdXNlZDogU2V0PHN0cmluZz4pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBiYXNlID0gdGhpcy50b1NsdWcobGFiZWwpIHx8ICdpdGVtJztcbiAgICAgICAgaWYgKCF1c2VkLmhhcyhiYXNlKSkge1xuICAgICAgICAgICAgdXNlZC5hZGQoYmFzZSk7XG4gICAgICAgICAgICByZXR1cm4gYmFzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpID0gMjtcbiAgICAgICAgd2hpbGUgKHVzZWQuaGFzKGAke2Jhc2V9LSR7aX1gKSkgaSsrO1xuICAgICAgICBjb25zdCBzbHVnID0gYCR7YmFzZX0tJHtpfWA7XG4gICAgICAgIHVzZWQuYWRkKHNsdWcpO1xuICAgICAgICByZXR1cm4gc2x1ZztcbiAgICB9XG5cbiAgICBzdGF0aWMgY2Fub25pY2FsSG90ZWxUeXBlU2x1ZyhsYWJlbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgLy8gc2x1ZyBiYXNlIChzaW4gdGlsZGVzL3Jhcm9zKVxuICAgICAgICBsZXQgcyA9IFV0aWxzLnRvU2x1ZyhsYWJlbCk7XG5cbiAgICAgICAgLy8gbm9ybWFsaXphIHBsdXJhbGVzIGNvbXVuZXMgRVMgKGhvdGVsKGVzKSwgYXBhcnRhbWVudG8ocykpXG4gICAgICAgIC8vIHB1ZWRlcyBhbXBsaWFyIGFxdcOtIHNpIHRpZW5lcyBcImFwYXJ0YW1lbnRvcyB0dXLDrXN0aWNvc1wiLCBldGMuXG4gICAgICAgIGlmIChzID09PSAnaG90ZWxlcycpIHJldHVybiAnaG90ZWwnO1xuICAgICAgICBpZiAocyA9PT0gJ2FwYXJ0YW1lbnRvcycpIHJldHVybiAnYXBhcnRhbWVudG8nO1xuXG4gICAgICAgIC8vIHJlZ2xhIGdlbsOpcmljYSBzdWF2ZTogc2kgdGVybWluYSBlbiAncycgeSBubyBlcyAnZG9zL3RyZXMvLi4uJyBldGMuXG4gICAgICAgIC8vIChldml0YSBjYXJnYXJ0ZSBjb3NhcyBjb21vIFwicG9vbHNcIiBzaSBleGlzdGllcmFuLCBwZXJvIGFxdcOtIGFwbGljYSBiaWVuKVxuICAgICAgICBpZiAocy5lbmRzV2l0aCgncycpKSBzID0gcy5zbGljZSgwLCAtMSk7XG5cbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxufVxuIl19
|