dmencu 2.2.16 → 2.3.0
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/dist/client/client/client.js +15 -14
- package/dist/client/unlogged/bypass-formulario.d.ts +0 -1
- package/dist/client/unlogged/bypass-formulario.js +19 -10
- package/dist/client/unlogged/redux-formulario.d.ts +2 -4
- package/dist/client/unlogged/redux-formulario.js +19 -24
- package/dist/client/unlogged/render-config.d.ts +14 -0
- package/dist/client/unlogged/render-config.js +25 -0
- package/dist/client/unlogged/render-formulario.tsx +7 -7
- package/dist/client/unlogged/render-init.d.ts +1 -0
- package/dist/client/unlogged/render-init.js +49 -0
- package/dist/server/server/app-dmencu.js +5 -1
- package/dist/unlogged/unlogged/bypass-formulario.d.ts +0 -1
- package/dist/unlogged/unlogged/bypass-formulario.js +19 -10
- package/dist/unlogged/unlogged/redux-formulario.d.ts +2 -4
- package/dist/unlogged/unlogged/redux-formulario.js +19 -24
- package/dist/unlogged/unlogged/render-config copy.d.ts +11 -0
- package/dist/unlogged/unlogged/render-config copy.js +22 -0
- package/dist/unlogged/unlogged/render-config.d.ts +14 -0
- package/dist/unlogged/unlogged/render-config.js +25 -0
- package/dist/unlogged/unlogged/render-formulario.js +8 -7
- package/dist/unlogged/unlogged/render-formulario.tsx +7 -7
- package/dist/unlogged/unlogged/render-init.d.ts +1 -0
- package/dist/unlogged/unlogged/render-init.js +49 -0
- package/dist/unlogged/unlogged/tipos copy.d.ts +0 -0
- package/dist/unlogged/unlogged/tipos copy.js +2 -0
- package/dist/unlogged/unlogged/unlogged.js +8 -6
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CasoState, EstadoCarga, ForPk, ForPkRaiz, IdCarga, IdVariable, IdOperativo, ModoDespliegue, IdEnc, IdTarea } from "./tipos";
|
|
1
|
+
import { CasoState, EstadoCarga, ForPk, ForPkRaiz, IdCarga, IdVariable, IdOperativo, ModoDespliegue, IdEnc, IdTarea, Estructura } from "./tipos";
|
|
2
2
|
import { ActionsFrom } from "redux-typed-reducer";
|
|
3
3
|
declare var reducers: {
|
|
4
4
|
MODO_DESPLIEGUE: (payload: {
|
|
@@ -286,9 +286,7 @@ export declare function gotoSincronizar(): void;
|
|
|
286
286
|
export declare function gotoCampo(): void;
|
|
287
287
|
export declare function gotoConsistir(operativo: IdOperativo, tarea: IdTarea, enc: IdEnc): void;
|
|
288
288
|
export declare function getCacheVersion(): any;
|
|
289
|
-
export declare function
|
|
290
|
-
operativo: string;
|
|
291
|
-
}): Promise<any>;
|
|
289
|
+
export declare function adaptarEstructura(estructuraBackend: any): Estructura;
|
|
292
290
|
export declare function dmTraerDatosFormulario(opts: {
|
|
293
291
|
operativo?: IdOperativo;
|
|
294
292
|
modoDemo: boolean;
|
|
@@ -24,7 +24,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
24
24
|
exports.gotoCampo = gotoCampo;
|
|
25
25
|
exports.gotoConsistir = gotoConsistir;
|
|
26
26
|
exports.getCacheVersion = getCacheVersion;
|
|
27
|
-
exports.
|
|
27
|
+
exports.adaptarEstructura = adaptarEstructura;
|
|
28
28
|
exports.dmTraerDatosFormulario = dmTraerDatosFormulario;
|
|
29
29
|
const redux_1 = require("redux");
|
|
30
30
|
const tipos_1 = require("./tipos");
|
|
@@ -244,28 +244,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
244
244
|
}, 1500);
|
|
245
245
|
}
|
|
246
246
|
};
|
|
247
|
-
function
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
};
|
|
265
|
-
}).plain();
|
|
266
|
-
estructura.formularios = casillerosTodosFormularios;
|
|
267
|
-
return estructura;
|
|
268
|
-
});
|
|
247
|
+
function adaptarEstructura(estructuraBackend) {
|
|
248
|
+
var estructura = estructuraBackend;
|
|
249
|
+
var casillerosOriginales = estructura.formularios;
|
|
250
|
+
var mainForm;
|
|
251
|
+
//@ts-ignore
|
|
252
|
+
var casillerosTodosFormularios = likeAr(casillerosOriginales).map((casillerosJerarquizados, idFormulario) => {
|
|
253
|
+
var casillerosAplanados = aplanarLaCurva(casillerosJerarquizados);
|
|
254
|
+
if (casillerosAplanados.tipoc == 'F' && casillerosAplanados.formulario_principal) {
|
|
255
|
+
mainForm = idFormulario;
|
|
256
|
+
}
|
|
257
|
+
return {
|
|
258
|
+
casilleros: casillerosAplanados,
|
|
259
|
+
estructuraRowValidator: generarEstructuraRowValidator(casillerosAplanados, idFormulario)
|
|
260
|
+
};
|
|
261
|
+
}).plain();
|
|
262
|
+
estructura.formularios = casillerosTodosFormularios;
|
|
263
|
+
return estructura;
|
|
269
264
|
}
|
|
270
265
|
function dmTraerDatosFormulario(opts) {
|
|
271
266
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -330,4 +325,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
330
325
|
});
|
|
331
326
|
}
|
|
332
327
|
});
|
|
333
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtZm9ybXVsYXJpby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTJTQSxrREFjQztJQUVELDBDQUdDO0lBRUQsOEJBR0M7SUFFRCxzQ0FLQztJQUVELDBDQUVDO0lBWUQsMENBdUJDO0lBRUQsd0RBNkRDO0lBaGJELGlDQUFvQztJQUNwQyxtQ0FXaUI7SUFDakIsNkRBQW9GO0lBQ3BGLGtDQUFrQztJQUNsQyw0Q0FBNEM7SUFDNUMscUNBQXFDO0lBSXJDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztJQUVmLE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUFDO0lBRTdDLFNBQVMsVUFBVSxDQUFDLEtBQW1CLEVBQUUsU0FBa0I7UUFDdkQsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRixLQUFLLENBQUMsaUJBQWlCLGlDQUNoQixVQUFVLEtBQ2IsV0FBVyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBQSxvQkFBWSxFQUFDLEtBQUssQ0FBQyxFQUN6RCxlQUFlLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUN4RCxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUksUUFBUSxHQUFHO1FBQ1gsZUFBZSxFQUFFLENBQUMsT0FBMkMsRUFBRSxFQUFFLENBQzdELFVBQVUsS0FBZ0I7WUFDdEIsdUNBQ08sS0FBSyxLQUNSLFFBQVEsa0NBQ0QsS0FBSyxDQUFDLFFBQVEsS0FDakIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLE9BRTdDO1FBQ0wsQ0FB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LENBQUM7b0JBQ0QsT0FBTyxZQUFZLENBQUM7Z0JBQ3hCLENBQUM7YUFBQSxDQUFBO1lBQ0QsSUFBSSxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsS0FBZ0I7Z0JBQy9DLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUE7WUFDRCw0QkFBNEI7WUFDNUIsSUFBSSxZQUFZLEdBQWMsTUFBTSxTQUFTLEVBQUUsQ0FBQztZQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFBLG1DQUFhLEVBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3pELGdDQUFnQztZQUNoQywrQkFBK0I7WUFDL0Isb0JBQW9CO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUEsbUJBQVcsRUFBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQ1osU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsd0JBQXdCO1lBQ3hCLHNCQUFzQjtZQUN0QixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0tBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gXCJyZWR1eFwiO1xyXG5pbXBvcnQge1xyXG4gICAgQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIENhc29TdGF0ZSxcclxuICAgIEVzdGFkb0NhcmdhLCBFc3RydWN0dXJhUm93VmFsaWRhdG9yLFxyXG4gICAgRm9ybXVsYXJpbywgRm9yUGssIEZvclBrUmFpeixcclxuICAgIElkQ2FyZ2EsIElkRGVzdGlubywgSWRGb3JtdWxhcmlvLCBJZFZhcmlhYmxlLCBJZE9wZXJhdGl2byxcclxuICAgIE1vZG9EZXNwbGllZ3VlLFxyXG4gICAgT3BjaW9uLFxyXG4gICAgdG9QbGFpbkZvclBrLFxyXG4gICAgSWRGaW4sXHJcbiAgICBJZEVuYyxcclxuICAgIElkVGFyZWEsXHJcbn0gZnJvbSBcIi4vdGlwb3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgY3JlYXRlRGlzcGF0Y2hlcnMsIEFjdGlvbnNGcm9tIH0gZnJvbSBcInJlZHV4LXR5cGVkLXJlZHVjZXJcIjtcclxuaW1wb3J0ICogYXMgbGlrZUFyIGZyb20gXCJsaWtlLWFyXCI7XHJcbmltcG9ydCAqIGFzIGJlc3RHbG9iYWxzIGZyb20gXCJiZXN0LWdsb2JhbHNcIjtcclxuaW1wb3J0ICogYXMgSlNPTjRhbGwgZnJvbSBcImpzb240YWxsXCI7XHJcblxyXG5pbXBvcnQgeyBPcGNpb24gYXMgUm93VmFsaWRhdG9yT3BjaW9uIH0gZnJvbSBcInJvdy12YWxpZGF0b3JcIjtcclxuXHJcbnZhciBteSA9IG15T3duO1xyXG5cclxuY29uc3QgTE9DQUxfU1RPUkFHRV9TVEFURV9OQU1FID0gJ2hkci1zdGF0ZSc7XHJcblxyXG5mdW5jdGlvbiBmb3JQa1RvVXJsKGZvclBrOiBGb3JQayB8IG51bGwsIHBpbGFGb3JQazogRm9yUGtbXSkge1xyXG4gICAgdmFyIGFkZHJQYXJhbXMgPSBteU93bi5VcmlTZWFyY2hUb09iamVjdChsb2NhdGlvbi5oYXNoIHx8IGxvY2F0aW9uLnNlYXJjaCB8fCAnJyk7XHJcbiAgICBteU93bi5yZXBsYWNlQWRkclBhcmFtcyh7XHJcbiAgICAgICAgLi4uYWRkclBhcmFtcyxcclxuICAgICAgICBzdGF0ZV9mb3JQazogZm9yUGsgPT0gbnVsbCA/ICdudWxsJyA6IHRvUGxhaW5Gb3JQayhmb3JQayksXHJcbiAgICAgICAgc3RhdGVfcGlsYUZvclBrOiBwaWxhRm9yUGsubWFwKHRvUGxhaW5Gb3JQaykuam9pbignfCcpXHJcbiAgICB9KTtcclxufVxyXG5cclxudmFyIHJlZHVjZXJzID0ge1xyXG4gICAgTU9ET19ERVNQTElFR1VFOiAocGF5bG9hZDogeyBtb2RvRGVzcGxpZWd1ZTogTW9kb0Rlc3BsaWVndWUgfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZG9EZXNwbGllZ3VlOiBwYXlsb2FkLm1vZG9EZXNwbGllZ3VlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgQ0FNQklBUl9GT1JNVUxBUklPOiAocGF5bG9hZDogeyBmb3JQazogRm9yUGssIGFwaWxhclZ1ZWx0YTogYm9vbGVhbiB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IHBheWxvYWQuZm9yUGs7XHJcbiAgICAgICAgICAgIHZhciBwaWxhRm9yUGsgPSBwYXlsb2FkLmFwaWxhclZ1ZWx0YSA/IChcclxuICAgICAgICAgICAgICAgIHN0YXRlLm9wY2lvbmVzLmZvclBrID09IG51bGwgPyBbXSA6IFsuLi5zdGF0ZS5vcGNpb25lcy5waWxhRm9yUGssIHN0YXRlLm9wY2lvbmVzLmZvclBrXVxyXG4gICAgICAgICAgICApIDogc3RhdGUub3BjaW9uZXMucGlsYUZvclBrO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIHBpbGFGb3JQa1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFZPTFZFUl9ERV9GT1JNVUxBUklPOiAoeyBtYWduaXR1ZFJldHJvY2VzbyB9OiB7IG1hZ25pdHVkUmV0cm9jZXNvOiBudW1iZXIgfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICB2YXIgZm9yUGsgPSBzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGtbc3RhdGUub3BjaW9uZXMucGlsYUZvclBrLmxlbmd0aCAtIG1hZ25pdHVkUmV0cm9jZXNvXSB8fCBudWxsO1xyXG4gICAgICAgICAgICB2YXIgcGlsYUZvclBrID0gc3RhdGUub3BjaW9uZXMucGlsYUZvclBrLnNsaWNlKDAsIHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQay5sZW5ndGggLSBtYWduaXR1ZFJldHJvY2Vzbyk7XHJcbiAgICAgICAgICAgIGZvclBrVG9VcmwoZm9yUGssIHBpbGFGb3JQayk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgRVNUQURPX0NBUkdBOiAoX3BheWxvYWQ6IHsgaWRDYXJnYTogSWRDYXJnYSwgZXN0YWRvX2NhcmdhOiBFc3RhZG9DYXJnYSB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZVxyXG4gICAgICAgICAgICAvL0RFU0FDVElWQURPXHJcbiAgICAgICAgICAgIC8vcmV0dXJuIHtcclxuICAgICAgICAgICAgLy8gICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgIC8vICAgIGRhdG9zOntcclxuICAgICAgICAgICAgLy8gICAgICAgIC4uLnN0YXRlLmRhdG9zLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgY2FyZ2FzOntcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAuLi5zdGF0ZS5kYXRvcy5jYXJnYXMsXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgW3BheWxvYWQuaWRDYXJnYV06IHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uc3RhdGUuZGF0b3MuY2FyZ2FzW3BheWxvYWQuaWRDYXJnYV0sXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIGVzdGFkb19jYXJnYTogcGF5bG9hZC5lc3RhZG9fY2FyZ2FcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vICAgIH1cclxuICAgICAgICAgICAgLy99XHJcbiAgICAgICAgfSxcclxuICAgIFZPTFZFUl9IRFI6IChfcGF5bG9hZDoge30pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgdmFyIGZvclBrID0gbnVsbDtcclxuICAgICAgICAgICAgdmFyIHBpbGFGb3JQazogRm9yUGtbXSA9IFtdO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIHBpbGFGb3JQa1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFNFVF9PUENJT046IChwYXlsb2FkOiB7IG9wY2lvbjoga2V5b2YgQ2Fzb1N0YXRlWydvcGNpb25lcyddLCB2YWxvcjogYW55IH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBbcGF5bG9hZC5vcGNpb25dOiBwYXlsb2FkLnZhbG9yXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgUkVTRVRfT1BDSU9ORVM6IChfcGF5bG9hZDoge30pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQazogbnVsbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFJFSU5JQ0lBUl9ERU1POiAoX3BheWxvYWQ6IHt9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIGlmICghc3RhdGUubW9kby5kZW1vKSByZXR1cm4gc3RhdGU7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgY29waW8gbG9zIGRhdG9zIGluaWNpYWxlc1xyXG4gICAgICAgICAgICAgICAgZGF0b3M6IGJlc3RHbG9iYWxzLmRlZXBDb3B5KHN0YXRlLm1vZG8uZGVtbylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBDT05GSVJNQVJfQk9SUkFSX1JFU1BVRVNUQTogKHBheWxvYWQ6IHsgZm9yUGs6IEZvclBrLCB2YXJpYWJsZTogSWRWYXJpYWJsZSB8IG51bGwgfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrOiBwYXlsb2FkLmZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6IHBheWxvYWQudmFyaWFibGVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFjdGlvbkZvcm11bGFyaW9TdGF0ZSA9IEFjdGlvbnNGcm9tPHR5cGVvZiByZWR1Y2Vycz47XHJcbi8qIEZJTiBBQ0NJT05FUyAqL1xyXG5cclxuZXhwb3J0IGNvbnN0IGRpc3BhdGNoZXJzID0gY3JlYXRlRGlzcGF0Y2hlcnMocmVkdWNlcnMpO1xyXG5cclxuaW50ZXJmYWNlIElEYXRhU2VwYXJhZGE8VCBleHRlbmRzIHsgdGlwb2M6IHN0cmluZyB9PiB7XHJcbiAgICBkYXRhOiBULFxyXG4gICAgY2hpbGRzOiBJRGF0YVNlcGFyYWRhPFQ+W11cclxufVxyXG5cclxudHlwZSBJRGF0YUNvbkNhc2lsbGVyb3M8VD4gPSBUICYge1xyXG4gICAgY2FzaWxsZXJvczogcmVhZG9ubHkgSURhdGFDb25DYXNpbGxlcm9zPFQ+W11cclxufVxyXG5cclxuY29uc3QgY2FzaWxsZXJvVmFjaW8gPSB7XHJcbiAgICBzYWx0bzogbnVsbCwgZGVzcGxpZWd1ZTogbnVsbCwgYWNsYXJhY2lvbjogbnVsbCwgdmVyX2lkOiBudWxsLCBjYXNpbGxlcm9zOiBbXSwgbGVlcjogbnVsbCxcclxuICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvOiBudWxsLCBkZXNwbGllZ3VlQ29udGVuaWRvOiBudWxsLCBkZXNwbGllZ3VlT2N1bHRhOiBudWxsLCBkZXNwbGllZ3VlVGlwb0lucHV0OiBudWxsXHJcbn1cclxuXHJcbmNvbnN0IG9wY2lvbmVzU2lObzogT3BjaW9uW10gPSBbXHJcbiAgICB7IC4uLmNhc2lsbGVyb1ZhY2lvLCBjYXNpbGxlcm86IDEsIHRpcG9jOiAnTycsIG5vbWJyZTogJ1PDrScgfSxcclxuICAgIHsgLi4uY2FzaWxsZXJvVmFjaW8sIGNhc2lsbGVybzogMiwgdGlwb2M6ICdPJywgbm9tYnJlOiAnTm8nIH0sXHJcbl1cclxuXHJcbnR5cGUgQ2FyYWNlcml6YWNpb25Fc3RhZG9Sb3dWYWxpZGF0b3IgPSB7XHJcbiAgICBjb3JyZWN0bzogYm9vbGVhbixcclxuICAgIGNvblZhbG9yOiBib29sZWFuIHwgbnVsbCwgLy8gbnVsbCA9IHVua25vd25cclxufVxyXG5cclxuZnVuY3Rpb24gYXBsYW5hckxhQ3VydmE8VCBleHRlbmRzIHsgdGlwb2M6IHN0cmluZywgZGVzcGxpZWd1ZT86IHN0cmluZyB9PihjYXNpbGxlcm9zRGF0YTogSURhdGFTZXBhcmFkYTxUPik6IElEYXRhQ29uQ2FzaWxsZXJvczxUIHwgT3BjaW9uPiB7XHJcbiAgICB2YXIgZGF0YSA9IGNhc2lsbGVyb3NEYXRhLmRhdGFcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZGF0YSxcclxuICAgICAgICBkZXNwbGllZ3VlQ29udGVuaWRvOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdob3Jpem9udGFsJykgPyAnaG9yaXpvbnRhbCcgOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCd2ZXJ0aWNhbCcpID8gJ3ZlcnRpY2FsJyA6IG51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZUVuY2FiZXphZG86IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ2xhdGVyYWwnKSA/ICdsYXRlcmFsJyA6IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ3N1cGVyaW9yJykgPyAnc3VwZXJpb3InIDogbnVsbCxcclxuICAgICAgICBkZXNwbGllZ3VlT2N1bHRhOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdvY3VsdGFyJykgPz8gbnVsbCxcclxuICAgICAgICBkZXNwbGllZ3VlVGlwb0lucHV0OiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCd0ZWxlZm9ubycpID8gJ3RlbCcgOiBudWxsLFxyXG4gICAgICAgIGNhc2lsbGVyb3M6ICFjYXNpbGxlcm9zRGF0YS5jaGlsZHMubGVuZ3RoICYmIGNhc2lsbGVyb3NEYXRhLmRhdGEudGlwb2MgPT0gJ09NJyA/IG9wY2lvbmVzU2lObyA6XHJcbiAgICAgICAgICAgIGNhc2lsbGVyb3NEYXRhLmNoaWxkcy5tYXAoY2FzaWxsZXJvID0+IGFwbGFuYXJMYUN1cnZhKGNhc2lsbGVybykpXHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIHR5cGUgQW55UmVmPFQgZXh0ZW5kcyB7fT49W1QsIGtleW9mIFRdO1xyXG5cclxuZnVuY3Rpb24gcmVsbGVuYXJWYXJpYWJsZXNZT3BjaW9uZXMoaWRGb3JtdWxhcmlvOiBJZEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmE6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IsIGNhc2lsbGVybzogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIHVuaWRhZEFuYWxpc2lzPzogc3RyaW5nIHwgbnVsbCxcclxuICAgIHN1Ym9yZGluYWRhVmFyPzogSWRWYXJpYWJsZSwgc3Vib3JkaW5hZGFWYWxvcj86IGFueVxyXG4pIHtcclxuICAgIGlmIChjYXNpbGxlcm8udmFyX25hbWUgIT0gbnVsbCB8fCBjYXNpbGxlcm8udGlwb2MgPT0gJ0ZJTFRSTycpIHtcclxuICAgICAgICB2YXIgdmFyX25hbWU6IElkVmFyaWFibGVcclxuICAgICAgICBpZiAoY2FzaWxsZXJvLnRpcG9jID09ICdGSUxUUk8nKSB7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgcG9uZ28gY29tbyBub21icmUgZGUgdmFyaWFibGUgZWwgZmlsdHJvO1xyXG4gICAgICAgICAgICB2YXJfbmFtZSA9IGNhc2lsbGVyby5jYXNpbGxlcm87XHJcbiAgICAgICAgfSBlbHNlIGlmIChjYXNpbGxlcm8udmFyX25hbWUuZW5kc1dpdGgoJyEnKSkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIGxhcyB2YXJpYWJsZXMgZXNwZWpvIHNvbiBsYXMgcXVlIHRlcm1pbmFuIGVuICFcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8udmFyX25hbWVfZXNwZWNpYWwucmVwbGFjZSgvISskLywgJycpO1xyXG4gICAgICAgICAgICBjYXNpbGxlcm8udmFyX25hbWUgPSB2YXJfbmFtZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YXJfbmFtZSA9IGNhc2lsbGVyby52YXJfbmFtZVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdmFyaWFibGVEZWYgPSB7XHJcbiAgICAgICAgICAgIHRpcG86IGNhc2lsbGVyby50aXBvYyA9PSAnRklMVFJPJyA/ICdmaWx0cm8nIDogY2FzaWxsZXJvLnRpcG9jID09ICdPTScgfHwgY2FzaWxsZXJvLnRpcG92YXIgPT0gJ3NpX25vJyA/ICdvcGNpb25lcycgOiBjYXNpbGxlcm8udGlwb3ZhcixcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBvcHRhdGl2byBwb2Ryw61hIG5vIGV4aXN0aXIsIHF1ZWRhcsOhIG51bGwuXHJcbiAgICAgICAgICAgIG9wdGF0aXZhOiBjYXNpbGxlcm8ub3B0YXRpdm8hLFxyXG4gICAgICAgICAgICBvcGNpb25lczogKGNhc2lsbGVyby50aXBvYyA9PSAnT00nIHx8IGNhc2lsbGVyby50aXBvdmFyID09ICdvcGNpb25lcycgfHwgY2FzaWxsZXJvLnRpcG92YXIgPT0gJ3NpX25vJyA/XHJcbiAgICAgICAgICAgICAgICBsaWtlQXIuY3JlYXRlSW5kZXgoY2FzaWxsZXJvLmNhc2lsbGVyb3MsICdjYXNpbGxlcm8nKSA6IHt9KSBhcyB1bmtub3duIGFzIHsgW2tleTogc3RyaW5nXTogUm93VmFsaWRhdG9yT3BjaW9uPElkVmFyaWFibGU+IH0sXHJcbiAgICAgICAgICAgIHNhbHRvOiBjYXNpbGxlcm8uc2FsdG8gYXMgSWRWYXJpYWJsZSxcclxuICAgICAgICAgICAgc2FsdG9Oc05yOiAnc2FsdG9fbnNfbmMnIGluIGNhc2lsbGVybyAmJiBjYXNpbGxlcm8uc2FsdG9fbnNfbmMgfHwgbnVsbCxcclxuICAgICAgICAgICAgZnVuY2lvbkhhYmlsaXRhcjogY2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJfanMsXHJcbiAgICAgICAgICAgIGZ1bmNpb25BdXRvSW5ncmVzYXI6IGNhc2lsbGVyby5leHByZXNpb25fYXV0b2luZ3Jlc2FyX2pzLFxyXG4gICAgICAgICAgICBjYWxjdWxhZGE6XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIC8vIFRPRE8uIEF2ZXJpZ3VhciBzaSBsYXMgcHJlZ3VudGFzIHkgZmlsdHJvcyBwdWVkZW4gdGVuZXIgdW5pZGFkIGRlIGFuw6FsaXNpc1xyXG4gICAgICAgICAgICAgICAgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpcyAmJiBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzICE9IHVuaWRhZEFuYWxpc2lzXHJcbiAgICAgICAgICAgICAgICB8fCBjYXNpbGxlcm8uY2FsY3VsYWRhLFxyXG4gICAgICAgICAgICBsaWJyZTogY2FzaWxsZXJvLmxpYnJlXHJcbiAgICAgICAgfSBhcyAodHlwZW9mIGVzdHJ1Y3R1cmEudmFyaWFibGVzKVtJZFZhcmlhYmxlXVxyXG4gICAgICAgIGlmIChzdWJvcmRpbmFkYVZhbG9yICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB2YXJpYWJsZURlZi5zdWJvcmRpbmFkYVZhciA9IHN1Ym9yZGluYWRhVmFyO1xyXG4gICAgICAgICAgICB2YXJpYWJsZURlZi5zdWJvcmRpbmFkYVZhbG9yID0gc3Vib3JkaW5hZGFWYWxvcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZXN0cnVjdHVyYS52YXJpYWJsZXNbdmFyX25hbWVdID0gdmFyaWFibGVEZWY7XHJcbiAgICB9IGVsc2UgaWYgKGNhc2lsbGVyby50aXBvYyA9PSAnQkYnKSB7XHJcbiAgICAgICAgLy8gdmFyIHZhcl9uYW1lID0gJyRCLkY6JytjYXNpbGxlcm8uc2FsdG8gYXMgSWRWYXJpYWJsZTsgICAgLy9vcmlnaW5hbFxyXG4gICAgICAgIHZhciBzYWx0b05vbWJyZSA9IGNhc2lsbGVyby5zYWx0byEuc3Vic3RyKDAsIDIpID09ICdGOicgPyBjYXNpbGxlcm8uc2FsdG8hLnNsaWNlKDIpIDogY2FzaWxsZXJvLnNhbHRvO1xyXG4gICAgICAgIGNvbnN0IHJlcXVpZXJlQWdyZWdhciA9IGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXMgJiYgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpcyAhPT0gdW5pZGFkQW5hbGlzaXNcclxuICAgICAgICBjYXNpbGxlcm8udmFyX25hbWVzX0JGID0gY2FzaWxsZXJvLnZhcl9uYW1lc19CRiB8fCBbXTtcclxuXHJcbiAgICAgICAgaWYgKHJlcXVpZXJlQWdyZWdhcikge1xyXG4gICAgICAgICAgICB2YXIgbmV3VmFyTmFtZUFncmVnYXIgPSAnJEIuRjonICsgc2FsdG9Ob21icmUgKyAnX2FncmVnYXInIGFzIElkVmFyaWFibGU7XHJcbiAgICAgICAgICAgIGNhc2lsbGVyby52YXJfbmFtZXNfQkYucHVzaChuZXdWYXJOYW1lQWdyZWdhcik7XHJcbiAgICAgICAgICAgIGVzdHJ1Y3R1cmEudmFyaWFibGVzW25ld1Zhck5hbWVBZ3JlZ2FyXSA9IHtcclxuICAgICAgICAgICAgICAgIHRpcG92YXI6ICdvcGNpb25lcycsXHJcbiAgICAgICAgICAgICAgICBjYXNpbGxlcm9zOiBbeyB0aXBvYzogJ08nLCBjYXNpbGxlcm86IDEsIG5vbWJyZTogJ3NpJyB9XSBhcyBPcGNpb25bXSwgLy8gc2UgdXNhIHBhcmEgcXVlIG5vIHNlYSBsaWJyZSB5IGVsIHJvd1ZhbGlkYXRvciBsYSB2ZWFcclxuICAgICAgICAgICAgfSBhcyBWYXJpYWJsZTtcclxuICAgICAgICAgICAgY2FzaWxsZXJvLnByaW1lcmFfdmFyaWFibGUgPSBuZXdWYXJOYW1lQWdyZWdhcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG5ld1Zhck5hbWUgPSAnJEIuRjonICsgc2FsdG9Ob21icmUgYXMgSWRWYXJpYWJsZTtcclxuICAgICAgICBjYXNpbGxlcm8udmFyX25hbWVzX0JGLnB1c2gobmV3VmFyTmFtZSlcclxuICAgICAgICBlc3RydWN0dXJhLnZhcmlhYmxlc1tuZXdWYXJOYW1lXSA9IHtcclxuICAgICAgICAgICAgdGlwb3ZhcjogJ29wY2lvbmVzJyxcclxuICAgICAgICAgICAgY2FzaWxsZXJvczogW3sgdGlwb2M6ICdPJywgY2FzaWxsZXJvOiAxLCBub21icmU6ICdzaScgfV0gYXMgT3BjaW9uW10sIC8vIHNlIHVzYSBwYXJhIHF1ZSBubyBzZWEgbGlicmUgeSBlbCByb3dWYWxpZGF0b3IgbGEgdmVhXHJcbiAgICAgICAgfSBhcyBWYXJpYWJsZTtcclxuICAgICAgICBjYXNpbGxlcm8ucHJpbWVyYV92YXJpYWJsZSA9IGNhc2lsbGVyby5wcmltZXJhX3ZhcmlhYmxlIHx8IG5ld1Zhck5hbWU7XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKGNhc2lsbGVyby5jYXNpbGxlcm9zKSB7XHJcbiAgICAgICAgY2FzaWxsZXJvLmNhc2lsbGVyb3MuZm9yRWFjaCgoY2FzaWxsZXJvSGlqbzogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MpID0+XHJcbiAgICAgICAgICAgIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbywgZXN0cnVjdHVyYSwgY2FzaWxsZXJvSGlqbywgdW5pZGFkQW5hbGlzaXMsIGNhc2lsbGVyby52YXJfbmFtZSA/IGNhc2lsbGVyby52YXJfbmFtZSA6IGNhc2lsbGVyby50aXBvYyA9PSAnTycgPyBzdWJvcmRpbmFkYVZhciA6IHVuZGVmaW5lZCwgY2FzaWxsZXJvLnRpcG9jID09ICdPJyA/IGNhc2lsbGVyby5jYXNpbGxlcm8gOiB1bmRlZmluZWQpXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG59XHJcblxyXG50eXBlIFJlZ2lzdHJvRGVzdGlub3MgPSB7IFtkZXN0aW5vIGluIElkRGVzdGlub106IElkVmFyaWFibGUgfCBudWxsIH07XHJcblxyXG5mdW5jdGlvbiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybzogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIGRlc3Rpbm9zPzogUmVnaXN0cm9EZXN0aW5vcyk6IFJlZ2lzdHJvRGVzdGlub3Mge1xyXG4gICAgaWYgKGRlc3Rpbm9zID09IG51bGwpIHJldHVybiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybywge30gYXMgUmVnaXN0cm9EZXN0aW5vcyk7XHJcbiAgICBpZiAoY2FzaWxsZXJvLnRpcG9jID09ICdGSUxUUk8nKSB7XHJcbiAgICAgICAgZGVzdGlub3NbY2FzaWxsZXJvLmNhc2lsbGVyb10gPSBjYXNpbGxlcm8uY2FzaWxsZXJvIGFzIElkVmFyaWFibGU7XHJcbiAgICB9IGVsc2UgaWYgKGNhc2lsbGVyby50aXBvYyAhPSAnRicgJiYgY2FzaWxsZXJvLnRpcG9jICE9ICdPJyAmJiBjYXNpbGxlcm8udGlwb2MgIT0gJ09NJykge1xyXG4gICAgICAgIGRlc3Rpbm9zW2Nhc2lsbGVyby5jYXNpbGxlcm9dID0gY2FzaWxsZXJvLnByaW1lcmFfdmFyaWFibGUgfHwgbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKGNhc2lsbGVyby5jYXNpbGxlcm9zKSB7XHJcbiAgICAgICAgY2FzaWxsZXJvLmNhc2lsbGVyb3MuZm9yRWFjaChjID0+IG9idGVuZXJEZXN0aW5vc0Nhc2lsbGVyb3MoYywgZGVzdGlub3MpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkZXN0aW5vcztcclxufVxyXG5cclxuZnVuY3Rpb24gcmVsbGVuYXJEZXN0aW5vcyhlc3RydWN0dXJhOiBFc3RydWN0dXJhUm93VmFsaWRhdG9yLCBkZXN0aW5vczogUmVnaXN0cm9EZXN0aW5vcyk6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3Ige1xyXG4gICAgZnVuY3Rpb24gb2J0ZW5lckRlc3Rpbm8oaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vOiBJZFZhcmlhYmxlIHwgbnVsbCB8IHVuZGVmaW5lZCB8IElkRmluKTogSWRWYXJpYWJsZSB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiBpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm8gPT0gJ2ZpbicgYXMgSWRWYXJpYWJsZSA/ICdmaW4nIGFzIElkVmFyaWFibGUgOiBpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm8gIT0gbnVsbCAmJiBkZXN0aW5vc1tpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm8gYXMgSWREZXN0aW5vXSB8fCBudWxsXHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmVzdHJ1Y3R1cmEsXHJcbiAgICAgICAgdmFyaWFibGVzOiBsaWtlQXIoZXN0cnVjdHVyYS52YXJpYWJsZXMpLm1hcCh2YXJpYWJsZURlZiA9PiAoe1xyXG4gICAgICAgICAgICAuLi52YXJpYWJsZURlZixcclxuICAgICAgICAgICAgc2FsdG86IG9idGVuZXJEZXN0aW5vKHZhcmlhYmxlRGVmLnNhbHRvKSxcclxuICAgICAgICAgICAgc2FsdG9Oc05yOiBvYnRlbmVyRGVzdGlubyh2YXJpYWJsZURlZi5zYWx0b05zTnIpLFxyXG4gICAgICAgICAgICBvcGNpb25lczogdmFyaWFibGVEZWYub3BjaW9uZXMgIT0gbnVsbCA/IGxpa2VBcih2YXJpYWJsZURlZi5vcGNpb25lcykubWFwKG9wY2lvbkRlZiA9PiAoeyBzYWx0bzogb2J0ZW5lckRlc3Rpbm8ob3BjaW9uRGVmLnNhbHRvKSB9KSkucGxhaW4oKSA6IHVuZGVmaW5lZFxyXG4gICAgICAgIH0pKS5wbGFpbigpXHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdlbmVyYXJFc3RydWN0dXJhUm93VmFsaWRhdG9yKGNhc2lsbGVybzogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIGlkRm9ybXVsYXJpbzogSWRGb3JtdWxhcmlvKTogRXN0cnVjdHVyYVJvd1ZhbGlkYXRvciB7XHJcbiAgICB2YXIgZXN0cnVjdHVyYUluY29tcGxldGE6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IgPSB7IHZhcmlhYmxlczoge30sIG1hcmNhRmluOiAnZmluJyB9IGFzIHVua25vd24gYXMgRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjtcclxuICAgIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbywgZXN0cnVjdHVyYUluY29tcGxldGEsIGNhc2lsbGVybyxcclxuICAgICAgICAvLyBAdHMtaWdub3JlIHZlciBzaSBjdWFscXVpZXIgY29zYSBwdWVkZSB0ZW5lciB1bmlkYWRfYW5hbGlzaXNcclxuICAgICAgICBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzXHJcbiAgICApO1xyXG4gICAgdmFyIGRlc3Rpbm9zID0gb2J0ZW5lckRlc3Rpbm9zQ2FzaWxsZXJvcyhjYXNpbGxlcm8pO1xyXG4gICAgcmV0dXJuIHJlbGxlbmFyRGVzdGlub3MoZXN0cnVjdHVyYUluY29tcGxldGEsIGRlc3Rpbm9zKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VTcGVjaWFsV29yZHModGV4dDogc3RyaW5nLCBub21icmU6IHN0cmluZywgYXBlbGxpZG86IHN0cmluZywgcmVzdWx0YWRvOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0ZXh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGV4dC5zbGljZSgxKTtcclxuICAgIH1cclxuICAgIHZhciBzaW1wbGlmaWNhdGVkQ2hhcnM6IHsgW2s6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gICAgICAgIFwiI25vbWJyZVwiOiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIobm9tYnJlKSxcclxuICAgICAgICBcIiNhcGVsbGlkb1wiOiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoYXBlbGxpZG8pLFxyXG4gICAgICAgIFwiI3Jlc3VsdGFkb1wiOiByZXN1bHRhZG8sXHJcbiAgICB9O1xyXG4gICAgdmFyIHJlID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhzaW1wbGlmaWNhdGVkQ2hhcnMpLmpvaW4oXCJ8XCIpLCBcImdpXCIpO1xyXG5cclxuICAgIHJldHVybiB0ZXh0LnJlcGxhY2UocmUsIGZ1bmN0aW9uIChtYXRjaGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIHNpbXBsaWZpY2F0ZWRDaGFyc1ttYXRjaGVkLnRvTG93ZXJDYXNlKCldO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvU2luY3Jvbml6YXIoKSB7XHJcbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luICsgbG9jYXRpb24ucGF0aG5hbWV9Ly4uL21lbnUjaT1zaW5jcm9uaXphcmApO1xyXG4gICAgbG9jYXRpb24ucmVsb2FkKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvQ2FtcG8oKSB7XHJcbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luICsgbG9jYXRpb24ucGF0aG5hbWV9Ly4uL2NhbXBvYCk7XHJcbiAgICBsb2NhdGlvbi5yZWxvYWQoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdvdG9Db25zaXN0aXIob3BlcmF0aXZvOiBJZE9wZXJhdGl2bywgdGFyZWE6IElkVGFyZWEsIGVuYzogSWRFbmMpIHtcclxuICAgIC8vIFRPRE8tMjAyMy0wMzogcHJvYmFyIGNvbiBlc3RvOlxyXG4gICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAke2xvY2F0aW9uLm9yaWdpbiArIGxvY2F0aW9uLnBhdGhuYW1lfS8uLi9tZW51I3c9Y29uc2lzdGlyX2VuY3Vlc3RhJnVwPSR7SlNPTjRhbGwudG9VcmwoeyBvcGVyYXRpdm8sIHRhcmVhLCBlbmMgfSl9JmF1dG9wcm9jZWQ9dHJ1ZWApO1xyXG4gICAgLy8gaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAke2xvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZX0vLi4vbWVudSN3PWNvbnNpc3Rpcl9lbmN1ZXN0YSZ1cD17XCJvcGVyYXRpdm9cIjpcIiR7b3BlcmF0aXZvfVwiLFwidGFyZWFcIjpcIiR7dGFyZWF9XCIsXCJlbmN1ZXN0YVwiOiR7ZW5jdWVzdGF9fSZhdXRvcHJvY2VkPXRydWVgKTtcclxuICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FjaGVWZXJzaW9uKCkge1xyXG4gICAgcmV0dXJuIG15LmdldExvY2FsVmFyKCdhcHAtY2FjaGUtdmVyc2lvbicpO1xyXG59XHJcblxyXG52YXIgcmVkaXJlY3RJZk5vdExvZ2dlZCA9IGZ1bmN0aW9uIHJlZGlyZWN0SWZOb3RMb2dnZWQoZXJyOiBFcnJvcikge1xyXG4gICAgaWYgKGVyci5tZXNzYWdlID09IG15Lm1lc3NhZ2VzLm5vdExvZ2dlZCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luICsgbG9jYXRpb24ucGF0aG5hbWV9Ly4uL2xvZ2luJHtsb2NhdGlvbi5oYXNofWApO1xyXG4gICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgICAgICB9LCAxNTAwKVxyXG5cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyYWVyRXN0cnVjdHVyYShwYXJhbXM6IHsgb3BlcmF0aXZvOiBzdHJpbmcgfSkge1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmEgPSBhd2FpdCBteS5hamF4Lm9wZXJhdGl2b19lc3RydWN0dXJhX2NvbXBsZXRhKHBhcmFtcyk7XHJcbiAgICB2YXIgY2FzaWxsZXJvc09yaWdpbmFsZXM6IHt9ID0gZXN0cnVjdHVyYS5mb3JtdWxhcmlvcztcclxuICAgIC8vVE9ETzogR0VORVJBTElaQVJcclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgLy8gY2FzaWxsZXJvc09yaWdpbmFsZXNbJ0Y6RjJfcGVyc29uYXMnXT1jYXNpbGxlcm9zT3JpZ2luYWxlc1snRjpGMiddLmNoaWxkcy5maW5kKGNhc2lsbGVybz0+Y2FzaWxsZXJvLmRhdGEuY2FzaWxsZXJvPT0nTFAnKTtcclxuICAgIHZhciBtYWluRm9ybTogSWRGb3JtdWxhcmlvIHwgdW5kZWZpbmVkO1xyXG4gICAgLy9AdHMtaWdub3JlXHJcbiAgICB2YXIgY2FzaWxsZXJvc1RvZG9zRm9ybXVsYXJpb3M6IHsgW2YgaW4gSWRGb3JtdWxhcmlvXTogeyBjYXNpbGxlcm9zOiBGb3JtdWxhcmlvLCBlc3RydWN0dXJhUm93VmFsaWRhdG9yOiBFc3RydWN0dXJhUm93VmFsaWRhdG9yIH0gfSA9XHJcbiAgICAgICAgbGlrZUFyKGNhc2lsbGVyb3NPcmlnaW5hbGVzKS5tYXAoXHJcbiAgICAgICAgICAgIChjYXNpbGxlcm9zSmVyYXJxdWl6YWRvczogYW55LCBpZEZvcm11bGFyaW8pID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciBjYXNpbGxlcm9zQXBsYW5hZG9zOiBDYXNpbGxlcm9zSW1wbGVtZW50YWRvcyA9IGFwbGFuYXJMYUN1cnZhKGNhc2lsbGVyb3NKZXJhcnF1aXphZG9zKTtcclxuICAgICAgICAgICAgICAgIGlmIChjYXNpbGxlcm9zQXBsYW5hZG9zLnRpcG9jID09ICdGJyAmJiBjYXNpbGxlcm9zQXBsYW5hZG9zLmZvcm11bGFyaW9fcHJpbmNpcGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFpbkZvcm0gPSBpZEZvcm11bGFyaW87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2lsbGVyb3M6IGNhc2lsbGVyb3NBcGxhbmFkb3MsXHJcbiAgICAgICAgICAgICAgICAgICAgZXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjogZ2VuZXJhckVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IoY2FzaWxsZXJvc0FwbGFuYWRvcywgaWRGb3JtdWxhcmlvKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKS5wbGFpbigpO1xyXG4gICAgZXN0cnVjdHVyYS5mb3JtdWxhcmlvcyA9IGNhc2lsbGVyb3NUb2Rvc0Zvcm11bGFyaW9zXHJcbiAgICByZXR1cm4gZXN0cnVjdHVyYTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRtVHJhZXJEYXRvc0Zvcm11bGFyaW8ob3B0czogeyBvcGVyYXRpdm8/OiBJZE9wZXJhdGl2bywgbW9kb0RlbW86IGJvb2xlYW4sIGZvclBrUmFpej86IEZvclBrUmFpeiB9KSB7XHJcbiAgICB2YXIgZ2V0Q2Fzb1N0YXRlID0gKCk6IENhc29TdGF0ZSA9PiBteU93bi5nZXRMb2NhbFZhcihMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUpO1xyXG4gICAgdmFyIHNldENhc29TdGF0ZSA9IChjYXNvU3RhdGU6IENhc29TdGF0ZSkgPT4gbXlPd24uc2V0TG9jYWxWYXIoTE9DQUxfU1RPUkFHRV9TVEFURV9OQU1FLCBjYXNvU3RhdGUpO1xyXG5cclxuICAgIHZhciBsb2FkU3RhdGUgPSBhc3luYyBmdW5jdGlvbiBsb2FkU3RhdGUoKTogUHJvbWlzZTxDYXNvU3RhdGU+IHtcclxuICAgICAgICB2YXIgY2Fzb1N0YXRlOiBDYXNvU3RhdGUgfCBudWxsID0gZ2V0Q2Fzb1N0YXRlKCk7XHJcbiAgICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9IHtcclxuICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgIGZvclBrOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgcGlsYUZvclBrOiBbXSxcclxuICAgICAgICAgICAgICAgIG1vZG9EZXNwbGllZ3VlOiAncmVsZXZhbWllbnRvJyxcclxuICAgICAgICAgICAgICAgIG1vZG9EaXJlY3RvOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGNvbkNhbXBvT3BjaW9uZXM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc2FsdG9BdXRvbWF0aWNvOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYmllbnZlbmlkbzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6IG51bGwsXHJcbiAgICAgICAgICAgIH0gYXMgQ2Fzb1N0YXRlW1wib3BjaW9uZXNcIl0sIC8vIHBvbmVyIGxvcyB2YWxvcmVzIHBvciBkZWZlY3RvIG3DoXMgYWJham9cclxuICAgICAgICAgICAgbW9kbzoge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlIGVzIHVuIGJvb2xlYW5vIHBlcm8gcG9uZ28gYWjDrSBsb3MgZGF0b3MgZGUgZGVtbyFcclxuICAgICAgICAgICAgICAgIGRlbW86XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIG15T3duLmNvbmZpZy5jb25maWcuYW1iaWVudGUgPT0gJ3Rlc3QnIHx8IG15T3duLmNvbmZpZy5jb25maWcuYW1iaWVudGUgPT0gJ2RlbW8nLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBhcyBDYXNvU3RhdGU7XHJcbiAgICAgICAgaWYgKGNhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi5pbml0aWFsU3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczogY2Fzb1N0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvcHRzLmZvclBrUmFpeikge1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMuZm9yUGsgPSBvcHRzLmZvclBrUmFpejtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLm1vZG9EaXJlY3RvID0gISFvcHRzLmZvclBrUmFpejtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQayA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYWRkclBhcmFtcyA9IG15T3duLlVyaVNlYXJjaFRvT2JqZWN0KGxvY2F0aW9uLmhhc2ggfHwgbG9jYXRpb24uc2VhcmNoIHx8ICcnKTtcclxuICAgICAgICBpZiAoYWRkclBhcmFtcy5zdGF0ZV9mb3JQaykge1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMuZm9yUGsgPSBKU09OLnBhcnNlKGFkZHJQYXJhbXMuc3RhdGVfZm9yUGspO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYWRkclBhcmFtcy5zdGF0ZV9waWxhRm9yUGspIHtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQayA9IChhZGRyUGFyYW1zLnN0YXRlX3BpbGFGb3JQayBhcyBzdHJpbmcpLnNwbGl0KCd8JykubWFwKGogPT4gSlNPTjRhbGwucGFyc2UoaikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaW5pdGlhbFN0YXRlO1xyXG4gICAgfVxyXG4gICAgdmFyIHNhdmVTdGF0ZSA9IGZ1bmN0aW9uIHNhdmVTdGF0ZShzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgc2V0Q2Fzb1N0YXRlKHN0YXRlKTtcclxuICAgIH1cclxuICAgIC8qIERFRklOSUNJT04gQ09OVFJPTEFET1IgKi9cclxuICAgIHZhciBpbml0aWFsU3RhdGU6IENhc29TdGF0ZSA9IGF3YWl0IGxvYWRTdGF0ZSgpO1xyXG4gICAgY29uc3QgaGRyUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIocmVkdWNlcnMsIGluaXRpYWxTdGF0ZSk7XHJcbiAgICAvKiBGSU4gREVGSU5JQ0lPTiBDT05UUk9MQURPUiAqL1xyXG4gICAgLyogQ0FSR0EgWSBHVUFSREFETyBERSBTVEFURSAqL1xyXG4gICAgLyogQ1JFQUNJT04gU1RPUkUgKi9cclxuICAgIGNvbnN0IHN0b3JlID0gY3JlYXRlU3RvcmUoaGRyUmVkdWNlciwgaW5pdGlhbFN0YXRlKTtcclxuICAgIHNhdmVTdGF0ZShzdG9yZS5nZXRTdGF0ZSgpKTtcclxuICAgIHN0b3JlLnN1YnNjcmliZShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgc2F2ZVN0YXRlKHN0b3JlLmdldFN0YXRlKCkpO1xyXG4gICAgfSk7XHJcbiAgICAvKiBGSU4gQ1JFQUNJT04gU1RPUkUgKi9cclxuICAgIC8vSERSIENPTiBTVE9SRSBDUkVBRE9cclxuICAgIHJldHVybiBzdG9yZTtcclxufSJdfQ==
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtZm9ybXVsYXJpby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTRTQSxrREFjQztJQUVELDBDQUdDO0lBRUQsOEJBR0M7SUFFRCxzQ0FLQztJQUVELDBDQUVDO0lBWUQsOENBb0JDO0lBRUQsd0RBNkRDO0lBOWFELGlDQUFvQztJQUNwQyxtQ0FZaUI7SUFDakIsNkRBQW9GO0lBQ3BGLGtDQUFrQztJQUNsQyw0Q0FBNEM7SUFDNUMscUNBQXFDO0lBSXJDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztJQUVmLE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUFDO0lBRTdDLFNBQVMsVUFBVSxDQUFDLEtBQW1CLEVBQUUsU0FBa0I7UUFDdkQsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRixLQUFLLENBQUMsaUJBQWlCLGlDQUNoQixVQUFVLEtBQ2IsV0FBVyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBQSxvQkFBWSxFQUFDLEtBQUssQ0FBQyxFQUN6RCxlQUFlLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUN4RCxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUksUUFBUSxHQUFHO1FBQ1gsZUFBZSxFQUFFLENBQUMsT0FBMkMsRUFBRSxFQUFFLENBQzdELFVBQVUsS0FBZ0I7WUFDdEIsdUNBQ08sS0FBSyxLQUNSLFFBQVEsa0NBQ0QsS0FBSyxDQUFDLFFBQVEsS0FDakIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLE9BRTdDO1FBQ0wsQ0FB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S0FBZ0I7Z0JBQy9DLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUE7WUFDRCw0QkFBNEI7WUFDNUIsSUFBSSxZQUFZLEdBQWMsTUFBTSxTQUFTLEVBQUUsQ0FBQztZQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFBLG1DQUFhLEVBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3pELGdDQUFnQztZQUNoQywrQkFBK0I7WUFDL0Isb0JBQW9CO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUEsbUJBQVcsRUFBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQ1osU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsd0JBQXdCO1lBQ3hCLHNCQUFzQjtZQUN0QixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0tBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gXCJyZWR1eFwiO1xyXG5pbXBvcnQge1xyXG4gICAgQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIENhc29TdGF0ZSxcclxuICAgIEVzdGFkb0NhcmdhLCBFc3RydWN0dXJhUm93VmFsaWRhdG9yLFxyXG4gICAgRm9ybXVsYXJpbywgRm9yUGssIEZvclBrUmFpeixcclxuICAgIElkQ2FyZ2EsIElkRGVzdGlubywgSWRGb3JtdWxhcmlvLCBJZFZhcmlhYmxlLCBJZE9wZXJhdGl2byxcclxuICAgIE1vZG9EZXNwbGllZ3VlLFxyXG4gICAgT3BjaW9uLFxyXG4gICAgdG9QbGFpbkZvclBrLFxyXG4gICAgSWRGaW4sXHJcbiAgICBJZEVuYyxcclxuICAgIElkVGFyZWEsXHJcbiAgICBFc3RydWN0dXJhLFxyXG59IGZyb20gXCIuL3RpcG9zXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVJlZHVjZXIsIGNyZWF0ZURpc3BhdGNoZXJzLCBBY3Rpb25zRnJvbSB9IGZyb20gXCJyZWR1eC10eXBlZC1yZWR1Y2VyXCI7XHJcbmltcG9ydCAqIGFzIGxpa2VBciBmcm9tIFwibGlrZS1hclwiO1xyXG5pbXBvcnQgKiBhcyBiZXN0R2xvYmFscyBmcm9tIFwiYmVzdC1nbG9iYWxzXCI7XHJcbmltcG9ydCAqIGFzIEpTT040YWxsIGZyb20gXCJqc29uNGFsbFwiO1xyXG5cclxuaW1wb3J0IHsgT3BjaW9uIGFzIFJvd1ZhbGlkYXRvck9wY2lvbiB9IGZyb20gXCJyb3ctdmFsaWRhdG9yXCI7XHJcblxyXG52YXIgbXkgPSBteU93bjtcclxuXHJcbmNvbnN0IExPQ0FMX1NUT1JBR0VfU1RBVEVfTkFNRSA9ICdoZHItc3RhdGUnO1xyXG5cclxuZnVuY3Rpb24gZm9yUGtUb1VybChmb3JQazogRm9yUGsgfCBudWxsLCBwaWxhRm9yUGs6IEZvclBrW10pIHtcclxuICAgIHZhciBhZGRyUGFyYW1zID0gbXlPd24uVXJpU2VhcmNoVG9PYmplY3QobG9jYXRpb24uaGFzaCB8fCBsb2NhdGlvbi5zZWFyY2ggfHwgJycpO1xyXG4gICAgbXlPd24ucmVwbGFjZUFkZHJQYXJhbXMoe1xyXG4gICAgICAgIC4uLmFkZHJQYXJhbXMsXHJcbiAgICAgICAgc3RhdGVfZm9yUGs6IGZvclBrID09IG51bGwgPyAnbnVsbCcgOiB0b1BsYWluRm9yUGsoZm9yUGspLFxyXG4gICAgICAgIHN0YXRlX3BpbGFGb3JQazogcGlsYUZvclBrLm1hcCh0b1BsYWluRm9yUGspLmpvaW4oJ3wnKVxyXG4gICAgfSk7XHJcbn1cclxuXHJcbnZhciByZWR1Y2VycyA9IHtcclxuICAgIE1PRE9fREVTUExJRUdVRTogKHBheWxvYWQ6IHsgbW9kb0Rlc3BsaWVndWU6IE1vZG9EZXNwbGllZ3VlIH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBtb2RvRGVzcGxpZWd1ZTogcGF5bG9hZC5tb2RvRGVzcGxpZWd1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENBTUJJQVJfRk9STVVMQVJJTzogKHBheWxvYWQ6IHsgZm9yUGs6IEZvclBrLCBhcGlsYXJWdWVsdGE6IGJvb2xlYW4gfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICB2YXIgZm9yUGsgPSBwYXlsb2FkLmZvclBrO1xyXG4gICAgICAgICAgICB2YXIgcGlsYUZvclBrID0gcGF5bG9hZC5hcGlsYXJWdWVsdGEgPyAoXHJcbiAgICAgICAgICAgICAgICBzdGF0ZS5vcGNpb25lcy5mb3JQayA9PSBudWxsID8gW10gOiBbLi4uc3RhdGUub3BjaW9uZXMucGlsYUZvclBrLCBzdGF0ZS5vcGNpb25lcy5mb3JQa11cclxuICAgICAgICAgICAgKSA6IHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQaztcclxuICAgICAgICAgICAgZm9yUGtUb1VybChmb3JQaywgcGlsYUZvclBrKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQayxcclxuICAgICAgICAgICAgICAgICAgICBwaWxhRm9yUGtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBWT0xWRVJfREVfRk9STVVMQVJJTzogKHsgbWFnbml0dWRSZXRyb2Nlc28gfTogeyBtYWduaXR1ZFJldHJvY2VzbzogbnVtYmVyIH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgdmFyIGZvclBrID0gc3RhdGUub3BjaW9uZXMucGlsYUZvclBrW3N0YXRlLm9wY2lvbmVzLnBpbGFGb3JQay5sZW5ndGggLSBtYWduaXR1ZFJldHJvY2Vzb10gfHwgbnVsbDtcclxuICAgICAgICAgICAgdmFyIHBpbGFGb3JQayA9IHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQay5zbGljZSgwLCBzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsubGVuZ3RoIC0gbWFnbml0dWRSZXRyb2Nlc28pO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIHBpbGFGb3JQa1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIEVTVEFET19DQVJHQTogKF9wYXlsb2FkOiB7IGlkQ2FyZ2E6IElkQ2FyZ2EsIGVzdGFkb19jYXJnYTogRXN0YWRvQ2FyZ2EgfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gc3RhdGVcclxuICAgICAgICAgICAgLy9ERVNBQ1RJVkFET1xyXG4gICAgICAgICAgICAvL3JldHVybiB7XHJcbiAgICAgICAgICAgIC8vICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAvLyAgICBkYXRvczp7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAuLi5zdGF0ZS5kYXRvcyxcclxuICAgICAgICAgICAgLy8gICAgICAgIGNhcmdhczp7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgLi4uc3RhdGUuZGF0b3MuY2FyZ2FzLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgIFtwYXlsb2FkLmlkQ2FyZ2FdOiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIC4uLnN0YXRlLmRhdG9zLmNhcmdhc1twYXlsb2FkLmlkQ2FyZ2FdLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICBlc3RhZG9fY2FyZ2E6IHBheWxvYWQuZXN0YWRvX2NhcmdhXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyAgICB9XHJcbiAgICAgICAgICAgIC8vfVxyXG4gICAgICAgIH0sXHJcbiAgICBWT0xWRVJfSERSOiAoX3BheWxvYWQ6IHt9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IG51bGw7XHJcbiAgICAgICAgICAgIHZhciBwaWxhRm9yUGs6IEZvclBrW10gPSBbXTtcclxuICAgICAgICAgICAgZm9yUGtUb1VybChmb3JQaywgcGlsYUZvclBrKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQayxcclxuICAgICAgICAgICAgICAgICAgICBwaWxhRm9yUGtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBTRVRfT1BDSU9OOiAocGF5bG9hZDogeyBvcGNpb246IGtleW9mIENhc29TdGF0ZVsnb3BjaW9uZXMnXSwgdmFsb3I6IGFueSB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgW3BheWxvYWQub3BjaW9uXTogcGF5bG9hZC52YWxvclxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFJFU0VUX09QQ0lPTkVTOiAoX3BheWxvYWQ6IHt9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGs6IG51bGxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBSRUlOSUNJQVJfREVNTzogKF9wYXlsb2FkOiB7fSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICBpZiAoIXN0YXRlLm1vZG8uZGVtbykgcmV0dXJuIHN0YXRlO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIGNvcGlvIGxvcyBkYXRvcyBpbmljaWFsZXNcclxuICAgICAgICAgICAgICAgIGRhdG9zOiBiZXN0R2xvYmFscy5kZWVwQ29weShzdGF0ZS5tb2RvLmRlbW8pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgQ09ORklSTUFSX0JPUlJBUl9SRVNQVUVTVEE6IChwYXlsb2FkOiB7IGZvclBrOiBGb3JQaywgdmFyaWFibGU6IElkVmFyaWFibGUgfCBudWxsIH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQazogcGF5bG9hZC5mb3JQayxcclxuICAgICAgICAgICAgICAgICAgICBtb2RvQm9ycmFyUmVzcHVlc3RhOiBwYXlsb2FkLnZhcmlhYmxlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBY3Rpb25Gb3JtdWxhcmlvU3RhdGUgPSBBY3Rpb25zRnJvbTx0eXBlb2YgcmVkdWNlcnM+O1xyXG4vKiBGSU4gQUNDSU9ORVMgKi9cclxuXHJcbmV4cG9ydCBjb25zdCBkaXNwYXRjaGVycyA9IGNyZWF0ZURpc3BhdGNoZXJzKHJlZHVjZXJzKTtcclxuXHJcbmludGVyZmFjZSBJRGF0YVNlcGFyYWRhPFQgZXh0ZW5kcyB7IHRpcG9jOiBzdHJpbmcgfT4ge1xyXG4gICAgZGF0YTogVCxcclxuICAgIGNoaWxkczogSURhdGFTZXBhcmFkYTxUPltdXHJcbn1cclxuXHJcbnR5cGUgSURhdGFDb25DYXNpbGxlcm9zPFQ+ID0gVCAmIHtcclxuICAgIGNhc2lsbGVyb3M6IHJlYWRvbmx5IElEYXRhQ29uQ2FzaWxsZXJvczxUPltdXHJcbn1cclxuXHJcbmNvbnN0IGNhc2lsbGVyb1ZhY2lvID0ge1xyXG4gICAgc2FsdG86IG51bGwsIGRlc3BsaWVndWU6IG51bGwsIGFjbGFyYWNpb246IG51bGwsIHZlcl9pZDogbnVsbCwgY2FzaWxsZXJvczogW10sIGxlZXI6IG51bGwsXHJcbiAgICBkZXNwbGllZ3VlRW5jYWJlemFkbzogbnVsbCwgZGVzcGxpZWd1ZUNvbnRlbmlkbzogbnVsbCwgZGVzcGxpZWd1ZU9jdWx0YTogbnVsbCwgZGVzcGxpZWd1ZVRpcG9JbnB1dDogbnVsbFxyXG59XHJcblxyXG5jb25zdCBvcGNpb25lc1NpTm86IE9wY2lvbltdID0gW1xyXG4gICAgeyAuLi5jYXNpbGxlcm9WYWNpbywgY2FzaWxsZXJvOiAxLCB0aXBvYzogJ08nLCBub21icmU6ICdTw60nIH0sXHJcbiAgICB7IC4uLmNhc2lsbGVyb1ZhY2lvLCBjYXNpbGxlcm86IDIsIHRpcG9jOiAnTycsIG5vbWJyZTogJ05vJyB9LFxyXG5dXHJcblxyXG50eXBlIENhcmFjZXJpemFjaW9uRXN0YWRvUm93VmFsaWRhdG9yID0ge1xyXG4gICAgY29ycmVjdG86IGJvb2xlYW4sXHJcbiAgICBjb25WYWxvcjogYm9vbGVhbiB8IG51bGwsIC8vIG51bGwgPSB1bmtub3duXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFwbGFuYXJMYUN1cnZhPFQgZXh0ZW5kcyB7IHRpcG9jOiBzdHJpbmcsIGRlc3BsaWVndWU/OiBzdHJpbmcgfT4oY2FzaWxsZXJvc0RhdGE6IElEYXRhU2VwYXJhZGE8VD4pOiBJRGF0YUNvbkNhc2lsbGVyb3M8VCB8IE9wY2lvbj4ge1xyXG4gICAgdmFyIGRhdGEgPSBjYXNpbGxlcm9zRGF0YS5kYXRhXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmRhdGEsXHJcbiAgICAgICAgZGVzcGxpZWd1ZUNvbnRlbmlkbzogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnaG9yaXpvbnRhbCcpID8gJ2hvcml6b250YWwnIDogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygndmVydGljYWwnKSA/ICd2ZXJ0aWNhbCcgOiBudWxsLFxyXG4gICAgICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdsYXRlcmFsJykgPyAnbGF0ZXJhbCcgOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdzdXBlcmlvcicpID8gJ3N1cGVyaW9yJyA6IG51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZU9jdWx0YTogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnb2N1bHRhcicpID8/IG51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZVRpcG9JbnB1dDogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygndGVsZWZvbm8nKSA/ICd0ZWwnIDogbnVsbCxcclxuICAgICAgICBjYXNpbGxlcm9zOiAhY2FzaWxsZXJvc0RhdGEuY2hpbGRzLmxlbmd0aCAmJiBjYXNpbGxlcm9zRGF0YS5kYXRhLnRpcG9jID09ICdPTScgPyBvcGNpb25lc1NpTm8gOlxyXG4gICAgICAgICAgICBjYXNpbGxlcm9zRGF0YS5jaGlsZHMubWFwKGNhc2lsbGVybyA9PiBhcGxhbmFyTGFDdXJ2YShjYXNpbGxlcm8pKVxyXG4gICAgfVxyXG59XHJcblxyXG4vLyB0eXBlIEFueVJlZjxUIGV4dGVuZHMge30+PVtULCBrZXlvZiBUXTtcclxuXHJcbmZ1bmN0aW9uIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbzogSWRGb3JtdWxhcmlvLCBlc3RydWN0dXJhOiBFc3RydWN0dXJhUm93VmFsaWRhdG9yLCBjYXNpbGxlcm86IENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zLCB1bmlkYWRBbmFsaXNpcz86IHN0cmluZyB8IG51bGwsXHJcbiAgICBzdWJvcmRpbmFkYVZhcj86IElkVmFyaWFibGUsIHN1Ym9yZGluYWRhVmFsb3I/OiBhbnlcclxuKSB7XHJcbiAgICBpZiAoY2FzaWxsZXJvLnZhcl9uYW1lICE9IG51bGwgfHwgY2FzaWxsZXJvLnRpcG9jID09ICdGSUxUUk8nKSB7XHJcbiAgICAgICAgdmFyIHZhcl9uYW1lOiBJZFZhcmlhYmxlXHJcbiAgICAgICAgaWYgKGNhc2lsbGVyby50aXBvYyA9PSAnRklMVFJPJykge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIHBvbmdvIGNvbW8gbm9tYnJlIGRlIHZhcmlhYmxlIGVsIGZpbHRybztcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8uY2FzaWxsZXJvO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY2FzaWxsZXJvLnZhcl9uYW1lLmVuZHNXaXRoKCchJykpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBsYXMgdmFyaWFibGVzIGVzcGVqbyBzb24gbGFzIHF1ZSB0ZXJtaW5hbiBlbiAhXHJcbiAgICAgICAgICAgIHZhcl9uYW1lID0gY2FzaWxsZXJvLnZhcl9uYW1lX2VzcGVjaWFsLnJlcGxhY2UoLyErJC8sICcnKTtcclxuICAgICAgICAgICAgY2FzaWxsZXJvLnZhcl9uYW1lID0gdmFyX25hbWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8udmFyX25hbWVcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHZhcmlhYmxlRGVmID0ge1xyXG4gICAgICAgICAgICB0aXBvOiBjYXNpbGxlcm8udGlwb2MgPT0gJ0ZJTFRSTycgPyAnZmlsdHJvJyA6IGNhc2lsbGVyby50aXBvYyA9PSAnT00nIHx8IGNhc2lsbGVyby50aXBvdmFyID09ICdzaV9ubycgPyAnb3BjaW9uZXMnIDogY2FzaWxsZXJvLnRpcG92YXIsXHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgb3B0YXRpdm8gcG9kcsOtYSBubyBleGlzdGlyLCBxdWVkYXLDoSBudWxsLlxyXG4gICAgICAgICAgICBvcHRhdGl2YTogY2FzaWxsZXJvLm9wdGF0aXZvISxcclxuICAgICAgICAgICAgb3BjaW9uZXM6IChjYXNpbGxlcm8udGlwb2MgPT0gJ09NJyB8fCBjYXNpbGxlcm8udGlwb3ZhciA9PSAnb3BjaW9uZXMnIHx8IGNhc2lsbGVyby50aXBvdmFyID09ICdzaV9ubycgP1xyXG4gICAgICAgICAgICAgICAgbGlrZUFyLmNyZWF0ZUluZGV4KGNhc2lsbGVyby5jYXNpbGxlcm9zLCAnY2FzaWxsZXJvJykgOiB7fSkgYXMgdW5rbm93biBhcyB7IFtrZXk6IHN0cmluZ106IFJvd1ZhbGlkYXRvck9wY2lvbjxJZFZhcmlhYmxlPiB9LFxyXG4gICAgICAgICAgICBzYWx0bzogY2FzaWxsZXJvLnNhbHRvIGFzIElkVmFyaWFibGUsXHJcbiAgICAgICAgICAgIHNhbHRvTnNOcjogJ3NhbHRvX25zX25jJyBpbiBjYXNpbGxlcm8gJiYgY2FzaWxsZXJvLnNhbHRvX25zX25jIHx8IG51bGwsXHJcbiAgICAgICAgICAgIGZ1bmNpb25IYWJpbGl0YXI6IGNhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyX2pzLFxyXG4gICAgICAgICAgICBmdW5jaW9uQXV0b0luZ3Jlc2FyOiBjYXNpbGxlcm8uZXhwcmVzaW9uX2F1dG9pbmdyZXNhcl9qcyxcclxuICAgICAgICAgICAgY2FsY3VsYWRhOlxyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSAvLyBUT0RPLiBBdmVyaWd1YXIgc2kgbGFzIHByZWd1bnRhcyB5IGZpbHRyb3MgcHVlZGVuIHRlbmVyIHVuaWRhZCBkZSBhbsOhbGlzaXNcclxuICAgICAgICAgICAgICAgIGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXMgJiYgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpcyAhPSB1bmlkYWRBbmFsaXNpc1xyXG4gICAgICAgICAgICAgICAgfHwgY2FzaWxsZXJvLmNhbGN1bGFkYSxcclxuICAgICAgICAgICAgbGlicmU6IGNhc2lsbGVyby5saWJyZVxyXG4gICAgICAgIH0gYXMgKHR5cGVvZiBlc3RydWN0dXJhLnZhcmlhYmxlcylbSWRWYXJpYWJsZV1cclxuICAgICAgICBpZiAoc3Vib3JkaW5hZGFWYWxvciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdmFyaWFibGVEZWYuc3Vib3JkaW5hZGFWYXIgPSBzdWJvcmRpbmFkYVZhcjtcclxuICAgICAgICAgICAgdmFyaWFibGVEZWYuc3Vib3JkaW5hZGFWYWxvciA9IHN1Ym9yZGluYWRhVmFsb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVzdHJ1Y3R1cmEudmFyaWFibGVzW3Zhcl9uYW1lXSA9IHZhcmlhYmxlRGVmO1xyXG4gICAgfSBlbHNlIGlmIChjYXNpbGxlcm8udGlwb2MgPT0gJ0JGJykge1xyXG4gICAgICAgIC8vIHZhciB2YXJfbmFtZSA9ICckQi5GOicrY2FzaWxsZXJvLnNhbHRvIGFzIElkVmFyaWFibGU7ICAgIC8vb3JpZ2luYWxcclxuICAgICAgICB2YXIgc2FsdG9Ob21icmUgPSBjYXNpbGxlcm8uc2FsdG8hLnN1YnN0cigwLCAyKSA9PSAnRjonID8gY2FzaWxsZXJvLnNhbHRvIS5zbGljZSgyKSA6IGNhc2lsbGVyby5zYWx0bztcclxuICAgICAgICBjb25zdCByZXF1aWVyZUFncmVnYXIgPSBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzICYmIGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXMgIT09IHVuaWRhZEFuYWxpc2lzXHJcbiAgICAgICAgY2FzaWxsZXJvLnZhcl9uYW1lc19CRiA9IGNhc2lsbGVyby52YXJfbmFtZXNfQkYgfHwgW107XHJcblxyXG4gICAgICAgIGlmIChyZXF1aWVyZUFncmVnYXIpIHtcclxuICAgICAgICAgICAgdmFyIG5ld1Zhck5hbWVBZ3JlZ2FyID0gJyRCLkY6JyArIHNhbHRvTm9tYnJlICsgJ19hZ3JlZ2FyJyBhcyBJZFZhcmlhYmxlO1xyXG4gICAgICAgICAgICBjYXNpbGxlcm8udmFyX25hbWVzX0JGLnB1c2gobmV3VmFyTmFtZUFncmVnYXIpO1xyXG4gICAgICAgICAgICBlc3RydWN0dXJhLnZhcmlhYmxlc1tuZXdWYXJOYW1lQWdyZWdhcl0gPSB7XHJcbiAgICAgICAgICAgICAgICB0aXBvdmFyOiAnb3BjaW9uZXMnLFxyXG4gICAgICAgICAgICAgICAgY2FzaWxsZXJvczogW3sgdGlwb2M6ICdPJywgY2FzaWxsZXJvOiAxLCBub21icmU6ICdzaScgfV0gYXMgT3BjaW9uW10sIC8vIHNlIHVzYSBwYXJhIHF1ZSBubyBzZWEgbGlicmUgeSBlbCByb3dWYWxpZGF0b3IgbGEgdmVhXHJcbiAgICAgICAgICAgIH0gYXMgVmFyaWFibGU7XHJcbiAgICAgICAgICAgIGNhc2lsbGVyby5wcmltZXJhX3ZhcmlhYmxlID0gbmV3VmFyTmFtZUFncmVnYXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBuZXdWYXJOYW1lID0gJyRCLkY6JyArIHNhbHRvTm9tYnJlIGFzIElkVmFyaWFibGU7XHJcbiAgICAgICAgY2FzaWxsZXJvLnZhcl9uYW1lc19CRi5wdXNoKG5ld1Zhck5hbWUpXHJcbiAgICAgICAgZXN0cnVjdHVyYS52YXJpYWJsZXNbbmV3VmFyTmFtZV0gPSB7XHJcbiAgICAgICAgICAgIHRpcG92YXI6ICdvcGNpb25lcycsXHJcbiAgICAgICAgICAgIGNhc2lsbGVyb3M6IFt7IHRpcG9jOiAnTycsIGNhc2lsbGVybzogMSwgbm9tYnJlOiAnc2knIH1dIGFzIE9wY2lvbltdLCAvLyBzZSB1c2EgcGFyYSBxdWUgbm8gc2VhIGxpYnJlIHkgZWwgcm93VmFsaWRhdG9yIGxhIHZlYVxyXG4gICAgICAgIH0gYXMgVmFyaWFibGU7XHJcbiAgICAgICAgY2FzaWxsZXJvLnByaW1lcmFfdmFyaWFibGUgPSBjYXNpbGxlcm8ucHJpbWVyYV92YXJpYWJsZSB8fCBuZXdWYXJOYW1lO1xyXG5cclxuICAgIH1cclxuICAgIGlmIChjYXNpbGxlcm8uY2FzaWxsZXJvcykge1xyXG4gICAgICAgIGNhc2lsbGVyby5jYXNpbGxlcm9zLmZvckVhY2goKGNhc2lsbGVyb0hpam86IENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zKSA9PlxyXG4gICAgICAgICAgICByZWxsZW5hclZhcmlhYmxlc1lPcGNpb25lcyhpZEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmEsIGNhc2lsbGVyb0hpam8sIHVuaWRhZEFuYWxpc2lzLCBjYXNpbGxlcm8udmFyX25hbWUgPyBjYXNpbGxlcm8udmFyX25hbWUgOiBjYXNpbGxlcm8udGlwb2MgPT0gJ08nID8gc3Vib3JkaW5hZGFWYXIgOiB1bmRlZmluZWQsIGNhc2lsbGVyby50aXBvYyA9PSAnTycgPyBjYXNpbGxlcm8uY2FzaWxsZXJvIDogdW5kZWZpbmVkKVxyXG4gICAgICAgIClcclxuICAgIH1cclxufVxyXG5cclxudHlwZSBSZWdpc3Ryb0Rlc3Rpbm9zID0geyBbZGVzdGlubyBpbiBJZERlc3Rpbm9dOiBJZFZhcmlhYmxlIHwgbnVsbCB9O1xyXG5cclxuZnVuY3Rpb24gb2J0ZW5lckRlc3Rpbm9zQ2FzaWxsZXJvcyhjYXNpbGxlcm86IENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zLCBkZXN0aW5vcz86IFJlZ2lzdHJvRGVzdGlub3MpOiBSZWdpc3Ryb0Rlc3Rpbm9zIHtcclxuICAgIGlmIChkZXN0aW5vcyA9PSBudWxsKSByZXR1cm4gb2J0ZW5lckRlc3Rpbm9zQ2FzaWxsZXJvcyhjYXNpbGxlcm8sIHt9IGFzIFJlZ2lzdHJvRGVzdGlub3MpO1xyXG4gICAgaWYgKGNhc2lsbGVyby50aXBvYyA9PSAnRklMVFJPJykge1xyXG4gICAgICAgIGRlc3Rpbm9zW2Nhc2lsbGVyby5jYXNpbGxlcm9dID0gY2FzaWxsZXJvLmNhc2lsbGVybyBhcyBJZFZhcmlhYmxlO1xyXG4gICAgfSBlbHNlIGlmIChjYXNpbGxlcm8udGlwb2MgIT0gJ0YnICYmIGNhc2lsbGVyby50aXBvYyAhPSAnTycgJiYgY2FzaWxsZXJvLnRpcG9jICE9ICdPTScpIHtcclxuICAgICAgICBkZXN0aW5vc1tjYXNpbGxlcm8uY2FzaWxsZXJvXSA9IGNhc2lsbGVyby5wcmltZXJhX3ZhcmlhYmxlIHx8IG51bGxcclxuICAgIH1cclxuICAgIGlmIChjYXNpbGxlcm8uY2FzaWxsZXJvcykge1xyXG4gICAgICAgIGNhc2lsbGVyby5jYXNpbGxlcm9zLmZvckVhY2goYyA9PiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGMsIGRlc3Rpbm9zKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVzdGlub3M7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlbGxlbmFyRGVzdGlub3MoZXN0cnVjdHVyYTogRXN0cnVjdHVyYVJvd1ZhbGlkYXRvciwgZGVzdGlub3M6IFJlZ2lzdHJvRGVzdGlub3MpOiBFc3RydWN0dXJhUm93VmFsaWRhdG9yIHtcclxuICAgIGZ1bmN0aW9uIG9idGVuZXJEZXN0aW5vKGlkVmFyaWFibGVRdWVUaWVuZVVuRGVzdGlubzogSWRWYXJpYWJsZSB8IG51bGwgfCB1bmRlZmluZWQgfCBJZEZpbik6IElkVmFyaWFibGUgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vID09ICdmaW4nIGFzIElkVmFyaWFibGUgPyAnZmluJyBhcyBJZFZhcmlhYmxlIDogaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vICE9IG51bGwgJiYgZGVzdGlub3NbaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vIGFzIElkRGVzdGlub10gfHwgbnVsbFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5lc3RydWN0dXJhLFxyXG4gICAgICAgIHZhcmlhYmxlczogbGlrZUFyKGVzdHJ1Y3R1cmEudmFyaWFibGVzKS5tYXAodmFyaWFibGVEZWYgPT4gKHtcclxuICAgICAgICAgICAgLi4udmFyaWFibGVEZWYsXHJcbiAgICAgICAgICAgIHNhbHRvOiBvYnRlbmVyRGVzdGlubyh2YXJpYWJsZURlZi5zYWx0byksXHJcbiAgICAgICAgICAgIHNhbHRvTnNOcjogb2J0ZW5lckRlc3Rpbm8odmFyaWFibGVEZWYuc2FsdG9Oc05yKSxcclxuICAgICAgICAgICAgb3BjaW9uZXM6IHZhcmlhYmxlRGVmLm9wY2lvbmVzICE9IG51bGwgPyBsaWtlQXIodmFyaWFibGVEZWYub3BjaW9uZXMpLm1hcChvcGNpb25EZWYgPT4gKHsgc2FsdG86IG9idGVuZXJEZXN0aW5vKG9wY2lvbkRlZi5zYWx0bykgfSkpLnBsYWluKCkgOiB1bmRlZmluZWRcclxuICAgICAgICB9KSkucGxhaW4oKVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZW5lcmFyRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcihjYXNpbGxlcm86IENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zLCBpZEZvcm11bGFyaW86IElkRm9ybXVsYXJpbyk6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3Ige1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmFJbmNvbXBsZXRhOiBFc3RydWN0dXJhUm93VmFsaWRhdG9yID0geyB2YXJpYWJsZXM6IHt9LCBtYXJjYUZpbjogJ2ZpbicgfSBhcyB1bmtub3duIGFzIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I7XHJcbiAgICByZWxsZW5hclZhcmlhYmxlc1lPcGNpb25lcyhpZEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmFJbmNvbXBsZXRhLCBjYXNpbGxlcm8sXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZSB2ZXIgc2kgY3VhbHF1aWVyIGNvc2EgcHVlZGUgdGVuZXIgdW5pZGFkX2FuYWxpc2lzXHJcbiAgICAgICAgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpc1xyXG4gICAgKTtcclxuICAgIHZhciBkZXN0aW5vcyA9IG9idGVuZXJEZXN0aW5vc0Nhc2lsbGVyb3MoY2FzaWxsZXJvKTtcclxuICAgIHJldHVybiByZWxsZW5hckRlc3Rpbm9zKGVzdHJ1Y3R1cmFJbmNvbXBsZXRhLCBkZXN0aW5vcyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlU3BlY2lhbFdvcmRzKHRleHQ6IHN0cmluZywgbm9tYnJlOiBzdHJpbmcsIGFwZWxsaWRvOiBzdHJpbmcsIHJlc3VsdGFkbzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGZ1bmN0aW9uIGNhcGl0YWxpemVGaXJzdExldHRlcih0ZXh0OiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleHQuc2xpY2UoMSk7XHJcbiAgICB9XHJcbiAgICB2YXIgc2ltcGxpZmljYXRlZENoYXJzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgICAgICBcIiNub21icmVcIjogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKG5vbWJyZSksXHJcbiAgICAgICAgXCIjYXBlbGxpZG9cIjogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGFwZWxsaWRvKSxcclxuICAgICAgICBcIiNyZXN1bHRhZG9cIjogcmVzdWx0YWRvLFxyXG4gICAgfTtcclxuICAgIHZhciByZSA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMoc2ltcGxpZmljYXRlZENoYXJzKS5qb2luKFwifFwiKSwgXCJnaVwiKTtcclxuXHJcbiAgICByZXR1cm4gdGV4dC5yZXBsYWNlKHJlLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xyXG4gICAgICAgIHJldHVybiBzaW1wbGlmaWNhdGVkQ2hhcnNbbWF0Y2hlZC50b0xvd2VyQ2FzZSgpXTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ290b1NpbmNyb25pemFyKCkge1xyXG4gICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAke2xvY2F0aW9uLm9yaWdpbiArIGxvY2F0aW9uLnBhdGhuYW1lfS8uLi9tZW51I2k9c2luY3Jvbml6YXJgKTtcclxuICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ290b0NhbXBvKCkge1xyXG4gICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAke2xvY2F0aW9uLm9yaWdpbiArIGxvY2F0aW9uLnBhdGhuYW1lfS8uLi9jYW1wb2ApO1xyXG4gICAgbG9jYXRpb24ucmVsb2FkKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvQ29uc2lzdGlyKG9wZXJhdGl2bzogSWRPcGVyYXRpdm8sIHRhcmVhOiBJZFRhcmVhLCBlbmM6IElkRW5jKSB7XHJcbiAgICAvLyBUT0RPLTIwMjMtMDM6IHByb2JhciBjb24gZXN0bzpcclxuICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4gKyBsb2NhdGlvbi5wYXRobmFtZX0vLi4vbWVudSN3PWNvbnNpc3Rpcl9lbmN1ZXN0YSZ1cD0ke0pTT040YWxsLnRvVXJsKHsgb3BlcmF0aXZvLCB0YXJlYSwgZW5jIH0pfSZhdXRvcHJvY2VkPXRydWVgKTtcclxuICAgIC8vIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL21lbnUjdz1jb25zaXN0aXJfZW5jdWVzdGEmdXA9e1wib3BlcmF0aXZvXCI6XCIke29wZXJhdGl2b31cIixcInRhcmVhXCI6XCIke3RhcmVhfVwiLFwiZW5jdWVzdGFcIjoke2VuY3Vlc3RhfX0mYXV0b3Byb2NlZD10cnVlYCk7XHJcbiAgICBsb2NhdGlvbi5yZWxvYWQoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENhY2hlVmVyc2lvbigpIHtcclxuICAgIHJldHVybiBteS5nZXRMb2NhbFZhcignYXBwLWNhY2hlLXZlcnNpb24nKTtcclxufVxyXG5cclxudmFyIHJlZGlyZWN0SWZOb3RMb2dnZWQgPSBmdW5jdGlvbiByZWRpcmVjdElmTm90TG9nZ2VkKGVycjogRXJyb3IpIHtcclxuICAgIGlmIChlcnIubWVzc2FnZSA9PSBteS5tZXNzYWdlcy5ub3RMb2dnZWQpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAke2xvY2F0aW9uLm9yaWdpbiArIGxvY2F0aW9uLnBhdGhuYW1lfS8uLi9sb2dpbiR7bG9jYXRpb24uaGFzaH1gKTtcclxuICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICAgICAgfSwgMTUwMClcclxuXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGFwdGFyRXN0cnVjdHVyYShlc3RydWN0dXJhQmFja2VuZDphbnkpIHtcclxuICAgIHZhciBlc3RydWN0dXJhOiBFc3RydWN0dXJhID0gZXN0cnVjdHVyYUJhY2tlbmQ7XHJcbiAgICB2YXIgY2FzaWxsZXJvc09yaWdpbmFsZXM6IHt9ID0gZXN0cnVjdHVyYS5mb3JtdWxhcmlvcztcclxuICAgIHZhciBtYWluRm9ybTogSWRGb3JtdWxhcmlvIHwgdW5kZWZpbmVkO1xyXG4gICAgLy9AdHMtaWdub3JlXHJcbiAgICB2YXIgY2FzaWxsZXJvc1RvZG9zRm9ybXVsYXJpb3M6IHsgW2YgaW4gSWRGb3JtdWxhcmlvXTogeyBjYXNpbGxlcm9zOiBGb3JtdWxhcmlvLCBlc3RydWN0dXJhUm93VmFsaWRhdG9yOiBFc3RydWN0dXJhUm93VmFsaWRhdG9yIH0gfSA9XHJcbiAgICAgICAgbGlrZUFyKGNhc2lsbGVyb3NPcmlnaW5hbGVzKS5tYXAoXHJcbiAgICAgICAgICAgIChjYXNpbGxlcm9zSmVyYXJxdWl6YWRvczogYW55LCBpZEZvcm11bGFyaW8pID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciBjYXNpbGxlcm9zQXBsYW5hZG9zOiBDYXNpbGxlcm9zSW1wbGVtZW50YWRvcyA9IGFwbGFuYXJMYUN1cnZhKGNhc2lsbGVyb3NKZXJhcnF1aXphZG9zKTtcclxuICAgICAgICAgICAgICAgIGlmIChjYXNpbGxlcm9zQXBsYW5hZG9zLnRpcG9jID09ICdGJyAmJiBjYXNpbGxlcm9zQXBsYW5hZG9zLmZvcm11bGFyaW9fcHJpbmNpcGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFpbkZvcm0gPSBpZEZvcm11bGFyaW87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2lsbGVyb3M6IGNhc2lsbGVyb3NBcGxhbmFkb3MsXHJcbiAgICAgICAgICAgICAgICAgICAgZXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjogZ2VuZXJhckVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IoY2FzaWxsZXJvc0FwbGFuYWRvcywgaWRGb3JtdWxhcmlvKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKS5wbGFpbigpO1xyXG4gICAgZXN0cnVjdHVyYS5mb3JtdWxhcmlvcyA9IGNhc2lsbGVyb3NUb2Rvc0Zvcm11bGFyaW9zXHJcbiAgICByZXR1cm4gZXN0cnVjdHVyYTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRtVHJhZXJEYXRvc0Zvcm11bGFyaW8ob3B0czogeyBvcGVyYXRpdm8/OiBJZE9wZXJhdGl2bywgbW9kb0RlbW86IGJvb2xlYW4sIGZvclBrUmFpej86IEZvclBrUmFpeiB9KSB7XHJcbiAgICB2YXIgZ2V0Q2Fzb1N0YXRlID0gKCk6IENhc29TdGF0ZSA9PiBteU93bi5nZXRMb2NhbFZhcihMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUpO1xyXG4gICAgdmFyIHNldENhc29TdGF0ZSA9IChjYXNvU3RhdGU6IENhc29TdGF0ZSkgPT4gbXlPd24uc2V0TG9jYWxWYXIoTE9DQUxfU1RPUkFHRV9TVEFURV9OQU1FLCBjYXNvU3RhdGUpO1xyXG5cclxuICAgIHZhciBsb2FkU3RhdGUgPSBhc3luYyBmdW5jdGlvbiBsb2FkU3RhdGUoKTogUHJvbWlzZTxDYXNvU3RhdGU+IHtcclxuICAgICAgICB2YXIgY2Fzb1N0YXRlOiBDYXNvU3RhdGUgfCBudWxsID0gZ2V0Q2Fzb1N0YXRlKCk7XHJcbiAgICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9IHtcclxuICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgIGZvclBrOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgcGlsYUZvclBrOiBbXSxcclxuICAgICAgICAgICAgICAgIG1vZG9EZXNwbGllZ3VlOiAncmVsZXZhbWllbnRvJyxcclxuICAgICAgICAgICAgICAgIG1vZG9EaXJlY3RvOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGNvbkNhbXBvT3BjaW9uZXM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc2FsdG9BdXRvbWF0aWNvOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYmllbnZlbmlkbzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6IG51bGwsXHJcbiAgICAgICAgICAgIH0gYXMgQ2Fzb1N0YXRlW1wib3BjaW9uZXNcIl0sIC8vIHBvbmVyIGxvcyB2YWxvcmVzIHBvciBkZWZlY3RvIG3DoXMgYWJham9cclxuICAgICAgICAgICAgbW9kbzoge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlIGVzIHVuIGJvb2xlYW5vIHBlcm8gcG9uZ28gYWjDrSBsb3MgZGF0b3MgZGUgZGVtbyFcclxuICAgICAgICAgICAgICAgIGRlbW86XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIG15T3duLmNvbmZpZy5jb25maWcuYW1iaWVudGUgPT0gJ3Rlc3QnIHx8IG15T3duLmNvbmZpZy5jb25maWcuYW1iaWVudGUgPT0gJ2RlbW8nLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBhcyBDYXNvU3RhdGU7XHJcbiAgICAgICAgaWYgKGNhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi5pbml0aWFsU3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczogY2Fzb1N0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvcHRzLmZvclBrUmFpeikge1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMuZm9yUGsgPSBvcHRzLmZvclBrUmFpejtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLm1vZG9EaXJlY3RvID0gISFvcHRzLmZvclBrUmFpejtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQayA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYWRkclBhcmFtcyA9IG15T3duLlVyaVNlYXJjaFRvT2JqZWN0KGxvY2F0aW9uLmhhc2ggfHwgbG9jYXRpb24uc2VhcmNoIHx8ICcnKTtcclxuICAgICAgICBpZiAoYWRkclBhcmFtcy5zdGF0ZV9mb3JQaykge1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMuZm9yUGsgPSBKU09OLnBhcnNlKGFkZHJQYXJhbXMuc3RhdGVfZm9yUGspO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYWRkclBhcmFtcy5zdGF0ZV9waWxhRm9yUGspIHtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQayA9IChhZGRyUGFyYW1zLnN0YXRlX3BpbGFGb3JQayBhcyBzdHJpbmcpLnNwbGl0KCd8JykubWFwKGogPT4gSlNPTjRhbGwucGFyc2UoaikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaW5pdGlhbFN0YXRlO1xyXG4gICAgfVxyXG4gICAgdmFyIHNhdmVTdGF0ZSA9IGZ1bmN0aW9uIHNhdmVTdGF0ZShzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgc2V0Q2Fzb1N0YXRlKHN0YXRlKTtcclxuICAgIH1cclxuICAgIC8qIERFRklOSUNJT04gQ09OVFJPTEFET1IgKi9cclxuICAgIHZhciBpbml0aWFsU3RhdGU6IENhc29TdGF0ZSA9IGF3YWl0IGxvYWRTdGF0ZSgpO1xyXG4gICAgY29uc3QgaGRyUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIocmVkdWNlcnMsIGluaXRpYWxTdGF0ZSk7XHJcbiAgICAvKiBGSU4gREVGSU5JQ0lPTiBDT05UUk9MQURPUiAqL1xyXG4gICAgLyogQ0FSR0EgWSBHVUFSREFETyBERSBTVEFURSAqL1xyXG4gICAgLyogQ1JFQUNJT04gU1RPUkUgKi9cclxuICAgIGNvbnN0IHN0b3JlID0gY3JlYXRlU3RvcmUoaGRyUmVkdWNlciwgaW5pdGlhbFN0YXRlKTtcclxuICAgIHNhdmVTdGF0ZShzdG9yZS5nZXRTdGF0ZSgpKTtcclxuICAgIHN0b3JlLnN1YnNjcmliZShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgc2F2ZVN0YXRlKHN0b3JlLmdldFN0YXRlKCkpO1xyXG4gICAgfSk7XHJcbiAgICAvKiBGSU4gQ1JFQUNJT04gU1RPUkUgKi9cclxuICAgIC8vSERSIENPTiBTVE9SRSBDUkVBRE9cclxuICAgIHJldHVybiBzdG9yZTtcclxufSJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CasoState, ModoDM } from './tipos';
|
|
2
|
+
export interface FormularioConfig {
|
|
3
|
+
getCasoState(): CasoState | null;
|
|
4
|
+
setCasoState(state: CasoState): void;
|
|
5
|
+
getUltimoValorPkRaiz(): string | null;
|
|
6
|
+
setUltimoValorPkRaiz(value: string): void;
|
|
7
|
+
getAppCacheVersion(): string | null;
|
|
8
|
+
setAppCacheVersion(value: string): void;
|
|
9
|
+
getModoDM(): ModoDM | null;
|
|
10
|
+
setModoDM(modo: ModoDM): void;
|
|
11
|
+
ambienteDemo: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function setFormularioConfig(config: FormularioConfig): void;
|
|
14
|
+
export declare function getFormularioConfig(): FormularioConfig;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
(function (factory) {
|
|
2
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
+
var v = factory(require, exports);
|
|
4
|
+
if (v !== undefined) module.exports = v;
|
|
5
|
+
}
|
|
6
|
+
else if (typeof define === "function" && define.amd) {
|
|
7
|
+
define(["require", "exports"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.setFormularioConfig = setFormularioConfig;
|
|
13
|
+
exports.getFormularioConfig = getFormularioConfig;
|
|
14
|
+
let formularioConfig = null;
|
|
15
|
+
function setFormularioConfig(config) {
|
|
16
|
+
formularioConfig = config;
|
|
17
|
+
}
|
|
18
|
+
function getFormularioConfig() {
|
|
19
|
+
if (!formularioConfig) {
|
|
20
|
+
throw new Error('FormularioConfig no inicializada');
|
|
21
|
+
}
|
|
22
|
+
return formularioConfig;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmxvZ2dlZC9yZW5kZXItY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBb0JBLGtEQUtDO0lBRUQsa0RBS0M7SUFkRCxJQUFJLGdCQUFnQixHQUE0QixJQUFJLENBQUM7SUFFckQsU0FBZ0IsbUJBQW1CLENBQy9CLE1BQXdCO1FBRXhCLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztJQUU5QixDQUFDO0lBRUQsU0FBZ0IsbUJBQW1CO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2Fzb1N0YXRlLCBNb2RvRE0gfSBmcm9tICcuL3RpcG9zJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybXVsYXJpb0NvbmZpZyB7XHJcbiAgICBnZXRDYXNvU3RhdGUoKTogQ2Fzb1N0YXRlIHwgbnVsbDtcclxuICAgIHNldENhc29TdGF0ZShzdGF0ZTogQ2Fzb1N0YXRlKTogdm9pZDtcclxuXHJcbiAgICBnZXRVbHRpbW9WYWxvclBrUmFpeigpOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgc2V0VWx0aW1vVmFsb3JQa1JhaXoodmFsdWU6IHN0cmluZyk6IHZvaWQ7XHJcblxyXG4gICAgZ2V0QXBwQ2FjaGVWZXJzaW9uKCk6IHN0cmluZyB8IG51bGw7XHJcbiAgICBzZXRBcHBDYWNoZVZlcnNpb24odmFsdWU6IHN0cmluZyk6IHZvaWQ7XHJcblxyXG4gICAgZ2V0TW9kb0RNKCk6IE1vZG9ETSB8IG51bGw7XHJcbiAgICBzZXRNb2RvRE0obW9kbzogTW9kb0RNKTogdm9pZDtcclxuXHJcbiAgICBhbWJpZW50ZURlbW86IGJvb2xlYW47XHJcbn1cclxuXHJcbmxldCBmb3JtdWxhcmlvQ29uZmlnOiBGb3JtdWxhcmlvQ29uZmlnIHwgbnVsbCA9IG51bGw7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0Rm9ybXVsYXJpb0NvbmZpZyhcclxuICAgIGNvbmZpZzogRm9ybXVsYXJpb0NvbmZpZ1xyXG4pIHtcclxuICAgIGZvcm11bGFyaW9Db25maWcgPSBjb25maWc7XHJcblxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybXVsYXJpb0NvbmZpZygpOiBGb3JtdWxhcmlvQ29uZmlnIHtcclxuICAgIGlmICghZm9ybXVsYXJpb0NvbmZpZykge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRm9ybXVsYXJpb0NvbmZpZyBubyBpbmljaWFsaXphZGEnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtdWxhcmlvQ29uZmlnO1xyXG59Il19
|
|
@@ -74,11 +74,11 @@ import {
|
|
|
74
74
|
accion_id_pregunta,
|
|
75
75
|
accion_agregar_formulario,
|
|
76
76
|
NO_CAMBIAR__VERIFICAR_SI_ES_NECESARIO,
|
|
77
|
-
NO_CAMBIAR__SOLO_TRAER_STATUS
|
|
78
|
-
MODO_DM_LOCALSTORAGE_KEY
|
|
77
|
+
NO_CAMBIAR__SOLO_TRAER_STATUS
|
|
79
78
|
} from "./bypass-formulario"
|
|
80
79
|
|
|
81
80
|
import { html, HtmlTag } from "js-to-html";
|
|
81
|
+
import { getFormularioConfig } from "./render-config";
|
|
82
82
|
|
|
83
83
|
const DELAY_SCROLL_3 = 50;
|
|
84
84
|
|
|
@@ -1948,7 +1948,7 @@ function FormularioDespliegue(props: { forPk: ForPk }) {
|
|
|
1948
1948
|
})
|
|
1949
1949
|
// @ts-expect-error especial hay que leerlo en el parser de casilleros si esto termina quedando así
|
|
1950
1950
|
var pantallaCompleta = formulario.especial?.pantallaCompleta;
|
|
1951
|
-
const modoDM: ModoDM =
|
|
1951
|
+
const modoDM: ModoDM = getFormularioConfig().getModoDM()!;
|
|
1952
1952
|
return (
|
|
1953
1953
|
<>
|
|
1954
1954
|
<AppBar position="fixed" color={soloLectura ? 'secondary' : (modoDM == 'capa' ? 'success' : 'primary')}>
|
|
@@ -2115,7 +2115,7 @@ setDesplegarCarga((props: {
|
|
|
2115
2115
|
var estructura = getEstructura();
|
|
2116
2116
|
let cantLineasResumen = likeAr(informacionHdr).filter((informacion) => informacion.tem.carga == idCarga).array().length;
|
|
2117
2117
|
const dispatch = useDispatch();
|
|
2118
|
-
const modoDM: ModoDM =
|
|
2118
|
+
const modoDM: ModoDM = getFormularioConfig().getModoDM()!;
|
|
2119
2119
|
return <Paper className="carga" style={{ marginBottom: '10px', padding: '10px' }}>
|
|
2120
2120
|
<div className="informacion-carga">
|
|
2121
2121
|
<div className="carga">Área: {idCarga}</div>
|
|
@@ -2244,7 +2244,7 @@ setHojaDeRutaDespliegue((_props: {}) => {
|
|
|
2244
2244
|
var feedbackRowValidator = getFeedbackRowValidator()
|
|
2245
2245
|
const dispatch = useDispatch();
|
|
2246
2246
|
const online = useOnlineStatus();
|
|
2247
|
-
const modoDM: ModoDM =
|
|
2247
|
+
const modoDM: ModoDM = getFormularioConfig().getModoDM()!;
|
|
2248
2248
|
return (
|
|
2249
2249
|
<>
|
|
2250
2250
|
<AppBar position="fixed" color={modoDM == 'capa' ? 'success' : 'primary'}>
|
|
@@ -2289,7 +2289,7 @@ setHojaDeRutaDespliegue((_props: {}) => {
|
|
|
2289
2289
|
</div> : null}
|
|
2290
2290
|
<div className="nombre-version">
|
|
2291
2291
|
<div>Instituto de Estadística y Censos de la Ciudad Autónoma de Buenos Aires - IDECBA</div>
|
|
2292
|
-
<div>versión {
|
|
2292
|
+
<div>versión {getFormularioConfig().getAppCacheVersion() || 'sin versión'} - sincro {num_sincro}</div>
|
|
2293
2293
|
</div>
|
|
2294
2294
|
</Paper>
|
|
2295
2295
|
{likeAr(cargas).map((carga, idCarga, _, posicion) =>
|
|
@@ -2380,7 +2380,7 @@ function PantallaInicialSinCarga(_props: {}) {
|
|
|
2380
2380
|
const online = useOnlineStatus();
|
|
2381
2381
|
|
|
2382
2382
|
const paragraphStyles = { fontSize: "1.2rem", fontWeight: 600, padding: "5px 10px" };
|
|
2383
|
-
const modoDM: ModoDM =
|
|
2383
|
+
const modoDM: ModoDM = getFormularioConfig().getModoDM()!;
|
|
2384
2384
|
return (
|
|
2385
2385
|
<>
|
|
2386
2386
|
<AppBar position="fixed" color={modoDM == 'capa' ? 'success' : 'primary'}>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function initFormRenderer(): void;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
(function (factory) {
|
|
2
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
+
var v = factory(require, exports);
|
|
4
|
+
if (v !== undefined) module.exports = v;
|
|
5
|
+
}
|
|
6
|
+
else if (typeof define === "function" && define.amd) {
|
|
7
|
+
define(["require", "exports", "./render-config"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.initFormRenderer = initFormRenderer;
|
|
13
|
+
const render_config_1 = require("./render-config");
|
|
14
|
+
const LOCAL_STORAGE_STATE_NAME = 'hdr-state';
|
|
15
|
+
const LAST_AUTO_VALUE_PK_RAIZ = 'proximo_valor_pk_raiz';
|
|
16
|
+
const APP_CACHE_VERSION = 'app-cache-version';
|
|
17
|
+
const MODO_DM_LOCALSTORAGE_KEY = 'modo_dm';
|
|
18
|
+
function initFormRenderer() {
|
|
19
|
+
(0, render_config_1.setFormularioConfig)({
|
|
20
|
+
getCasoState() {
|
|
21
|
+
return myOwn.getLocalVar(LOCAL_STORAGE_STATE_NAME);
|
|
22
|
+
},
|
|
23
|
+
setCasoState(state) {
|
|
24
|
+
myOwn.setLocalVar(LOCAL_STORAGE_STATE_NAME, state);
|
|
25
|
+
},
|
|
26
|
+
getUltimoValorPkRaiz() {
|
|
27
|
+
return myOwn.getLocalVar(LAST_AUTO_VALUE_PK_RAIZ);
|
|
28
|
+
},
|
|
29
|
+
setUltimoValorPkRaiz(value) {
|
|
30
|
+
myOwn.setLocalVar(LAST_AUTO_VALUE_PK_RAIZ, value);
|
|
31
|
+
},
|
|
32
|
+
getAppCacheVersion() {
|
|
33
|
+
return myOwn.getLocalVar(APP_CACHE_VERSION);
|
|
34
|
+
},
|
|
35
|
+
setAppCacheVersion(version) {
|
|
36
|
+
myOwn.setLocalVar(APP_CACHE_VERSION, version);
|
|
37
|
+
},
|
|
38
|
+
getModoDM() {
|
|
39
|
+
return myOwn.getLocalVar(MODO_DM_LOCALSTORAGE_KEY);
|
|
40
|
+
},
|
|
41
|
+
setModoDM(modo) {
|
|
42
|
+
myOwn.setLocalVar(MODO_DM_LOCALSTORAGE_KEY, modo);
|
|
43
|
+
},
|
|
44
|
+
// @ts-ignore
|
|
45
|
+
ambienteDemo: myOwn.config.config.ambiente == 'test' || myOwn.config.config.ambiente == 'demo',
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWluaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvcmVuZGVyLWluaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFTQSw0Q0FvQ0M7SUE3Q0QsbURBQXNEO0lBSXRELE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUFDO0lBQzdDLE1BQU0sdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztJQUM5QyxNQUFNLHdCQUF3QixHQUFHLFNBQVMsQ0FBQztJQUUzQyxTQUFnQixnQkFBZ0I7UUFDNUIsSUFBQSxtQ0FBbUIsRUFBQztZQUNoQixZQUFZO2dCQUNSLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFFRCxZQUFZLENBQUMsS0FBSztnQkFDZCxLQUFLLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFFRCxvQkFBb0I7Z0JBQ2hCLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFFRCxvQkFBb0IsQ0FBQyxLQUFLO2dCQUN0QixLQUFLLENBQUMsV0FBVyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFFRCxrQkFBa0I7Z0JBQ2QsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDaEQsQ0FBQztZQUVELGtCQUFrQixDQUFDLE9BQWU7Z0JBQzlCLEtBQUssQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUVELFNBQVM7Z0JBQ0wsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUVELFNBQVMsQ0FBQyxJQUFZO2dCQUNsQixLQUFLLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFDRCxhQUFhO1lBQ2IsWUFBWSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU07U0FDakcsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNldEZvcm11bGFyaW9Db25maWcgfSBmcm9tIFwiLi9yZW5kZXItY29uZmlnXCI7XHJcbmltcG9ydCB7IE1vZG9ETSB9IGZyb20gXCIuL3RpcG9zXCI7XHJcblxyXG5cclxuY29uc3QgTE9DQUxfU1RPUkFHRV9TVEFURV9OQU1FID0gJ2hkci1zdGF0ZSc7XHJcbmNvbnN0IExBU1RfQVVUT19WQUxVRV9QS19SQUlaID0gJ3Byb3hpbW9fdmFsb3JfcGtfcmFpeic7XHJcbmNvbnN0IEFQUF9DQUNIRV9WRVJTSU9OID0gJ2FwcC1jYWNoZS12ZXJzaW9uJztcclxuY29uc3QgTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZID0gJ21vZG9fZG0nO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGluaXRGb3JtUmVuZGVyZXIoKSB7XHJcbiAgICBzZXRGb3JtdWxhcmlvQ29uZmlnKHtcclxuICAgICAgICBnZXRDYXNvU3RhdGUoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBteU93bi5nZXRMb2NhbFZhcihMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHNldENhc29TdGF0ZShzdGF0ZSkge1xyXG4gICAgICAgICAgICBteU93bi5zZXRMb2NhbFZhcihMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUsIHN0YXRlKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBnZXRVbHRpbW9WYWxvclBrUmFpeigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG15T3duLmdldExvY2FsVmFyKExBU1RfQVVUT19WQUxVRV9QS19SQUlaKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBzZXRVbHRpbW9WYWxvclBrUmFpeih2YWx1ZSkge1xyXG4gICAgICAgICAgICBteU93bi5zZXRMb2NhbFZhcihMQVNUX0FVVE9fVkFMVUVfUEtfUkFJWiwgdmFsdWUpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGdldEFwcENhY2hlVmVyc2lvbigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG15T3duLmdldExvY2FsVmFyKEFQUF9DQUNIRV9WRVJTSU9OKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBzZXRBcHBDYWNoZVZlcnNpb24odmVyc2lvbjogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIG15T3duLnNldExvY2FsVmFyKEFQUF9DQUNIRV9WRVJTSU9OLCB2ZXJzaW9uKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIFxyXG4gICAgICAgIGdldE1vZG9ETSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG15T3duLmdldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBcclxuICAgICAgICBzZXRNb2RvRE0obW9kbzogTW9kb0RNKSB7XHJcbiAgICAgICAgICAgIG15T3duLnNldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSwgbW9kbyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgYW1iaWVudGVEZW1vOiBteU93bi5jb25maWcuY29uZmlnLmFtYmllbnRlID09ICd0ZXN0JyB8fCBteU93bi5jb25maWcuY29uZmlnLmFtYmllbnRlID09ICdkZW1vJyxcclxuICAgIH0pO1xyXG59Il19
|