@r5n/hydra 0.3.0 → 0.3.1
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/README.md +7 -34
- package/dist/cli.js +77 -69
- package/package.json +2 -3
- package/schema.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1117,6 +1117,15 @@ function createSchema(validator) {
|
|
|
1117
1117
|
validator
|
|
1118
1118
|
};
|
|
1119
1119
|
}
|
|
1120
|
+
function optionalString() {
|
|
1121
|
+
return union(optional(), string());
|
|
1122
|
+
}
|
|
1123
|
+
function defaultString(defaultValue) {
|
|
1124
|
+
return defaultTo(string(), defaultValue);
|
|
1125
|
+
}
|
|
1126
|
+
function defaultBoolean(defaultValue) {
|
|
1127
|
+
return defaultTo(boolean(), defaultValue);
|
|
1128
|
+
}
|
|
1120
1129
|
// src/methods/createMachines.ts
|
|
1121
1130
|
import { parseArgs } from "util";
|
|
1122
1131
|
var {$: $3 } = globalThis.Bun;
|
|
@@ -1131,21 +1140,18 @@ var PATHS = { MACHINES_DIR: "machines", TEMP_DIR: tmpdir() };
|
|
|
1131
1140
|
|
|
1132
1141
|
// src/types.ts
|
|
1133
1142
|
var profileValidator = object({
|
|
1134
|
-
directory:
|
|
1135
|
-
labels:
|
|
1136
|
-
name:
|
|
1143
|
+
directory: defaultString("./gh-runners"),
|
|
1144
|
+
labels: optionalString(),
|
|
1145
|
+
name: defaultString("runner"),
|
|
1137
1146
|
numberOfMachines: defaultTo(positiveInt(), 1),
|
|
1138
|
-
os: defaultTo(enums(["osx", "linux", "windows"]), "
|
|
1139
|
-
overwrite:
|
|
1140
|
-
run:
|
|
1141
|
-
runnerGroup:
|
|
1142
|
-
url:
|
|
1147
|
+
os: defaultTo(enums(["osx", "linux", "windows"]), "osx"),
|
|
1148
|
+
overwrite: defaultBoolean(false),
|
|
1149
|
+
run: defaultBoolean(false),
|
|
1150
|
+
runnerGroup: optionalString(),
|
|
1151
|
+
url: optionalString()
|
|
1143
1152
|
});
|
|
1144
1153
|
var ProfileSchema = createSchema(profileValidator);
|
|
1145
|
-
var ConfigSchema = createSchema(object({
|
|
1146
|
-
defaultProfile: union(optional(), string()),
|
|
1147
|
-
profiles: record(ProfileSchema.validator)
|
|
1148
|
-
}));
|
|
1154
|
+
var ConfigSchema = createSchema(object({ defaultProfile: optionalString(), profiles: record(ProfileSchema.validator) }));
|
|
1149
1155
|
|
|
1150
1156
|
// src/config.ts
|
|
1151
1157
|
var CONFIG_FILE_NAMES = ["hydra.json", ".hydra.json", "hydra.toml", ".hydra.toml"];
|
|
@@ -1222,65 +1228,67 @@ var CliArgsSchema = createSchema(cliArgsValidator);
|
|
|
1222
1228
|
|
|
1223
1229
|
// src/lib/worker-manager.ts
|
|
1224
1230
|
var logger2 = createLogger({ prefix: "WorkerManager" });
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
cleanupRegistered
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
process.
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1231
|
+
var workers = new Set;
|
|
1232
|
+
var cleanupRegistered = false;
|
|
1233
|
+
function registerCleanup() {
|
|
1234
|
+
if (cleanupRegistered)
|
|
1235
|
+
return;
|
|
1236
|
+
cleanupRegistered = true;
|
|
1237
|
+
const cleanup = () => {
|
|
1238
|
+
if (workers.size > 0) {
|
|
1239
|
+
logger2.info("Cleaning up workers...");
|
|
1240
|
+
}
|
|
1241
|
+
terminateAll();
|
|
1242
|
+
};
|
|
1243
|
+
process.on("exit", cleanup);
|
|
1244
|
+
process.on("SIGINT", cleanup);
|
|
1245
|
+
process.on("SIGTERM", cleanup);
|
|
1246
|
+
process.on("uncaughtException", (error2) => {
|
|
1247
|
+
logger2.error("Uncaught exception:", error2);
|
|
1248
|
+
cleanup();
|
|
1249
|
+
process.exit(1);
|
|
1250
|
+
});
|
|
1251
|
+
}
|
|
1252
|
+
function addWorker(worker) {
|
|
1253
|
+
workers.add(worker);
|
|
1254
|
+
logger2.debug(`Worker added. Total workers: ${workers.size}`);
|
|
1255
|
+
worker.addEventListener("exit", () => {
|
|
1256
|
+
workers.delete(worker);
|
|
1257
|
+
logger2.debug(`Worker exited. Remaining workers: ${workers.size}`);
|
|
1258
|
+
});
|
|
1259
|
+
}
|
|
1260
|
+
function removeWorker(worker) {
|
|
1261
|
+
if (workers.has(worker)) {
|
|
1262
|
+
worker.terminate();
|
|
1263
|
+
workers.delete(worker);
|
|
1264
|
+
logger2.debug(`Worker removed. Remaining workers: ${workers.size}`);
|
|
1258
1265
|
}
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
logger2.info(`Terminating ${this.workers.size} workers...`);
|
|
1269
|
-
for (const worker of this.workers) {
|
|
1270
|
-
try {
|
|
1271
|
-
worker.terminate();
|
|
1272
|
-
} catch (error2) {
|
|
1273
|
-
logger2.error(`Failed to terminate worker:`, error2);
|
|
1274
|
-
}
|
|
1266
|
+
}
|
|
1267
|
+
function terminateAll() {
|
|
1268
|
+
if (workers.size > 0) {
|
|
1269
|
+
logger2.info(`Terminating ${workers.size} workers...`);
|
|
1270
|
+
for (const worker of workers) {
|
|
1271
|
+
try {
|
|
1272
|
+
worker.terminate();
|
|
1273
|
+
} catch (error2) {
|
|
1274
|
+
logger2.error(`Failed to terminate worker:`, error2);
|
|
1275
1275
|
}
|
|
1276
|
-
this.workers.clear();
|
|
1277
1276
|
}
|
|
1278
|
-
|
|
1279
|
-
get size() {
|
|
1280
|
-
return this.workers.size;
|
|
1277
|
+
workers.clear();
|
|
1281
1278
|
}
|
|
1282
1279
|
}
|
|
1283
|
-
|
|
1280
|
+
function getWorkerCount() {
|
|
1281
|
+
return workers.size;
|
|
1282
|
+
}
|
|
1283
|
+
registerCleanup();
|
|
1284
|
+
var workerManager = {
|
|
1285
|
+
add: addWorker,
|
|
1286
|
+
remove: removeWorker,
|
|
1287
|
+
get size() {
|
|
1288
|
+
return getWorkerCount();
|
|
1289
|
+
},
|
|
1290
|
+
terminateAll
|
|
1291
|
+
};
|
|
1284
1292
|
|
|
1285
1293
|
// src/methods/createMachines.ts
|
|
1286
1294
|
var logger3 = createLogger({ prefix: "createMachines" });
|
|
@@ -1564,7 +1572,7 @@ OPTIONS
|
|
|
1564
1572
|
-m, --numberOfMachines Number of machines [number] (default: 1)
|
|
1565
1573
|
-n, --name Runner name prefix [string]
|
|
1566
1574
|
-l, --labels Comma-separated runner labels [string]
|
|
1567
|
-
-o, --os Runner OS [string] (default:
|
|
1575
|
+
-o, --os Runner OS [string] (default: osx)
|
|
1568
1576
|
-d, --directory Runners directory [string]
|
|
1569
1577
|
-O, --overwrite Overwrite existing runners [boolean]
|
|
1570
1578
|
-p, --profile Configuration profile [string]
|
|
@@ -2439,5 +2447,5 @@ Did you mean one of these?`);
|
|
|
2439
2447
|
}
|
|
2440
2448
|
await main();
|
|
2441
2449
|
|
|
2442
|
-
//# debugId=
|
|
2443
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Npc3RlcmFuc2kvc3JjL2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9waWNvY29sb3JzL3BpY29jb2xvcnMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjbGFjay9jb3JlL2Rpc3QvaW5kZXgubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2xhY2svcHJvbXB0cy9kaXN0L2luZGV4Lm1qcyIsICIuLi8uLi8uLi90b29scy91dGlscy9jb2xvcnMudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Zhc3Rlc3QtbGV2ZW5zaHRlaW4vZXNtL21vZC5qcyIsICIuLi8uLi9jb3JlL3NyYy9mdXp6eS1tYXRjaC50cyIsICIuLi8uLi9jb3JlL3NyYy9ncmFjZWZ1bC50cyIsICIuLi8uLi8uLi90b29scy91dGlscy9sb2dnZXIudHMiLCAiLi4vLi4vY29yZS9zcmMvcmV0cnkudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhbmRpdHlwZXMvZGlzdC9pbmRleC5qcyIsICIuLi8uLi9jb3JlL3NyYy92YWxpZGF0b3IudHMiLCAiLi4vc3JjL21ldGhvZHMvY3JlYXRlTWFjaGluZXMudHMiLCAiLi4vc3JjL2NvbmZpZy50cyIsICIuLi9zcmMvY29uc3RhbnRzLnRzIiwgIi4uL3NyYy90eXBlcy50cyIsICIuLi9zcmMvaGVscGVycy50cyIsICIuLi9zcmMvbGliL3dvcmtlci1tYW5hZ2VyLnRzIiwgIi4uL3NyYy9tZXRob2RzL2hlbHAudHMiLCAiLi4vc3JjL21ldGhvZHMvaW5pdC50cyIsICIuLi9zcmMvbWV0aG9kcy9yZW1vdmVNYWNoaW5lcy50cyIsICIuLi9zcmMvbWV0aG9kcy9ydW5NYWNoaW5lcy50cyIsICIuLi9zcmMvbWV0aG9kcy9zdGF0dXMudHMiLCAiLi4vc3JjL2NsaS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IEVTQyA9ICdcXHgxQic7XG5jb25zdCBDU0kgPSBgJHtFU0N9W2A7XG5jb25zdCBiZWVwID0gJ1xcdTAwMDcnO1xuXG5jb25zdCBjdXJzb3IgPSB7XG4gIHRvKHgsIHkpIHtcbiAgICBpZiAoIXkpIHJldHVybiBgJHtDU0l9JHt4ICsgMX1HYDtcbiAgICByZXR1cm4gYCR7Q1NJfSR7eSArIDF9OyR7eCArIDF9SGA7XG4gIH0sXG4gIG1vdmUoeCwgeSkge1xuICAgIGxldCByZXQgPSAnJztcblxuICAgIGlmICh4IDwgMCkgcmV0ICs9IGAke0NTSX0key14fURgO1xuICAgIGVsc2UgaWYgKHggPiAwKSByZXQgKz0gYCR7Q1NJfSR7eH1DYDtcblxuICAgIGlmICh5IDwgMCkgcmV0ICs9IGAke0NTSX0key15fUFgO1xuICAgIGVsc2UgaWYgKHkgPiAwKSByZXQgKz0gYCR7Q1NJfSR7eX1CYDtcblxuICAgIHJldHVybiByZXQ7XG4gIH0sXG4gIHVwOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9JHtjb3VudH1BYCxcbiAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9QmAsXG4gIGZvcndhcmQ6IChjb3VudCA9IDEpID0+IGAke0NTSX0ke2NvdW50fUNgLFxuICBiYWNrd2FyZDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9RGAsXG4gIG5leHRMaW5lOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9RWAucmVwZWF0KGNvdW50KSxcbiAgcHJldkxpbmU6IChjb3VudCA9IDEpID0+IGAke0NTSX1GYC5yZXBlYXQoY291bnQpLFxuICBsZWZ0OiBgJHtDU0l9R2AsXG4gIGhpZGU6IGAke0NTSX0/MjVsYCxcbiAgc2hvdzogYCR7Q1NJfT8yNWhgLFxuICBzYXZlOiBgJHtFU0N9N2AsXG4gIHJlc3RvcmU6IGAke0VTQ304YFxufVxuXG5jb25zdCBzY3JvbGwgPSB7XG4gIHVwOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9U2AucmVwZWF0KGNvdW50KSxcbiAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfVRgLnJlcGVhdChjb3VudClcbn1cblxuY29uc3QgZXJhc2UgPSB7XG4gIHNjcmVlbjogYCR7Q1NJfTJKYCxcbiAgdXA6IChjb3VudCA9IDEpID0+IGAke0NTSX0xSmAucmVwZWF0KGNvdW50KSxcbiAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfUpgLnJlcGVhdChjb3VudCksXG4gIGxpbmU6IGAke0NTSX0yS2AsXG4gIGxpbmVFbmQ6IGAke0NTSX1LYCxcbiAgbGluZVN0YXJ0OiBgJHtDU0l9MUtgLFxuICBsaW5lcyhjb3VudCkge1xuICAgIGxldCBjbGVhciA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKylcbiAgICAgIGNsZWFyICs9IHRoaXMubGluZSArIChpIDwgY291bnQgLSAxID8gY3Vyc29yLnVwKCkgOiAnJyk7XG4gICAgaWYgKGNvdW50KVxuICAgICAgY2xlYXIgKz0gY3Vyc29yLmxlZnQ7XG4gICAgcmV0dXJuIGNsZWFyO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBjdXJzb3IsIHNjcm9sbCwgZXJhc2UsIGJlZXAgfTtcbiIsCiAgICAibGV0IHAgPSBwcm9jZXNzIHx8IHt9LCBhcmd2ID0gcC5hcmd2IHx8IFtdLCBlbnYgPSBwLmVudiB8fCB7fVxubGV0IGlzQ29sb3JTdXBwb3J0ZWQgPVxuXHQhKCEhZW52Lk5PX0NPTE9SIHx8IGFyZ3YuaW5jbHVkZXMoXCItLW5vLWNvbG9yXCIpKSAmJlxuXHQoISFlbnYuRk9SQ0VfQ09MT1IgfHwgYXJndi5pbmNsdWRlcyhcIi0tY29sb3JcIikgfHwgcC5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiIHx8ICgocC5zdGRvdXQgfHwge30pLmlzVFRZICYmIGVudi5URVJNICE9PSBcImR1bWJcIikgfHwgISFlbnYuQ0kpXG5cbmxldCBmb3JtYXR0ZXIgPSAob3BlbiwgY2xvc2UsIHJlcGxhY2UgPSBvcGVuKSA9PlxuXHRpbnB1dCA9PiB7XG5cdFx0bGV0IHN0cmluZyA9IFwiXCIgKyBpbnB1dCwgaW5kZXggPSBzdHJpbmcuaW5kZXhPZihjbG9zZSwgb3Blbi5sZW5ndGgpXG5cdFx0cmV0dXJuIH5pbmRleCA/IG9wZW4gKyByZXBsYWNlQ2xvc2Uoc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSwgaW5kZXgpICsgY2xvc2UgOiBvcGVuICsgc3RyaW5nICsgY2xvc2Vcblx0fVxuXG5sZXQgcmVwbGFjZUNsb3NlID0gKHN0cmluZywgY2xvc2UsIHJlcGxhY2UsIGluZGV4KSA9PiB7XG5cdGxldCByZXN1bHQgPSBcIlwiLCBjdXJzb3IgPSAwXG5cdGRvIHtcblx0XHRyZXN1bHQgKz0gc3RyaW5nLnN1YnN0cmluZyhjdXJzb3IsIGluZGV4KSArIHJlcGxhY2Vcblx0XHRjdXJzb3IgPSBpbmRleCArIGNsb3NlLmxlbmd0aFxuXHRcdGluZGV4ID0gc3RyaW5nLmluZGV4T2YoY2xvc2UsIGN1cnNvcilcblx0fSB3aGlsZSAofmluZGV4KVxuXHRyZXR1cm4gcmVzdWx0ICsgc3RyaW5nLnN1YnN0cmluZyhjdXJzb3IpXG59XG5cbmxldCBjcmVhdGVDb2xvcnMgPSAoZW5hYmxlZCA9IGlzQ29sb3JTdXBwb3J0ZWQpID0+IHtcblx0bGV0IGYgPSBlbmFibGVkID8gZm9ybWF0dGVyIDogKCkgPT4gU3RyaW5nXG5cdHJldHVybiB7XG5cdFx0aXNDb2xvclN1cHBvcnRlZDogZW5hYmxlZCxcblx0XHRyZXNldDogZihcIlxceDFiWzBtXCIsIFwiXFx4MWJbMG1cIiksXG5cdFx0Ym9sZDogZihcIlxceDFiWzFtXCIsIFwiXFx4MWJbMjJtXCIsIFwiXFx4MWJbMjJtXFx4MWJbMW1cIiksXG5cdFx0ZGltOiBmKFwiXFx4MWJbMm1cIiwgXCJcXHgxYlsyMm1cIiwgXCJcXHgxYlsyMm1cXHgxYlsybVwiKSxcblx0XHRpdGFsaWM6IGYoXCJcXHgxYlszbVwiLCBcIlxceDFiWzIzbVwiKSxcblx0XHR1bmRlcmxpbmU6IGYoXCJcXHgxYls0bVwiLCBcIlxceDFiWzI0bVwiKSxcblx0XHRpbnZlcnNlOiBmKFwiXFx4MWJbN21cIiwgXCJcXHgxYlsyN21cIiksXG5cdFx0aGlkZGVuOiBmKFwiXFx4MWJbOG1cIiwgXCJcXHgxYlsyOG1cIiksXG5cdFx0c3RyaWtldGhyb3VnaDogZihcIlxceDFiWzltXCIsIFwiXFx4MWJbMjltXCIpLFxuXG5cdFx0YmxhY2s6IGYoXCJcXHgxYlszMG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0cmVkOiBmKFwiXFx4MWJbMzFtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdGdyZWVuOiBmKFwiXFx4MWJbMzJtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdHllbGxvdzogZihcIlxceDFiWzMzbVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRibHVlOiBmKFwiXFx4MWJbMzRtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdG1hZ2VudGE6IGYoXCJcXHgxYlszNW1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0Y3lhbjogZihcIlxceDFiWzM2bVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHR3aGl0ZTogZihcIlxceDFiWzM3bVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRncmF5OiBmKFwiXFx4MWJbOTBtXCIsIFwiXFx4MWJbMzltXCIpLFxuXG5cdFx0YmdCbGFjazogZihcIlxceDFiWzQwbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRiZ1JlZDogZihcIlxceDFiWzQxbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRiZ0dyZWVuOiBmKFwiXFx4MWJbNDJtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdGJnWWVsbG93OiBmKFwiXFx4MWJbNDNtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdGJnQmx1ZTogZihcIlxceDFiWzQ0bVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRiZ01hZ2VudGE6IGYoXCJcXHgxYls0NW1cIiwgXCJcXHgxYls0OW1cIiksXG5cdFx0YmdDeWFuOiBmKFwiXFx4MWJbNDZtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdGJnV2hpdGU6IGYoXCJcXHgxYls0N21cIiwgXCJcXHgxYls0OW1cIiksXG5cblx0XHRibGFja0JyaWdodDogZihcIlxceDFiWzkwbVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRyZWRCcmlnaHQ6IGYoXCJcXHgxYls5MW1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0Z3JlZW5CcmlnaHQ6IGYoXCJcXHgxYls5Mm1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0eWVsbG93QnJpZ2h0OiBmKFwiXFx4MWJbOTNtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdGJsdWVCcmlnaHQ6IGYoXCJcXHgxYls5NG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0bWFnZW50YUJyaWdodDogZihcIlxceDFiWzk1bVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRjeWFuQnJpZ2h0OiBmKFwiXFx4MWJbOTZtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdHdoaXRlQnJpZ2h0OiBmKFwiXFx4MWJbOTdtXCIsIFwiXFx4MWJbMzltXCIpLFxuXG5cdFx0YmdCbGFja0JyaWdodDogZihcIlxceDFiWzEwMG1cIiwgXCJcXHgxYls0OW1cIiksXG5cdFx0YmdSZWRCcmlnaHQ6IGYoXCJcXHgxYlsxMDFtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdGJnR3JlZW5CcmlnaHQ6IGYoXCJcXHgxYlsxMDJtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdGJnWWVsbG93QnJpZ2h0OiBmKFwiXFx4MWJbMTAzbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRiZ0JsdWVCcmlnaHQ6IGYoXCJcXHgxYlsxMDRtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdGJnTWFnZW50YUJyaWdodDogZihcIlxceDFiWzEwNW1cIiwgXCJcXHgxYls0OW1cIiksXG5cdFx0YmdDeWFuQnJpZ2h0OiBmKFwiXFx4MWJbMTA2bVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRiZ1doaXRlQnJpZ2h0OiBmKFwiXFx4MWJbMTA3bVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUNvbG9ycygpXG5tb2R1bGUuZXhwb3J0cy5jcmVhdGVDb2xvcnMgPSBjcmVhdGVDb2xvcnNcbiIsCiAgICAiaW1wb3J0e2N1cnNvciBhcyBsLGVyYXNlIGFzIGJ9ZnJvbVwic2lzdGVyYW5zaVwiO2ltcG9ydHtzdGRpbiBhcyBqLHN0ZG91dCBhcyBNfWZyb21cIm5vZGU6cHJvY2Vzc1wiO2ltcG9ydCphcyBnIGZyb21cIm5vZGU6cmVhZGxpbmVcIjtpbXBvcnQgTyBmcm9tXCJub2RlOnJlYWRsaW5lXCI7aW1wb3J0e1dyaXRhYmxlIGFzIFh9ZnJvbVwibm9kZTpzdHJlYW1cIjtpbXBvcnQgdiBmcm9tXCJwaWNvY29sb3JzXCI7ZnVuY3Rpb24gREQoe29ubHlGaXJzdDplPSExfT17fSl7Y29uc3QgdD1bXCJbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT8oPzpcXFxcdTAwMDd8XFxcXHUwMDFCXFxcXHUwMDVDfFxcXFx1MDA5QykpXCIsXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKVwiXS5qb2luKFwifFwiKTtyZXR1cm4gbmV3IFJlZ0V4cCh0LGU/dm9pZCAwOlwiZ1wiKX1jb25zdCB1RD1ERCgpO2Z1bmN0aW9uIFAoZSl7aWYodHlwZW9mIGUhPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBcXGBzdHJpbmdcXGAsIGdvdCBcXGAke3R5cGVvZiBlfVxcYGApO3JldHVybiBlLnJlcGxhY2UodUQsXCJcIil9ZnVuY3Rpb24gTChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxcImRlZmF1bHRcIik/ZS5kZWZhdWx0OmV9dmFyIFc9e2V4cG9ydHM6e319OyhmdW5jdGlvbihlKXt2YXIgdT17fTtlLmV4cG9ydHM9dSx1LmVhc3RBc2lhbldpZHRoPWZ1bmN0aW9uKEYpe3ZhciBzPUYuY2hhckNvZGVBdCgwKSxpPUYubGVuZ3RoPT0yP0YuY2hhckNvZGVBdCgxKTowLEQ9cztyZXR1cm4gNTUyOTY8PXMmJnM8PTU2MzE5JiY1NjMyMDw9aSYmaTw9NTczNDMmJihzJj0xMDIzLGkmPTEwMjMsRD1zPDwxMHxpLEQrPTY1NTM2KSxEPT0xMjI4OHx8NjUyODE8PUQmJkQ8PTY1Mzc2fHw2NTUwNDw9RCYmRDw9NjU1MTA/XCJGXCI6RD09ODM2MXx8NjUzNzc8PUQmJkQ8PTY1NDcwfHw2NTQ3NDw9RCYmRDw9NjU0Nzl8fDY1NDgyPD1EJiZEPD02NTQ4N3x8NjU0OTA8PUQmJkQ8PTY1NDk1fHw2NTQ5ODw9RCYmRDw9NjU1MDB8fDY1NTEyPD1EJiZEPD02NTUxOD9cIkhcIjo0MzUyPD1EJiZEPD00NDQ3fHw0NTE1PD1EJiZEPD00NTE5fHw0NjAyPD1EJiZEPD00NjA3fHw5MDAxPD1EJiZEPD05MDAyfHwxMTkwNDw9RCYmRDw9MTE5Mjl8fDExOTMxPD1EJiZEPD0xMjAxOXx8MTIwMzI8PUQmJkQ8PTEyMjQ1fHwxMjI3Mjw9RCYmRDw9MTIyODN8fDEyMjg5PD1EJiZEPD0xMjM1MHx8MTIzNTM8PUQmJkQ8PTEyNDM4fHwxMjQ0MTw9RCYmRDw9MTI1NDN8fDEyNTQ5PD1EJiZEPD0xMjU4OXx8MTI1OTM8PUQmJkQ8PTEyNjg2fHwxMjY4ODw9RCYmRDw9MTI3MzB8fDEyNzM2PD1EJiZEPD0xMjc3MXx8MTI3ODQ8PUQmJkQ8PTEyODMwfHwxMjgzMjw9RCYmRDw9MTI4NzF8fDEyODgwPD1EJiZEPD0xMzA1NHx8MTMwNTY8PUQmJkQ8PTE5OTAzfHwxOTk2ODw9RCYmRDw9NDIxMjR8fDQyMTI4PD1EJiZEPD00MjE4Mnx8NDMzNjA8PUQmJkQ8PTQzMzg4fHw0NDAzMjw9RCYmRDw9NTUyMDN8fDU1MjE2PD1EJiZEPD01NTIzOHx8NTUyNDM8PUQmJkQ8PTU1MjkxfHw2Mzc0NDw9RCYmRDw9NjQyNTV8fDY1MDQwPD1EJiZEPD02NTA0OXx8NjUwNzI8PUQmJkQ8PTY1MTA2fHw2NTEwODw9RCYmRDw9NjUxMjZ8fDY1MTI4PD1EJiZEPD02NTEzMXx8MTEwNTkyPD1EJiZEPD0xMTA1OTN8fDEyNzQ4ODw9RCYmRDw9MTI3NDkwfHwxMjc1MDQ8PUQmJkQ8PTEyNzU0Nnx8MTI3NTUyPD1EJiZEPD0xMjc1NjB8fDEyNzU2ODw9RCYmRDw9MTI3NTY5fHwxMzEwNzI8PUQmJkQ8PTE5NDM2N3x8MTc3OTg0PD1EJiZEPD0xOTY2MDV8fDE5NjYwODw9RCYmRDw9MjYyMTQxP1wiV1wiOjMyPD1EJiZEPD0xMjZ8fDE2Mjw9RCYmRDw9MTYzfHwxNjU8PUQmJkQ8PTE2Nnx8RD09MTcyfHxEPT0xNzV8fDEwMjE0PD1EJiZEPD0xMDIyMXx8MTA2Mjk8PUQmJkQ8PTEwNjMwP1wiTmFcIjpEPT0xNjF8fEQ9PTE2NHx8MTY3PD1EJiZEPD0xNjh8fEQ9PTE3MHx8MTczPD1EJiZEPD0xNzR8fDE3Njw9RCYmRDw9MTgwfHwxODI8PUQmJkQ8PTE4Nnx8MTg4PD1EJiZEPD0xOTF8fEQ9PTE5OHx8RD09MjA4fHwyMTU8PUQmJkQ8PTIxNnx8MjIyPD1EJiZEPD0yMjV8fEQ9PTIzMHx8MjMyPD1EJiZEPD0yMzR8fDIzNjw9RCYmRDw9MjM3fHxEPT0yNDB8fDI0Mjw9RCYmRDw9MjQzfHwyNDc8PUQmJkQ8PTI1MHx8RD09MjUyfHxEPT0yNTR8fEQ9PTI1N3x8RD09MjczfHxEPT0yNzV8fEQ9PTI4M3x8Mjk0PD1EJiZEPD0yOTV8fEQ9PTI5OXx8MzA1PD1EJiZEPD0zMDd8fEQ9PTMxMnx8MzE5PD1EJiZEPD0zMjJ8fEQ9PTMyNHx8MzI4PD1EJiZEPD0zMzF8fEQ9PTMzM3x8MzM4PD1EJiZEPD0zMzl8fDM1ODw9RCYmRDw9MzU5fHxEPT0zNjN8fEQ9PTQ2Mnx8RD09NDY0fHxEPT00NjZ8fEQ9PTQ2OHx8RD09NDcwfHxEPT00NzJ8fEQ9PTQ3NHx8RD09NDc2fHxEPT01OTN8fEQ9PTYwOXx8RD09NzA4fHxEPT03MTF8fDcxMzw9RCYmRDw9NzE1fHxEPT03MTd8fEQ9PTcyMHx8NzI4PD1EJiZEPD03MzF8fEQ9PTczM3x8RD09NzM1fHw3Njg8PUQmJkQ8PTg3OXx8OTEzPD1EJiZEPD05Mjl8fDkzMTw9RCYmRDw9OTM3fHw5NDU8PUQmJkQ8PTk2MXx8OTYzPD1EJiZEPD05Njl8fEQ9PTEwMjV8fDEwNDA8PUQmJkQ8PTExMDN8fEQ9PTExMDV8fEQ9PTgyMDh8fDgyMTE8PUQmJkQ8PTgyMTR8fDgyMTY8PUQmJkQ8PTgyMTd8fDgyMjA8PUQmJkQ8PTgyMjF8fDgyMjQ8PUQmJkQ8PTgyMjZ8fDgyMjg8PUQmJkQ8PTgyMzF8fEQ9PTgyNDB8fDgyNDI8PUQmJkQ8PTgyNDN8fEQ9PTgyNDV8fEQ9PTgyNTF8fEQ9PTgyNTR8fEQ9PTgzMDh8fEQ9PTgzMTl8fDgzMjE8PUQmJkQ8PTgzMjR8fEQ9PTgzNjR8fEQ9PTg0NTF8fEQ9PTg0NTN8fEQ9PTg0NTd8fEQ9PTg0Njd8fEQ9PTg0NzB8fDg0ODE8PUQmJkQ8PTg0ODJ8fEQ9PTg0ODZ8fEQ9PTg0OTF8fDg1MzE8PUQmJkQ8PTg1MzJ8fDg1Mzk8PUQmJkQ8PTg1NDJ8fDg1NDQ8PUQmJkQ8PTg1NTV8fDg1NjA8PUQmJkQ8PTg1Njl8fEQ9PTg1ODV8fDg1OTI8PUQmJkQ8PTg2MDF8fDg2MzI8PUQmJkQ8PTg2MzN8fEQ9PTg2NTh8fEQ9PTg2NjB8fEQ9PTg2Nzl8fEQ9PTg3MDR8fDg3MDY8PUQmJkQ8PTg3MDd8fDg3MTE8PUQmJkQ8PTg3MTJ8fEQ9PTg3MTV8fEQ9PTg3MTl8fEQ9PTg3MjF8fEQ9PTg3MjV8fEQ9PTg3MzB8fDg3MzM8PUQmJkQ8PTg3MzZ8fEQ9PTg3Mzl8fEQ9PTg3NDF8fDg3NDM8PUQmJkQ8PTg3NDh8fEQ9PTg3NTB8fDg3NTY8PUQmJkQ8PTg3NTl8fDg3NjQ8PUQmJkQ8PTg3NjV8fEQ9PTg3NzZ8fEQ9PTg3ODB8fEQ9PTg3ODZ8fDg4MDA8PUQmJkQ8PTg4MDF8fDg4MDQ8PUQmJkQ8PTg4MDd8fDg4MTA8PUQmJkQ8PTg4MTF8fDg4MTQ8PUQmJkQ8PTg4MTV8fDg4MzQ8PUQmJkQ8PTg4MzV8fDg4Mzg8PUQmJkQ8PTg4Mzl8fEQ9PTg4NTN8fEQ9PTg4NTd8fEQ9PTg4Njl8fEQ9PTg4OTV8fEQ9PTg5Nzh8fDkzMTI8PUQmJkQ8PTk0NDl8fDk0NTE8PUQmJkQ8PTk1NDd8fDk1NTI8PUQmJkQ8PTk1ODd8fDk2MDA8PUQmJkQ8PTk2MTV8fDk2MTg8PUQmJkQ8PTk2MjF8fDk2MzI8PUQmJkQ8PTk2MzN8fDk2MzU8PUQmJkQ8PTk2NDF8fDk2NTA8PUQmJkQ8PTk2NTF8fDk2NTQ8PUQmJkQ8PTk2NTV8fDk2NjA8PUQmJkQ8PTk2NjF8fDk2NjQ8PUQmJkQ8PTk2NjV8fDk2NzA8PUQmJkQ8PTk2NzJ8fEQ9PTk2NzV8fDk2Nzg8PUQmJkQ8PTk2ODF8fDk2OTg8PUQmJkQ8PTk3MDF8fEQ9PTk3MTF8fDk3MzM8PUQmJkQ8PTk3MzR8fEQ9PTk3Mzd8fDk3NDI8PUQmJkQ8PTk3NDN8fDk3NDg8PUQmJkQ8PTk3NDl8fEQ9PTk3NTZ8fEQ9PTk3NTh8fEQ9PTk3OTJ8fEQ9PTk3OTR8fDk4MjQ8PUQmJkQ8PTk4MjV8fDk4Mjc8PUQmJkQ8PTk4Mjl8fDk4MzE8PUQmJkQ8PTk4MzR8fDk4MzY8PUQmJkQ8PTk4Mzd8fEQ9PTk4Mzl8fDk4ODY8PUQmJkQ8PTk4ODd8fDk5MTg8PUQmJkQ8PTk5MTl8fDk5MjQ8PUQmJkQ8PTk5MzN8fDk5MzU8PUQmJkQ8PTk5NTN8fEQ9PTk5NTV8fDk5NjA8PUQmJkQ8PTk5ODN8fEQ9PTEwMDQ1fHxEPT0xMDA3MXx8MTAxMDI8PUQmJkQ8PTEwMTExfHwxMTA5Mzw9RCYmRDw9MTEwOTd8fDEyODcyPD1EJiZEPD0xMjg3OXx8NTczNDQ8PUQmJkQ8PTYzNzQzfHw2NTAyNDw9RCYmRDw9NjUwMzl8fEQ9PTY1NTMzfHwxMjcyMzI8PUQmJkQ8PTEyNzI0Mnx8MTI3MjQ4PD1EJiZEPD0xMjcyNzd8fDEyNzI4MDw9RCYmRDw9MTI3MzM3fHwxMjczNDQ8PUQmJkQ8PTEyNzM4Nnx8OTE3NzYwPD1EJiZEPD05MTc5OTl8fDk4MzA0MDw9RCYmRDw9MTA0ODU3M3x8MTA0ODU3Njw9RCYmRDw9MTExNDEwOT9cIkFcIjpcIk5cIn0sdS5jaGFyYWN0ZXJMZW5ndGg9ZnVuY3Rpb24oRil7dmFyIHM9dGhpcy5lYXN0QXNpYW5XaWR0aChGKTtyZXR1cm4gcz09XCJGXCJ8fHM9PVwiV1wifHxzPT1cIkFcIj8yOjF9O2Z1bmN0aW9uIHQoRil7cmV0dXJuIEYubWF0Y2goL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl18W15cXHVEODAwLVxcdURGRkZdL2cpfHxbXX11Lmxlbmd0aD1mdW5jdGlvbihGKXtmb3IodmFyIHM9dChGKSxpPTAsRD0wO0Q8cy5sZW5ndGg7RCsrKWk9aSt0aGlzLmNoYXJhY3Rlckxlbmd0aChzW0RdKTtyZXR1cm4gaX0sdS5zbGljZT1mdW5jdGlvbihGLHMsaSl7dGV4dExlbj11Lmxlbmd0aChGKSxzPXN8fDAsaT1pfHwxLHM8MCYmKHM9dGV4dExlbitzKSxpPDAmJihpPXRleHRMZW4raSk7Zm9yKHZhciBEPVwiXCIsQz0wLG49dChGKSxFPTA7RTxuLmxlbmd0aDtFKyspe3ZhciBhPW5bRV0sbz11Lmxlbmd0aChhKTtpZihDPj1zLShvPT0yPzE6MCkpaWYoQytvPD1pKUQrPWE7ZWxzZSBicmVhaztDKz1vfXJldHVybiBEfX0pKFcpO3ZhciB0RD1XLmV4cG9ydHM7Y29uc3QgZUQ9TCh0RCk7dmFyIEZEPWZ1bmN0aW9uKCl7cmV0dXJuL1xcdUQ4M0NcXHVERkY0XFx1REI0MFxcdURDNjdcXHVEQjQwXFx1REM2Mig/OlxcdURCNDBcXHVEQzc3XFx1REI0MFxcdURDNkNcXHVEQjQwXFx1REM3M3xcXHVEQjQwXFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REI0MFxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3KVxcdURCNDBcXHVEQzdGfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkZcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZGXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRV0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkVcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZFXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZEXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRFxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSl8KD86XFx1RDgzRVxcdURERDFcXHVEODNDXFx1REZGQ1xcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxfFxcdUQ4M0RcXHVEQzY5XFx1RDgzQ1xcdURGRkNcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKSg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkJcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1xcdURGRkIoPzpcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSl8XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRnxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKT98KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKXxcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNEXFx1REM2OHwoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHUyMDBEKD86XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pKXxcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRVxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXwoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pXFx1RkUwRnxcXHUyMDBEKD86KD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKXxcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkMpP3woPzpcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKXxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSlcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDEpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSkpfFxcdUQ4M0RcXHVEQzY5KD86XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQ1xcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSkpfFxcdUQ4M0VcXHVEREQxKD86XFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZGXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZEXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfCg/OlxcdUQ4M0RcXHVEQzQxXFx1RkUwRlxcdTIwMERcXHVEODNEXFx1RERFOHxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NcXHVERkZGXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZFXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZEXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZDXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZCXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XSl8XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pfFxcdUQ4M0RcXHVERTM2XFx1MjAwRFxcdUQ4M0NcXHVERjJCfFxcdUQ4M0NcXHVERkYzXFx1RkUwRlxcdTIwMERcXHUyNkE3fFxcdUQ4M0RcXHVEQzNCXFx1MjAwRFxcdTI3NDR8KD86KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKVxcdTIwMERbXFx1MjY0MFxcdTI2NDJdfFxcdUQ4M0NcXHVERkY0XFx1MjAwRFxcdTI2MjB8KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXxbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkIwXFx1MjZCMVxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RDNcXHUyNkU5XFx1MjZGMFxcdTI2RjFcXHUyNkY0XFx1MjZGN1xcdTI2RjhcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc2M1xcdTI3QTFcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTMwMzBcXHUzMDNEXFx1MzI5N1xcdTMyOTldfFxcdUQ4M0NbXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdURFMDJcXHVERTM3XFx1REYyMVxcdURGMjQtXFx1REYyQ1xcdURGMzZcXHVERjdEXFx1REY5NlxcdURGOTdcXHVERjk5LVxcdURGOUJcXHVERjlFXFx1REY5RlxcdURGQ0RcXHVERkNFXFx1REZENC1cXHVERkRGXFx1REZGNVxcdURGRjddfFxcdUQ4M0RbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdKVxcdUZFMEZ8XFx1RDgzQ1xcdURGRjNcXHVGRTBGXFx1MjAwRFxcdUQ4M0NcXHVERjA4fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY3fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVERTM1XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCfFxcdUQ4M0RcXHVERTJFXFx1MjAwRFxcdUQ4M0RcXHVEQ0E4fFxcdUQ4M0RcXHVEQzE1XFx1MjAwRFxcdUQ4M0VcXHVEREJBfFxcdUQ4M0VcXHVEREQxKD86XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkN8XFx1RDgzQ1xcdURGRkIpP3xcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZGfFxcdUQ4M0NcXHVERkZFfFxcdUQ4M0NcXHVERkZEfFxcdUQ4M0NcXHVERkZDfFxcdUQ4M0NcXHVERkZCKT98XFx1RDgzQ1xcdURERkRcXHVEODNDXFx1RERGMHxcXHVEODNDXFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdUQ4M0NcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RDgzRFxcdURDMDhcXHUyMDBEXFx1MkIxQnxcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSl8XFx1RDgzRFxcdURDNDFcXHVGRTBGfFxcdUQ4M0NcXHVERkYzXFx1RkUwRnxcXHVEODNDXFx1RERGRig/OlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXSl8XFx1RDgzQ1xcdURERkUoPzpcXHVEODNDW1xcdURERUFcXHVEREY5XSl8XFx1RDgzQ1xcdURERkMoPzpcXHVEODNDW1xcdURERUJcXHVEREY4XSl8XFx1RDgzQ1xcdURERkIoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdKXxcXHVEODNDXFx1RERGQSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY5KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY4KD86XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXSl8XFx1RDgzQ1xcdURERjcoPzpcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXSl8XFx1RDgzQ1xcdURERjUoPzpcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV0pfFxcdUQ4M0NcXHVEREYzKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdKXxcXHVEODNDXFx1RERGMig/OlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREYxKD86XFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdKXxcXHVEODNDXFx1RERGMCg/OlxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFRig/OlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV0pfFxcdUQ4M0NcXHVEREVFKD86XFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldKXxcXHVEODNDXFx1RERFRCg/OlxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXSl8XFx1RDgzQ1xcdURERUMoPzpcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdKXxcXHVEODNDXFx1RERFQig/OlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XSl8XFx1RDgzQ1xcdURERUEoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXSl8XFx1RDgzQ1xcdURERTkoPzpcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdKXxcXHVEODNDXFx1RERFOCg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREU3KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFNig/OlxcdUQ4M0NbXFx1RERFOC1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREYyXFx1RERGNFxcdURERjYtXFx1RERGQVxcdURERkNcXHVEREZEXFx1RERGRl0pfFsjXFwqMC05XVxcdUZFMEZcXHUyMEUzfFxcdTI3NjRcXHVGRTBGfCg/OlxcdUQ4M0NbXFx1REZDM1xcdURGQzRcXHVERkNBXXxcXHVEODNEW1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0pKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNDXFx1REZGNHwoPzpbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfCg/OltcXHUyNjFEXFx1MjcwQ1xcdTI3MERdfFxcdUQ4M0RbXFx1REQ3NFxcdUREOTBdKSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDMDhcXHVEQzE1XFx1REMzQlxcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFMkVcXHVERTM1XFx1REUzNlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XXxcXHVEODNDW1xcdURGQzNcXHVERkM0XFx1REZDQV18XFx1RDgzRFtcXHVEQzZFXFx1REM3MFxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNC1cXHVERUI2XXxcXHVEODNFW1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXXxbXFx1MjMxQVxcdTIzMUJcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNUZFXFx1MjYxNFxcdTI2MTVcXHUyNjQ4LVxcdTI2NTNcXHUyNjdGXFx1MjY5M1xcdTI2QTFcXHUyNkFBXFx1MjZBQlxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkYyXFx1MjZGM1xcdTI2RjVcXHUyNkZBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc5NS1cXHUyNzk3XFx1MjdCMFxcdTI3QkZcXHUyQjFCXFx1MkIxQ1xcdTJCNTBcXHUyQjU1XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjdDXFx1REY3RS1cXHVERjg0XFx1REY4Ni1cXHVERjkzXFx1REZBMC1cXHVERkMxXFx1REZDNVxcdURGQzZcXHVERkM4XFx1REZDOVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjgtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDMDdcXHVEQzA5LVxcdURDMTRcXHVEQzE2LVxcdURDM0FcXHVEQzNDLVxcdURDM0VcXHVEQzQwXFx1REM0NFxcdURDNDVcXHVEQzUxLVxcdURDNjVcXHVEQzZBXFx1REM3OS1cXHVEQzdCXFx1REM3RC1cXHVEQzgwXFx1REM4NFxcdURDODgtXFx1REM4RVxcdURDOTBcXHVEQzkyLVxcdURDQTlcXHVEQ0FCLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVEREE0XFx1RERGQi1cXHVERTJEXFx1REUyRi1cXHVERTM0XFx1REUzNy1cXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDFEXFx1REQyMC1cXHVERDI1XFx1REQyNy1cXHVERDJGXFx1REQzQVxcdUREM0YtXFx1REQ0NVxcdURENDctXFx1REQ3NlxcdURENzhcXHVERDdBLVxcdUREQjRcXHVEREI3XFx1RERCQVxcdUREQkMtXFx1RERDQlxcdURERDBcXHVEREUwLVxcdURERkZcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZdfCg/OltcXHUyMzFBXFx1MjMxQlxcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI1RkVcXHUyNjE0XFx1MjYxNVxcdTI2NDgtXFx1MjY1M1xcdTI2N0ZcXHUyNjkzXFx1MjZBMVxcdTI2QUFcXHUyNkFCXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDNVxcdTI2Q0VcXHUyNkQ0XFx1MjZFQVxcdTI2RjJcXHUyNkYzXFx1MjZGNVxcdTI2RkFcXHUyNkZEXFx1MjcwNVxcdTI3MEFcXHUyNzBCXFx1MjcyOFxcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc1N1xcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkIxQlxcdTJCMUNcXHUyQjUwXFx1MkI1NV18XFx1RDgzQ1tcXHVEQzA0XFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY5M1xcdURGQTAtXFx1REZDQVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjRcXHVERkY4LVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVEQzNFXFx1REM0MFxcdURDNDItXFx1RENGQ1xcdURDRkYtXFx1REQzRFxcdURENEItXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdUREN0FcXHVERDk1XFx1REQ5NlxcdUREQTRcXHVEREZCLVxcdURFNEZcXHVERTgwLVxcdURFQzVcXHVERUNDXFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSl8KD86WyNcXCowLTlcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRTktXFx1MjNGM1xcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQi1cXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjFEXFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5Mi1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTFcXHUyNkE3XFx1MjZBQVxcdTI2QUJcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkM4XFx1MjZDRVxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RDRcXHUyNkU5XFx1MjZFQVxcdTI2RjAtXFx1MjZGNVxcdTI2RjctXFx1MjZGQVxcdTI2RkRcXHUyNzAyXFx1MjcwNVxcdTI3MDgtXFx1MjcwRFxcdTI3MEZcXHUyNzEyXFx1MjcxNFxcdTI3MTZcXHUyNzFEXFx1MjcyMVxcdTI3MjhcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc2M1xcdTI3NjRcXHUyNzk1LVxcdTI3OTdcXHUyN0ExXFx1MjdCMFxcdTI3QkZcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTJCMUJcXHUyQjFDXFx1MkI1MFxcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUwMlxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjFcXHVERjI0LVxcdURGOTNcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUUtXFx1REZGMFxcdURGRjMtXFx1REZGNVxcdURGRjctXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDRkRcXHVEQ0ZGLVxcdUREM0RcXHVERDQ5LVxcdURENEVcXHVERDUwLVxcdURENjdcXHVERDZGXFx1REQ3MFxcdURENzMtXFx1REQ3QVxcdUREODdcXHVERDhBLVxcdUREOERcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVEREE0XFx1RERBNVxcdUREQThcXHVEREIxXFx1RERCMlxcdUREQkNcXHVEREMyLVxcdUREQzRcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREVcXHVEREUxXFx1RERFM1xcdURERThcXHVEREVGXFx1RERGM1xcdURERkEtXFx1REU0RlxcdURFODAtXFx1REVDNVxcdURFQ0ItXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUVCXFx1REVFQ1xcdURFRjBcXHVERUYzLVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSlcXHVGRTBGfCg/OltcXHUyNjFEXFx1MjZGOVxcdTI3MEEtXFx1MjcwRF18XFx1RDgzQ1tcXHVERjg1XFx1REZDMi1cXHVERkM0XFx1REZDN1xcdURGQ0EtXFx1REZDQ118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjYtXFx1REM3OFxcdURDN0NcXHVEQzgxLVxcdURDODNcXHVEQzg1LVxcdURDODdcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDc0XFx1REQ3NVxcdUREN0FcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVERTQ1LVxcdURFNDdcXHVERTRCLVxcdURFNEZcXHVERUEzXFx1REVCNC1cXHVERUI2XFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDI2XFx1REQzMC1cXHVERDM5XFx1REQzQy1cXHVERDNFXFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCOFxcdUREQjlcXHVEREJCXFx1RERDRC1cXHVERENGXFx1REREMS1cXHVEREREXSkvZ307Y29uc3Qgc0Q9TChGRCk7ZnVuY3Rpb24gcChlLHU9e30pe2lmKHR5cGVvZiBlIT1cInN0cmluZ1wifHxlLmxlbmd0aD09PTB8fCh1PXthbWJpZ3VvdXNJc05hcnJvdzohMCwuLi51fSxlPVAoZSksZS5sZW5ndGg9PT0wKSlyZXR1cm4gMDtlPWUucmVwbGFjZShzRCgpLFwiICBcIik7Y29uc3QgdD11LmFtYmlndW91c0lzTmFycm93PzE6MjtsZXQgRj0wO2Zvcihjb25zdCBzIG9mIGUpe2NvbnN0IGk9cy5jb2RlUG9pbnRBdCgwKTtpZihpPD0zMXx8aT49MTI3JiZpPD0xNTl8fGk+PTc2OCYmaTw9ODc5KWNvbnRpbnVlO3N3aXRjaChlRC5lYXN0QXNpYW5XaWR0aChzKSl7Y2FzZVwiRlwiOmNhc2VcIldcIjpGKz0yO2JyZWFrO2Nhc2VcIkFcIjpGKz10O2JyZWFrO2RlZmF1bHQ6Ris9MX19cmV0dXJuIEZ9Y29uc3Qgdz0xMCxOPShlPTApPT51PT5gXFx4MUJbJHt1K2V9bWAsST0oZT0wKT0+dT0+YFxceDFCWyR7MzgrZX07NTske3V9bWAsUj0oZT0wKT0+KHUsdCxGKT0+YFxceDFCWyR7MzgrZX07Mjske3V9OyR7dH07JHtGfW1gLHI9e21vZGlmaWVyOntyZXNldDpbMCwwXSxib2xkOlsxLDIyXSxkaW06WzIsMjJdLGl0YWxpYzpbMywyM10sdW5kZXJsaW5lOls0LDI0XSxvdmVybGluZTpbNTMsNTVdLGludmVyc2U6WzcsMjddLGhpZGRlbjpbOCwyOF0sc3RyaWtldGhyb3VnaDpbOSwyOV19LGNvbG9yOntibGFjazpbMzAsMzldLHJlZDpbMzEsMzldLGdyZWVuOlszMiwzOV0seWVsbG93OlszMywzOV0sYmx1ZTpbMzQsMzldLG1hZ2VudGE6WzM1LDM5XSxjeWFuOlszNiwzOV0sd2hpdGU6WzM3LDM5XSxibGFja0JyaWdodDpbOTAsMzldLGdyYXk6WzkwLDM5XSxncmV5Ols5MCwzOV0scmVkQnJpZ2h0Ols5MSwzOV0sZ3JlZW5CcmlnaHQ6WzkyLDM5XSx5ZWxsb3dCcmlnaHQ6WzkzLDM5XSxibHVlQnJpZ2h0Ols5NCwzOV0sbWFnZW50YUJyaWdodDpbOTUsMzldLGN5YW5CcmlnaHQ6Wzk2LDM5XSx3aGl0ZUJyaWdodDpbOTcsMzldfSxiZ0NvbG9yOntiZ0JsYWNrOls0MCw0OV0sYmdSZWQ6WzQxLDQ5XSxiZ0dyZWVuOls0Miw0OV0sYmdZZWxsb3c6WzQzLDQ5XSxiZ0JsdWU6WzQ0LDQ5XSxiZ01hZ2VudGE6WzQ1LDQ5XSxiZ0N5YW46WzQ2LDQ5XSxiZ1doaXRlOls0Nyw0OV0sYmdCbGFja0JyaWdodDpbMTAwLDQ5XSxiZ0dyYXk6WzEwMCw0OV0sYmdHcmV5OlsxMDAsNDldLGJnUmVkQnJpZ2h0OlsxMDEsNDldLGJnR3JlZW5CcmlnaHQ6WzEwMiw0OV0sYmdZZWxsb3dCcmlnaHQ6WzEwMyw0OV0sYmdCbHVlQnJpZ2h0OlsxMDQsNDldLGJnTWFnZW50YUJyaWdodDpbMTA1LDQ5XSxiZ0N5YW5CcmlnaHQ6WzEwNiw0OV0sYmdXaGl0ZUJyaWdodDpbMTA3LDQ5XX19O09iamVjdC5rZXlzKHIubW9kaWZpZXIpO2NvbnN0IGlEPU9iamVjdC5rZXlzKHIuY29sb3IpLENEPU9iamVjdC5rZXlzKHIuYmdDb2xvcik7Wy4uLmlELC4uLkNEXTtmdW5jdGlvbiByRCgpe2NvbnN0IGU9bmV3IE1hcDtmb3IoY29uc3RbdSx0XW9mIE9iamVjdC5lbnRyaWVzKHIpKXtmb3IoY29uc3RbRixzXW9mIE9iamVjdC5lbnRyaWVzKHQpKXJbRl09e29wZW46YFxceDFCWyR7c1swXX1tYCxjbG9zZTpgXFx4MUJbJHtzWzFdfW1gfSx0W0ZdPXJbRl0sZS5zZXQoc1swXSxzWzFdKTtPYmplY3QuZGVmaW5lUHJvcGVydHkocix1LHt2YWx1ZTp0LGVudW1lcmFibGU6ITF9KX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsXCJjb2Rlc1wiLHt2YWx1ZTplLGVudW1lcmFibGU6ITF9KSxyLmNvbG9yLmNsb3NlPVwiXFx4MUJbMzltXCIsci5iZ0NvbG9yLmNsb3NlPVwiXFx4MUJbNDltXCIsci5jb2xvci5hbnNpPU4oKSxyLmNvbG9yLmFuc2kyNTY9SSgpLHIuY29sb3IuYW5zaTE2bT1SKCksci5iZ0NvbG9yLmFuc2k9Tih3KSxyLmJnQ29sb3IuYW5zaTI1Nj1JKHcpLHIuYmdDb2xvci5hbnNpMTZtPVIodyksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocix7cmdiVG9BbnNpMjU2Ont2YWx1ZToodSx0LEYpPT51PT09dCYmdD09PUY/dTw4PzE2OnU+MjQ4PzIzMTpNYXRoLnJvdW5kKCh1LTgpLzI0NyoyNCkrMjMyOjE2KzM2Kk1hdGgucm91bmQodS8yNTUqNSkrNipNYXRoLnJvdW5kKHQvMjU1KjUpK01hdGgucm91bmQoRi8yNTUqNSksZW51bWVyYWJsZTohMX0saGV4VG9SZ2I6e3ZhbHVlOnU9Pntjb25zdCB0PS9bYS1mXFxkXXs2fXxbYS1mXFxkXXszfS9pLmV4ZWModS50b1N0cmluZygxNikpO2lmKCF0KXJldHVyblswLDAsMF07bGV0W0ZdPXQ7Ri5sZW5ndGg9PT0zJiYoRj1bLi4uRl0ubWFwKGk9PmkraSkuam9pbihcIlwiKSk7Y29uc3Qgcz1OdW1iZXIucGFyc2VJbnQoRiwxNik7cmV0dXJuW3M+PjE2JjI1NSxzPj44JjI1NSxzJjI1NV19LGVudW1lcmFibGU6ITF9LGhleFRvQW5zaTI1Njp7dmFsdWU6dT0+ci5yZ2JUb0Fuc2kyNTYoLi4uci5oZXhUb1JnYih1KSksZW51bWVyYWJsZTohMX0sYW5zaTI1NlRvQW5zaTp7dmFsdWU6dT0+e2lmKHU8OClyZXR1cm4gMzArdTtpZih1PDE2KXJldHVybiA5MCsodS04KTtsZXQgdCxGLHM7aWYodT49MjMyKXQ9KCh1LTIzMikqMTArOCkvMjU1LEY9dCxzPXQ7ZWxzZXt1LT0xNjtjb25zdCBDPXUlMzY7dD1NYXRoLmZsb29yKHUvMzYpLzUsRj1NYXRoLmZsb29yKEMvNikvNSxzPUMlNi81fWNvbnN0IGk9TWF0aC5tYXgodCxGLHMpKjI7aWYoaT09PTApcmV0dXJuIDMwO2xldCBEPTMwKyhNYXRoLnJvdW5kKHMpPDwyfE1hdGgucm91bmQoRik8PDF8TWF0aC5yb3VuZCh0KSk7cmV0dXJuIGk9PT0yJiYoRCs9NjApLER9LGVudW1lcmFibGU6ITF9LHJnYlRvQW5zaTp7dmFsdWU6KHUsdCxGKT0+ci5hbnNpMjU2VG9BbnNpKHIucmdiVG9BbnNpMjU2KHUsdCxGKSksZW51bWVyYWJsZTohMX0saGV4VG9BbnNpOnt2YWx1ZTp1PT5yLmFuc2kyNTZUb0Fuc2koci5oZXhUb0Fuc2kyNTYodSkpLGVudW1lcmFibGU6ITF9fSkscn1jb25zdCBFRD1yRCgpLGQ9bmV3IFNldChbXCJcXHgxQlwiLFwiXFx4OUJcIl0pLG9EPTM5LHk9XCJcXHgwN1wiLFY9XCJbXCIsbkQ9XCJdXCIsRz1cIm1cIixfPWAke25EfTg7O2Asej1lPT5gJHtkLnZhbHVlcygpLm5leHQoKS52YWx1ZX0ke1Z9JHtlfSR7R31gLEs9ZT0+YCR7ZC52YWx1ZXMoKS5uZXh0KCkudmFsdWV9JHtffSR7ZX0ke3l9YCxhRD1lPT5lLnNwbGl0KFwiIFwiKS5tYXAodT0+cCh1KSksaz0oZSx1LHQpPT57Y29uc3QgRj1bLi4udV07bGV0IHM9ITEsaT0hMSxEPXAoUChlW2UubGVuZ3RoLTFdKSk7Zm9yKGNvbnN0W0Msbl1vZiBGLmVudHJpZXMoKSl7Y29uc3QgRT1wKG4pO2lmKEQrRTw9dD9lW2UubGVuZ3RoLTFdKz1uOihlLnB1c2gobiksRD0wKSxkLmhhcyhuKSYmKHM9ITAsaT1GLnNsaWNlKEMrMSkuam9pbihcIlwiKS5zdGFydHNXaXRoKF8pKSxzKXtpP249PT15JiYocz0hMSxpPSExKTpuPT09RyYmKHM9ITEpO2NvbnRpbnVlfUQrPUUsRD09PXQmJkM8Ri5sZW5ndGgtMSYmKGUucHVzaChcIlwiKSxEPTApfSFEJiZlW2UubGVuZ3RoLTFdLmxlbmd0aD4wJiZlLmxlbmd0aD4xJiYoZVtlLmxlbmd0aC0yXSs9ZS5wb3AoKSl9LGhEPWU9Pntjb25zdCB1PWUuc3BsaXQoXCIgXCIpO2xldCB0PXUubGVuZ3RoO2Zvcig7dD4wJiYhKHAodVt0LTFdKT4wKTspdC0tO3JldHVybiB0PT09dS5sZW5ndGg/ZTp1LnNsaWNlKDAsdCkuam9pbihcIiBcIikrdS5zbGljZSh0KS5qb2luKFwiXCIpfSxsRD0oZSx1LHQ9e30pPT57aWYodC50cmltIT09ITEmJmUudHJpbSgpPT09XCJcIilyZXR1cm5cIlwiO2xldCBGPVwiXCIscyxpO2NvbnN0IEQ9YUQoZSk7bGV0IEM9W1wiXCJdO2Zvcihjb25zdFtFLGFdb2YgZS5zcGxpdChcIiBcIikuZW50cmllcygpKXt0LnRyaW0hPT0hMSYmKENbQy5sZW5ndGgtMV09Q1tDLmxlbmd0aC0xXS50cmltU3RhcnQoKSk7bGV0IG89cChDW0MubGVuZ3RoLTFdKTtpZihFIT09MCYmKG8+PXUmJih0LndvcmRXcmFwPT09ITF8fHQudHJpbT09PSExKSYmKEMucHVzaChcIlwiKSxvPTApLChvPjB8fHQudHJpbT09PSExKSYmKENbQy5sZW5ndGgtMV0rPVwiIFwiLG8rKykpLHQuaGFyZCYmRFtFXT51KXtjb25zdCBjPXUtbyxmPTErTWF0aC5mbG9vcigoRFtFXS1jLTEpL3UpO01hdGguZmxvb3IoKERbRV0tMSkvdSk8ZiYmQy5wdXNoKFwiXCIpLGsoQyxhLHUpO2NvbnRpbnVlfWlmKG8rRFtFXT51JiZvPjAmJkRbRV0+MCl7aWYodC53b3JkV3JhcD09PSExJiZvPHUpe2soQyxhLHUpO2NvbnRpbnVlfUMucHVzaChcIlwiKX1pZihvK0RbRV0+dSYmdC53b3JkV3JhcD09PSExKXtrKEMsYSx1KTtjb250aW51ZX1DW0MubGVuZ3RoLTFdKz1hfXQudHJpbSE9PSExJiYoQz1DLm1hcChFPT5oRChFKSkpO2NvbnN0IG49Wy4uLkMuam9pbihgXG5gKV07Zm9yKGNvbnN0W0UsYV1vZiBuLmVudHJpZXMoKSl7aWYoRis9YSxkLmhhcyhhKSl7Y29uc3R7Z3JvdXBzOmN9PW5ldyBSZWdFeHAoYCg/OlxcXFwke1Z9KD88Y29kZT5cXFxcZCspbXxcXFxcJHtffSg/PHVyaT4uKikke3l9KWApLmV4ZWMobi5zbGljZShFKS5qb2luKFwiXCIpKXx8e2dyb3Vwczp7fX07aWYoYy5jb2RlIT09dm9pZCAwKXtjb25zdCBmPU51bWJlci5wYXJzZUZsb2F0KGMuY29kZSk7cz1mPT09b0Q/dm9pZCAwOmZ9ZWxzZSBjLnVyaSE9PXZvaWQgMCYmKGk9Yy51cmkubGVuZ3RoPT09MD92b2lkIDA6Yy51cmkpfWNvbnN0IG89RUQuY29kZXMuZ2V0KE51bWJlcihzKSk7bltFKzFdPT09YFxuYD8oaSYmKEYrPUsoXCJcIikpLHMmJm8mJihGKz16KG8pKSk6YT09PWBcbmAmJihzJiZvJiYoRis9eihzKSksaSYmKEYrPUsoaSkpKX1yZXR1cm4gRn07ZnVuY3Rpb24gWShlLHUsdCl7cmV0dXJuIFN0cmluZyhlKS5ub3JtYWxpemUoKS5yZXBsYWNlKC9cXHJcXG4vZyxgXG5gKS5zcGxpdChgXG5gKS5tYXAoRj0+bEQoRix1LHQpKS5qb2luKGBcbmApfWNvbnN0IHhEPVtcInVwXCIsXCJkb3duXCIsXCJsZWZ0XCIsXCJyaWdodFwiLFwic3BhY2VcIixcImVudGVyXCIsXCJjYW5jZWxcIl0sQj17YWN0aW9uczpuZXcgU2V0KHhEKSxhbGlhc2VzOm5ldyBNYXAoW1tcImtcIixcInVwXCJdLFtcImpcIixcImRvd25cIl0sW1wiaFwiLFwibGVmdFwiXSxbXCJsXCIsXCJyaWdodFwiXSxbXCJcdTAwMDNcIixcImNhbmNlbFwiXSxbXCJlc2NhcGVcIixcImNhbmNlbFwiXV0pfTtmdW5jdGlvbiBjRChlKXtmb3IoY29uc3QgdSBpbiBlKXtjb25zdCB0PXU7aWYoIU9iamVjdC5oYXNPd24oZSx0KSljb250aW51ZTtjb25zdCBGPWVbdF07c3dpdGNoKHQpe2Nhc2VcImFsaWFzZXNcIjp7Zm9yKGNvbnN0IHMgaW4gRilPYmplY3QuaGFzT3duKEYscykmJihCLmFsaWFzZXMuaGFzKHMpfHxCLmFsaWFzZXMuc2V0KHMsRltzXSkpO2JyZWFrfX19fWZ1bmN0aW9uICQoZSx1KXtpZih0eXBlb2YgZT09XCJzdHJpbmdcIilyZXR1cm4gQi5hbGlhc2VzLmdldChlKT09PXU7Zm9yKGNvbnN0IHQgb2YgZSlpZih0IT09dm9pZCAwJiYkKHQsdSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gQkQoZSx1KXtpZihlPT09dSlyZXR1cm47Y29uc3QgdD1lLnNwbGl0KGBcbmApLEY9dS5zcGxpdChgXG5gKSxzPVtdO2ZvcihsZXQgaT0wO2k8TWF0aC5tYXgodC5sZW5ndGgsRi5sZW5ndGgpO2krKyl0W2ldIT09RltpXSYmcy5wdXNoKGkpO3JldHVybiBzfWNvbnN0IEFEPWdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybS5zdGFydHNXaXRoKFwid2luXCIpLFM9U3ltYm9sKFwiY2xhY2s6Y2FuY2VsXCIpO2Z1bmN0aW9uIHBEKGUpe3JldHVybiBlPT09U31mdW5jdGlvbiBtKGUsdSl7Y29uc3QgdD1lO3QuaXNUVFkmJnQuc2V0UmF3TW9kZSh1KX1mdW5jdGlvbiBmRCh7aW5wdXQ6ZT1qLG91dHB1dDp1PU0sb3ZlcndyaXRlOnQ9ITAsaGlkZUN1cnNvcjpGPSEwfT17fSl7Y29uc3Qgcz1nLmNyZWF0ZUludGVyZmFjZSh7aW5wdXQ6ZSxvdXRwdXQ6dSxwcm9tcHQ6XCJcIix0YWJTaXplOjF9KTtnLmVtaXRLZXlwcmVzc0V2ZW50cyhlLHMpLGUuaXNUVFkmJmUuc2V0UmF3TW9kZSghMCk7Y29uc3QgaT0oRCx7bmFtZTpDLHNlcXVlbmNlOm59KT0+e2NvbnN0IEU9U3RyaW5nKEQpO2lmKCQoW0UsQyxuXSxcImNhbmNlbFwiKSl7RiYmdS53cml0ZShsLnNob3cpLHByb2Nlc3MuZXhpdCgwKTtyZXR1cm59aWYoIXQpcmV0dXJuO2NvbnN0IGE9Qz09PVwicmV0dXJuXCI/MDotMSxvPUM9PT1cInJldHVyblwiPy0xOjA7Zy5tb3ZlQ3Vyc29yKHUsYSxvLCgpPT57Zy5jbGVhckxpbmUodSwxLCgpPT57ZS5vbmNlKFwia2V5cHJlc3NcIixpKX0pfSl9O3JldHVybiBGJiZ1LndyaXRlKGwuaGlkZSksZS5vbmNlKFwia2V5cHJlc3NcIixpKSwoKT0+e2Uub2ZmKFwia2V5cHJlc3NcIixpKSxGJiZ1LndyaXRlKGwuc2hvdyksZS5pc1RUWSYmIUFEJiZlLnNldFJhd01vZGUoITEpLHMudGVybWluYWw9ITEscy5jbG9zZSgpfX12YXIgZ0Q9T2JqZWN0LmRlZmluZVByb3BlcnR5LHZEPShlLHUsdCk9PnUgaW4gZT9nRChlLHUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KTplW3VdPXQsaD0oZSx1LHQpPT4odkQoZSx0eXBlb2YgdSE9XCJzeW1ib2xcIj91K1wiXCI6dSx0KSx0KTtjbGFzcyB4e2NvbnN0cnVjdG9yKHUsdD0hMCl7aCh0aGlzLFwiaW5wdXRcIiksaCh0aGlzLFwib3V0cHV0XCIpLGgodGhpcyxcIl9hYm9ydFNpZ25hbFwiKSxoKHRoaXMsXCJybFwiKSxoKHRoaXMsXCJvcHRzXCIpLGgodGhpcyxcIl9yZW5kZXJcIiksaCh0aGlzLFwiX3RyYWNrXCIsITEpLGgodGhpcyxcIl9wcmV2RnJhbWVcIixcIlwiKSxoKHRoaXMsXCJfc3Vic2NyaWJlcnNcIixuZXcgTWFwKSxoKHRoaXMsXCJfY3Vyc29yXCIsMCksaCh0aGlzLFwic3RhdGVcIixcImluaXRpYWxcIiksaCh0aGlzLFwiZXJyb3JcIixcIlwiKSxoKHRoaXMsXCJ2YWx1ZVwiKTtjb25zdHtpbnB1dDpGPWosb3V0cHV0OnM9TSxyZW5kZXI6aSxzaWduYWw6RCwuLi5DfT11O3RoaXMub3B0cz1DLHRoaXMub25LZXlwcmVzcz10aGlzLm9uS2V5cHJlc3MuYmluZCh0aGlzKSx0aGlzLmNsb3NlPXRoaXMuY2xvc2UuYmluZCh0aGlzKSx0aGlzLnJlbmRlcj10aGlzLnJlbmRlci5iaW5kKHRoaXMpLHRoaXMuX3JlbmRlcj1pLmJpbmQodGhpcyksdGhpcy5fdHJhY2s9dCx0aGlzLl9hYm9ydFNpZ25hbD1ELHRoaXMuaW5wdXQ9Rix0aGlzLm91dHB1dD1zfXVuc3Vic2NyaWJlKCl7dGhpcy5fc3Vic2NyaWJlcnMuY2xlYXIoKX1zZXRTdWJzY3JpYmVyKHUsdCl7Y29uc3QgRj10aGlzLl9zdWJzY3JpYmVycy5nZXQodSk/P1tdO0YucHVzaCh0KSx0aGlzLl9zdWJzY3JpYmVycy5zZXQodSxGKX1vbih1LHQpe3RoaXMuc2V0U3Vic2NyaWJlcih1LHtjYjp0fSl9b25jZSh1LHQpe3RoaXMuc2V0U3Vic2NyaWJlcih1LHtjYjp0LG9uY2U6ITB9KX1lbWl0KHUsLi4udCl7Y29uc3QgRj10aGlzLl9zdWJzY3JpYmVycy5nZXQodSk/P1tdLHM9W107Zm9yKGNvbnN0IGkgb2YgRilpLmNiKC4uLnQpLGkub25jZSYmcy5wdXNoKCgpPT5GLnNwbGljZShGLmluZGV4T2YoaSksMSkpO2Zvcihjb25zdCBpIG9mIHMpaSgpfXByb21wdCgpe3JldHVybiBuZXcgUHJvbWlzZSgodSx0KT0+e2lmKHRoaXMuX2Fib3J0U2lnbmFsKXtpZih0aGlzLl9hYm9ydFNpZ25hbC5hYm9ydGVkKXJldHVybiB0aGlzLnN0YXRlPVwiY2FuY2VsXCIsdGhpcy5jbG9zZSgpLHUoUyk7dGhpcy5fYWJvcnRTaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsKCk9Pnt0aGlzLnN0YXRlPVwiY2FuY2VsXCIsdGhpcy5jbG9zZSgpfSx7b25jZTohMH0pfWNvbnN0IEY9bmV3IFg7Ri5fd3JpdGU9KHMsaSxEKT0+e3RoaXMuX3RyYWNrJiYodGhpcy52YWx1ZT10aGlzLnJsPy5saW5lLnJlcGxhY2UoL1xcdC9nLFwiXCIpLHRoaXMuX2N1cnNvcj10aGlzLnJsPy5jdXJzb3I/PzAsdGhpcy5lbWl0KFwidmFsdWVcIix0aGlzLnZhbHVlKSksRCgpfSx0aGlzLmlucHV0LnBpcGUoRiksdGhpcy5ybD1PLmNyZWF0ZUludGVyZmFjZSh7aW5wdXQ6dGhpcy5pbnB1dCxvdXRwdXQ6Rix0YWJTaXplOjIscHJvbXB0OlwiXCIsZXNjYXBlQ29kZVRpbWVvdXQ6NTAsdGVybWluYWw6ITB9KSxPLmVtaXRLZXlwcmVzc0V2ZW50cyh0aGlzLmlucHV0LHRoaXMucmwpLHRoaXMucmwucHJvbXB0KCksdGhpcy5vcHRzLmluaXRpYWxWYWx1ZSE9PXZvaWQgMCYmdGhpcy5fdHJhY2smJnRoaXMucmwud3JpdGUodGhpcy5vcHRzLmluaXRpYWxWYWx1ZSksdGhpcy5pbnB1dC5vbihcImtleXByZXNzXCIsdGhpcy5vbktleXByZXNzKSxtKHRoaXMuaW5wdXQsITApLHRoaXMub3V0cHV0Lm9uKFwicmVzaXplXCIsdGhpcy5yZW5kZXIpLHRoaXMucmVuZGVyKCksdGhpcy5vbmNlKFwic3VibWl0XCIsKCk9Pnt0aGlzLm91dHB1dC53cml0ZShsLnNob3cpLHRoaXMub3V0cHV0Lm9mZihcInJlc2l6ZVwiLHRoaXMucmVuZGVyKSxtKHRoaXMuaW5wdXQsITEpLHUodGhpcy52YWx1ZSl9KSx0aGlzLm9uY2UoXCJjYW5jZWxcIiwoKT0+e3RoaXMub3V0cHV0LndyaXRlKGwuc2hvdyksdGhpcy5vdXRwdXQub2ZmKFwicmVzaXplXCIsdGhpcy5yZW5kZXIpLG0odGhpcy5pbnB1dCwhMSksdShTKX0pfSl9b25LZXlwcmVzcyh1LHQpe2lmKHRoaXMuc3RhdGU9PT1cImVycm9yXCImJih0aGlzLnN0YXRlPVwiYWN0aXZlXCIpLHQ/Lm5hbWUmJighdGhpcy5fdHJhY2smJkIuYWxpYXNlcy5oYXModC5uYW1lKSYmdGhpcy5lbWl0KFwiY3Vyc29yXCIsQi5hbGlhc2VzLmdldCh0Lm5hbWUpKSxCLmFjdGlvbnMuaGFzKHQubmFtZSkmJnRoaXMuZW1pdChcImN1cnNvclwiLHQubmFtZSkpLHUmJih1LnRvTG93ZXJDYXNlKCk9PT1cInlcInx8dS50b0xvd2VyQ2FzZSgpPT09XCJuXCIpJiZ0aGlzLmVtaXQoXCJjb25maXJtXCIsdS50b0xvd2VyQ2FzZSgpPT09XCJ5XCIpLHU9PT1cIlx0XCImJnRoaXMub3B0cy5wbGFjZWhvbGRlciYmKHRoaXMudmFsdWV8fCh0aGlzLnJsPy53cml0ZSh0aGlzLm9wdHMucGxhY2Vob2xkZXIpLHRoaXMuZW1pdChcInZhbHVlXCIsdGhpcy5vcHRzLnBsYWNlaG9sZGVyKSkpLHUmJnRoaXMuZW1pdChcImtleVwiLHUudG9Mb3dlckNhc2UoKSksdD8ubmFtZT09PVwicmV0dXJuXCIpe2lmKHRoaXMub3B0cy52YWxpZGF0ZSl7Y29uc3QgRj10aGlzLm9wdHMudmFsaWRhdGUodGhpcy52YWx1ZSk7RiYmKHRoaXMuZXJyb3I9RiBpbnN0YW5jZW9mIEVycm9yP0YubWVzc2FnZTpGLHRoaXMuc3RhdGU9XCJlcnJvclwiLHRoaXMucmw/LndyaXRlKHRoaXMudmFsdWUpKX10aGlzLnN0YXRlIT09XCJlcnJvclwiJiYodGhpcy5zdGF0ZT1cInN1Ym1pdFwiKX0kKFt1LHQ/Lm5hbWUsdD8uc2VxdWVuY2VdLFwiY2FuY2VsXCIpJiYodGhpcy5zdGF0ZT1cImNhbmNlbFwiKSwodGhpcy5zdGF0ZT09PVwic3VibWl0XCJ8fHRoaXMuc3RhdGU9PT1cImNhbmNlbFwiKSYmdGhpcy5lbWl0KFwiZmluYWxpemVcIiksdGhpcy5yZW5kZXIoKSwodGhpcy5zdGF0ZT09PVwic3VibWl0XCJ8fHRoaXMuc3RhdGU9PT1cImNhbmNlbFwiKSYmdGhpcy5jbG9zZSgpfWNsb3NlKCl7dGhpcy5pbnB1dC51bnBpcGUoKSx0aGlzLmlucHV0LnJlbW92ZUxpc3RlbmVyKFwia2V5cHJlc3NcIix0aGlzLm9uS2V5cHJlc3MpLHRoaXMub3V0cHV0LndyaXRlKGBcbmApLG0odGhpcy5pbnB1dCwhMSksdGhpcy5ybD8uY2xvc2UoKSx0aGlzLnJsPXZvaWQgMCx0aGlzLmVtaXQoYCR7dGhpcy5zdGF0ZX1gLHRoaXMudmFsdWUpLHRoaXMudW5zdWJzY3JpYmUoKX1yZXN0b3JlQ3Vyc29yKCl7Y29uc3QgdT1ZKHRoaXMuX3ByZXZGcmFtZSxwcm9jZXNzLnN0ZG91dC5jb2x1bW5zLHtoYXJkOiEwfSkuc3BsaXQoYFxuYCkubGVuZ3RoLTE7dGhpcy5vdXRwdXQud3JpdGUobC5tb3ZlKC05OTksdSotMSkpfXJlbmRlcigpe2NvbnN0IHU9WSh0aGlzLl9yZW5kZXIodGhpcyk/P1wiXCIscHJvY2Vzcy5zdGRvdXQuY29sdW1ucyx7aGFyZDohMH0pO2lmKHUhPT10aGlzLl9wcmV2RnJhbWUpe2lmKHRoaXMuc3RhdGU9PT1cImluaXRpYWxcIil0aGlzLm91dHB1dC53cml0ZShsLmhpZGUpO2Vsc2V7Y29uc3QgdD1CRCh0aGlzLl9wcmV2RnJhbWUsdSk7aWYodGhpcy5yZXN0b3JlQ3Vyc29yKCksdCYmdD8ubGVuZ3RoPT09MSl7Y29uc3QgRj10WzBdO3RoaXMub3V0cHV0LndyaXRlKGwubW92ZSgwLEYpKSx0aGlzLm91dHB1dC53cml0ZShiLmxpbmVzKDEpKTtjb25zdCBzPXUuc3BsaXQoYFxuYCk7dGhpcy5vdXRwdXQud3JpdGUoc1tGXSksdGhpcy5fcHJldkZyYW1lPXUsdGhpcy5vdXRwdXQud3JpdGUobC5tb3ZlKDAscy5sZW5ndGgtRi0xKSk7cmV0dXJufWlmKHQmJnQ/Lmxlbmd0aD4xKXtjb25zdCBGPXRbMF07dGhpcy5vdXRwdXQud3JpdGUobC5tb3ZlKDAsRikpLHRoaXMub3V0cHV0LndyaXRlKGIuZG93bigpKTtjb25zdCBzPXUuc3BsaXQoYFxuYCkuc2xpY2UoRik7dGhpcy5vdXRwdXQud3JpdGUocy5qb2luKGBcbmApKSx0aGlzLl9wcmV2RnJhbWU9dTtyZXR1cm59dGhpcy5vdXRwdXQud3JpdGUoYi5kb3duKCkpfXRoaXMub3V0cHV0LndyaXRlKHUpLHRoaXMuc3RhdGU9PT1cImluaXRpYWxcIiYmKHRoaXMuc3RhdGU9XCJhY3RpdmVcIiksdGhpcy5fcHJldkZyYW1lPXV9fX1jbGFzcyBkRCBleHRlbmRzIHh7Z2V0IGN1cnNvcigpe3JldHVybiB0aGlzLnZhbHVlPzA6MX1nZXQgX3ZhbHVlKCl7cmV0dXJuIHRoaXMuY3Vyc29yPT09MH1jb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSx0aGlzLnZhbHVlPSEhdS5pbml0aWFsVmFsdWUsdGhpcy5vbihcInZhbHVlXCIsKCk9Pnt0aGlzLnZhbHVlPXRoaXMuX3ZhbHVlfSksdGhpcy5vbihcImNvbmZpcm1cIix0PT57dGhpcy5vdXRwdXQud3JpdGUobC5tb3ZlKDAsLTEpKSx0aGlzLnZhbHVlPXQsdGhpcy5zdGF0ZT1cInN1Ym1pdFwiLHRoaXMuY2xvc2UoKX0pLHRoaXMub24oXCJjdXJzb3JcIiwoKT0+e3RoaXMudmFsdWU9IXRoaXMudmFsdWV9KX19dmFyIG1EPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxiRD0oZSx1LHQpPT51IGluIGU/bUQoZSx1LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp0fSk6ZVt1XT10LFo9KGUsdSx0KT0+KGJEKGUsdHlwZW9mIHUhPVwic3ltYm9sXCI/dStcIlwiOnUsdCksdCkscT0oZSx1LHQpPT57aWYoIXUuaGFzKGUpKXRocm93IFR5cGVFcnJvcihcIkNhbm5vdCBcIit0KX0sVD0oZSx1LHQpPT4ocShlLHUsXCJyZWFkIGZyb20gcHJpdmF0ZSBmaWVsZFwiKSx0P3QuY2FsbChlKTp1LmdldChlKSksd0Q9KGUsdSx0KT0+e2lmKHUuaGFzKGUpKXRocm93IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgdGhlIHNhbWUgcHJpdmF0ZSBtZW1iZXIgbW9yZSB0aGFuIG9uY2VcIik7dSBpbnN0YW5jZW9mIFdlYWtTZXQ/dS5hZGQoZSk6dS5zZXQoZSx0KX0seUQ9KGUsdSx0LEYpPT4ocShlLHUsXCJ3cml0ZSB0byBwcml2YXRlIGZpZWxkXCIpLEY/Ri5jYWxsKGUsdCk6dS5zZXQoZSx0KSx0KSxBO2xldCBfRD1jbGFzcyBleHRlbmRzIHh7Y29uc3RydWN0b3IodSl7c3VwZXIodSwhMSksWih0aGlzLFwib3B0aW9uc1wiKSxaKHRoaXMsXCJjdXJzb3JcIiwwKSx3RCh0aGlzLEEsdm9pZCAwKTtjb25zdHtvcHRpb25zOnR9PXU7eUQodGhpcyxBLHUuc2VsZWN0YWJsZUdyb3VwcyE9PSExKSx0aGlzLm9wdGlvbnM9T2JqZWN0LmVudHJpZXModCkuZmxhdE1hcCgoW0Ysc10pPT5be3ZhbHVlOkYsZ3JvdXA6ITAsbGFiZWw6Rn0sLi4ucy5tYXAoaT0+KHsuLi5pLGdyb3VwOkZ9KSldKSx0aGlzLnZhbHVlPVsuLi51LmluaXRpYWxWYWx1ZXM/P1tdXSx0aGlzLmN1cnNvcj1NYXRoLm1heCh0aGlzLm9wdGlvbnMuZmluZEluZGV4KCh7dmFsdWU6Rn0pPT5GPT09dS5jdXJzb3JBdCksVCh0aGlzLEEpPzA6MSksdGhpcy5vbihcImN1cnNvclwiLEY9Pntzd2l0Y2goRil7Y2FzZVwibGVmdFwiOmNhc2VcInVwXCI6e3RoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09MD90aGlzLm9wdGlvbnMubGVuZ3RoLTE6dGhpcy5jdXJzb3ItMTtjb25zdCBzPXRoaXMub3B0aW9uc1t0aGlzLmN1cnNvcl0/Lmdyb3VwPT09ITA7IVQodGhpcyxBKSYmcyYmKHRoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09MD90aGlzLm9wdGlvbnMubGVuZ3RoLTE6dGhpcy5jdXJzb3ItMSk7YnJlYWt9Y2FzZVwiZG93blwiOmNhc2VcInJpZ2h0XCI6e3RoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09dGhpcy5vcHRpb25zLmxlbmd0aC0xPzA6dGhpcy5jdXJzb3IrMTtjb25zdCBzPXRoaXMub3B0aW9uc1t0aGlzLmN1cnNvcl0/Lmdyb3VwPT09ITA7IVQodGhpcyxBKSYmcyYmKHRoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09dGhpcy5vcHRpb25zLmxlbmd0aC0xPzA6dGhpcy5jdXJzb3IrMSk7YnJlYWt9Y2FzZVwic3BhY2VcIjp0aGlzLnRvZ2dsZVZhbHVlKCk7YnJlYWt9fSl9Z2V0R3JvdXBJdGVtcyh1KXtyZXR1cm4gdGhpcy5vcHRpb25zLmZpbHRlcih0PT50Lmdyb3VwPT09dSl9aXNHcm91cFNlbGVjdGVkKHUpe3JldHVybiB0aGlzLmdldEdyb3VwSXRlbXModSkuZXZlcnkodD0+dGhpcy52YWx1ZS5pbmNsdWRlcyh0LnZhbHVlKSl9dG9nZ2xlVmFsdWUoKXtjb25zdCB1PXRoaXMub3B0aW9uc1t0aGlzLmN1cnNvcl07aWYodS5ncm91cD09PSEwKXtjb25zdCB0PXUudmFsdWUsRj10aGlzLmdldEdyb3VwSXRlbXModCk7dGhpcy5pc0dyb3VwU2VsZWN0ZWQodCk/dGhpcy52YWx1ZT10aGlzLnZhbHVlLmZpbHRlcihzPT5GLmZpbmRJbmRleChpPT5pLnZhbHVlPT09cyk9PT0tMSk6dGhpcy52YWx1ZT1bLi4udGhpcy52YWx1ZSwuLi5GLm1hcChzPT5zLnZhbHVlKV0sdGhpcy52YWx1ZT1BcnJheS5mcm9tKG5ldyBTZXQodGhpcy52YWx1ZSkpfWVsc2V7Y29uc3QgdD10aGlzLnZhbHVlLmluY2x1ZGVzKHUudmFsdWUpO3RoaXMudmFsdWU9dD90aGlzLnZhbHVlLmZpbHRlcihGPT5GIT09dS52YWx1ZSk6Wy4uLnRoaXMudmFsdWUsdS52YWx1ZV19fX07QT1uZXcgV2Vha01hcDt2YXIga0Q9T2JqZWN0LmRlZmluZVByb3BlcnR5LCREPShlLHUsdCk9PnUgaW4gZT9rRChlLHUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KTplW3VdPXQsSD0oZSx1LHQpPT4oJEQoZSx0eXBlb2YgdSE9XCJzeW1ib2xcIj91K1wiXCI6dSx0KSx0KTtsZXQgU0Q9Y2xhc3MgZXh0ZW5kcyB4e2NvbnN0cnVjdG9yKHUpe3N1cGVyKHUsITEpLEgodGhpcyxcIm9wdGlvbnNcIiksSCh0aGlzLFwiY3Vyc29yXCIsMCksdGhpcy5vcHRpb25zPXUub3B0aW9ucyx0aGlzLnZhbHVlPVsuLi51LmluaXRpYWxWYWx1ZXM/P1tdXSx0aGlzLmN1cnNvcj1NYXRoLm1heCh0aGlzLm9wdGlvbnMuZmluZEluZGV4KCh7dmFsdWU6dH0pPT50PT09dS5jdXJzb3JBdCksMCksdGhpcy5vbihcImtleVwiLHQ9Pnt0PT09XCJhXCImJnRoaXMudG9nZ2xlQWxsKCl9KSx0aGlzLm9uKFwiY3Vyc29yXCIsdD0+e3N3aXRjaCh0KXtjYXNlXCJsZWZ0XCI6Y2FzZVwidXBcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PTA/dGhpcy5vcHRpb25zLmxlbmd0aC0xOnRoaXMuY3Vyc29yLTE7YnJlYWs7Y2FzZVwiZG93blwiOmNhc2VcInJpZ2h0XCI6dGhpcy5jdXJzb3I9dGhpcy5jdXJzb3I9PT10aGlzLm9wdGlvbnMubGVuZ3RoLTE/MDp0aGlzLmN1cnNvcisxO2JyZWFrO2Nhc2VcInNwYWNlXCI6dGhpcy50b2dnbGVWYWx1ZSgpO2JyZWFrfX0pfWdldCBfdmFsdWUoKXtyZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXS52YWx1ZX10b2dnbGVBbGwoKXtjb25zdCB1PXRoaXMudmFsdWUubGVuZ3RoPT09dGhpcy5vcHRpb25zLmxlbmd0aDt0aGlzLnZhbHVlPXU/W106dGhpcy5vcHRpb25zLm1hcCh0PT50LnZhbHVlKX10b2dnbGVWYWx1ZSgpe2NvbnN0IHU9dGhpcy52YWx1ZS5pbmNsdWRlcyh0aGlzLl92YWx1ZSk7dGhpcy52YWx1ZT11P3RoaXMudmFsdWUuZmlsdGVyKHQ9PnQhPT10aGlzLl92YWx1ZSk6Wy4uLnRoaXMudmFsdWUsdGhpcy5fdmFsdWVdfX07dmFyIFREPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxqRD0oZSx1LHQpPT51IGluIGU/VEQoZSx1LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp0fSk6ZVt1XT10LFU9KGUsdSx0KT0+KGpEKGUsdHlwZW9mIHUhPVwic3ltYm9sXCI/dStcIlwiOnUsdCksdCk7Y2xhc3MgTUQgZXh0ZW5kcyB4e2NvbnN0cnVjdG9yKHttYXNrOnUsLi4udH0pe3N1cGVyKHQpLFUodGhpcyxcInZhbHVlV2l0aEN1cnNvclwiLFwiXCIpLFUodGhpcyxcIl9tYXNrXCIsXCJcXHUyMDIyXCIpLHRoaXMuX21hc2s9dT8/XCJcXHUyMDIyXCIsdGhpcy5vbihcImZpbmFsaXplXCIsKCk9Pnt0aGlzLnZhbHVlV2l0aEN1cnNvcj10aGlzLm1hc2tlZH0pLHRoaXMub24oXCJ2YWx1ZVwiLCgpPT57aWYodGhpcy5jdXJzb3I+PXRoaXMudmFsdWUubGVuZ3RoKXRoaXMudmFsdWVXaXRoQ3Vyc29yPWAke3RoaXMubWFza2VkfSR7di5pbnZlcnNlKHYuaGlkZGVuKFwiX1wiKSl9YDtlbHNle2NvbnN0IEY9dGhpcy5tYXNrZWQuc2xpY2UoMCx0aGlzLmN1cnNvcikscz10aGlzLm1hc2tlZC5zbGljZSh0aGlzLmN1cnNvcik7dGhpcy52YWx1ZVdpdGhDdXJzb3I9YCR7Rn0ke3YuaW52ZXJzZShzWzBdKX0ke3Muc2xpY2UoMSl9YH19KX1nZXQgY3Vyc29yKCl7cmV0dXJuIHRoaXMuX2N1cnNvcn1nZXQgbWFza2VkKCl7cmV0dXJuIHRoaXMudmFsdWUucmVwbGFjZUFsbCgvLi9nLHRoaXMuX21hc2spfX12YXIgT0Q9T2JqZWN0LmRlZmluZVByb3BlcnR5LFBEPShlLHUsdCk9PnUgaW4gZT9PRChlLHUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KTplW3VdPXQsSj0oZSx1LHQpPT4oUEQoZSx0eXBlb2YgdSE9XCJzeW1ib2xcIj91K1wiXCI6dSx0KSx0KTtjbGFzcyBMRCBleHRlbmRzIHh7Y29uc3RydWN0b3IodSl7c3VwZXIodSwhMSksSih0aGlzLFwib3B0aW9uc1wiKSxKKHRoaXMsXCJjdXJzb3JcIiwwKSx0aGlzLm9wdGlvbnM9dS5vcHRpb25zLHRoaXMuY3Vyc29yPXRoaXMub3B0aW9ucy5maW5kSW5kZXgoKHt2YWx1ZTp0fSk9PnQ9PT11LmluaXRpYWxWYWx1ZSksdGhpcy5jdXJzb3I9PT0tMSYmKHRoaXMuY3Vyc29yPTApLHRoaXMuY2hhbmdlVmFsdWUoKSx0aGlzLm9uKFwiY3Vyc29yXCIsdD0+e3N3aXRjaCh0KXtjYXNlXCJsZWZ0XCI6Y2FzZVwidXBcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PTA/dGhpcy5vcHRpb25zLmxlbmd0aC0xOnRoaXMuY3Vyc29yLTE7YnJlYWs7Y2FzZVwiZG93blwiOmNhc2VcInJpZ2h0XCI6dGhpcy5jdXJzb3I9dGhpcy5jdXJzb3I9PT10aGlzLm9wdGlvbnMubGVuZ3RoLTE/MDp0aGlzLmN1cnNvcisxO2JyZWFrfXRoaXMuY2hhbmdlVmFsdWUoKX0pfWdldCBfdmFsdWUoKXtyZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXX1jaGFuZ2VWYWx1ZSgpe3RoaXMudmFsdWU9dGhpcy5fdmFsdWUudmFsdWV9fXZhciBXRD1PYmplY3QuZGVmaW5lUHJvcGVydHksTkQ9KGUsdSx0KT0+dSBpbiBlP1dEKGUsdSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dH0pOmVbdV09dCxRPShlLHUsdCk9PihORChlLHR5cGVvZiB1IT1cInN5bWJvbFwiP3UrXCJcIjp1LHQpLHQpO2NsYXNzIElEIGV4dGVuZHMgeHtjb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSxRKHRoaXMsXCJvcHRpb25zXCIpLFEodGhpcyxcImN1cnNvclwiLDApLHRoaXMub3B0aW9ucz11Lm9wdGlvbnM7Y29uc3QgdD10aGlzLm9wdGlvbnMubWFwKCh7dmFsdWU6W0ZdfSk9PkY/LnRvTG93ZXJDYXNlKCkpO3RoaXMuY3Vyc29yPU1hdGgubWF4KHQuaW5kZXhPZih1LmluaXRpYWxWYWx1ZSksMCksdGhpcy5vbihcImtleVwiLEY9PntpZighdC5pbmNsdWRlcyhGKSlyZXR1cm47Y29uc3Qgcz10aGlzLm9wdGlvbnMuZmluZCgoe3ZhbHVlOltpXX0pPT5pPy50b0xvd2VyQ2FzZSgpPT09Rik7cyYmKHRoaXMudmFsdWU9cy52YWx1ZSx0aGlzLnN0YXRlPVwic3VibWl0XCIsdGhpcy5lbWl0KFwic3VibWl0XCIpKX0pfX1jbGFzcyBSRCBleHRlbmRzIHh7Z2V0IHZhbHVlV2l0aEN1cnNvcigpe2lmKHRoaXMuc3RhdGU9PT1cInN1Ym1pdFwiKXJldHVybiB0aGlzLnZhbHVlO2lmKHRoaXMuY3Vyc29yPj10aGlzLnZhbHVlLmxlbmd0aClyZXR1cm5gJHt0aGlzLnZhbHVlfVxcdTI1ODhgO2NvbnN0IHU9dGhpcy52YWx1ZS5zbGljZSgwLHRoaXMuY3Vyc29yKSxbdCwuLi5GXT10aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yKTtyZXR1cm5gJHt1fSR7di5pbnZlcnNlKHQpfSR7Ri5qb2luKFwiXCIpfWB9Z2V0IGN1cnNvcigpe3JldHVybiB0aGlzLl9jdXJzb3J9Y29uc3RydWN0b3IodSl7c3VwZXIodSksdGhpcy5vbihcImZpbmFsaXplXCIsKCk9Pnt0aGlzLnZhbHVlfHwodGhpcy52YWx1ZT11LmRlZmF1bHRWYWx1ZSl9KX19ZXhwb3J0e2REIGFzIENvbmZpcm1Qcm9tcHQsX0QgYXMgR3JvdXBNdWx0aVNlbGVjdFByb21wdCxTRCBhcyBNdWx0aVNlbGVjdFByb21wdCxNRCBhcyBQYXNzd29yZFByb21wdCx4IGFzIFByb21wdCxJRCBhcyBTZWxlY3RLZXlQcm9tcHQsTEQgYXMgU2VsZWN0UHJvbXB0LFJEIGFzIFRleHRQcm9tcHQsZkQgYXMgYmxvY2sscEQgYXMgaXNDYW5jZWwsY0QgYXMgdXBkYXRlU2V0dGluZ3N9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwKICAgICJpbXBvcnR7c3RyaXBWVENvbnRyb2xDaGFyYWN0ZXJzIGFzIFN9ZnJvbVwibm9kZTp1dGlsXCI7aW1wb3J0e1RleHRQcm9tcHQgYXMgUSxQYXNzd29yZFByb21wdCBhcyBYLENvbmZpcm1Qcm9tcHQgYXMgWixTZWxlY3RQcm9tcHQgYXMgZWUsU2VsZWN0S2V5UHJvbXB0IGFzIHRlLE11bHRpU2VsZWN0UHJvbXB0IGFzIHJlLEdyb3VwTXVsdGlTZWxlY3RQcm9tcHQgYXMgc2UsaXNDYW5jZWwgYXMgaWUsYmxvY2sgYXMgbmV9ZnJvbVwiQGNsYWNrL2NvcmVcIjtleHBvcnR7aXNDYW5jZWwsdXBkYXRlU2V0dGluZ3N9ZnJvbVwiQGNsYWNrL2NvcmVcIjtpbXBvcnQgeSBmcm9tXCJub2RlOnByb2Nlc3NcIjtpbXBvcnQgZSBmcm9tXCJwaWNvY29sb3JzXCI7aW1wb3J0e2N1cnNvciBhcyBvZSxlcmFzZSBhcyBhZX1mcm9tXCJzaXN0ZXJhbnNpXCI7ZnVuY3Rpb24gY2UoKXtyZXR1cm4geS5wbGF0Zm9ybSE9PVwid2luMzJcIj95LmVudi5URVJNIT09XCJsaW51eFwiOiEheS5lbnYuQ0l8fCEheS5lbnYuV1RfU0VTU0lPTnx8ISF5LmVudi5URVJNSU5VU19TVUJMSU1FfHx5LmVudi5Db25FbXVUYXNrPT09XCJ7Y21kOjpDbWRlcn1cInx8eS5lbnYuVEVSTV9QUk9HUkFNPT09XCJUZXJtaW51cy1TdWJsaW1lXCJ8fHkuZW52LlRFUk1fUFJPR1JBTT09PVwidnNjb2RlXCJ8fHkuZW52LlRFUk09PT1cInh0ZXJtLTI1NmNvbG9yXCJ8fHkuZW52LlRFUk09PT1cImFsYWNyaXR0eVwifHx5LmVudi5URVJNSU5BTF9FTVVMQVRPUj09PVwiSmV0QnJhaW5zLUplZGlUZXJtXCJ9Y29uc3QgVj1jZSgpLHU9KHQsbik9PlY/dDpuLGxlPXUoXCJcXHUyNUM2XCIsXCIqXCIpLEw9dShcIlxcdTI1QTBcIixcInhcIiksVz11KFwiXFx1MjVCMlwiLFwieFwiKSxDPXUoXCJcXHUyNUM3XCIsXCJvXCIpLHVlPXUoXCJcXHUyNTBDXCIsXCJUXCIpLG89dShcIlxcdTI1MDJcIixcInxcIiksZD11KFwiXFx1MjUxNFwiLFwiXFx1MjAxNFwiKSxrPXUoXCJcXHUyNUNGXCIsXCI+XCIpLFA9dShcIlxcdTI1Q0JcIixcIiBcIiksQT11KFwiXFx1MjVGQlwiLFwiW1xcdTIwMjJdXCIpLFQ9dShcIlxcdTI1RkNcIixcIlsrXVwiKSxGPXUoXCJcXHUyNUZCXCIsXCJbIF1cIiksJGU9dShcIlxcdTI1QUFcIixcIlxcdTIwMjJcIiksXz11KFwiXFx1MjUwMFwiLFwiLVwiKSxtZT11KFwiXFx1MjU2RVwiLFwiK1wiKSxkZT11KFwiXFx1MjUxQ1wiLFwiK1wiKSxwZT11KFwiXFx1MjU2RlwiLFwiK1wiKSxxPXUoXCJcXHUyNUNGXCIsXCJcXHUyMDIyXCIpLEQ9dShcIlxcdTI1QzZcIixcIipcIiksVT11KFwiXFx1MjVCMlwiLFwiIVwiKSxLPXUoXCJcXHUyNUEwXCIsXCJ4XCIpLGI9dD0+e3N3aXRjaCh0KXtjYXNlXCJpbml0aWFsXCI6Y2FzZVwiYWN0aXZlXCI6cmV0dXJuIGUuY3lhbihsZSk7Y2FzZVwiY2FuY2VsXCI6cmV0dXJuIGUucmVkKEwpO2Nhc2VcImVycm9yXCI6cmV0dXJuIGUueWVsbG93KFcpO2Nhc2VcInN1Ym1pdFwiOnJldHVybiBlLmdyZWVuKEMpfX0sRz10PT57Y29uc3R7Y3Vyc29yOm4sb3B0aW9uczpyLHN0eWxlOml9PXQscz10Lm1heEl0ZW1zPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYz1NYXRoLm1heChwcm9jZXNzLnN0ZG91dC5yb3dzLTQsMCksYT1NYXRoLm1pbihjLE1hdGgubWF4KHMsNSkpO2xldCBsPTA7bj49bCthLTM/bD1NYXRoLm1heChNYXRoLm1pbihuLWErMyxyLmxlbmd0aC1hKSwwKTpuPGwrMiYmKGw9TWF0aC5tYXgobi0yLDApKTtjb25zdCAkPWE8ci5sZW5ndGgmJmw+MCxnPWE8ci5sZW5ndGgmJmwrYTxyLmxlbmd0aDtyZXR1cm4gci5zbGljZShsLGwrYSkubWFwKChwLHYsZik9Pntjb25zdCBqPXY9PT0wJiYkLEU9dj09PWYubGVuZ3RoLTEmJmc7cmV0dXJuIGp8fEU/ZS5kaW0oXCIuLi5cIik6aShwLHYrbD09PW4pfSl9LGhlPXQ9Pm5ldyBRKHt2YWxpZGF0ZTp0LnZhbGlkYXRlLHBsYWNlaG9sZGVyOnQucGxhY2Vob2xkZXIsZGVmYXVsdFZhbHVlOnQuZGVmYXVsdFZhbHVlLGluaXRpYWxWYWx1ZTp0LmluaXRpYWxWYWx1ZSxyZW5kZXIoKXtjb25zdCBuPWAke2UuZ3JheShvKX1cbiR7Yih0aGlzLnN0YXRlKX0gICR7dC5tZXNzYWdlfVxuYCxyPXQucGxhY2Vob2xkZXI/ZS5pbnZlcnNlKHQucGxhY2Vob2xkZXJbMF0pK2UuZGltKHQucGxhY2Vob2xkZXIuc2xpY2UoMSkpOmUuaW52ZXJzZShlLmhpZGRlbihcIl9cIikpLGk9dGhpcy52YWx1ZT90aGlzLnZhbHVlV2l0aEN1cnNvcjpyO3N3aXRjaCh0aGlzLnN0YXRlKXtjYXNlXCJlcnJvclwiOnJldHVybmAke24udHJpbSgpfVxuJHtlLnllbGxvdyhvKX0gICR7aX1cbiR7ZS55ZWxsb3coZCl9ICAke2UueWVsbG93KHRoaXMuZXJyb3IpfVxuYDtjYXNlXCJzdWJtaXRcIjpyZXR1cm5gJHtufSR7ZS5ncmF5KG8pfSAgJHtlLmRpbSh0aGlzLnZhbHVlfHx0LnBsYWNlaG9sZGVyKX1gO2Nhc2VcImNhbmNlbFwiOnJldHVybmAke259JHtlLmdyYXkobyl9ICAke2Uuc3RyaWtldGhyb3VnaChlLmRpbSh0aGlzLnZhbHVlPz9cIlwiKSl9JHt0aGlzLnZhbHVlPy50cmltKCk/YFxuJHtlLmdyYXkobyl9YDpcIlwifWA7ZGVmYXVsdDpyZXR1cm5gJHtufSR7ZS5jeWFuKG8pfSAgJHtpfVxuJHtlLmN5YW4oZCl9XG5gfX19KS5wcm9tcHQoKSxnZT10PT5uZXcgWCh7dmFsaWRhdGU6dC52YWxpZGF0ZSxtYXNrOnQubWFzaz8/JGUscmVuZGVyKCl7Y29uc3Qgbj1gJHtlLmdyYXkobyl9XG4ke2IodGhpcy5zdGF0ZSl9ICAke3QubWVzc2FnZX1cbmAscj10aGlzLnZhbHVlV2l0aEN1cnNvcixpPXRoaXMubWFza2VkO3N3aXRjaCh0aGlzLnN0YXRlKXtjYXNlXCJlcnJvclwiOnJldHVybmAke24udHJpbSgpfVxuJHtlLnllbGxvdyhvKX0gICR7aX1cbiR7ZS55ZWxsb3coZCl9ICAke2UueWVsbG93KHRoaXMuZXJyb3IpfVxuYDtjYXNlXCJzdWJtaXRcIjpyZXR1cm5gJHtufSR7ZS5ncmF5KG8pfSAgJHtlLmRpbShpKX1gO2Nhc2VcImNhbmNlbFwiOnJldHVybmAke259JHtlLmdyYXkobyl9ICAke2Uuc3RyaWtldGhyb3VnaChlLmRpbShpPz9cIlwiKSl9JHtpP2BcbiR7ZS5ncmF5KG8pfWA6XCJcIn1gO2RlZmF1bHQ6cmV0dXJuYCR7bn0ke2UuY3lhbihvKX0gICR7cn1cbiR7ZS5jeWFuKGQpfVxuYH19fSkucHJvbXB0KCkseWU9dD0+e2NvbnN0IG49dC5hY3RpdmU/P1wiWWVzXCIscj10LmluYWN0aXZlPz9cIk5vXCI7cmV0dXJuIG5ldyBaKHthY3RpdmU6bixpbmFjdGl2ZTpyLGluaXRpYWxWYWx1ZTp0LmluaXRpYWxWYWx1ZT8/ITAscmVuZGVyKCl7Y29uc3QgaT1gJHtlLmdyYXkobyl9XG4ke2IodGhpcy5zdGF0ZSl9ICAke3QubWVzc2FnZX1cbmAscz10aGlzLnZhbHVlP246cjtzd2l0Y2godGhpcy5zdGF0ZSl7Y2FzZVwic3VibWl0XCI6cmV0dXJuYCR7aX0ke2UuZ3JheShvKX0gICR7ZS5kaW0ocyl9YDtjYXNlXCJjYW5jZWxcIjpyZXR1cm5gJHtpfSR7ZS5ncmF5KG8pfSAgJHtlLnN0cmlrZXRocm91Z2goZS5kaW0ocykpfVxuJHtlLmdyYXkobyl9YDtkZWZhdWx0OnJldHVybmAke2l9JHtlLmN5YW4obyl9ICAke3RoaXMudmFsdWU/YCR7ZS5ncmVlbihrKX0gJHtufWA6YCR7ZS5kaW0oUCl9ICR7ZS5kaW0obil9YH0gJHtlLmRpbShcIi9cIil9ICR7dGhpcy52YWx1ZT9gJHtlLmRpbShQKX0gJHtlLmRpbShyKX1gOmAke2UuZ3JlZW4oayl9ICR7cn1gfVxuJHtlLmN5YW4oZCl9XG5gfX19KS5wcm9tcHQoKX0sdmU9dD0+e2NvbnN0IG49KHIsaSk9Pntjb25zdCBzPXIubGFiZWw/P1N0cmluZyhyLnZhbHVlKTtzd2l0Y2goaSl7Y2FzZVwic2VsZWN0ZWRcIjpyZXR1cm5gJHtlLmRpbShzKX1gO2Nhc2VcImFjdGl2ZVwiOnJldHVybmAke2UuZ3JlZW4oayl9ICR7c30gJHtyLmhpbnQ/ZS5kaW0oYCgke3IuaGludH0pYCk6XCJcIn1gO2Nhc2VcImNhbmNlbGxlZFwiOnJldHVybmAke2Uuc3RyaWtldGhyb3VnaChlLmRpbShzKSl9YDtkZWZhdWx0OnJldHVybmAke2UuZGltKFApfSAke2UuZGltKHMpfWB9fTtyZXR1cm4gbmV3IGVlKHtvcHRpb25zOnQub3B0aW9ucyxpbml0aWFsVmFsdWU6dC5pbml0aWFsVmFsdWUscmVuZGVyKCl7Y29uc3Qgcj1gJHtlLmdyYXkobyl9XG4ke2IodGhpcy5zdGF0ZSl9ICAke3QubWVzc2FnZX1cbmA7c3dpdGNoKHRoaXMuc3RhdGUpe2Nhc2VcInN1Ym1pdFwiOnJldHVybmAke3J9JHtlLmdyYXkobyl9ICAke24odGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXSxcInNlbGVjdGVkXCIpfWA7Y2FzZVwiY2FuY2VsXCI6cmV0dXJuYCR7cn0ke2UuZ3JheShvKX0gICR7bih0aGlzLm9wdGlvbnNbdGhpcy5jdXJzb3JdLFwiY2FuY2VsbGVkXCIpfVxuJHtlLmdyYXkobyl9YDtkZWZhdWx0OnJldHVybmAke3J9JHtlLmN5YW4obyl9ICAke0coe2N1cnNvcjp0aGlzLmN1cnNvcixvcHRpb25zOnRoaXMub3B0aW9ucyxtYXhJdGVtczp0Lm1heEl0ZW1zLHN0eWxlOihpLHMpPT5uKGkscz9cImFjdGl2ZVwiOlwiaW5hY3RpdmVcIil9KS5qb2luKGBcbiR7ZS5jeWFuKG8pfSAgYCl9XG4ke2UuY3lhbihkKX1cbmB9fX0pLnByb21wdCgpfSx3ZT10PT57Y29uc3Qgbj0ocixpPVwiaW5hY3RpdmVcIik9Pntjb25zdCBzPXIubGFiZWw/P1N0cmluZyhyLnZhbHVlKTtyZXR1cm4gaT09PVwic2VsZWN0ZWRcIj9gJHtlLmRpbShzKX1gOmk9PT1cImNhbmNlbGxlZFwiP2Ake2Uuc3RyaWtldGhyb3VnaChlLmRpbShzKSl9YDppPT09XCJhY3RpdmVcIj9gJHtlLmJnQ3lhbihlLmdyYXkoYCAke3IudmFsdWV9IGApKX0gJHtzfSAke3IuaGludD9lLmRpbShgKCR7ci5oaW50fSlgKTpcIlwifWA6YCR7ZS5ncmF5KGUuYmdXaGl0ZShlLmludmVyc2UoYCAke3IudmFsdWV9IGApKSl9ICR7c30gJHtyLmhpbnQ/ZS5kaW0oYCgke3IuaGludH0pYCk6XCJcIn1gfTtyZXR1cm4gbmV3IHRlKHtvcHRpb25zOnQub3B0aW9ucyxpbml0aWFsVmFsdWU6dC5pbml0aWFsVmFsdWUscmVuZGVyKCl7Y29uc3Qgcj1gJHtlLmdyYXkobyl9XG4ke2IodGhpcy5zdGF0ZSl9ICAke3QubWVzc2FnZX1cbmA7c3dpdGNoKHRoaXMuc3RhdGUpe2Nhc2VcInN1Ym1pdFwiOnJldHVybmAke3J9JHtlLmdyYXkobyl9ICAke24odGhpcy5vcHRpb25zLmZpbmQoaT0+aS52YWx1ZT09PXRoaXMudmFsdWUpPz90Lm9wdGlvbnNbMF0sXCJzZWxlY3RlZFwiKX1gO2Nhc2VcImNhbmNlbFwiOnJldHVybmAke3J9JHtlLmdyYXkobyl9ICAke24odGhpcy5vcHRpb25zWzBdLFwiY2FuY2VsbGVkXCIpfVxuJHtlLmdyYXkobyl9YDtkZWZhdWx0OnJldHVybmAke3J9JHtlLmN5YW4obyl9ICAke3RoaXMub3B0aW9ucy5tYXAoKGkscyk9Pm4oaSxzPT09dGhpcy5jdXJzb3I/XCJhY3RpdmVcIjpcImluYWN0aXZlXCIpKS5qb2luKGBcbiR7ZS5jeWFuKG8pfSAgYCl9XG4ke2UuY3lhbihkKX1cbmB9fX0pLnByb21wdCgpfSxmZT10PT57Y29uc3Qgbj0ocixpKT0+e2NvbnN0IHM9ci5sYWJlbD8/U3RyaW5nKHIudmFsdWUpO3JldHVybiBpPT09XCJhY3RpdmVcIj9gJHtlLmN5YW4oQSl9ICR7c30gJHtyLmhpbnQ/ZS5kaW0oYCgke3IuaGludH0pYCk6XCJcIn1gOmk9PT1cInNlbGVjdGVkXCI/YCR7ZS5ncmVlbihUKX0gJHtlLmRpbShzKX0gJHtyLmhpbnQ/ZS5kaW0oYCgke3IuaGludH0pYCk6XCJcIn1gOmk9PT1cImNhbmNlbGxlZFwiP2Ake2Uuc3RyaWtldGhyb3VnaChlLmRpbShzKSl9YDppPT09XCJhY3RpdmUtc2VsZWN0ZWRcIj9gJHtlLmdyZWVuKFQpfSAke3N9ICR7ci5oaW50P2UuZGltKGAoJHtyLmhpbnR9KWApOlwiXCJ9YDppPT09XCJzdWJtaXR0ZWRcIj9gJHtlLmRpbShzKX1gOmAke2UuZGltKEYpfSAke2UuZGltKHMpfWB9O3JldHVybiBuZXcgcmUoe29wdGlvbnM6dC5vcHRpb25zLGluaXRpYWxWYWx1ZXM6dC5pbml0aWFsVmFsdWVzLHJlcXVpcmVkOnQucmVxdWlyZWQ/PyEwLGN1cnNvckF0OnQuY3Vyc29yQXQsdmFsaWRhdGUocil7aWYodGhpcy5yZXF1aXJlZCYmci5sZW5ndGg9PT0wKXJldHVybmBQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBvcHRpb24uXG4ke2UucmVzZXQoZS5kaW0oYFByZXNzICR7ZS5ncmF5KGUuYmdXaGl0ZShlLmludmVyc2UoXCIgc3BhY2UgXCIpKSl9IHRvIHNlbGVjdCwgJHtlLmdyYXkoZS5iZ1doaXRlKGUuaW52ZXJzZShcIiBlbnRlciBcIikpKX0gdG8gc3VibWl0YCkpfWB9LHJlbmRlcigpe2NvbnN0IHI9YCR7ZS5ncmF5KG8pfVxuJHtiKHRoaXMuc3RhdGUpfSAgJHt0Lm1lc3NhZ2V9XG5gLGk9KHMsYyk9Pntjb25zdCBhPXRoaXMudmFsdWUuaW5jbHVkZXMocy52YWx1ZSk7cmV0dXJuIGMmJmE/bihzLFwiYWN0aXZlLXNlbGVjdGVkXCIpOmE/bihzLFwic2VsZWN0ZWRcIik6bihzLGM/XCJhY3RpdmVcIjpcImluYWN0aXZlXCIpfTtzd2l0Y2godGhpcy5zdGF0ZSl7Y2FzZVwic3VibWl0XCI6cmV0dXJuYCR7cn0ke2UuZ3JheShvKX0gICR7dGhpcy5vcHRpb25zLmZpbHRlcigoe3ZhbHVlOnN9KT0+dGhpcy52YWx1ZS5pbmNsdWRlcyhzKSkubWFwKHM9Pm4ocyxcInN1Ym1pdHRlZFwiKSkuam9pbihlLmRpbShcIiwgXCIpKXx8ZS5kaW0oXCJub25lXCIpfWA7Y2FzZVwiY2FuY2VsXCI6e2NvbnN0IHM9dGhpcy5vcHRpb25zLmZpbHRlcigoe3ZhbHVlOmN9KT0+dGhpcy52YWx1ZS5pbmNsdWRlcyhjKSkubWFwKGM9Pm4oYyxcImNhbmNlbGxlZFwiKSkuam9pbihlLmRpbShcIiwgXCIpKTtyZXR1cm5gJHtyfSR7ZS5ncmF5KG8pfSAgJHtzLnRyaW0oKT9gJHtzfVxuJHtlLmdyYXkobyl9YDpcIlwifWB9Y2FzZVwiZXJyb3JcIjp7Y29uc3Qgcz10aGlzLmVycm9yLnNwbGl0KGBcbmApLm1hcCgoYyxhKT0+YT09PTA/YCR7ZS55ZWxsb3coZCl9ICAke2UueWVsbG93KGMpfWA6YCAgICR7Y31gKS5qb2luKGBcbmApO3JldHVybmAke3IrZS55ZWxsb3cobyl9ICAke0coe29wdGlvbnM6dGhpcy5vcHRpb25zLGN1cnNvcjp0aGlzLmN1cnNvcixtYXhJdGVtczp0Lm1heEl0ZW1zLHN0eWxlOml9KS5qb2luKGBcbiR7ZS55ZWxsb3cobyl9ICBgKX1cbiR7c31cbmB9ZGVmYXVsdDpyZXR1cm5gJHtyfSR7ZS5jeWFuKG8pfSAgJHtHKHtvcHRpb25zOnRoaXMub3B0aW9ucyxjdXJzb3I6dGhpcy5jdXJzb3IsbWF4SXRlbXM6dC5tYXhJdGVtcyxzdHlsZTppfSkuam9pbihgXG4ke2UuY3lhbihvKX0gIGApfVxuJHtlLmN5YW4oZCl9XG5gfX19KS5wcm9tcHQoKX0sYmU9dD0+e2NvbnN0e3NlbGVjdGFibGVHcm91cHM6bj0hMH09dCxyPShpLHMsYz1bXSk9Pntjb25zdCBhPWkubGFiZWw/P1N0cmluZyhpLnZhbHVlKSxsPXR5cGVvZiBpLmdyb3VwPT1cInN0cmluZ1wiLCQ9bCYmKGNbYy5pbmRleE9mKGkpKzFdPz97Z3JvdXA6ITB9KSxnPWwmJiQuZ3JvdXA9PT0hMCxwPWw/bj9gJHtnP2Q6b30gYDpcIiAgXCI6XCJcIjtpZihzPT09XCJhY3RpdmVcIilyZXR1cm5gJHtlLmRpbShwKX0ke2UuY3lhbihBKX0gJHthfSAke2kuaGludD9lLmRpbShgKCR7aS5oaW50fSlgKTpcIlwifWA7aWYocz09PVwiZ3JvdXAtYWN0aXZlXCIpcmV0dXJuYCR7cH0ke2UuY3lhbihBKX0gJHtlLmRpbShhKX1gO2lmKHM9PT1cImdyb3VwLWFjdGl2ZS1zZWxlY3RlZFwiKXJldHVybmAke3B9JHtlLmdyZWVuKFQpfSAke2UuZGltKGEpfWA7aWYocz09PVwic2VsZWN0ZWRcIil7Y29uc3QgZj1sfHxuP2UuZ3JlZW4oVCk6XCJcIjtyZXR1cm5gJHtlLmRpbShwKX0ke2Z9ICR7ZS5kaW0oYSl9ICR7aS5oaW50P2UuZGltKGAoJHtpLmhpbnR9KWApOlwiXCJ9YH1pZihzPT09XCJjYW5jZWxsZWRcIilyZXR1cm5gJHtlLnN0cmlrZXRocm91Z2goZS5kaW0oYSkpfWA7aWYocz09PVwiYWN0aXZlLXNlbGVjdGVkXCIpcmV0dXJuYCR7ZS5kaW0ocCl9JHtlLmdyZWVuKFQpfSAke2F9ICR7aS5oaW50P2UuZGltKGAoJHtpLmhpbnR9KWApOlwiXCJ9YDtpZihzPT09XCJzdWJtaXR0ZWRcIilyZXR1cm5gJHtlLmRpbShhKX1gO2NvbnN0IHY9bHx8bj9lLmRpbShGKTpcIlwiO3JldHVybmAke2UuZGltKHApfSR7dn0gJHtlLmRpbShhKX1gfTtyZXR1cm4gbmV3IHNlKHtvcHRpb25zOnQub3B0aW9ucyxpbml0aWFsVmFsdWVzOnQuaW5pdGlhbFZhbHVlcyxyZXF1aXJlZDp0LnJlcXVpcmVkPz8hMCxjdXJzb3JBdDp0LmN1cnNvckF0LHNlbGVjdGFibGVHcm91cHM6bix2YWxpZGF0ZShpKXtpZih0aGlzLnJlcXVpcmVkJiZpLmxlbmd0aD09PTApcmV0dXJuYFBsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIG9wdGlvbi5cbiR7ZS5yZXNldChlLmRpbShgUHJlc3MgJHtlLmdyYXkoZS5iZ1doaXRlKGUuaW52ZXJzZShcIiBzcGFjZSBcIikpKX0gdG8gc2VsZWN0LCAke2UuZ3JheShlLmJnV2hpdGUoZS5pbnZlcnNlKFwiIGVudGVyIFwiKSkpfSB0byBzdWJtaXRgKSl9YH0scmVuZGVyKCl7Y29uc3QgaT1gJHtlLmdyYXkobyl9XG4ke2IodGhpcy5zdGF0ZSl9ICAke3QubWVzc2FnZX1cbmA7c3dpdGNoKHRoaXMuc3RhdGUpe2Nhc2VcInN1Ym1pdFwiOnJldHVybmAke2l9JHtlLmdyYXkobyl9ICAke3RoaXMub3B0aW9ucy5maWx0ZXIoKHt2YWx1ZTpzfSk9PnRoaXMudmFsdWUuaW5jbHVkZXMocykpLm1hcChzPT5yKHMsXCJzdWJtaXR0ZWRcIikpLmpvaW4oZS5kaW0oXCIsIFwiKSl9YDtjYXNlXCJjYW5jZWxcIjp7Y29uc3Qgcz10aGlzLm9wdGlvbnMuZmlsdGVyKCh7dmFsdWU6Y30pPT50aGlzLnZhbHVlLmluY2x1ZGVzKGMpKS5tYXAoYz0+cihjLFwiY2FuY2VsbGVkXCIpKS5qb2luKGUuZGltKFwiLCBcIikpO3JldHVybmAke2l9JHtlLmdyYXkobyl9ICAke3MudHJpbSgpP2Ake3N9XG4ke2UuZ3JheShvKX1gOlwiXCJ9YH1jYXNlXCJlcnJvclwiOntjb25zdCBzPXRoaXMuZXJyb3Iuc3BsaXQoYFxuYCkubWFwKChjLGEpPT5hPT09MD9gJHtlLnllbGxvdyhkKX0gICR7ZS55ZWxsb3coYyl9YDpgICAgJHtjfWApLmpvaW4oYFxuYCk7cmV0dXJuYCR7aX0ke2UueWVsbG93KG8pfSAgJHt0aGlzLm9wdGlvbnMubWFwKChjLGEsbCk9Pntjb25zdCAkPXRoaXMudmFsdWUuaW5jbHVkZXMoYy52YWx1ZSl8fGMuZ3JvdXA9PT0hMCYmdGhpcy5pc0dyb3VwU2VsZWN0ZWQoYCR7Yy52YWx1ZX1gKSxnPWE9PT10aGlzLmN1cnNvcjtyZXR1cm4hZyYmdHlwZW9mIGMuZ3JvdXA9PVwic3RyaW5nXCImJnRoaXMub3B0aW9uc1t0aGlzLmN1cnNvcl0udmFsdWU9PT1jLmdyb3VwP3IoYywkP1wiZ3JvdXAtYWN0aXZlLXNlbGVjdGVkXCI6XCJncm91cC1hY3RpdmVcIixsKTpnJiYkP3IoYyxcImFjdGl2ZS1zZWxlY3RlZFwiLGwpOiQ/cihjLFwic2VsZWN0ZWRcIixsKTpyKGMsZz9cImFjdGl2ZVwiOlwiaW5hY3RpdmVcIixsKX0pLmpvaW4oYFxuJHtlLnllbGxvdyhvKX0gIGApfVxuJHtzfVxuYH1kZWZhdWx0OnJldHVybmAke2l9JHtlLmN5YW4obyl9ICAke3RoaXMub3B0aW9ucy5tYXAoKHMsYyxhKT0+e2NvbnN0IGw9dGhpcy52YWx1ZS5pbmNsdWRlcyhzLnZhbHVlKXx8cy5ncm91cD09PSEwJiZ0aGlzLmlzR3JvdXBTZWxlY3RlZChgJHtzLnZhbHVlfWApLCQ9Yz09PXRoaXMuY3Vyc29yO3JldHVybiEkJiZ0eXBlb2Ygcy5ncm91cD09XCJzdHJpbmdcIiYmdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXS52YWx1ZT09PXMuZ3JvdXA/cihzLGw/XCJncm91cC1hY3RpdmUtc2VsZWN0ZWRcIjpcImdyb3VwLWFjdGl2ZVwiLGEpOiQmJmw/cihzLFwiYWN0aXZlLXNlbGVjdGVkXCIsYSk6bD9yKHMsXCJzZWxlY3RlZFwiLGEpOnIocywkP1wiYWN0aXZlXCI6XCJpbmFjdGl2ZVwiLGEpfSkuam9pbihgXG4ke2UuY3lhbihvKX0gIGApfVxuJHtlLmN5YW4oZCl9XG5gfX19KS5wcm9tcHQoKX0sTWU9KHQ9XCJcIixuPVwiXCIpPT57Y29uc3Qgcj1gXG4ke3R9XG5gLnNwbGl0KGBcbmApLGk9UyhuKS5sZW5ndGgscz1NYXRoLm1heChyLnJlZHVjZSgoYSxsKT0+e2NvbnN0ICQ9UyhsKTtyZXR1cm4gJC5sZW5ndGg+YT8kLmxlbmd0aDphfSwwKSxpKSsyLGM9ci5tYXAoYT0+YCR7ZS5ncmF5KG8pfSAgJHtlLmRpbShhKX0ke1wiIFwiLnJlcGVhdChzLVMoYSkubGVuZ3RoKX0ke2UuZ3JheShvKX1gKS5qb2luKGBcbmApO3Byb2Nlc3Muc3Rkb3V0LndyaXRlKGAke2UuZ3JheShvKX1cbiR7ZS5ncmVlbihDKX0gICR7ZS5yZXNldChuKX0gJHtlLmdyYXkoXy5yZXBlYXQoTWF0aC5tYXgocy1pLTEsMSkpK21lKX1cbiR7Y31cbiR7ZS5ncmF5KGRlK18ucmVwZWF0KHMrMikrcGUpfVxuYCl9LHhlPSh0PVwiXCIpPT57cHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7ZS5ncmF5KGQpfSAgJHtlLnJlZCh0KX1cblxuYCl9LEllPSh0PVwiXCIpPT57cHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7ZS5ncmF5KHVlKX0gICR7dH1cbmApfSxTZT0odD1cIlwiKT0+e3Byb2Nlc3Muc3Rkb3V0LndyaXRlKGAke2UuZ3JheShvKX1cbiR7ZS5ncmF5KGQpfSAgJHt0fVxuXG5gKX0sTT17bWVzc2FnZToodD1cIlwiLHtzeW1ib2w6bj1lLmdyYXkobyl9PXt9KT0+e2NvbnN0IHI9W2Ake2UuZ3JheShvKX1gXTtpZih0KXtjb25zdFtpLC4uLnNdPXQuc3BsaXQoYFxuYCk7ci5wdXNoKGAke259ICAke2l9YCwuLi5zLm1hcChjPT5gJHtlLmdyYXkobyl9ICAke2N9YCkpfXByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke3Iuam9pbihgXG5gKX1cbmApfSxpbmZvOnQ9PntNLm1lc3NhZ2UodCx7c3ltYm9sOmUuYmx1ZShxKX0pfSxzdWNjZXNzOnQ9PntNLm1lc3NhZ2UodCx7c3ltYm9sOmUuZ3JlZW4oRCl9KX0sc3RlcDp0PT57TS5tZXNzYWdlKHQse3N5bWJvbDplLmdyZWVuKEMpfSl9LHdhcm46dD0+e00ubWVzc2FnZSh0LHtzeW1ib2w6ZS55ZWxsb3coVSl9KX0sd2FybmluZzp0PT57TS53YXJuKHQpfSxlcnJvcjp0PT57TS5tZXNzYWdlKHQse3N5bWJvbDplLnJlZChLKX0pfX0sSj1gJHtlLmdyYXkobyl9ICBgLHg9e21lc3NhZ2U6YXN5bmModCx7c3ltYm9sOm49ZS5ncmF5KG8pfT17fSk9Pntwcm9jZXNzLnN0ZG91dC53cml0ZShgJHtlLmdyYXkobyl9XG4ke259ICBgKTtsZXQgcj0zO2ZvciBhd2FpdChsZXQgaSBvZiB0KXtpPWkucmVwbGFjZSgvXFxuL2csYFxuJHtKfWApLGkuaW5jbHVkZXMoYFxuYCkmJihyPTMrUyhpLnNsaWNlKGkubGFzdEluZGV4T2YoYFxuYCkpKS5sZW5ndGgpO2NvbnN0IHM9UyhpKS5sZW5ndGg7citzPHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnM/KHIrPXMscHJvY2Vzcy5zdGRvdXQud3JpdGUoaSkpOihwcm9jZXNzLnN0ZG91dC53cml0ZShgXG4ke0p9JHtpLnRyaW1TdGFydCgpfWApLHI9MytTKGkudHJpbVN0YXJ0KCkpLmxlbmd0aCl9cHJvY2Vzcy5zdGRvdXQud3JpdGUoYFxuYCl9LGluZm86dD0+eC5tZXNzYWdlKHQse3N5bWJvbDplLmJsdWUocSl9KSxzdWNjZXNzOnQ9PngubWVzc2FnZSh0LHtzeW1ib2w6ZS5ncmVlbihEKX0pLHN0ZXA6dD0+eC5tZXNzYWdlKHQse3N5bWJvbDplLmdyZWVuKEMpfSksd2Fybjp0PT54Lm1lc3NhZ2UodCx7c3ltYm9sOmUueWVsbG93KFUpfSksd2FybmluZzp0PT54Lndhcm4odCksZXJyb3I6dD0+eC5tZXNzYWdlKHQse3N5bWJvbDplLnJlZChLKX0pfSxZPSh7aW5kaWNhdG9yOnQ9XCJkb3RzXCJ9PXt9KT0+e2NvbnN0IG49Vj9bXCJcXHUyNUQyXCIsXCJcXHUyNUQwXCIsXCJcXHUyNUQzXCIsXCJcXHUyNUQxXCJdOltcIlxcdTIwMjJcIixcIm9cIixcIk9cIixcIjBcIl0scj1WPzgwOjEyMCxpPXByb2Nlc3MuZW52LkNJPT09XCJ0cnVlXCI7bGV0IHMsYyxhPSExLGw9XCJcIiwkLGc9cGVyZm9ybWFuY2Uubm93KCk7Y29uc3QgcD1tPT57Y29uc3QgaD1tPjE/XCJTb21ldGhpbmcgd2VudCB3cm9uZ1wiOlwiQ2FuY2VsZWRcIjthJiZOKGgsbSl9LHY9KCk9PnAoMiksZj0oKT0+cCgxKSxqPSgpPT57cHJvY2Vzcy5vbihcInVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvclwiLHYpLHByb2Nlc3Mub24oXCJ1bmhhbmRsZWRSZWplY3Rpb25cIix2KSxwcm9jZXNzLm9uKFwiU0lHSU5UXCIsZikscHJvY2Vzcy5vbihcIlNJR1RFUk1cIixmKSxwcm9jZXNzLm9uKFwiZXhpdFwiLHApfSxFPSgpPT57cHJvY2Vzcy5yZW1vdmVMaXN0ZW5lcihcInVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvclwiLHYpLHByb2Nlc3MucmVtb3ZlTGlzdGVuZXIoXCJ1bmhhbmRsZWRSZWplY3Rpb25cIix2KSxwcm9jZXNzLnJlbW92ZUxpc3RlbmVyKFwiU0lHSU5UXCIsZikscHJvY2Vzcy5yZW1vdmVMaXN0ZW5lcihcIlNJR1RFUk1cIixmKSxwcm9jZXNzLnJlbW92ZUxpc3RlbmVyKFwiZXhpdFwiLHApfSxCPSgpPT57aWYoJD09PXZvaWQgMClyZXR1cm47aSYmcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFxuYCk7Y29uc3QgbT0kLnNwbGl0KGBcbmApO3Byb2Nlc3Muc3Rkb3V0LndyaXRlKG9lLm1vdmUoLTk5OSxtLmxlbmd0aC0xKSkscHJvY2Vzcy5zdGRvdXQud3JpdGUoYWUuZG93bihtLmxlbmd0aCkpfSxSPW09Pm0ucmVwbGFjZSgvXFwuKyQvLFwiXCIpLE89bT0+e2NvbnN0IGg9KHBlcmZvcm1hbmNlLm5vdygpLW0pLzFlMyx3PU1hdGguZmxvb3IoaC82MCksST1NYXRoLmZsb29yKGglNjApO3JldHVybiB3PjA/YFske3d9bSAke0l9c11gOmBbJHtJfXNdYH0sSD0obT1cIlwiKT0+e2E9ITAscz1uZSgpLGw9UihtKSxnPXBlcmZvcm1hbmNlLm5vdygpLHByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke2UuZ3JheShvKX1cbmApO2xldCBoPTAsdz0wO2ooKSxjPXNldEludGVydmFsKCgpPT57aWYoaSYmbD09PSQpcmV0dXJuO0IoKSwkPWw7Y29uc3QgST1lLm1hZ2VudGEobltoXSk7aWYoaSlwcm9jZXNzLnN0ZG91dC53cml0ZShgJHtJfSAgJHtsfS4uLmApO2Vsc2UgaWYodD09PVwidGltZXJcIilwcm9jZXNzLnN0ZG91dC53cml0ZShgJHtJfSAgJHtsfSAke08oZyl9YCk7ZWxzZXtjb25zdCB6PVwiLlwiLnJlcGVhdChNYXRoLmZsb29yKHcpKS5zbGljZSgwLDMpO3Byb2Nlc3Muc3Rkb3V0LndyaXRlKGAke0l9ICAke2x9JHt6fWApfWg9aCsxPG4ubGVuZ3RoP2grMTowLHc9dzxuLmxlbmd0aD93Ky4xMjU6MH0scil9LE49KG09XCJcIixoPTApPT57YT0hMSxjbGVhckludGVydmFsKGMpLEIoKTtjb25zdCB3PWg9PT0wP2UuZ3JlZW4oQyk6aD09PTE/ZS5yZWQoTCk6ZS5yZWQoVyk7bD1SKG0/P2wpLHQ9PT1cInRpbWVyXCI/cHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7d30gICR7bH0gJHtPKGcpfVxuYCk6cHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7d30gICR7bH1cbmApLEUoKSxzKCl9O3JldHVybntzdGFydDpILHN0b3A6TixtZXNzYWdlOihtPVwiXCIpPT57bD1SKG0/P2wpfX19LENlPWFzeW5jKHQsbik9Pntjb25zdCByPXt9LGk9T2JqZWN0LmtleXModCk7Zm9yKGNvbnN0IHMgb2YgaSl7Y29uc3QgYz10W3NdLGE9YXdhaXQgYyh7cmVzdWx0czpyfSk/LmNhdGNoKGw9Pnt0aHJvdyBsfSk7aWYodHlwZW9mIG4/Lm9uQ2FuY2VsPT1cImZ1bmN0aW9uXCImJmllKGEpKXtyW3NdPVwiY2FuY2VsZWRcIixuLm9uQ2FuY2VsKHtyZXN1bHRzOnJ9KTtjb250aW51ZX1yW3NdPWF9cmV0dXJuIHJ9LFRlPWFzeW5jIHQ9Pntmb3IoY29uc3QgbiBvZiB0KXtpZihuLmVuYWJsZWQ9PT0hMSljb250aW51ZTtjb25zdCByPVkoKTtyLnN0YXJ0KG4udGl0bGUpO2NvbnN0IGk9YXdhaXQgbi50YXNrKHIubWVzc2FnZSk7ci5zdG9wKGl8fG4udGl0bGUpfX07ZXhwb3J0e3hlIGFzIGNhbmNlbCx5ZSBhcyBjb25maXJtLENlIGFzIGdyb3VwLGJlIGFzIGdyb3VwTXVsdGlzZWxlY3QsSWUgYXMgaW50cm8sTSBhcyBsb2csZmUgYXMgbXVsdGlzZWxlY3QsTWUgYXMgbm90ZSxTZSBhcyBvdXRybyxnZSBhcyBwYXNzd29yZCx2ZSBhcyBzZWxlY3Qsd2UgYXMgc2VsZWN0S2V5LFkgYXMgc3Bpbm5lcix4IGFzIHN0cmVhbSxUZSBhcyB0YXNrcyxoZSBhcyB0ZXh0fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsCiAgICAiY29uc3QgaXNDb2xvckVuYWJsZWQgPSAhcHJvY2Vzcy5lbnYuTk9fQ09MT1IgJiYgKHByb2Nlc3MuZW52LkZPUkNFX0NPTE9SIHx8IHByb2Nlc3Muc3Rkb3V0LmlzVFRZKTtcblxuY29uc3QgYmFzZUNvbG9ycyA9IFtcImJsdWVcIiwgXCJjeWFuXCIsIFwiZ3JheVwiLCBcImdyZWVuXCIsIFwibWFnZW50YVwiLCBcInJlZFwiLCBcIndoaXRlXCIsIFwieWVsbG93XCJdIGFzIGNvbnN0O1xuY29uc3QgYmFzZURlY29yYXRpb25zID0gW1wiYm9sZFwiLCBcImRpbVwiLCBcIml0YWxpY1wiLCBcInVuZGVybGluZVwiLCBcInJlc2V0XCJdIGFzIGNvbnN0O1xuY29uc3QgYW5zaUNvZGVzID0ge1xuICBib2xkOiBcIlxceDFiWzFtXCIsXG4gIGRpbTogXCJcXHgxYlsybVwiLFxuICBpdGFsaWM6IFwiXFx4MWJbM21cIixcbiAgcmVzZXQ6IFwiXFx4MWJbMG1cIixcbiAgdW5kZXJsaW5lOiBcIlxceDFiWzRtXCIsXG59O1xuXG5jb25zdCBicmlnaHRDb2xvck1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgXCJcXHgxYlszMG1cIjogXCJcXHgxYls5MG1cIixcbiAgXCJcXHgxYlszMW1cIjogXCJcXHgxYls5MW1cIixcbiAgXCJcXHgxYlszMm1cIjogXCJcXHgxYls5Mm1cIixcbiAgXCJcXHgxYlszM21cIjogXCJcXHgxYls5M21cIixcbiAgXCJcXHgxYlszNG1cIjogXCJcXHgxYls5NG1cIixcbiAgXCJcXHgxYlszNW1cIjogXCJcXHgxYls5NW1cIixcbiAgXCJcXHgxYlszNm1cIjogXCJcXHgxYls5Nm1cIixcbiAgXCJcXHgxYlszN21cIjogXCJcXHgxYls5N21cIixcbn07XG5cbmZ1bmN0aW9uIGNvbG9yaXplKGNvbG9yQ29kZTogc3RyaW5nKSB7XG4gIHJldHVybiAodGV4dDogc3RyaW5nKSA9PiAoaXNDb2xvckVuYWJsZWQgPyBgJHtjb2xvckNvZGV9JHt0ZXh0fSR7YW5zaUNvZGVzLnJlc2V0fWAgOiB0ZXh0KTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29sb3JDb2RlKHsgYnJpZ2h0ID0gZmFsc2UsIGNvbG9yIH06IHsgYnJpZ2h0PzogYm9vbGVhbjsgY29sb3I6IHN0cmluZyB9KSB7XG4gIGNvbnN0IGJhc2VDb2xvciA9IEJ1bi5jb2xvcihjb2xvciwgXCJhbnNpXCIpO1xuICBpZiAoIWJhc2VDb2xvcikgcmV0dXJuIFwiXCI7XG5cbiAgcmV0dXJuIGJyaWdodCA/IGJyaWdodENvbG9yTWFwW2Jhc2VDb2xvcl0gfHwgYmFzZUNvbG9yIDogYmFzZUNvbG9yO1xufVxuXG5jb25zdCBjb2xvckRlY29yYXRpb25zID0gYmFzZUNvbG9ycy5yZWR1Y2UoXG4gIChhY2MsIGNvbG9yKSA9PiB7XG4gICAgYWNjW2NvbG9yXSA9IGNvbG9yaXplKGdldENvbG9yQ29kZSh7IGNvbG9yIH0pKTtcbiAgICBhY2NbYCR7Y29sb3J9QnJpZ2h0YF0gPSBjb2xvcml6ZShnZXRDb2xvckNvZGUoeyBicmlnaHQ6IHRydWUsIGNvbG9yIH0pKTtcbiAgICByZXR1cm4gYWNjO1xuICB9LFxuICB7fSBhcyBSZWNvcmQ8XG4gICAgKHR5cGVvZiBiYXNlQ29sb3JzKVtudW1iZXJdIHwgYCR7KHR5cGVvZiBiYXNlQ29sb3JzKVtudW1iZXJdfUJyaWdodGAsXG4gICAgKHRleHQ6IHN0cmluZykgPT4gc3RyaW5nXG4gID4sXG4pO1xuXG5jb25zdCBkZWNvcmF0aW9ucyA9IGJhc2VEZWNvcmF0aW9ucy5yZWR1Y2UoXG4gIChhY2MsIGRlY29yYXRpb24pID0+IHtcbiAgICBhY2NbZGVjb3JhdGlvbl0gPSBjb2xvcml6ZShhbnNpQ29kZXNbZGVjb3JhdGlvbl0pO1xuICAgIHJldHVybiBhY2M7XG4gIH0sXG4gIHt9IGFzIFJlY29yZDwodHlwZW9mIGJhc2VEZWNvcmF0aW9ucylbbnVtYmVyXSwgKHRleHQ6IHN0cmluZykgPT4gc3RyaW5nPixcbik7XG5cbmV4cG9ydCBjb25zdCBjb2xvcnMgPSB7IC4uLmNvbG9yRGVjb3JhdGlvbnMsIC4uLmRlY29yYXRpb25zIH07XG4iLAogICAgImNvbnN0IHBlcSA9IG5ldyBVaW50MzJBcnJheSgweDEwMDAwKTtcbmNvbnN0IG15ZXJzXzMyID0gKGEsIGIpID0+IHtcbiAgICBjb25zdCBuID0gYS5sZW5ndGg7XG4gICAgY29uc3QgbSA9IGIubGVuZ3RoO1xuICAgIGNvbnN0IGxzdCA9IDEgPDwgKG4gLSAxKTtcbiAgICBsZXQgcHYgPSAtMTtcbiAgICBsZXQgbXYgPSAwO1xuICAgIGxldCBzYyA9IG47XG4gICAgbGV0IGkgPSBuO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgcGVxW2EuY2hhckNvZGVBdChpKV0gfD0gMSA8PCBpO1xuICAgIH1cbiAgICBmb3IgKGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgIGxldCBlcSA9IHBlcVtiLmNoYXJDb2RlQXQoaSldO1xuICAgICAgICBjb25zdCB4diA9IGVxIHwgbXY7XG4gICAgICAgIGVxIHw9ICgoZXEgJiBwdikgKyBwdikgXiBwdjtcbiAgICAgICAgbXYgfD0gfihlcSB8IHB2KTtcbiAgICAgICAgcHYgJj0gZXE7XG4gICAgICAgIGlmIChtdiAmIGxzdCkge1xuICAgICAgICAgICAgc2MrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAocHYgJiBsc3QpIHtcbiAgICAgICAgICAgIHNjLS07XG4gICAgICAgIH1cbiAgICAgICAgbXYgPSAobXYgPDwgMSkgfCAxO1xuICAgICAgICBwdiA9IChwdiA8PCAxKSB8IH4oeHYgfCBtdik7XG4gICAgICAgIG12ICY9IHh2O1xuICAgIH1cbiAgICBpID0gbjtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIHBlcVthLmNoYXJDb2RlQXQoaSldID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHNjO1xufTtcbmNvbnN0IG15ZXJzX3ggPSAoYiwgYSkgPT4ge1xuICAgIGNvbnN0IG4gPSBhLmxlbmd0aDtcbiAgICBjb25zdCBtID0gYi5sZW5ndGg7XG4gICAgY29uc3QgbWhjID0gW107XG4gICAgY29uc3QgcGhjID0gW107XG4gICAgY29uc3QgaHNpemUgPSBNYXRoLmNlaWwobiAvIDMyKTtcbiAgICBjb25zdCB2c2l6ZSA9IE1hdGguY2VpbChtIC8gMzIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaHNpemU7IGkrKykge1xuICAgICAgICBwaGNbaV0gPSAtMTtcbiAgICAgICAgbWhjW2ldID0gMDtcbiAgICB9XG4gICAgbGV0IGogPSAwO1xuICAgIGZvciAoOyBqIDwgdnNpemUgLSAxOyBqKyspIHtcbiAgICAgICAgbGV0IG12ID0gMDtcbiAgICAgICAgbGV0IHB2ID0gLTE7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gaiAqIDMyO1xuICAgICAgICBjb25zdCB2bGVuID0gTWF0aC5taW4oMzIsIG0pICsgc3RhcnQ7XG4gICAgICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IHZsZW47IGsrKykge1xuICAgICAgICAgICAgcGVxW2IuY2hhckNvZGVBdChrKV0gfD0gMSA8PCBrO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBlcSA9IHBlcVthLmNoYXJDb2RlQXQoaSldO1xuICAgICAgICAgICAgY29uc3QgcGIgPSAocGhjWyhpIC8gMzIpIHwgMF0gPj4+IGkpICYgMTtcbiAgICAgICAgICAgIGNvbnN0IG1iID0gKG1oY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICAgICAgICBjb25zdCB4diA9IGVxIHwgbXY7XG4gICAgICAgICAgICBjb25zdCB4aCA9ICgoKChlcSB8IG1iKSAmIHB2KSArIHB2KSBeIHB2KSB8IGVxIHwgbWI7XG4gICAgICAgICAgICBsZXQgcGggPSBtdiB8IH4oeGggfCBwdik7XG4gICAgICAgICAgICBsZXQgbWggPSBwdiAmIHhoO1xuICAgICAgICAgICAgaWYgKChwaCA+Pj4gMzEpIF4gcGIpIHtcbiAgICAgICAgICAgICAgICBwaGNbKGkgLyAzMikgfCAwXSBePSAxIDw8IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKG1oID4+PiAzMSkgXiBtYikge1xuICAgICAgICAgICAgICAgIG1oY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBoID0gKHBoIDw8IDEpIHwgcGI7XG4gICAgICAgICAgICBtaCA9IChtaCA8PCAxKSB8IG1iO1xuICAgICAgICAgICAgcHYgPSBtaCB8IH4oeHYgfCBwaCk7XG4gICAgICAgICAgICBtdiA9IHBoICYgeHY7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgayA9IHN0YXJ0OyBrIDwgdmxlbjsgaysrKSB7XG4gICAgICAgICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSA9IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IG12ID0gMDtcbiAgICBsZXQgcHYgPSAtMTtcbiAgICBjb25zdCBzdGFydCA9IGogKiAzMjtcbiAgICBjb25zdCB2bGVuID0gTWF0aC5taW4oMzIsIG0gLSBzdGFydCkgKyBzdGFydDtcbiAgICBmb3IgKGxldCBrID0gc3RhcnQ7IGsgPCB2bGVuOyBrKyspIHtcbiAgICAgICAgcGVxW2IuY2hhckNvZGVBdChrKV0gfD0gMSA8PCBrO1xuICAgIH1cbiAgICBsZXQgc2NvcmUgPSBtO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGVxID0gcGVxW2EuY2hhckNvZGVBdChpKV07XG4gICAgICAgIGNvbnN0IHBiID0gKHBoY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICAgIGNvbnN0IG1iID0gKG1oY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICAgICAgY29uc3QgeGggPSAoKCgoZXEgfCBtYikgJiBwdikgKyBwdikgXiBwdikgfCBlcSB8IG1iO1xuICAgICAgICBsZXQgcGggPSBtdiB8IH4oeGggfCBwdik7XG4gICAgICAgIGxldCBtaCA9IHB2ICYgeGg7XG4gICAgICAgIHNjb3JlICs9IChwaCA+Pj4gKG0gLSAxKSkgJiAxO1xuICAgICAgICBzY29yZSAtPSAobWggPj4+IChtIC0gMSkpICYgMTtcbiAgICAgICAgaWYgKChwaCA+Pj4gMzEpIF4gcGIpIHtcbiAgICAgICAgICAgIHBoY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKG1oID4+PiAzMSkgXiBtYikge1xuICAgICAgICAgICAgbWhjWyhpIC8gMzIpIHwgMF0gXj0gMSA8PCBpO1xuICAgICAgICB9XG4gICAgICAgIHBoID0gKHBoIDw8IDEpIHwgcGI7XG4gICAgICAgIG1oID0gKG1oIDw8IDEpIHwgbWI7XG4gICAgICAgIHB2ID0gbWggfCB+KHh2IHwgcGgpO1xuICAgICAgICBtdiA9IHBoICYgeHY7XG4gICAgfVxuICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IHZsZW47IGsrKykge1xuICAgICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiBzY29yZTtcbn07XG5jb25zdCBkaXN0YW5jZSA9IChhLCBiKSA9PiB7XG4gICAgaWYgKGEubGVuZ3RoIDwgYi5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgdG1wID0gYjtcbiAgICAgICAgYiA9IGE7XG4gICAgICAgIGEgPSB0bXA7XG4gICAgfVxuICAgIGlmIChiLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gYS5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChhLmxlbmd0aCA8PSAzMikge1xuICAgICAgICByZXR1cm4gbXllcnNfMzIoYSwgYik7XG4gICAgfVxuICAgIHJldHVybiBteWVyc194KGEsIGIpO1xufTtcbmNvbnN0IGNsb3Nlc3QgPSAoc3RyLCBhcnIpID0+IHtcbiAgICBsZXQgbWluX2Rpc3RhbmNlID0gSW5maW5pdHk7XG4gICAgbGV0IG1pbl9pbmRleCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZGlzdCA9IGRpc3RhbmNlKHN0ciwgYXJyW2ldKTtcbiAgICAgICAgaWYgKGRpc3QgPCBtaW5fZGlzdGFuY2UpIHtcbiAgICAgICAgICAgIG1pbl9kaXN0YW5jZSA9IGRpc3Q7XG4gICAgICAgICAgICBtaW5faW5kZXggPSBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJbbWluX2luZGV4XTtcbn07XG5leHBvcnQgeyBjbG9zZXN0LCBkaXN0YW5jZSB9O1xuIiwKICAgICJpbXBvcnQgeyBjbG9zZXN0LCBkaXN0YW5jZSB9IGZyb20gXCJmYXN0ZXN0LWxldmVuc2h0ZWluXCI7XG5cbi8qKlxuICogRmluZCB0aGUgY2xvc2VzdCBtYXRjaCBmcm9tIGEgbGlzdCBvZiBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ2xvc2VzdE1hdGNoKGlucHV0OiBzdHJpbmcsIG9wdGlvbnM6IHN0cmluZ1tdKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcmVzdWx0ID0gY2xvc2VzdChcbiAgICBpbnB1dC50b0xvd2VyQ2FzZSgpLFxuICAgIG9wdGlvbnMubWFwKChvKSA9PiBvLnRvTG93ZXJDYXNlKCkpLFxuICApO1xuICBjb25zdCBpbmRleCA9IG9wdGlvbnMuZmluZEluZGV4KChvKSA9PiBvLnRvTG93ZXJDYXNlKCkgPT09IHJlc3VsdCk7XG4gIGNvbnN0IG1hdGNoID0gaW5kZXggIT09IC0xID8gb3B0aW9uc1tpbmRleF0gOiBudWxsO1xuXG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuXG4gIC8vIE9ubHkgc3VnZ2VzdCBpZiB0aGUgZGlzdGFuY2UgaXMgcmVhc29uYWJsZSAobGVzcyB0aGFuIGhhbGYgdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQpXG4gIGNvbnN0IG1hdGNoRGlzdGFuY2UgPSBkaXN0YW5jZShpbnB1dC50b0xvd2VyQ2FzZSgpLCBtYXRjaC50b0xvd2VyQ2FzZSgpKTtcbiAgaWYgKG1hdGNoRGlzdGFuY2UgPiBNYXRoLm1heCgzLCBpbnB1dC5sZW5ndGggLyAyKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoO1xufVxuXG4vKipcbiAqIEdldCBzdWdnZXN0aW9ucyBmb3IgYSBtaXN0eXBlZCBjb21tYW5kXG4gKiBSZXR1cm5zIHVwIHRvIDMgY2xvc2VzdCBtYXRjaGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWdnZXN0aW9ucyhpbnB1dDogc3RyaW5nLCBvcHRpb25zOiBzdHJpbmdbXSwgbWF4U3VnZ2VzdGlvbnMgPSAzKTogc3RyaW5nW10ge1xuICBjb25zdCBkaXN0YW5jZXMgPSBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoe1xuICAgIGRpc3RhbmNlOiBkaXN0YW5jZShpbnB1dC50b0xvd2VyQ2FzZSgpLCBvcHRpb24udG9Mb3dlckNhc2UoKSksXG4gICAgb3B0aW9uLFxuICB9KSk7XG5cbiAgLy8gU29ydCBieSBkaXN0YW5jZSBhbmQgZmlsdGVyIHJlYXNvbmFibGUgbWF0Y2hlc1xuICBjb25zdCBzdWdnZXN0aW9ucyA9IGRpc3RhbmNlc1xuICAgIC5maWx0ZXIoKHsgZGlzdGFuY2UgfSkgPT4gZGlzdGFuY2UgPD0gTWF0aC5tYXgoMywgaW5wdXQubGVuZ3RoIC8gMikpXG4gICAgLnNvcnQoKGEsIGIpID0+IGEuZGlzdGFuY2UgLSBiLmRpc3RhbmNlKVxuICAgIC5zbGljZSgwLCBtYXhTdWdnZXN0aW9ucylcbiAgICAubWFwKCh7IG9wdGlvbiB9KSA9PiBvcHRpb24pO1xuXG4gIHJldHVybiBzdWdnZXN0aW9ucztcbn1cblxuLyoqXG4gKiBDaGVjayBmb3IgY29tbW9uIHR5cG9zIGFuZCBhYmJyZXZpYXRpb25zIHVzaW5nIGEgcHJvdmlkZWQgbWFwcGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDb21tb25NaXN0YWtlcyhcbiAgaW5wdXQ6IHN0cmluZyxcbiAgbWlzdGFrZXNNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgcmV0dXJuIG1pc3Rha2VzTWFwW2lucHV0LnRvTG93ZXJDYXNlKCldIHx8IG51bGw7XG59XG4iLAogICAgImV4cG9ydCBpbnRlcmZhY2UgR3JhY2VmdWxPcHRpb25zIHtcbiAgZmFsbGJhY2s/OiAoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgbG9nTGV2ZWw/OiBcImRlYnVnXCIgfCBcImluZm9cIiB8IFwid2FyblwiIHwgXCJlcnJvclwiO1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3JhY2VmdWxUcnk8VD4oXG4gIG9wZXJhdGlvbjogKCkgPT4gVCB8IFByb21pc2U8VD4sXG4gIG9wdGlvbnM6IEdyYWNlZnVsT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHsgZmFsbGJhY2ssIGxvZ0xldmVsID0gXCJ3YXJuXCIsIG1lc3NhZ2UgPSBcIk9wZXJhdGlvbiBmYWlsZWQgZ3JhY2VmdWxseVwiIH0gPSBvcHRpb25zO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IG9wZXJhdGlvbigpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbiAgICBjb25zb2xlW2xvZ0xldmVsXShgJHttZXNzYWdlfTogJHtlcnJvck1lc3NhZ2V9YCk7XG5cbiAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZhbGxiYWNrKCk7XG4gICAgICB9IGNhdGNoIChmYWxsYmFja0Vycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYEZhbGxiYWNrIGFsc28gZmFpbGVkOiAke2ZhbGxiYWNrRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGZhbGxiYWNrRXJyb3IubWVzc2FnZSA6IFN0cmluZyhmYWxsYmFja0Vycm9yKX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdyYWNlZnVsV3JhcHBlcjxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KFxuICBmbjogVCxcbiAgb3B0aW9uczogR3JhY2VmdWxPcHRpb25zID0ge30sXG4pOiAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4gUHJvbWlzZTxSZXR1cm5UeXBlPFQ+IHwgdW5kZWZpbmVkPiB7XG4gIHJldHVybiBhc3luYyAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4ge1xuICAgIHJldHVybiBncmFjZWZ1bFRyeSgoKSA9PiBmbiguLi5hcmdzKSwgb3B0aW9ucyk7XG4gIH07XG59XG4iLAogICAgImltcG9ydCB7IGNvbG9ycyB9IGZyb20gXCIuL2NvbG9yc1wiO1xuXG5leHBvcnQgZW51bSBMb2dMZXZlbCB7XG4gIERFQlVHID0gMCxcbiAgSU5GTyA9IDEsXG4gIFdBUk4gPSAyLFxuICBFUlJPUiA9IDMsXG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVMb2dnZXIgPSAoe1xuICBwcmVmaXggPSBcIlwiLFxuICBsZXZlbCA9IHByb2Nlc3MuZW52LkRFQlVHID8gTG9nTGV2ZWwuREVCVUcgOiBMb2dMZXZlbC5JTkZPLFxufToge1xuICBwcmVmaXg/OiBzdHJpbmc7XG4gIGxldmVsPzogTG9nTGV2ZWw7XG59ID0ge30pID0+IHtcbiAgZnVuY3Rpb24gZGVidWcoLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgaWYgKGxldmVsIDw9IExvZ0xldmVsLkRFQlVHKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYXJncy5qb2luKFwiIFwiKTtcbiAgICAgIGNvbnNvbGUubG9nKGZvcm1hdCh7IGxldmVsOiBjb2xvcnMuZGltKFwiREVCVUdcIiksIG1lc3NhZ2UsIHByZWZpeCB9KSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5mbyguLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICBpZiAobGV2ZWwgPD0gTG9nTGV2ZWwuSU5GTykge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGFyZ3Muam9pbihcIiBcIik7XG4gICAgICBjb25zb2xlLmluZm8oZm9ybWF0KHsgbGV2ZWw6IGNvbG9ycy5jeWFuKFwiSU5GTyBcIiksIG1lc3NhZ2UsIHByZWZpeCB9KSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gd2FybiguLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICBpZiAobGV2ZWwgPD0gTG9nTGV2ZWwuV0FSTikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGFyZ3Muam9pbihcIiBcIik7XG4gICAgICBjb25zb2xlLndhcm4oZm9ybWF0KHsgbGV2ZWw6IGNvbG9ycy55ZWxsb3coXCJXQVJOIFwiKSwgbWVzc2FnZSwgcHJlZml4IH0pKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlcnJvciguLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICBpZiAobGV2ZWwgPD0gTG9nTGV2ZWwuRVJST1IpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhcmdzLmpvaW4oXCIgXCIpO1xuICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoeyBsZXZlbDogY29sb3JzLnJlZChcIkVSUk9SXCIpLCBtZXNzYWdlLCBwcmVmaXggfSkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNoaWxkKGNoaWxkUHJlZml4OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY3JlYXRlTG9nZ2VyKHsgbGV2ZWwsIHByZWZpeDogYCR7cHJlZml4fToke2NoaWxkUHJlZml4fWAgfSk7XG4gIH1cblxuICByZXR1cm4geyBjaGlsZCwgZGVidWcsIGVycm9yLCBpbmZvLCB3YXJuIH07XG59O1xuXG5leHBvcnQgY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCk7XG5cbmZ1bmN0aW9uIGZvcm1hdCh7IHByZWZpeCwgbGV2ZWwsIG1lc3NhZ2UgfTogeyBwcmVmaXg6IHN0cmluZzsgbGV2ZWw6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0pIHtcbiAgY29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVsxXT8uc3BsaXQoXCIuXCIpWzBdIHx8IFwiXCI7XG4gIGNvbnN0IGZvcm1hdFByZWZpeCA9IHByZWZpeCA/IGBbJHtwcmVmaXh9XSBgIDogXCJcIjtcbiAgcmV0dXJuIGAke2NvbG9ycy5kaW0odGltZXN0YW1wIHx8IFwiXCIpfSAke2xldmVsfSAke2Zvcm1hdFByZWZpeH0ke21lc3NhZ2V9YDtcbn1cbiIsCiAgICAiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIkByNW4vdG9vbHMvdXRpbHMvbG9nZ2VyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlPcHRpb25zIHtcbiAgbWF4QXR0ZW1wdHM/OiBudW1iZXI7XG4gIGluaXRpYWxEZWxheT86IG51bWJlcjtcbiAgbWF4RGVsYXk/OiBudW1iZXI7XG4gIGJhY2tvZmZNdWx0aXBsaWVyPzogbnVtYmVyO1xuICByZXRyeWFibGVFcnJvcnM/OiBzdHJpbmdbXTtcbiAgb25SZXRyeT86IChhdHRlbXB0OiBudW1iZXIsIGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbn1cblxuY29uc3QgREVGQVVMVF9PUFRJT05TOiBSZXF1aXJlZDxSZXRyeU9wdGlvbnM+ID0ge1xuICBiYWNrb2ZmTXVsdGlwbGllcjogMixcbiAgaW5pdGlhbERlbGF5OiAxMDAwLFxuICBtYXhBdHRlbXB0czogMyxcbiAgbWF4RGVsYXk6IDMwMDAwLFxuICBvblJldHJ5OiAoYXR0ZW1wdCwgZXJyb3IpID0+IHtcbiAgICBsb2dnZXIud2FybihgUmV0cnkgYXR0ZW1wdCAke2F0dGVtcHR9OiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gIH0sXG4gIHJldHJ5YWJsZUVycm9yczogW1xuICAgIFwiRUNPTk5SRUZVU0VEXCIsXG4gICAgXCJFQ09OTlJFU0VUXCIsXG4gICAgXCJFVElNRURPVVRcIixcbiAgICBcIkVOT1RGT1VORFwiLFxuICAgIFwicmF0ZSBsaW1pdFwiLFxuICAgIFwiNDI5XCIsXG4gICAgXCI1MDNcIixcbiAgICBcIjUwMlwiLFxuICAgIFwiNTA0XCIsXG4gICAgXCJucG0gRVJSIVwiLFxuICAgIFwiRVBVQkxJU0hDT05GTElDVFwiLFxuICBdLFxufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhSZXRyeTxUPihcbiAgb3BlcmF0aW9uOiAoKSA9PiBQcm9taXNlPFQ+LFxuICBvcHRpb25zOiBSZXRyeU9wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8VD4ge1xuICBjb25zdCBvcHRzID0geyAuLi5ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgbGV0IGxhc3RFcnJvcjogRXJyb3IgPSBuZXcgRXJyb3IoXCJPcGVyYXRpb24gZmFpbGVkXCIpO1xuXG4gIGZvciAobGV0IGF0dGVtcHQgPSAxOyBhdHRlbXB0IDw9IG9wdHMubWF4QXR0ZW1wdHM7IGF0dGVtcHQrKykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgb3BlcmF0aW9uKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxhc3RFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcblxuICAgICAgY29uc3QgaXNSZXRyeWFibGUgPSBvcHRzLnJldHJ5YWJsZUVycm9ycy5zb21lKChyZXRyeWFibGVFcnJvcikgPT5cbiAgICAgICAgbGFzdEVycm9yLm1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhyZXRyeWFibGVFcnJvci50b0xvd2VyQ2FzZSgpKSxcbiAgICAgICk7XG5cbiAgICAgIGlmICghaXNSZXRyeWFibGUgfHwgYXR0ZW1wdCA9PT0gb3B0cy5tYXhBdHRlbXB0cykge1xuICAgICAgICB0aHJvdyBsYXN0RXJyb3I7XG4gICAgICB9XG5cbiAgICAgIG9wdHMub25SZXRyeShhdHRlbXB0LCBsYXN0RXJyb3IpO1xuXG4gICAgICBjb25zdCBkZWxheSA9IE1hdGgubWluKFxuICAgICAgICBvcHRzLmluaXRpYWxEZWxheSAqIG9wdHMuYmFja29mZk11bHRpcGxpZXIgKiogKGF0dGVtcHQgLSAxKSxcbiAgICAgICAgb3B0cy5tYXhEZWxheSxcbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIGRlbGF5KSk7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbGFzdEVycm9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmV0cnlhYmxlT3BlcmF0aW9uPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IFByb21pc2U8YW55Pj4oXG4gIG9wZXJhdGlvbjogVCxcbiAgb3B0aW9uczogUmV0cnlPcHRpb25zID0ge30sXG4pOiBUIHtcbiAgcmV0dXJuIChhc3luYyAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4ge1xuICAgIHJldHVybiB3aXRoUmV0cnkoKCkgPT4gb3BlcmF0aW9uKC4uLmFyZ3MpLCBvcHRpb25zKTtcbiAgfSkgYXMgVDtcbn1cbiIsCiAgICAiLy8gQ29yZVxuZXhwb3J0IGNvbnN0IGJhbmRpdHlwZSA9IChjYXN0KSA9PiB7XG4gICAgY2FzdC5tYXAgPSAoZXh0cmEpID0+IGJhbmRpdHlwZSgocmF3KSA9PiBleHRyYShjYXN0KHJhdykpKTtcbiAgICBjYXN0Lm9yID0gKGV4dHJhKSA9PiBiYW5kaXR5cGUoKHJhdykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGNhc3QocmF3KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZXh0cmEocmF3KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjYXN0O1xufTtcbi8vIEVycm9yIGhlbHBlclxuZXhwb3J0IGNvbnN0IGZhaWwgPSAoKSA9PiBcImJhZCBiYW5kaXR5cGVcIigpO1xuZXhwb3J0IGNvbnN0IG5ldmVyID0gKCkgPT4gYmFuZGl0eXBlKCgpID0+IGZhaWwoKSk7XG5leHBvcnQgY29uc3QgdW5rbm93biA9ICgpID0+IGJhbmRpdHlwZSgocmF3KSA9PiByYXcpO1xuZXhwb3J0IGNvbnN0IGVudW1zID0gKGl0ZW1zKSA9PiBiYW5kaXR5cGUoKHJhdykgPT4gaXRlbXMuaW5jbHVkZXMocmF3KSA/IHJhdyA6IGZhaWwoKSk7XG5leHBvcnQgY29uc3QgbGlrZSA9ICgodGFnKSA9PiBiYW5kaXR5cGUoKHJhdykgPT4gKHR5cGVvZiByYXcgPT09IHR5cGVvZiB0YWcgPyByYXcgOiBmYWlsKCkpKSk7XG5leHBvcnQgY29uc3Qgc3RyaW5nID0gKCkgPT4gbGlrZShcIlwiKTtcbmV4cG9ydCBjb25zdCBudW1iZXIgPSAoKSA9PiBsaWtlKDApO1xuZXhwb3J0IGNvbnN0IGJvb2xlYW4gPSAoKSA9PiBsaWtlKHRydWUpO1xuZXhwb3J0IGNvbnN0IGZ1bmMgPSAoKSA9PiBsaWtlKGZhaWwpO1xuZXhwb3J0IGNvbnN0IG9wdGlvbmFsID0gKCkgPT4gbGlrZSgpO1xuZXhwb3J0IGNvbnN0IG51bGxhYmxlID0gKCkgPT4gYmFuZGl0eXBlKChyYXcpID0+IChyYXcgPT09IG51bGwgPyByYXcgOiBmYWlsKCkpKTtcbi8vIENsYXNzZXNcbmV4cG9ydCBjb25zdCBpbnN0YW5jZSA9IChwcm90bykgPT4gYmFuZGl0eXBlKChyYXcpID0+IChyYXcgaW5zdGFuY2VvZiBwcm90byA/IHJhdyA6IGZhaWwoKSkpO1xuLy8gb2JqZWN0c1xuZXhwb3J0IGNvbnN0IHJlY29yZCA9IChjYXN0VmFsdWUpID0+IGluc3RhbmNlKE9iamVjdCkubWFwKChyYXcpID0+IHtcbiAgICBjb25zdCByZXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiByYXcpIHtcbiAgICAgICAgY29uc3QgZiA9IGNhc3RWYWx1ZShyYXdba2V5XSk7XG4gICAgICAgIGYgIT09IHVuZGVmaW5lZCAmJiAocmVzW2tleV0gPSBmKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn0pO1xuZXhwb3J0IGNvbnN0IG9iamVjdCA9IChzY2hlbWEpID0+IGluc3RhbmNlKE9iamVjdCkubWFwKChyYXcpID0+IHtcbiAgICBjb25zdCByZXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEpIHtcbiAgICAgICAgY29uc3QgZiA9IHNjaGVtYVtrZXldKHJhd1trZXldKTtcbiAgICAgICAgZiAhPT0gdW5kZWZpbmVkICYmIChyZXNba2V5XSA9IGYpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufSk7XG5leHBvcnQgY29uc3Qgb2JqZWN0TG9vc2UgPSAoc2NoZW1hKSA9PiBpbnN0YW5jZShPYmplY3QpLm1hcCgocmF3KSA9PiB7XG4gICAgY29uc3QgcmVzID0geyAuLi5yYXcgfTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEpIHtcbiAgICAgICAgY29uc3QgZiA9IHNjaGVtYVtrZXldKHJhd1trZXldKTtcbiAgICAgICAgZiAhPT0gdW5kZWZpbmVkICYmIChyZXNba2V5XSA9IGYpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufSk7XG4vLyBhcnJheXNcbmV4cG9ydCBjb25zdCBhcnJheSA9IChjYXN0SXRlbSkgPT4gaW5zdGFuY2UoQXJyYXkpLm1hcCgoYXJyKSA9PiBhcnIubWFwKGNhc3RJdGVtKSk7XG5leHBvcnQgY29uc3QgdHVwbGUgPSAoc2NoZW1hKSA9PiBpbnN0YW5jZShBcnJheSkubWFwKChhcnIpID0+IHtcbiAgICByZXR1cm4gc2NoZW1hLm1hcCgoY2FzdCwgaSkgPT4gY2FzdChhcnJbaV0pKTtcbn0pO1xuZXhwb3J0IGNvbnN0IHNldCA9IChjYXN0SXRlbSkgPT4gaW5zdGFuY2UoU2V0KS5tYXAoKHNldCkgPT4gbmV3IFNldChbLi4uc2V0XS5tYXAoY2FzdEl0ZW0pKSk7XG5leHBvcnQgY29uc3QgbWFwID0gKGNhc3RLZXksIGNhc3RWYWx1ZSkgPT4gaW5zdGFuY2UoTWFwKS5tYXAoKG1hcCkgPT4ge1xuICAgIHJldHVybiBuZXcgTWFwKFsuLi5tYXBdLm1hcCgoW2ssIHZdKSA9PiBbY2FzdEtleShrKSwgY2FzdFZhbHVlKHYpXSkpO1xufSk7XG5leHBvcnQgY29uc3QgbGF6eSA9IChjYXN0KSA9PiBiYW5kaXR5cGUoKHJhdykgPT4gY2FzdCgpKHJhdykpO1xuIiwKICAgICJpbXBvcnQge1xuICBhcnJheSxcbiAgdHlwZSBJbmZlciBhcyBCVEluZmVyLFxuICBib29sZWFuLFxuICB0eXBlIENhc3QsXG4gIGVudW1zLFxuICBmYWlsLFxuICBudW1iZXIsXG4gIG9iamVjdCxcbiAgb3B0aW9uYWwsXG4gIHJlY29yZCxcbiAgc3RyaW5nLFxuICBiYW5kaXR5cGUgYXMgdmFsaWRhdG9yLFxufSBmcm9tIFwiYmFuZGl0eXBlc1wiO1xuXG5leHBvcnQgeyBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiwgb2JqZWN0LCBhcnJheSwgb3B0aW9uYWwsIHJlY29yZCwgZW51bXMsIGZhaWwgfTtcblxuZXhwb3J0IHR5cGUgSW5mZXI8VCBleHRlbmRzIENhc3Q8dW5rbm93bj4+ID0gQlRJbmZlcjxUPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVuaW9uPEEsIEI+KHNjaGVtYUE6IENhc3Q8QT4sIHNjaGVtYUI6IENhc3Q8Qj4pOiBDYXN0PEEgfCBCPiB7XG4gIHJldHVybiB2YWxpZGF0b3IoKGRhdGE6IHVua25vd24pOiBBIHwgQiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBzY2hlbWFBKGRhdGEpIGFzIEE7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gc2NoZW1hQihkYXRhKSBhcyBCO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG1hdGNoaW5nIHNjaGVtYSBpbiB1bmlvblwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFRvPFQ+KHNjaGVtYTogQ2FzdDxUPiwgZGVmYXVsdFZhbHVlOiBUKSB7XG4gIHJldHVybiAoZGF0YTogdW5rbm93bikgPT4ge1xuICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgcmV0dXJuIHNjaGVtYShkYXRhKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aXZlSW50KCkge1xuICByZXR1cm4gdmFsaWRhdG9yKChkYXRhOiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgbiA9IG51bWJlcigpKGRhdGEpO1xuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihuKSB8fCBuIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyXCIpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cmwoKSB7XG4gIHJldHVybiB2YWxpZGF0b3IoKGRhdGE6IHVua25vd24pID0+IHtcbiAgICBjb25zdCBzID0gc3RyaW5nKCkoZGF0YSk7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBVUkwocyk7XG4gICAgICByZXR1cm4gcztcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk11c3QgYmUgYSB2YWxpZCBVUkxcIik7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtYWlsKCkge1xuICByZXR1cm4gdmFsaWRhdG9yKChkYXRhOiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgcyA9IHN0cmluZygpKGRhdGEpO1xuICAgIGNvbnN0IGVtYWlsUmVnZXggPSAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLztcbiAgICBpZiAoIWVtYWlsUmVnZXgudGVzdChzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTXVzdCBiZSBhIHZhbGlkIGVtYWlsXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcztcbiAgfSk7XG59XG5cbi8vIE1pbi9tYXggaGVscGVyc1xuZXhwb3J0IGZ1bmN0aW9uIG1pbihtaW5WYWw6IG51bWJlcikge1xuICByZXR1cm4gdmFsaWRhdG9yKChkYXRhOiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgbiA9IG51bWJlcigpKGRhdGEpO1xuICAgIGlmIChuIDwgbWluVmFsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE11c3QgYmUgYXQgbGVhc3QgJHttaW5WYWx9YCk7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pbkxlbmd0aChtaW5MZW46IG51bWJlcikge1xuICByZXR1cm4gdmFsaWRhdG9yKChkYXRhOiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgcyA9IHN0cmluZygpKGRhdGEpO1xuICAgIGlmIChzLmxlbmd0aCA8IG1pbkxlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNdXN0IGJlIGF0IGxlYXN0ICR7bWluTGVufSBjaGFyYWN0ZXJzYCk7XG4gICAgfVxuICAgIHJldHVybiBzO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2V4KHBhdHRlcm46IFJlZ0V4cCwgbWVzc2FnZT86IHN0cmluZykge1xuICByZXR1cm4gdmFsaWRhdG9yKChkYXRhOiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgcyA9IHN0cmluZygpKGRhdGEpO1xuICAgIGlmICghcGF0dGVybi50ZXN0KHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSB8fCBgTXVzdCBtYXRjaCBwYXR0ZXJuICR7cGF0dGVybn1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHM7XG4gIH0pO1xufVxuXG4vLyBIZWxwZXIgdG8gY3JlYXRlIHNjaGVtYXMgd2l0aCBiZXR0ZXIgZXJyb3IgaGFuZGxpbmdcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTY2hlbWE8VD4odmFsaWRhdG9yOiBDYXN0PFQ+KSB7XG4gIHJldHVybiB7XG4gICAgcGFyc2UodmFsdWU6IHVua25vd24pOiBUIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0b3IodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogXCJWYWxpZGF0aW9uIGZhaWxlZFwiKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNhZmVQYXJzZSh2YWx1ZTogdW5rbm93bik6IHsgc3VjY2VzczogdHJ1ZTsgZGF0YTogVCB9IHwgeyBzdWNjZXNzOiBmYWxzZTsgZXJyb3I6IEVycm9yIH0ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHsgZGF0YTogdmFsaWRhdG9yKHZhbHVlKSwgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFwiVmFsaWRhdGlvbiBmYWlsZWRcIiksXG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0b3IsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25maWdWYWxpZGF0b3I8VD4oc2NoZW1hOiBDYXN0PFQ+KSB7XG4gIGNvbnN0IHZhbGlkYXRvciA9IGNyZWF0ZVNjaGVtYShzY2hlbWEpO1xuXG4gIHJldHVybiB7XG4gICAgcGFyc2U6IHZhbGlkYXRvci5wYXJzZSxcbiAgICBwYXJzZUpTT04oanNvbjogc3RyaW5nKTogVCB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShqc29uKTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRvci5wYXJzZShkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEpTT046ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNhZmVQYXJzZTogdmFsaWRhdG9yLnNhZmVQYXJzZSxcbiAgfTtcbn1cbiIsCiAgICAiaW1wb3J0IHsgcGFyc2VBcmdzIH0gZnJvbSBcIm5vZGU6dXRpbFwiO1xuaW1wb3J0IHsgY29uZmlybSwgaXNDYW5jZWwsIHRleHQgfSBmcm9tIFwiQGNsYWNrL3Byb21wdHNcIjtcbmltcG9ydCB7IHdpdGhSZXRyeSB9IGZyb20gXCJAcjVuL2NsaS1jb3JlXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiQHI1bi90b29scy91dGlscy9sb2dnZXJcIjtcbmltcG9ydCB7ICQgfSBmcm9tIFwiYnVuXCI7XG5pbXBvcnQgeyBnZXRQcm9maWxlLCBsb2FkQ29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZ1wiO1xuaW1wb3J0IHsgZ2V0UGFja2FnZVBhdGggfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xuaW1wb3J0IHsgd29ya2VyTWFuYWdlciB9IGZyb20gXCIuLi9saWIvd29ya2VyLW1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgQ3JlYXRlQXJncyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoeyBwcmVmaXg6IFwiY3JlYXRlTWFjaGluZXNcIiB9KTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1hY2hpbmVzKCkge1xuICBjb25zdCBhcmdzID0gYXdhaXQgZ2V0QXJncygpO1xuICBjb25zdCB7IG92ZXJ3cml0ZSwgZGlyZWN0b3J5LCBudW1iZXJPZk1hY2hpbmVzLCBvcywgcnVuLCBuYW1lLCBsYWJlbHMsIHJ1bm5lckdyb3VwIH0gPSBhcmdzO1xuICBsZXQgeyB0b2tlbiwgdXJsIH0gPSBhcmdzO1xuXG4gIGlmICghdXJsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVVJMICgtdSkgcGFyYW1ldGVyIGlzIHJlcXVpcmVkXCIpO1xuICB9XG5cbiAgaWYgKCF0b2tlbikge1xuICAgIGNvbnN0IHNldHRpbmdzVXJsID0gY29uc3RydWN0UnVubmVyU2V0dGluZ3NVcmwodXJsKTtcblxuICAgIGNvbnN0IHNob3VsZE9wZW4gPSBhd2FpdCBjb25maXJtKHtcbiAgICAgIG1lc3NhZ2U6IGBObyB0b2tlbiBwcm92aWRlZC4gV291bGQgeW91IGxpa2UgdG8gb3BlbiBHaXRIdWIgdG8gZ2V0IGEgcnVubmVyIHRva2VuP1xcbiAgJHtzZXR0aW5nc1VybH1gLFxuICAgIH0pO1xuXG4gICAgaWYgKGlzQ2FuY2VsKHNob3VsZE9wZW4pIHx8ICFzaG91bGRPcGVuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb2tlbiBpcyByZXF1aXJlZCB0byBjcmVhdGUgcnVubmVyc1wiKTtcbiAgICB9XG5cbiAgICBsb2dnZXIuaW5mbyhcIk9wZW5pbmcgR2l0SHViIHJ1bm5lciBzZXR0aW5ncy4uLlwiKTtcbiAgICBhd2FpdCAkYG9wZW4gJHtzZXR0aW5nc1VybH1gLnF1aWV0KCk7XG5cbiAgICBjb25zdCB0b2tlbklucHV0ID0gYXdhaXQgdGV4dCh7XG4gICAgICBtZXNzYWdlOiBcIkVudGVyIHRoZSBydW5uZXIgcmVnaXN0cmF0aW9uIHRva2VuOlwiLFxuICAgICAgcGxhY2Vob2xkZXI6IFwiQVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhcIixcbiAgICAgIHZhbGlkYXRlOiAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIFwiVG9rZW4gaXMgcmVxdWlyZWRcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChpc0NhbmNlbCh0b2tlbklucHV0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVG9rZW4gaXMgcmVxdWlyZWQgdG8gY3JlYXRlIHJ1bm5lcnNcIik7XG4gICAgfVxuXG4gICAgdG9rZW4gPSB0b2tlbklucHV0LnRyaW0oKTtcbiAgfVxuXG4gIGxvZ2dlci5pbmZvKGBDcmVhdGluZyAke251bWJlck9mTWFjaGluZXN9IHJ1bm5lcnMgaW4gJHtkaXJlY3Rvcnl9YCk7XG4gIGxvZ2dlci5kZWJ1ZyhgT1M6ICR7b3N9LCBOYW1lOiAke25hbWV9LCBMYWJlbHM6ICR7bGFiZWxzIHx8IFwibm9uZVwifWApO1xuXG4gIGNvbnN0IGRpcmVjdG9yeUV4aXN0cyA9IGF3YWl0IEJ1bi5maWxlKGRpcmVjdG9yeSkuZXhpc3RzKCk7XG4gIGlmIChkaXJlY3RvcnlFeGlzdHMpIHtcbiAgICBpZiAob3ZlcndyaXRlKSB7XG4gICAgICBsb2dnZXIud2FybihgRGlyZWN0b3J5ICR7ZGlyZWN0b3J5fSBleGlzdHMsIHJlbW92aW5nLi4uYCk7XG4gICAgICBhd2FpdCAkYHJtIC1yZiAke2RpcmVjdG9yeX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpcmVjdG9yeSAke2RpcmVjdG9yeX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBydW5uZXJCYXNlID0gYXdhaXQgZG93bmxvYWRMYXRlc3RSdW5uZXJJbWFnZSh7IGRpcmVjdG9yeSwgb3MgfSk7XG4gIGF3YWl0IGV4dHJhY3RBbmRDb3B5UnVubmVyQmFzZSh7IGRpcmVjdG9yeSwgbnVtYmVyT2ZNYWNoaW5lcywgb3ZlcndyaXRlLCBydW5uZXJCYXNlIH0pO1xuXG4gIGlmICghcnVuKSB7XG4gICAgbG9nZ2VyLmluZm8oXCJSdW5uZXJzIGNyZWF0ZWQgYnV0IG5vdCBzdGFydGVkXCIpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXJ0UnVubmVycyh7IGRpcmVjdG9yeSwgbGFiZWxzLCBuYW1lLCBudW1iZXJPZk1hY2hpbmVzLCBydW5uZXJHcm91cCwgdG9rZW4sIHVybCB9KTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0UnVubmVyU2V0dGluZ3NVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZFVybCA9IG5ldyBVUkwodXJsKTtcbiAgICBjb25zdCBwYXRoUGFydHMgPSBwYXJzZWRVcmwucGF0aG5hbWUuc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKTtcblxuICAgIC8vIEhhbmRsZSBkaWZmZXJlbnQgR2l0SHViIFVSTCBmb3JtYXRzXG4gICAgaWYgKHBhcnNlZFVybC5ob3N0bmFtZSA9PT0gXCJnaXRodWIuY29tXCIgfHwgcGFyc2VkVXJsLmhvc3RuYW1lID09PSBcInd3dy5naXRodWIuY29tXCIpIHtcbiAgICAgIGlmIChwYXRoUGFydHNbMF0gPT09IFwib3Jnc1wiICYmIHBhdGhQYXJ0c1sxXSkge1xuICAgICAgICAvLyBPcmdhbml6YXRpb24gVVJMOiBodHRwczovL2dpdGh1Yi5jb20vb3Jncy9teW9yZ1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdhbml6YXRpb25zLyR7cGF0aFBhcnRzWzFdfS9zZXR0aW5ncy9hY3Rpb25zL3J1bm5lcnMvbmV3YDtcbiAgICAgIH0gZWxzZSBpZiAocGF0aFBhcnRzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgIC8vIFJlcG9zaXRvcnkgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vb3duZXIvcmVwb1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vZ2l0aHViLmNvbS8ke3BhdGhQYXJ0c1swXX0vJHtwYXRoUGFydHNbMV19L3NldHRpbmdzL2FjdGlvbnMvcnVubmVycy9uZXdgO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBHaXRIdWIgRW50ZXJwcmlzZSBVUkxcbiAgICAgIGlmIChwYXRoUGFydHNbMF0gPT09IFwib3Jnc1wiICYmIHBhdGhQYXJ0c1sxXSkge1xuICAgICAgICByZXR1cm4gYCR7cGFyc2VkVXJsLm9yaWdpbn0vb3JnYW5pemF0aW9ucy8ke3BhdGhQYXJ0c1sxXX0vc2V0dGluZ3MvYWN0aW9ucy9ydW5uZXJzL25ld2A7XG4gICAgICB9IGVsc2UgaWYgKHBhdGhQYXJ0cy5sZW5ndGggPj0gMikge1xuICAgICAgICByZXR1cm4gYCR7cGFyc2VkVXJsLm9yaWdpbn0vJHtwYXRoUGFydHNbMF19LyR7cGF0aFBhcnRzWzFdfS9zZXR0aW5ncy9hY3Rpb25zL3J1bm5lcnMvbmV3YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayB0byBvcmlnaW5hbCBVUkwgaWYgd2UgY2FuJ3QgcGFyc2UgaXRcbiAgICByZXR1cm4gdXJsO1xuICB9IGNhdGNoIHtcbiAgICAvLyBJZiBVUkwgcGFyc2luZyBmYWlscywgcmV0dXJuIHRoZSBvcmlnaW5hbFxuICAgIHJldHVybiB1cmw7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QXJncygpOiBQcm9taXNlPENyZWF0ZUFyZ3M+IHtcbiAgY29uc3QgeyB2YWx1ZXMgfSA9IHBhcnNlQXJncyh7XG4gICAgYWxsb3dQb3NpdGlvbmFsczogdHJ1ZSxcbiAgICBhcmdzOiBCdW4uYXJndixcbiAgICBvcHRpb25zOiB7XG4gICAgICBjb25maWc6IHsgc2hvcnQ6IFwiY1wiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBkaXJlY3Rvcnk6IHsgZGVmYXVsdDogYCR7cHJvY2Vzcy5jd2QoKX0vZ2gtcnVubmVyc2AsIHNob3J0OiBcImRcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgbGFiZWxzOiB7IHNob3J0OiBcImxcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgbmFtZTogeyBkZWZhdWx0OiBcInJ1bm5lclwiLCBzaG9ydDogXCJuXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIG51bWJlck9mTWFjaGluZXM6IHsgZGVmYXVsdDogXCIxXCIsIHNob3J0OiBcIm1cIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgb3M6IHsgZGVmYXVsdDogXCJvc3hcIiwgc2hvcnQ6IFwic1wiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBvdmVyd3JpdGU6IHsgZGVmYXVsdDogZmFsc2UsIHNob3J0OiBcImZcIiwgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgIHByb2ZpbGU6IHsgc2hvcnQ6IFwicFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBydW46IHsgZGVmYXVsdDogZmFsc2UsIHNob3J0OiBcInJcIiwgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgIHJ1bm5lckdyb3VwOiB7IHNob3J0OiBcImdcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgdG9rZW46IHsgc2hvcnQ6IFwidFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICB1cmw6IHsgc2hvcnQ6IFwidVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgfSxcbiAgICBzdHJpY3Q6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGxvYWRDb25maWcoeyBjb25maWdQYXRoOiB2YWx1ZXMuY29uZmlnIGFzIHN0cmluZyB9KTtcbiAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IGdldFByb2ZpbGUoY29uZmlnLCB2YWx1ZXMucHJvZmlsZSBhcyBzdHJpbmcpO1xuXG4gIGNvbnN0IGJhc2VBcmdzID0ge1xuICAgIGRpcmVjdG9yeTogdmFsdWVzLmRpcmVjdG9yeSBhcyBzdHJpbmcsXG4gICAgbGFiZWxzOiB2YWx1ZXMubGFiZWxzIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB2YWx1ZXMubmFtZSBhcyBzdHJpbmcsXG4gICAgbnVtYmVyT2ZNYWNoaW5lczogdmFsdWVzLm51bWJlck9mTWFjaGluZXMgYXMgc3RyaW5nLFxuICAgIG9zOiB2YWx1ZXMub3MgYXMgc3RyaW5nLFxuICAgIG92ZXJ3cml0ZTogdmFsdWVzLm92ZXJ3cml0ZSBhcyBib29sZWFuLFxuICAgIHJ1bjogdmFsdWVzLnJ1biBhcyBib29sZWFuLFxuICAgIHJ1bm5lckdyb3VwOiB2YWx1ZXMucnVubmVyR3JvdXAgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHRva2VuOiB2YWx1ZXMudG9rZW4gYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHVybDogdmFsdWVzLnVybCBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIH07XG5cbiAgLy8gTWVyZ2Ugd2l0aCBwcm9maWxlXG4gIGlmIChwcm9maWxlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpcmVjdG9yeTogYmFzZUFyZ3MuZGlyZWN0b3J5ID8/IHByb2ZpbGUuZGlyZWN0b3J5ID8/IGAke3Byb2Nlc3MuY3dkKCl9L2doLXJ1bm5lcnNgLFxuICAgICAgbGFiZWxzOiBiYXNlQXJncy5sYWJlbHMgPz8gcHJvZmlsZS5sYWJlbHMsXG4gICAgICBuYW1lOiBiYXNlQXJncy5uYW1lID8/IHByb2ZpbGUubmFtZSA/PyBcInJ1bm5lclwiLFxuICAgICAgbnVtYmVyT2ZNYWNoaW5lczogYmFzZUFyZ3MubnVtYmVyT2ZNYWNoaW5lcyA/PyBTdHJpbmcocHJvZmlsZS5udW1iZXJPZk1hY2hpbmVzKSA/PyBcIjFcIixcbiAgICAgIG9zOiAoYmFzZUFyZ3Mub3MgPz8gcHJvZmlsZS5vcyA/PyBcIm9zeFwiKSBhcyBcIm9zeFwiIHwgXCJsaW51eFwiIHwgXCJ3aW5kb3dzXCIsXG4gICAgICBvdmVyd3JpdGU6IGJhc2VBcmdzLm92ZXJ3cml0ZSA/PyBwcm9maWxlLm92ZXJ3cml0ZSA/PyBmYWxzZSxcbiAgICAgIHJ1bjogYmFzZUFyZ3MucnVuID8/IHByb2ZpbGUucnVuID8/IGZhbHNlLFxuICAgICAgcnVubmVyR3JvdXA6IGJhc2VBcmdzLnJ1bm5lckdyb3VwID8/IHByb2ZpbGUucnVubmVyR3JvdXAsXG4gICAgICB0b2tlbjogYmFzZUFyZ3MudG9rZW4sXG4gICAgICB1cmw6IGJhc2VBcmdzLnVybCA/PyBwcm9maWxlLnVybCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkaXJlY3Rvcnk6IGJhc2VBcmdzLmRpcmVjdG9yeSxcbiAgICBsYWJlbHM6IGJhc2VBcmdzLmxhYmVscyxcbiAgICBuYW1lOiBiYXNlQXJncy5uYW1lLFxuICAgIG51bWJlck9mTWFjaGluZXM6IGJhc2VBcmdzLm51bWJlck9mTWFjaGluZXMsXG4gICAgb3M6IGJhc2VBcmdzLm9zIGFzIFwib3N4XCIgfCBcImxpbnV4XCIgfCBcIndpbmRvd3NcIixcbiAgICBvdmVyd3JpdGU6IGJhc2VBcmdzLm92ZXJ3cml0ZSxcbiAgICBydW46IGJhc2VBcmdzLnJ1bixcbiAgICBydW5uZXJHcm91cDogYmFzZUFyZ3MucnVubmVyR3JvdXAsXG4gICAgdG9rZW46IGJhc2VBcmdzLnRva2VuLFxuICAgIHVybDogYmFzZUFyZ3MudXJsLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBkb3dubG9hZExhdGVzdFJ1bm5lckltYWdlKHsgZGlyZWN0b3J5LCBvcyB9OiB7IGRpcmVjdG9yeTogc3RyaW5nOyBvczogc3RyaW5nIH0pIHtcbiAgY29uc3QgbG9nID0gbG9nZ2VyLmNoaWxkKFwiZG93bmxvYWRcIik7XG5cbiAgbG9nLmluZm8oYEZldGNoaW5nIGxhdGVzdCBydW5uZXIgdmVyc2lvbiBmb3IgJHtvc30uLi5gKTtcbiAgY29uc3QgcmVsZWFzZUluZm8gPSBhd2FpdCB3aXRoUmV0cnkoXG4gICAgYXN5bmMgKCkgPT5cbiAgICAgIChcbiAgICAgICAgYXdhaXQgJGBjdXJsIC1McyAtbyAvZGV2L251bGwgLXcgXCIle3VybF9lZmZlY3RpdmV9XCIgaHR0cHM6Ly9naXRodWIuY29tL2FjdGlvbnMvcnVubmVyL3JlbGVhc2VzL2xhdGVzdGBcbiAgICAgICkudGV4dCgpLFxuICAgIHtcbiAgICAgIG9uUmV0cnk6IChhdHRlbXB0LCBlcnJvcikgPT4ge1xuICAgICAgICBsb2cud2FybihgUmV0cnlpbmcgR2l0SHViIEFQSSBjYWxsIChhdHRlbXB0ICR7YXR0ZW1wdH0pOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICB9LFxuICAgIH0sXG4gICk7XG4gIGNvbnN0IGxhc3RSZWxlYXNlID0gKGF3YWl0ICRgYmFzZW5hbWUgJHtyZWxlYXNlSW5mb31gKS50ZXh0KCk7XG5cbiAgY29uc3QgdmVyc2lvbiA9IGxhc3RSZWxlYXNlLnRyaW0oKS5yZXBsYWNlKFwidlwiLCBcIlwiKTtcbiAgY29uc3QgcnVubmVyQmFzZSA9IGBhY3Rpb25zLXJ1bm5lci0ke29zfS14NjQtJHt2ZXJzaW9ufS50YXIuZ3pgO1xuICBjb25zdCBnaXRodWJSZWxlYXNlVXJsID0gYGh0dHBzOi8vZ2l0aHViLmNvbS9hY3Rpb25zL3J1bm5lci9yZWxlYXNlcy9kb3dubG9hZC92JHt2ZXJzaW9ufS8ke3J1bm5lckJhc2V9YDtcblxuICBsb2cuZGVidWcoYFJ1bm5lciB2ZXJzaW9uOiAke3ZlcnNpb259YCk7XG4gIGxvZy5kZWJ1ZyhgRG93bmxvYWQgVVJMOiAke2dpdGh1YlJlbGVhc2VVcmx9YCk7XG5cbiAgYXdhaXQgJGBta2RpciAtcCAke2RpcmVjdG9yeX1gO1xuICBhd2FpdCAkYG1rZGlyIC1wICR7ZGlyZWN0b3J5fS9tYWNoaW5lc2A7XG5cbiAgY29uc3QgcnVubmVyRmlsZUV4aXN0cyA9IGF3YWl0IEJ1bi5maWxlKGAke2RpcmVjdG9yeX0vJHtydW5uZXJCYXNlfWApLmV4aXN0cygpO1xuICBpZiAoIXJ1bm5lckZpbGVFeGlzdHMpIHtcbiAgICBsb2cuaW5mbyhcIkRvd25sb2FkaW5nIHJ1bm5lciBpbWFnZS4uLlwiKTtcbiAgICBhd2FpdCB3aXRoUmV0cnkoXG4gICAgICBhc3luYyAoKSA9PiBhd2FpdCAkYGN1cmwgLW8gJHtkaXJlY3Rvcnl9LyR7cnVubmVyQmFzZX0gLUwgJHtnaXRodWJSZWxlYXNlVXJsfWAsXG4gICAgICB7XG4gICAgICAgIG1heEF0dGVtcHRzOiA1LFxuICAgICAgICBvblJldHJ5OiAoYXR0ZW1wdCwgZXJyb3IpID0+IHtcbiAgICAgICAgICBsb2cud2FybihgUmV0cnlpbmcgcnVubmVyIGRvd25sb2FkIChhdHRlbXB0ICR7YXR0ZW1wdH0pOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG4gICAgbG9nLmluZm8oXCJEb3dubG9hZCBjb21wbGV0ZVwiKTtcbiAgfSBlbHNlIHtcbiAgICBsb2cuaW5mbyhcIlJ1bm5lciBpbWFnZSBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmcgZG93bmxvYWRcIik7XG4gIH1cblxuICByZXR1cm4gcnVubmVyQmFzZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdEFuZENvcHlSdW5uZXJCYXNlKHtcbiAgb3ZlcndyaXRlLFxuICBudW1iZXJPZk1hY2hpbmVzLFxuICBkaXJlY3RvcnksXG4gIHJ1bm5lckJhc2UsXG59OiB7XG4gIG92ZXJ3cml0ZTogYm9vbGVhbjtcbiAgbnVtYmVyT2ZNYWNoaW5lczogc3RyaW5nO1xuICBkaXJlY3Rvcnk6IHN0cmluZztcbiAgcnVubmVyQmFzZTogc3RyaW5nO1xufSkge1xuICBjb25zdCBsb2cgPSBsb2dnZXIuY2hpbGQoXCJleHRyYWN0XCIpO1xuICBjb25zdCBudW1NYWNoaW5lcyA9IE51bWJlcihudW1iZXJPZk1hY2hpbmVzKTtcblxuICBjb25zdCBjcHVDb3VudCA9ICgoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IEJ1bi5zcGF3blN5bmMoW1wibnByb2NcIl0pO1xuICAgICAgcmV0dXJuIE51bWJlci5wYXJzZUludChyZXN1bHQuc3Rkb3V0LnRvU3RyaW5nKCkudHJpbSgpLCAxMCkgfHwgNDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IEJ1bi5zcGF3blN5bmMoW1wic3lzY3RsXCIsIFwiLW5cIiwgXCJody5uY3B1XCJdKTtcbiAgICAgICAgcmV0dXJuIE51bWJlci5wYXJzZUludChyZXN1bHQuc3Rkb3V0LnRvU3RyaW5nKCkudHJpbSgpLCAxMCkgfHwgNDtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gNDtcbiAgICAgIH1cbiAgICB9XG4gIH0pKCk7XG4gIGNvbnN0IGNvbmN1cnJlbmN5ID0gTWF0aC5taW4oTWF0aC5tYXgoMiwgTWF0aC5mbG9vcihjcHVDb3VudCAvIDIpKSwgbnVtTWFjaGluZXMsIDgpO1xuXG4gIGxvZy5pbmZvKGBFeHRyYWN0aW5nICR7bnVtTWFjaGluZXN9IHJ1bm5lcnMgd2l0aCBjb25jdXJyZW5jeSBvZiAke2NvbmN1cnJlbmN5fWApO1xuXG4gIGNvbnN0IHRhc2tzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogbnVtTWFjaGluZXMgfSwgKF8sIGkpID0+IGkgKyAxKS5tYXAoKHJ1bm5lckluZGV4KSA9PiAoe1xuICAgIGV4ZWN1dGU6IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1hY2hpbmVEaXJlY3RvcnkgPSBgJHtkaXJlY3Rvcnl9L21hY2hpbmVzLyR7cnVubmVySW5kZXh9YDtcbiAgICAgIGNvbnN0IG1hY2hpbmVFeGlzdHMgPSBhd2FpdCBCdW4uZmlsZShtYWNoaW5lRGlyZWN0b3J5KS5leGlzdHMoKTtcblxuICAgICAgaWYgKG1hY2hpbmVFeGlzdHMpIHtcbiAgICAgICAgaWYgKG92ZXJ3cml0ZSkge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgTWFjaGluZSAke3J1bm5lckluZGV4fSBhbHJlYWR5IGV4aXN0cywgcmVtb3ZpbmcuLi5gKTtcbiAgICAgICAgICBhd2FpdCAkYHJtIC1yZiAke21hY2hpbmVEaXJlY3Rvcnl9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2cuZGVidWcoYE1hY2hpbmUgJHtydW5uZXJJbmRleH0gYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nLi4uYCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF3YWl0ICRgbWtkaXIgLXAgJHttYWNoaW5lRGlyZWN0b3J5fWA7XG5cbiAgICAgIGF3YWl0ICRgdGFyIHh6ZiAke3J1bm5lckJhc2V9IC1DICR7bWFjaGluZURpcmVjdG9yeS5yZXBsYWNlKGAke2RpcmVjdG9yeX0vYCwgXCJcIil9YC5jd2QoXG4gICAgICAgIGRpcmVjdG9yeSxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHJ1bm5lclBhdGggPSBgJHtnZXRQYWNrYWdlUGF0aCgpfS9zcmMvcnVubmVyYDtcblxuICAgICAgYXdhaXQgJGBjcCAtUiAke3J1bm5lclBhdGh9L2hvb2tzICR7bWFjaGluZURpcmVjdG9yeX1gO1xuICAgICAgYXdhaXQgJGBjcCAtUiAke3J1bm5lclBhdGh9Ly5ydW5uZXItZW52ICR7bWFjaGluZURpcmVjdG9yeX0vLnJ1bm5lci1lbnZgO1xuXG4gICAgICBsb2cuZGVidWcoYE1hY2hpbmUgJHtydW5uZXJJbmRleH0gZXh0cmFjdGVkIHN1Y2Nlc3NmdWxseWApO1xuICAgIH0sXG4gICAgcnVubmVySW5kZXgsXG4gIH0pKTtcblxuICBjb25zdCByZXN1bHRzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGFza3MubGVuZ3RoOyBpICs9IGNvbmN1cnJlbmN5KSB7XG4gICAgY29uc3QgYmF0Y2ggPSB0YXNrcy5zbGljZShpLCBpICsgY29uY3VycmVuY3kpO1xuICAgIGNvbnN0IGJhdGNoUmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChiYXRjaC5tYXAoKHRhc2spID0+IHRhc2suZXhlY3V0ZSgpKSk7XG5cbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgcmVzdWx0XSBvZiBiYXRjaFJlc3VsdHMuZW50cmllcygpKSB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJyZWplY3RlZFwiKSB7XG4gICAgICAgIGxvZy5lcnJvcihgRmFpbGVkIHRvIGV4dHJhY3QgcnVubmVyICR7YmF0Y2hbaW5kZXhdPy5ydW5uZXJJbmRleH06ICR7cmVzdWx0LnJlYXNvbn1gKTtcbiAgICAgICAgdGhyb3cgcmVzdWx0LnJlYXNvbjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXN1bHRzLnB1c2goLi4uYmF0Y2hSZXN1bHRzKTtcbiAgfVxuXG4gIGxvZy5pbmZvKGBTdWNjZXNzZnVsbHkgZXh0cmFjdGVkICR7bnVtTWFjaGluZXN9IHJ1bm5lcnNgKTtcbn1cblxuZnVuY3Rpb24gc3RhcnRSdW5uZXJzKHtcbiAgZGlyZWN0b3J5LFxuICBudW1iZXJPZk1hY2hpbmVzLFxuICB0b2tlbixcbiAgdXJsLFxuICBuYW1lLFxuICBsYWJlbHMsXG4gIHJ1bm5lckdyb3VwLFxufToge1xuICBkaXJlY3Rvcnk6IHN0cmluZztcbiAgbnVtYmVyT2ZNYWNoaW5lczogc3RyaW5nO1xuICB0b2tlbjogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBsYWJlbHM/OiBzdHJpbmc7XG4gIHJ1bm5lckdyb3VwPzogc3RyaW5nO1xufSkge1xuICBsb2dnZXIuaW5mbyhgU3RhcnRpbmcgJHtudW1iZXJPZk1hY2hpbmVzfSBydW5uZXJzLi4uYCk7XG5cbiAgZm9yIChsZXQgcnVubmVySW5kZXggPSAxOyBydW5uZXJJbmRleCA8PSBOdW1iZXIobnVtYmVyT2ZNYWNoaW5lcyk7IHJ1bm5lckluZGV4KyspIHtcbiAgICBjb25zdCB3b3JrZXJQYXRoID0gYCR7Z2V0UGFja2FnZVBhdGgoKX0vc3JjL3J1bm5lci13b3JrZXIudHNgO1xuICAgIGNvbnN0IHdvcmtlck5hbWUgPSBgJHtuYW1lfS0ke3J1bm5lckluZGV4fWA7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcih3b3JrZXJQYXRoLCB7IG5hbWU6IHdvcmtlck5hbWUsIHJlZjogdHJ1ZSB9KTtcblxuICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKFwib3BlblwiLCAoKSA9PiB7XG4gICAgICBsb2dnZXIuaW5mbyhgV29ya2VyICR7d29ya2VyTmFtZX0gc3RhcnRlZGApO1xuXG4gICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICBpbmRleDogcnVubmVySW5kZXgsXG4gICAgICAgIGxhYmVscyxcbiAgICAgICAgbWFjaGluZUN3ZDogYCR7ZGlyZWN0b3J5fS9tYWNoaW5lcy8ke3J1bm5lckluZGV4fWAsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHJ1bm5lckdyb3VwLFxuICAgICAgICB0b2tlbixcbiAgICAgICAgdXJsLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgKHsgZGF0YSB9KSA9PiB7XG4gICAgICBjb25zdCBsZXZlbCA9IGRhdGEudHlwZSA9PT0gXCJlcnJvclwiID8gXCJlcnJvclwiIDogXCJpbmZvXCI7XG4gICAgICBsb2dnZXJbbGV2ZWxdKGAke3dvcmtlck5hbWV9OiAke2RhdGEubWVzc2FnZX1gKTtcbiAgICB9KTtcblxuICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgKGVycm9yKSA9PiB7XG4gICAgICBsb2dnZXIuZXJyb3IoYFdvcmtlciAke3dvcmtlck5hbWV9IGVycm9yOmAsIGVycm9yKTtcbiAgICB9KTtcblxuICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKFwiZXhpdFwiLCAoY29kZSkgPT4ge1xuICAgICAgbG9nZ2VyLmluZm8oYFdvcmtlciAke3dvcmtlck5hbWV9IGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApO1xuICAgIH0pO1xuXG4gICAgd29ya2VyTWFuYWdlci5hZGQod29ya2VyKTtcbiAgfVxuXG4gIGxvZ2dlci5pbmZvKFwiQWxsIHdvcmtlcnMgc3RhcnRlZC4gUHJlc3MgQ3RybCtDIHRvIHN0b3AgYWxsIG1hY2hpbmVzXCIpO1xufVxuIiwKICAgICJpbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgJCB9IGZyb20gXCJidW5cIjtcbmltcG9ydCB7IFBBVEhTIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZywgQ29uZmlnRmlsZU9wdGlvbnMsIFByb2ZpbGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQ29uZmlnU2NoZW1hIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuY29uc3QgQ09ORklHX0ZJTEVfTkFNRVMgPSBbXCJoeWRyYS5qc29uXCIsIFwiLmh5ZHJhLmpzb25cIiwgXCJoeWRyYS50b21sXCIsIFwiLmh5ZHJhLnRvbWxcIl07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kQ29uZmlnRmlsZShzdGFydFBhdGg6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCkpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBDT05GSUdfRklMRV9OQU1FUykge1xuICAgIGNvbnN0IGNvbmZpZ1BhdGggPSBqb2luKHN0YXJ0UGF0aCwgZmlsZU5hbWUpO1xuICAgIGNvbnN0IGZpbGUgPSBCdW4uZmlsZShjb25maWdQYXRoKTtcbiAgICBpZiAoYXdhaXQgZmlsZS5leGlzdHMoKSkge1xuICAgICAgcmV0dXJuIGNvbmZpZ1BhdGg7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENvbmZpZyhvcHRpb25zPzogQ29uZmlnRmlsZU9wdGlvbnMpOiBQcm9taXNlPENvbmZpZyB8IG51bGw+IHtcbiAgY29uc3QgY29uZmlnUGF0aCA9IG9wdGlvbnM/LmNvbmZpZ1BhdGggfHwgKGF3YWl0IGZpbmRDb25maWdGaWxlKCkpO1xuXG4gIGlmICghY29uZmlnUGF0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZmlsZSA9IEJ1bi5maWxlKGNvbmZpZ1BhdGgpO1xuICBpZiAoIShhd2FpdCBmaWxlLmV4aXN0cygpKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZmlsZS50ZXh0KCk7XG4gICAgY29uc3QgZGF0YSA9IGNvbmZpZ1BhdGguZW5kc1dpdGgoXCIudG9tbFwiKSA/IGF3YWl0IHBhcnNlVG9tbChjb250ZW50KSA6IEpTT04ucGFyc2UoY29udGVudCk7XG5cbiAgICByZXR1cm4gQ29uZmlnU2NoZW1hLnBhcnNlKGRhdGEpIGFzIENvbmZpZztcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbmZpZyBmaWxlOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQcm9maWxlKFxuICBjb25maWc6IENvbmZpZyB8IG51bGwsXG4gIHByb2ZpbGVOYW1lPzogc3RyaW5nLFxuKTogUHJvbWlzZTxQcm9maWxlIHwgbnVsbD4ge1xuICBpZiAoIWNvbmZpZykgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbmFtZSA9IHByb2ZpbGVOYW1lIHx8IGNvbmZpZy5kZWZhdWx0UHJvZmlsZTtcbiAgaWYgKCFuYW1lKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gY29uZmlnLnByb2ZpbGVzW25hbWVdIHx8IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVByb2ZpbGVXaXRoQXJnczxUIGV4dGVuZHMgUGFydGlhbDxQcm9maWxlPj4oXG4gIHByb2ZpbGU6IFByb2ZpbGUgfCBudWxsLFxuICBhcmdzOiBULFxuKTogVCB7XG4gIGlmICghcHJvZmlsZSkgcmV0dXJuIGFyZ3M7XG5cbiAgY29uc3QgbWVyZ2VkID0geyAuLi5hcmdzIH0gYXMgVDtcblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9maWxlKSkge1xuICAgIGlmICgobWVyZ2VkIGFzIGFueSlba2V5XSA9PT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIChtZXJnZWQgYXMgYW55KVtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcGFyc2VUb21sKGNvbnRlbnQ6IHN0cmluZyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgY29uc3QgdGVtcEZpbGUgPSBqb2luKFBBVEhTLlRFTVBfRElSLCBgaHlkcmEtY29uZmlnLSR7RGF0ZS5ub3coKX0udG9tbGApO1xuICBhd2FpdCBCdW4ud3JpdGUodGVtcEZpbGUsIGNvbnRlbnQpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbW9kdWxlID0gYXdhaXQgaW1wb3J0KHRlbXBGaWxlKTtcbiAgICBhd2FpdCAkYHJtIC1mICR7dGVtcEZpbGV9YC5xdWlldCgpO1xuICAgIHJldHVybiBtb2R1bGUuZGVmYXVsdCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBhd2FpdCAkYHJtIC1mICR7dGVtcEZpbGV9YC5xdWlldCgpO1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIFRPTUwgY29uZmlndXJhdGlvbjogJHtlcnJvcn1gKTtcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgeyB0bXBkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVFMgPSB7XG4gIERJUkVDVE9SWTogXCIuL2doLXJ1bm5lcnNcIixcbiAgTkFNRTogXCJydW5uZXJcIixcbiAgTlVNQkVSX09GX01BQ0hJTkVTOiAxLFxuICBPUzogXCJvc3hcIiBhcyBjb25zdCxcbiAgUFJPRklMRTogXCJkZWZhdWx0XCIsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRklMRV9FWFRFTlNJT05TID0geyBKU09OOiBcIi5qc29uXCIsIFRPTUw6IFwiLnRvbWxcIiB9IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgV09SS0VSX01FU1NBR0VTID0geyBFUlJPUjogXCJlcnJvclwiLCBTVUNDRVNTOiBcInN1Y2Nlc3NcIiB9IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgUEFUSFMgPSB7IE1BQ0hJTkVTX0RJUjogXCJtYWNoaW5lc1wiLCBURU1QX0RJUjogdG1wZGlyKCkgfSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFRJTUVPVVRTID0geyBET1dOTE9BRDogMzAwMDAwLCBXT1JLRVJfUkVTUE9OU0U6IDUwMDAgfSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9PUyA9IFtcIm9zeFwiLCBcImxpbnV4XCIsIFwid2luXCJdIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU3VwcG9ydGVkT1MgPSAodHlwZW9mIFNVUFBPUlRFRF9PUylbbnVtYmVyXTtcbiIsCiAgICAiaW1wb3J0IHtcbiAgYm9vbGVhbixcbiAgY3JlYXRlU2NoZW1hLFxuICBkZWZhdWx0VG8sXG4gIGVudW1zLFxuICBvYmplY3QsXG4gIG9wdGlvbmFsLFxuICBwb3NpdGl2ZUludCxcbiAgcmVjb3JkLFxuICBzdHJpbmcsXG4gIHVuaW9uLFxufSBmcm9tIFwiQHI1bi9jbGktY29yZVwiO1xuXG5jb25zdCBwcm9maWxlVmFsaWRhdG9yID0gb2JqZWN0KHtcbiAgZGlyZWN0b3J5OiBkZWZhdWx0VG8oc3RyaW5nKCksIFwiLi9naC1ydW5uZXJzXCIpLFxuICBsYWJlbHM6IHVuaW9uKG9wdGlvbmFsKCksIHN0cmluZygpKSxcbiAgbmFtZTogZGVmYXVsdFRvKHN0cmluZygpLCBcInJ1bm5lclwiKSxcbiAgbnVtYmVyT2ZNYWNoaW5lczogZGVmYXVsdFRvKHBvc2l0aXZlSW50KCksIDEpLFxuICBvczogZGVmYXVsdFRvKGVudW1zKFtcIm9zeFwiLCBcImxpbnV4XCIsIFwid2luZG93c1wiXSksIFwibGludXhcIiksXG4gIG92ZXJ3cml0ZTogZGVmYXVsdFRvKGJvb2xlYW4oKSwgZmFsc2UpLFxuICBydW46IGRlZmF1bHRUbyhib29sZWFuKCksIGZhbHNlKSxcbiAgcnVubmVyR3JvdXA6IHVuaW9uKG9wdGlvbmFsKCksIHN0cmluZygpKSxcbiAgdXJsOiB1bmlvbihvcHRpb25hbCgpLCBzdHJpbmcoKSksXG59KTtcblxuZXhwb3J0IGNvbnN0IFByb2ZpbGVTY2hlbWEgPSBjcmVhdGVTY2hlbWEocHJvZmlsZVZhbGlkYXRvcik7XG5cbmV4cG9ydCBjb25zdCBDb25maWdTY2hlbWEgPSBjcmVhdGVTY2hlbWEoXG4gIG9iamVjdCh7XG4gICAgZGVmYXVsdFByb2ZpbGU6IHVuaW9uKG9wdGlvbmFsKCksIHN0cmluZygpKSxcbiAgICBwcm9maWxlczogcmVjb3JkKFByb2ZpbGVTY2hlbWEudmFsaWRhdG9yKSxcbiAgfSksXG4pO1xuXG4vLyBNYW51YWxseSBkZWZpbmUgdHlwZXMgZm9yIGJldHRlciB0cmVlLXNoYWtpbmdcbmV4cG9ydCB0eXBlIFByb2ZpbGUgPSB7XG4gIGRpcmVjdG9yeTogc3RyaW5nO1xuICBsYWJlbHM/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgbnVtYmVyT2ZNYWNoaW5lczogbnVtYmVyO1xuICBvczogXCJvc3hcIiB8IFwibGludXhcIiB8IFwid2luZG93c1wiO1xuICBvdmVyd3JpdGU6IGJvb2xlYW47XG4gIHJ1bjogYm9vbGVhbjtcbiAgcnVubmVyR3JvdXA/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENvbmZpZyA9IHsgZGVmYXVsdFByb2ZpbGU/OiBzdHJpbmc7IHByb2ZpbGVzOiBSZWNvcmQ8c3RyaW5nLCBQcm9maWxlPiB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ0ZpbGVPcHRpb25zIHtcbiAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgcHJvZmlsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBcmdzIHtcbiAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIGxhYmVscz86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBudW1iZXJPZk1hY2hpbmVzOiBzdHJpbmc7XG4gIG9zOiBcIm9zeFwiIHwgXCJsaW51eFwiIHwgXCJ3aW5kb3dzXCI7XG4gIG92ZXJ3cml0ZTogYm9vbGVhbjtcbiAgcnVuOiBib29sZWFuO1xuICBydW5uZXJHcm91cD86IHN0cmluZztcbiAgdG9rZW4/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdW5BcmdzIHtcbiAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIGxhYmVscz86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBudW1iZXJPZk1hY2hpbmVzOiBzdHJpbmc7XG4gIHJ1bm5lckdyb3VwPzogc3RyaW5nO1xuICB0b2tlbj86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZUFyZ3Mge1xuICBkaXJlY3Rvcnk6IHN0cmluZztcbiAgZm9yY2U6IGJvb2xlYW47XG4gIG51bWJlck9mTWFjaGluZXM6IHN0cmluZztcbiAgdG9rZW4/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbn1cbiIsCiAgICAiaW1wb3J0IHsgcGFyc2VBcmdzIH0gZnJvbSBcIm5vZGU6dXRpbFwiO1xuaW1wb3J0IHtcbiAgYm9vbGVhbixcbiAgY3JlYXRlU2NoZW1hLFxuICBkZWZhdWx0VG8sXG4gIGVudW1zLFxuICBvYmplY3QsXG4gIG9wdGlvbmFsLFxuICByZWdleCxcbiAgc3RyaW5nLFxuICB1bmlvbixcbiAgdXJsLFxufSBmcm9tIFwiQHI1bi9jbGktY29yZVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFja2FnZVBhdGgoKSB7XG4gIGNvbnN0IGN1cnJlbnRGaWxlUGF0aCA9IGltcG9ydC5tZXRhLnBhdGg7XG5cbiAgY29uc3QgY3VycmVudERpciA9IGN1cnJlbnRGaWxlUGF0aC5zdWJzdHJpbmcoMCwgY3VycmVudEZpbGVQYXRoLmxhc3RJbmRleE9mKFwiL1wiKSk7XG5cbiAgY29uc3Qgc3JjRGlyID0gY3VycmVudERpci5zdWJzdHJpbmcoMCwgY3VycmVudERpci5sYXN0SW5kZXhPZihcIi9cIikpO1xuXG4gIHJldHVybiBzcmNEaXI7XG59XG5cbmNvbnN0IGNsaUFyZ3NWYWxpZGF0b3IgPSBvYmplY3Qoe1xuICBkaXJlY3Rvcnk6IGRlZmF1bHRUbyhzdHJpbmcoKSwgYCR7cHJvY2Vzcy5jd2QoKX0vZ2gtcnVubmVyc2ApLFxuICBsYWJlbHM6IHVuaW9uKHN0cmluZygpLCBvcHRpb25hbCgpKSxcbiAgbmFtZTogZGVmYXVsdFRvKHN0cmluZygpLCBcInJ1bm5lclwiKSxcbiAgbnVtYmVyT2ZNYWNoaW5lczogZGVmYXVsdFRvKHJlZ2V4KC9eXFxkKyQvLCBcIk51bWJlciBvZiBtYWNoaW5lcyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlclwiKSwgXCIxXCIpLFxuICBvczogZGVmYXVsdFRvKGVudW1zKFtcIm9zeFwiLCBcImxpbnV4XCIsIFwid2luZG93c1wiXSksIFwib3N4XCIpLFxuICBvdmVyd3JpdGU6IGRlZmF1bHRUbyhib29sZWFuKCksIGZhbHNlKSxcbiAgcnVuOiBkZWZhdWx0VG8oYm9vbGVhbigpLCBmYWxzZSksXG4gIHRva2VuOiBkZWZhdWx0VG8oc3RyaW5nKCksIHByb2Nlc3MuZW52LkdJVEhVQl9QRVJTT05BTF9BQ0NFU1NfVE9LRU4gPz8gXCJcIiksXG4gIHVybDogdXJsKCksXG59KTtcblxuY29uc3QgQ2xpQXJnc1NjaGVtYSA9IGNyZWF0ZVNjaGVtYShjbGlBcmdzVmFsaWRhdG9yKTtcblxuZXhwb3J0IHR5cGUgQ2xpQXJncyA9IHtcbiAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIGxhYmVscz86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBudW1iZXJPZk1hY2hpbmVzOiBzdHJpbmc7XG4gIG9zOiBcIm9zeFwiIHwgXCJsaW51eFwiIHwgXCJ3aW5kb3dzXCI7XG4gIG92ZXJ3cml0ZTogYm9vbGVhbjtcbiAgcnVuOiBib29sZWFuO1xuICB0b2tlbjogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGlBcmdzKCk6IENsaUFyZ3Mge1xuICB0cnkge1xuICAgIGNvbnN0IHsgdmFsdWVzIH0gPSBwYXJzZUFyZ3Moe1xuICAgICAgYWxsb3dQb3NpdGlvbmFsczogdHJ1ZSxcbiAgICAgIGFyZ3M6IEJ1bi5hcmd2LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBjb25maWc6IHsgZGVmYXVsdDogYCR7cHJvY2Vzcy5jd2QoKX0vLmh5ZHJhLmpzb25gLCBzaG9ydDogXCJjXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgZGlyZWN0b3J5OiB7IGRlZmF1bHQ6IGAke3Byb2Nlc3MuY3dkKCl9L2doLXJ1bm5lcnNgLCBzaG9ydDogXCJkXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgbGFiZWxzOiB7IHNob3J0OiBcImxcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICBuYW1lOiB7IGRlZmF1bHQ6IFwicnVubmVyXCIsIHNob3J0OiBcIm5cIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICBudW1iZXJPZk1hY2hpbmVzOiB7IGRlZmF1bHQ6IFwiMVwiLCBzaG9ydDogXCJtXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgb3M6IHsgZGVmYXVsdDogXCJvc3hcIiwgc2hvcnQ6IFwic1wiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIG92ZXJ3cml0ZTogeyBkZWZhdWx0OiBmYWxzZSwgc2hvcnQ6IFwiZlwiLCB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICBydW46IHsgZGVmYXVsdDogZmFsc2UsIHNob3J0OiBcInJcIiwgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgdG9rZW46IHsgc2hvcnQ6IFwidFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIHVybDogeyBzaG9ydDogXCJ1XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIH0sXG4gICAgICBzdHJpY3Q6IHRydWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBDbGlBcmdzU2NoZW1hLnNhZmVQYXJzZSh2YWx1ZXMpO1xuXG4gICAgaWYgKCFyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFyZ3VtZW50czogJHtyZXN1bHQuZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBcIkZhaWxlZCB0byBwYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzXCIsXG4gICAgKTtcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiQHI1bi90b29scy91dGlscy9sb2dnZXJcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKHsgcHJlZml4OiBcIldvcmtlck1hbmFnZXJcIiB9KTtcblxuZXhwb3J0IGNsYXNzIFdvcmtlck1hbmFnZXIge1xuICBwcml2YXRlIHdvcmtlcnM6IFNldDxXb3JrZXI+ID0gbmV3IFNldCgpO1xuICBwcml2YXRlIGNsZWFudXBSZWdpc3RlcmVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5yZWdpc3RlckNsZWFudXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJDbGVhbnVwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsZWFudXBSZWdpc3RlcmVkKSByZXR1cm47XG5cbiAgICB0aGlzLmNsZWFudXBSZWdpc3RlcmVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy53b3JrZXJzLnNpemUgPiAwKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiQ2xlYW5pbmcgdXAgd29ya2Vycy4uLlwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudGVybWluYXRlQWxsKCk7XG4gICAgfTtcblxuICAgIHByb2Nlc3Mub24oXCJleGl0XCIsIGNsZWFudXApO1xuICAgIHByb2Nlc3Mub24oXCJTSUdJTlRcIiwgY2xlYW51cCk7XG4gICAgcHJvY2Vzcy5vbihcIlNJR1RFUk1cIiwgY2xlYW51cCk7XG4gICAgcHJvY2Vzcy5vbihcInVuY2F1Z2h0RXhjZXB0aW9uXCIsIChlcnJvcikgPT4ge1xuICAgICAgbG9nZ2VyLmVycm9yKFwiVW5jYXVnaHQgZXhjZXB0aW9uOlwiLCBlcnJvcik7XG4gICAgICBjbGVhbnVwKCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGQod29ya2VyOiBXb3JrZXIpOiB2b2lkIHtcbiAgICB0aGlzLndvcmtlcnMuYWRkKHdvcmtlcik7XG4gICAgbG9nZ2VyLmRlYnVnKGBXb3JrZXIgYWRkZWQuIFRvdGFsIHdvcmtlcnM6ICR7dGhpcy53b3JrZXJzLnNpemV9YCk7XG5cbiAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcihcImV4aXRcIiwgKCkgPT4ge1xuICAgICAgdGhpcy53b3JrZXJzLmRlbGV0ZSh3b3JrZXIpO1xuICAgICAgbG9nZ2VyLmRlYnVnKGBXb3JrZXIgZXhpdGVkLiBSZW1haW5pbmcgd29ya2VyczogJHt0aGlzLndvcmtlcnMuc2l6ZX1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZSh3b3JrZXI6IFdvcmtlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLndvcmtlcnMuaGFzKHdvcmtlcikpIHtcbiAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTtcbiAgICAgIHRoaXMud29ya2Vycy5kZWxldGUod29ya2VyKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgV29ya2VyIHJlbW92ZWQuIFJlbWFpbmluZyB3b3JrZXJzOiAke3RoaXMud29ya2Vycy5zaXplfWApO1xuICAgIH1cbiAgfVxuXG4gIHRlcm1pbmF0ZUFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53b3JrZXJzLnNpemUgPiAwKSB7XG4gICAgICBsb2dnZXIuaW5mbyhgVGVybWluYXRpbmcgJHt0aGlzLndvcmtlcnMuc2l6ZX0gd29ya2Vycy4uLmApO1xuICAgICAgZm9yIChjb25zdCB3b3JrZXIgb2YgdGhpcy53b3JrZXJzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIHRlcm1pbmF0ZSB3b3JrZXI6YCwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLndvcmtlcnMuY2xlYXIoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLndvcmtlcnMuc2l6ZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd29ya2VyTWFuYWdlciA9IG5ldyBXb3JrZXJNYW5hZ2VyKCk7XG4iLAogICAgImltcG9ydCB7IGNvbG9ycyB9IGZyb20gXCJAcjVuL3Rvb2xzL3V0aWxzL2NvbG9yc1wiO1xuXG5jb25zdCBDT01NQU5EX0hFTFA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGNyZWF0ZTogYFxuaHlkcmEgY3JlYXRlIC0gQ3JlYXRlIGFuZCByZWdpc3RlciBuZXcgR2l0SHViIHJ1bm5lciBtYWNoaW5lc1xuXG5VU0FHRVxuICBoeWRyYSBjcmVhdGUgW29wdGlvbnNdXG5cbk9QVElPTlNcbiAgLXQsIC0tdG9rZW4gICAgICAgICAgICAgR2l0SHViIFBlcnNvbmFsIEFjY2VzcyBUb2tlbiAgICAgIFtzdHJpbmddIChyZXF1aXJlZClcbiAgLXUsIC0tdXJsICAgICAgICAgICAgICAgR2l0SHViIHJlcG9zaXRvcnkgb3Igb3JnIFVSTCAgICAgIFtzdHJpbmddIChyZXF1aXJlZClcbiAgLW0sIC0tbnVtYmVyT2ZNYWNoaW5lcyAgTnVtYmVyIG9mIG1hY2hpbmVzICAgICAgICAgICAgICAgIFtudW1iZXJdIChkZWZhdWx0OiAxKVxuICAtbiwgLS1uYW1lICAgICAgICAgICAgICBSdW5uZXIgbmFtZSBwcmVmaXggICAgICAgICAgICAgICAgW3N0cmluZ11cbiAgLWwsIC0tbGFiZWxzICAgICAgICAgICAgQ29tbWEtc2VwYXJhdGVkIHJ1bm5lciBsYWJlbHMgICAgIFtzdHJpbmddXG4gIC1vLCAtLW9zICAgICAgICAgICAgICAgIFJ1bm5lciBPUyAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXSAoZGVmYXVsdDogbGludXgpXG4gIC1kLCAtLWRpcmVjdG9yeSAgICAgICAgIFJ1bm5lcnMgZGlyZWN0b3J5ICAgICAgICAgICAgICAgICBbc3RyaW5nXVxuICAtTywgLS1vdmVyd3JpdGUgICAgICAgICBPdmVyd3JpdGUgZXhpc3RpbmcgcnVubmVycyAgICAgICAgW2Jvb2xlYW5dXG4gIC1wLCAtLXByb2ZpbGUgICAgICAgICAgIENvbmZpZ3VyYXRpb24gcHJvZmlsZSAgICAgICAgICAgICBbc3RyaW5nXVxuICAtYywgLS1jb25maWcgICAgICAgICAgICBDb25maWd1cmF0aW9uIGZpbGUgcGF0aCAgICAgICAgICAgW3N0cmluZ11cblxuRVhBTVBMRVNcbiAgIyBDcmVhdGUgYSBzaW5nbGUgcnVubmVyXG4gIGh5ZHJhIGNyZWF0ZSAtdCBUT0tFTiAtdSBodHRwczovL2dpdGh1Yi5jb20vb3JnL3JlcG9cblxuICAjIENyZWF0ZSAzIHJ1bm5lcnMgd2l0aCBsYWJlbHNcbiAgaHlkcmEgY3JlYXRlIC1tIDMgLXQgVE9LRU4gLXUgVVJMIC1sIGRvY2tlcixncHVcblxuICAjIENyZWF0ZSB1c2luZyBwcm9maWxlXG4gIGh5ZHJhIGNyZWF0ZSAtcCBwcm9kdWN0aW9uIC10IFRPS0VOXG5gLFxuICBpbml0OiBgXG5oeWRyYSBpbml0IC0gSW5pdGlhbGl6ZSBhIG5ldyBIeWRyYSBjb25maWd1cmF0aW9uIGZpbGVcblxuVVNBR0VcbiAgaHlkcmEgaW5pdCBbb3B0aW9uc11cblxuT1BUSU9OU1xuICAtdCwgLS10b21sICAgICAgVXNlIFRPTUwgZm9ybWF0IGluc3RlYWQgb2YgSlNPTiAgICAgICAgIFtib29sZWFuXVxuXG5FWEFNUExFU1xuICAjIEluaXRpYWxpemUgd2l0aCBpbnRlcmFjdGl2ZSBwcm9tcHRzXG4gIGh5ZHJhIGluaXRcblxuICAjIEluaXRpYWxpemUgd2l0aCBUT01MIGZvcm1hdFxuICBoeWRyYSBpbml0IC0tdG9tbFxuYCxcblxuICByZW1vdmU6IGBcbmh5ZHJhIHJlbW92ZSAtIFJlbW92ZSBHaXRIdWIgcnVubmVyIG1hY2hpbmVzXG5cblVTQUdFXG4gIGh5ZHJhIHJlbW92ZSBbb3B0aW9uc11cblxuT1BUSU9OU1xuICAtdCwgLS10b2tlbiAgICAgICAgICAgICBHaXRIdWIgUGVyc29uYWwgQWNjZXNzIFRva2VuICAgICAgW3N0cmluZ10gKHJlcXVpcmVkKVxuICAtdSwgLS11cmwgICAgICAgICAgICAgICBHaXRIdWIgcmVwb3NpdG9yeSBvciBvcmcgVVJMICAgICAgW3N0cmluZ10gKHJlcXVpcmVkKVxuICAtbSwgLS1udW1iZXJPZk1hY2hpbmVzICBOdW1iZXIgb2YgbWFjaGluZXMgICAgICAgICAgICAgICAgW251bWJlcl0gKGRlZmF1bHQ6IDEpXG4gIC1uLCAtLW5hbWUgICAgICAgICAgICAgIFJ1bm5lciBuYW1lIHByZWZpeCAgICAgICAgICAgICAgICBbc3RyaW5nXVxuICAtZCwgLS1kaXJlY3RvcnkgICAgICAgICBSdW5uZXJzIGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgW3N0cmluZ11cbiAgLWYsIC0tZm9yY2UgICAgICAgICAgICAgRm9yY2UgcmVtb3ZhbCAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXVxuICAtcCwgLS1wcm9maWxlICAgICAgICAgICBDb25maWd1cmF0aW9uIHByb2ZpbGUgICAgICAgICAgICAgW3N0cmluZ11cbiAgLWMsIC0tY29uZmlnICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBmaWxlIHBhdGggICAgICAgICAgIFtzdHJpbmddXG5cbkVYQU1QTEVTXG4gICMgUmVtb3ZlIGFuZCB1bnJlZ2lzdGVyXG4gIGh5ZHJhIHJlbW92ZSAtdCBUT0tFTiAtdSBodHRwczovL2dpdGh1Yi5jb20vb3JnL3JlcG9cblxuICAjIEZvcmNlIHJlbW92ZVxuICBoeWRyYSByZW1vdmUgLW0gMiAtLWZvcmNlXG5cbiAgIyBSZW1vdmUgc3BlY2lmaWMgcnVubmVyc1xuICBoeWRyYSByZW1vdmUgLW4gY3VzdG9tIC1tIDMgLXQgVE9LRU4gLXUgVVJMXG5gLFxuXG4gIHJ1bjogYFxuaHlkcmEgcnVuIC0gU3RhcnQgZXhpc3RpbmcgR2l0SHViIHJ1bm5lciBtYWNoaW5lc1xuXG5VU0FHRVxuICBoeWRyYSBydW4gW29wdGlvbnNdXG5cbk9QVElPTlNcbiAgLXQsIC0tdG9rZW4gICAgICAgICAgICAgR2l0SHViIFBlcnNvbmFsIEFjY2VzcyBUb2tlbiAgICAgIFtzdHJpbmddIChyZXF1aXJlZClcbiAgLXUsIC0tdXJsICAgICAgICAgICAgICAgR2l0SHViIHJlcG9zaXRvcnkgb3Igb3JnIFVSTCAgICAgIFtzdHJpbmddIChyZXF1aXJlZClcbiAgLW0sIC0tbnVtYmVyT2ZNYWNoaW5lcyAgTnVtYmVyIG9mIG1hY2hpbmVzICAgICAgICAgICAgICAgIFtudW1iZXJdIChkZWZhdWx0OiAxKVxuICAtbiwgLS1uYW1lICAgICAgICAgICAgICBSdW5uZXIgbmFtZSBwcmVmaXggICAgICAgICAgICAgICAgW3N0cmluZ11cbiAgLWQsIC0tZGlyZWN0b3J5ICAgICAgICAgUnVubmVycyBkaXJlY3RvcnkgICAgICAgICAgICAgICAgIFtzdHJpbmddXG4gIC1wLCAtLXByb2ZpbGUgICAgICAgICAgIENvbmZpZ3VyYXRpb24gcHJvZmlsZSAgICAgICAgICAgICBbc3RyaW5nXVxuICAtYywgLS1jb25maWcgICAgICAgICAgICBDb25maWd1cmF0aW9uIGZpbGUgcGF0aCAgICAgICAgICAgW3N0cmluZ11cblxuRVhBTVBMRVNcbiAgIyBSdW4gZXhpc3RpbmcgcnVubmVyc1xuICBoeWRyYSBydW4gLXQgVE9LRU4gLXUgaHR0cHM6Ly9naXRodWIuY29tL29yZy9yZXBvXG5cbiAgIyBSdW4gc3BlY2lmaWMgcnVubmVyc1xuICBoeWRyYSBydW4gLW0gMiAtbiBjdXN0b20gLXQgVE9LRU4gLXUgVVJMXG5gLFxuXG4gIHN0YXR1czogYFxuaHlkcmEgc3RhdHVzIC0gQ2hlY2sgdGhlIHN0YXR1cyBvZiBHaXRIdWIgcnVubmVyIG1hY2hpbmVzXG5cblVTQUdFXG4gIGh5ZHJhIHN0YXR1cyBbb3B0aW9uc11cblxuT1BUSU9OU1xuICAtdCwgLS10b2tlbiAgICAgICAgICAgICBHaXRIdWIgUGVyc29uYWwgQWNjZXNzIFRva2VuICAgICAgW3N0cmluZ10gKHJlcXVpcmVkKVxuICAtdSwgLS11cmwgICAgICAgICAgICAgICBHaXRIdWIgcmVwb3NpdG9yeSBvciBvcmcgVVJMICAgICAgW3N0cmluZ10gKHJlcXVpcmVkKVxuICAtZCwgLS1kaXJlY3RvcnkgICAgICAgICBSdW5uZXJzIGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgW3N0cmluZ11cbiAgLWosIC0tanNvbiAgICAgICAgICAgICAgT3V0cHV0IHN0YXR1cyBpbiBKU09OIGZvcm1hdCAgICAgIFtib29sZWFuXVxuICAtcCwgLS1wcm9maWxlICAgICAgICAgICBDb25maWd1cmF0aW9uIHByb2ZpbGUgICAgICAgICAgICAgW3N0cmluZ11cbiAgLWMsIC0tY29uZmlnICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBmaWxlIHBhdGggICAgICAgICAgIFtzdHJpbmddXG5cbkVYQU1QTEVTXG4gICMgQ2hlY2sgcnVubmVyIHN0YXR1c1xuICBoeWRyYSBzdGF0dXMgLXQgVE9LRU4gLXUgaHR0cHM6Ly9naXRodWIuY29tL29yZy9yZXBvXG5cbiAgIyBPdXRwdXQgYXMgSlNPTlxuICBoeWRyYSBzdGF0dXMgLXQgVE9LRU4gLXUgVVJMIC0tanNvblxuXG4gICMgU3RhdHVzIHVzaW5nIHByb2ZpbGVcbiAgaHlkcmEgc3RhdHVzIC1wIHByb2R1Y3Rpb25cbmAsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaGVscChjb21tYW5kTmFtZT86IHN0cmluZykge1xuICBpZiAoY29tbWFuZE5hbWUgJiYgQ09NTUFORF9IRUxQW2NvbW1hbmROYW1lXSkge1xuICAgIGNvbnN0IGhlbHBUZXh0ID0gQ09NTUFORF9IRUxQW2NvbW1hbmROYW1lXTtcbiAgICBjb25zdCBjb2xvcmVkSGVscCA9IGhlbHBUZXh0XG4gICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChcImh5ZHJhXCIpKSByZXR1cm4gY29sb3JzLmJvbGQobGluZSk7XG4gICAgICAgIGlmIChsaW5lID09PSBcIlVTQUdFXCIgfHwgbGluZSA9PT0gXCJPUFRJT05TXCIgfHwgbGluZSA9PT0gXCJFWEFNUExFU1wiKSByZXR1cm4gY29sb3JzLmJvbGQobGluZSk7XG4gICAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCIgIC1cIikpIHtcbiAgICAgICAgICBjb25zdCBtYXRjaCA9IGxpbmUubWF0Y2goL14oXFxzKy1cXHcsXFxzLS1cXHcrKVxccysoLispJC8pO1xuICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgY29uc3QgWywgZmxhZ3MgPSBcIlwiLCBkZXNjcmlwdGlvbiA9IFwiXCJdID0gbWF0Y2g7XG4gICAgICAgICAgICBjb25zdCBjb2xvcmVkRGVzYyA9IGRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgIC5yZXBsYWNlKFwiKHJlcXVpcmVkKVwiLCBjb2xvcnMucmVkKFwiKHJlcXVpcmVkKVwiKSlcbiAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKGRlZmF1bHQ6IChbXildKylcXCkvZywgKF8sIHZhbHVlKSA9PiBjb2xvcnMuZGltKGAoZGVmYXVsdDogJHt2YWx1ZX0pYCkpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFtib29sZWFuXFxdL2csIGNvbG9ycy5jeWFuKFwiW2Jvb2xlYW5dXCIpKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbc3RyaW5nXFxdL2csIGNvbG9ycy5ncmVlbihcIltzdHJpbmddXCIpKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbbnVtYmVyXFxdL2csIGNvbG9ycy5tYWdlbnRhKFwiW251bWJlcl1cIikpO1xuXG4gICAgICAgICAgICByZXR1cm4gYCAgJHtjb2xvcnMueWVsbG93KGZsYWdzLnBhZEVuZCgyNikpfSAke2NvbG9yZWREZXNjfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCIgICMgXCIpKSByZXR1cm4gY29sb3JzLmRpbShsaW5lKTtcbiAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChcIiAgaHlkcmFcIikpIHJldHVybiBgICAke2NvbG9ycy5jeWFuKGxpbmUudHJpbSgpKX1gO1xuICAgICAgICByZXR1cm4gbGluZTtcbiAgICAgIH0pXG4gICAgICAuam9pbihcIlxcblwiKTtcblxuICAgIGNvbnNvbGUuaW5mbyhjb2xvcmVkSGVscCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc29sZS5pbmZvKGBcbiR7Y29sb3JzLmJvbGQoXCJIeWRyYSAtIEdpdEh1YiBzZWxmLWhvc3RlZCBydW5uZXIgbWFuYWdlclwiKX1cblxuJHtjb2xvcnMuYm9sZChcIlVTQUdFXCIpfVxuICBoeWRyYSA8Y29tbWFuZD4gW29wdGlvbnNdXG5cbiR7Y29sb3JzLmJvbGQoXCJDT01NQU5EU1wiKX1cbiAgJHtjb2xvcnMuZ3JlZW4oXCJpbml0XCIpfSAgICAgICAgICAgSW5pdGlhbGl6ZSBhIG5ldyBIeWRyYSBjb25maWd1cmF0aW9uIGZpbGVcbiAgJHtjb2xvcnMuZ3JlZW4oXCJjcmVhdGVcIil9ICAgICAgICAgQ3JlYXRlIGFuZCByZWdpc3RlciBuZXcgR2l0SHViIHJ1bm5lciBtYWNoaW5lc1xuICAke2NvbG9ycy5ncmVlbihcInJ1blwiKX0gICAgICAgICAgICBTdGFydCBleGlzdGluZyBHaXRIdWIgcnVubmVyIG1hY2hpbmVzXG4gICR7Y29sb3JzLmdyZWVuKFwicmVtb3ZlXCIpfSAgICAgICAgIFJlbW92ZSBHaXRIdWIgcnVubmVyIG1hY2hpbmVzXG4gICR7Y29sb3JzLmdyZWVuKFwic3RhdHVzXCIpfSAgICAgICAgIENoZWNrIHRoZSBzdGF0dXMgb2YgR2l0SHViIHJ1bm5lciBtYWNoaW5lc1xuICAke2NvbG9ycy5ncmVlbihcImhlbHBcIil9ICAgICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdlXG5cblVzZSAke2NvbG9ycy5jeWFuKFwiaHlkcmEgPGNvbW1hbmQ+IC0taGVscFwiKX0gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYSBjb21tYW5kLlxuYCk7XG59XG4iLAogICAgImltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tIFwibm9kZTp1dGlsXCI7XG5pbXBvcnQgeyBjYW5jZWwsIGNvbmZpcm0sIGdyb3VwLCBpbnRybywgaXNDYW5jZWwsIG91dHJvLCB0ZXh0IH0gZnJvbSBcIkBjbGFjay9wcm9tcHRzXCI7XG5pbXBvcnQgeyBncmFjZWZ1bFRyeSB9IGZyb20gXCJAcjVuL2NsaS1jb3JlXCI7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tIFwiQHI1bi90b29scy91dGlscy9jb2xvcnNcIjtcbmltcG9ydCB7ICQgfSBmcm9tIFwiYnVuXCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdCgpIHtcbiAgY29uc3QgeyB0b21sIH0gPSBnZXRBcmdzKCk7XG5cbiAgY29uc3QgY29uZmlnRmlsZU5hbWUgPSB0b21sID8gXCJoeWRyYS50b21sXCIgOiBcImh5ZHJhLmpzb25cIjtcbiAgY29uc3QgY29uZmlnUGF0aCA9IHJlc29sdmUocHJvY2Vzcy5jd2QoKSwgY29uZmlnRmlsZU5hbWUpO1xuXG4gIGNvbnN0IGZpbGUgPSBCdW4uZmlsZShjb25maWdQYXRoKTtcbiAgaWYgKGF3YWl0IGZpbGUuZXhpc3RzKCkpIHtcbiAgICBjb25zdCBvdmVyd3JpdGUgPSBhd2FpdCBjb25maXJtKHtcbiAgICAgIGluaXRpYWxWYWx1ZTogZmFsc2UsXG4gICAgICBtZXNzYWdlOiBgQ29uZmlndXJhdGlvbiBmaWxlICR7Y29uZmlnRmlsZU5hbWV9IGFscmVhZHkgZXhpc3RzLiBPdmVyd3JpdGU/YCxcbiAgICB9KTtcbiAgICBpZiAoaXNDYW5jZWwob3ZlcndyaXRlKSB8fCAhb3ZlcndyaXRlKSB7XG4gICAgICBjYW5jZWwoXCJDb25maWd1cmF0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG4gIH1cblxuICBpbnRybyhjb2xvcnMuY3lhbihcIvCfmoAgSHlkcmEgQ29uZmlndXJhdGlvbiBTZXR1cFwiKSk7XG4gIGNvbnNvbGUuaW5mbyhjb2xvcnMuZGltKFwiVGhpcyB3aWxsIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZSB3aXRoIHlvdXIgcnVubmVyIHNldHRpbmdzLlwiKSk7XG4gIGNvbnNvbGUuaW5mbyhjb2xvcnMuZGltKFwiWW91IGNhbiBhbHdheXMgZWRpdCB0aGUgZmlsZSBsYXRlciBvciBjcmVhdGUgYWRkaXRpb25hbCBwcm9maWxlcy5cXG5cIikpO1xuXG4gIGNvbnN0IGFuc3dlcnMgPSBhd2FpdCBncm91cChcbiAgICAvLyBiaW9tZS1pZ25vcmUgYXNzaXN0L3NvdXJjZS91c2VTb3J0ZWRLZXlzOiBTa2lwIGxpbnQgdGhlcmVcbiAgICB7XG4gICAgICBwcm9maWxlTmFtZTogKCkgPT4gdGV4dCh7IG1lc3NhZ2U6IFwiUHJvZmlsZSBuYW1lP1wiLCBwbGFjZWhvbGRlcjogXCJkZWZhdWx0XCIgfSksXG4gICAgICBkaXJlY3Rvcnk6ICgpID0+XG4gICAgICAgIHRleHQoe1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogXCIuL2doLXJ1bm5lcnNcIixcbiAgICAgICAgICBtZXNzYWdlOiBcIkRpcmVjdG9yeSB0byBzdG9yZSBydW5uZXJzP1wiLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIi4vZ2gtcnVubmVyc1wiLFxuICAgICAgICB9KSxcbiAgICAgIG5hbWU6ICgpID0+XG4gICAgICAgIHRleHQoeyBkZWZhdWx0VmFsdWU6IFwicnVubmVyXCIsIG1lc3NhZ2U6IFwiUnVubmVyIG5hbWUgcHJlZml4P1wiLCBwbGFjZWhvbGRlcjogXCJydW5uZXJcIiB9KSxcbiAgICAgIGxhYmVsczogKHsgcmVzdWx0cyB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gKHJlc3VsdHMubmFtZSB8fCBcInJ1bm5lclwiKSBhcyBzdHJpbmc7XG5cbiAgICAgICAgcmV0dXJuIHRleHQoe1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogcGxhY2Vob2xkZXIsXG4gICAgICAgICAgbWVzc2FnZTogXCJSdW5uZXIgbGFiZWxzIChjb21tYS1zZXBhcmF0ZWQpP1wiLFxuICAgICAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBudW1iZXJPZk1hY2hpbmVzOiAoKSA9PlxuICAgICAgICB0ZXh0KHtcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IFwiMVwiLFxuICAgICAgICAgIG1lc3NhZ2U6IFwiTnVtYmVyIG9mIHJ1bm5lciBtYWNoaW5lcz9cIixcbiAgICAgICAgICBwbGFjZWhvbGRlcjogXCIxXCIsXG4gICAgICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyLnBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKG51bSkgfHwgbnVtIDwgMSkgcmV0dXJuIFwiUGxlYXNlIGVudGVyIGEgdmFsaWQgbnVtYmVyIGdyZWF0ZXIgdGhhbiAwXCI7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgdXJsOiAoKSA9PlxuICAgICAgICB0ZXh0KHtcbiAgICAgICAgICBtZXNzYWdlOiBcIkdpdEh1YiByZXBvc2l0b3J5IG9yIG9yZ2FuaXphdGlvbiBVUkw/IChvcHRpb25hbClcIixcbiAgICAgICAgICBwbGFjZWhvbGRlcjogXCJodHRwczovL2dpdGh1Yi5jb20vb3JnL3JlcG9cIixcbiAgICAgICAgfSksXG4gICAgfSxcbiAgICB7XG4gICAgICBvbkNhbmNlbDogKCkgPT4ge1xuICAgICAgICBjYW5jZWwoXCJDb25maWd1cmF0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgfSxcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgcHJvZmlsZU5hbWUsIGxhYmVscywgbnVtYmVyT2ZNYWNoaW5lcywgLi4ucHJvZmlsZSB9ID0gYW5zd2VycztcbiAgY29uc3QgY29uZmlnOiBDb25maWcgPSB7XG4gICAgZGVmYXVsdFByb2ZpbGU6IHByb2ZpbGVOYW1lLFxuICAgIHByb2ZpbGVzOiB7XG4gICAgICBbcHJvZmlsZU5hbWVdOiB7XG4gICAgICAgIC4uLnByb2ZpbGUsXG4gICAgICAgIGxhYmVsczogbGFiZWxzIGFzIHN0cmluZyxcbiAgICAgICAgbnVtYmVyT2ZNYWNoaW5lczogTnVtYmVyLnBhcnNlSW50KG51bWJlck9mTWFjaGluZXMsIDEwKSxcbiAgICAgICAgb3M6IFwib3N4XCIgYXMgY29uc3QsXG4gICAgICAgIG92ZXJ3cml0ZTogZmFsc2UsXG4gICAgICAgIHJ1bjogZmFsc2UsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3QgY29udGVudCA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMik7XG5cbiAgYXdhaXQgQnVuLndyaXRlKGNvbmZpZ1BhdGgsIGNvbnRlbnQpO1xuXG4gIGF3YWl0IGdyYWNlZnVsVHJ5KFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0ICRgY2htb2QgNjAwICR7Y29uZmlnUGF0aH1gLnF1aWV0KCk7XG4gICAgfSxcbiAgICB7IGxvZ0xldmVsOiBcIndhcm5cIiwgbWVzc2FnZTogXCJDb3VsZCBub3Qgc2V0IHNlY3VyZSBmaWxlIHBlcm1pc3Npb25zXCIgfSxcbiAgKTtcblxuICBvdXRybyhjb2xvcnMuZ3JlZW4oYOKckyBDb25maWd1cmF0aW9uIHNhdmVkIHRvICR7Y29uZmlnRmlsZU5hbWV9YCkpO1xuXG4gIGNvbnNvbGUuaW5mbyhcIlxcbkV4YW1wbGUgdXNhZ2U6XCIpO1xuICBjb25zb2xlLmluZm8oXG4gICAgY29sb3JzLmN5YW4oXG4gICAgICBgICBoeWRyYSBjcmVhdGUgLXAgJHtwcm9maWxlTmFtZX0gLS10b2tlbiBZT1VSX1RPS0VOJHthbnN3ZXJzLnVybCA/IFwiXCIgOiBcIiAtLXVybCBSRVBPX1VSTFwifWAsXG4gICAgKSxcbiAgKTtcbiAgY29uc29sZS5pbmZvKFwiXFxuWW91IGNhbiBhZGQgbW9yZSBwcm9maWxlcyBieSBlZGl0aW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuXCIpO1xuXG4gIGlmIChhbnN3ZXJzLnVybCkge1xuICAgIGF3YWl0IG9wZW5HaXRIdWJTZXR0aW5ncyhhbnN3ZXJzLnVybCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gb3BlbkdpdEh1YlNldHRpbmdzKHVybDogc3RyaW5nKSB7XG4gIGNvbnN0IGdpdGh1YlJlZ2V4ID0gL2dpdGh1YlxcLmNvbVs6L10oW14vXSspKD86XFwvKFteLy5dKykpPy87XG4gIGNvbnN0IG1hdGNoID0gdXJsLm1hdGNoKGdpdGh1YlJlZ2V4KTtcblxuICBpZiAoIW1hdGNoKSByZXR1cm47XG5cbiAgY29uc3QgWywgb3JnT3JPd25lciwgcmVwb10gPSBtYXRjaDtcblxuICBjb25zdCByZXBvVXJsID0gcmVwbyA/IGAke29yZ09yT3duZXJ9LyR7cmVwb31gIDogYG9yZ2FuaXphdGlvbnMvJHtvcmdPck93bmVyfWA7XG4gIGNvbnN0IHNldHRpbmdzVXJsID0gYGh0dHBzOi8vZ2l0aHViLmNvbS8ke3JlcG9Vcmx9L3NldHRpbmdzL2FjdGlvbnMvcnVubmVyc2A7XG5cbiAgY29uc29sZS5pbmZvKGBcXG5PcGVuaW5nIEdpdEh1YiBzZXR0aW5nczogJHtjb2xvcnMuY3lhbihzZXR0aW5nc1VybCl9YCk7XG5cbiAgYXdhaXQgZ3JhY2VmdWxUcnkoXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgJGBvcGVuICR7c2V0dGluZ3NVcmx9YC5xdWlldCgpO1xuICAgIH0sXG4gICAge1xuICAgICAgZmFsbGJhY2s6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgZ3JhY2VmdWxUcnkoXG4gICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgJGB4ZGctb3BlbiAke3NldHRpbmdzVXJsfWAucXVpZXQoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIlxcblBsZWFzZSBvcGVuIHRoZSBVUkwgbWFudWFsbHkgdG8gYWRkIGEgbmV3IHJ1bm5lciB0b2tlbi5cIik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9nTGV2ZWw6IFwiaW5mb1wiLFxuICAgICAgICAgICAgbWVzc2FnZTogXCJBbHRlcm5hdGl2ZSBicm93c2VyIG9wZW4gbWV0aG9kIGFsc28gZmFpbGVkXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBsb2dMZXZlbDogXCJpbmZvXCIsXG4gICAgICBtZXNzYWdlOiBcIkNvdWxkIG5vdCBvcGVuIGJyb3dzZXIgYXV0b21hdGljYWxseVwiLFxuICAgIH0sXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldEFyZ3MoKSB7XG4gIGNvbnN0IHsgdmFsdWVzIH0gPSBwYXJzZUFyZ3Moe1xuICAgIGFsbG93UG9zaXRpb25hbHM6IHRydWUsXG4gICAgYXJnczogQnVuLmFyZ3YsXG4gICAgb3B0aW9uczogeyB0b21sOiB7IGRlZmF1bHQ6IGZhbHNlLCBzaG9ydDogXCJ0XCIsIHR5cGU6IFwiYm9vbGVhblwiIH0gfSxcbiAgICBzdHJpY3Q6IHRydWUsXG4gIH0pO1xuXG4gIHJldHVybiB2YWx1ZXM7XG59XG4iLAogICAgImltcG9ydCB7IHBhcnNlQXJncyB9IGZyb20gXCJub2RlOnV0aWxcIjtcbmltcG9ydCB7IGNvbmZpcm0sIGlzQ2FuY2VsLCB0ZXh0IH0gZnJvbSBcIkBjbGFjay9wcm9tcHRzXCI7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tIFwiQHI1bi90b29scy91dGlscy9jb2xvcnNcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCJAcjVuL3Rvb2xzL3V0aWxzL2xvZ2dlclwiO1xuaW1wb3J0IHsgJCB9IGZyb20gXCJidW5cIjtcbmltcG9ydCB7IGdldFByb2ZpbGUsIGxvYWRDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnXCI7XG5pbXBvcnQgdHlwZSB7IFJlbW92ZUFyZ3MgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKHsgcHJlZml4OiBcInJlbW92ZU1hY2hpbmVzXCIgfSk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVNYWNoaW5lcygpIHtcbiAgY29uc3QgYXJncyA9IGF3YWl0IGdldEFyZ3MoKTtcbiAgY29uc3QgeyBkaXJlY3RvcnksIG51bWJlck9mTWFjaGluZXMsIGZvcmNlIH0gPSBhcmdzO1xuICBsZXQgeyB0b2tlbiwgdXJsIH0gPSBhcmdzO1xuXG4gIGNvbnN0IG1hY2hpbmVzRGlyID0gYCR7ZGlyZWN0b3J5fS9tYWNoaW5lc2A7XG4gIGNvbnN0IGRpcmVjdG9yeUV4aXN0cyA9IGF3YWl0IEJ1bi5maWxlKG1hY2hpbmVzRGlyKS5leGlzdHMoKTtcbiAgaWYgKCFkaXJlY3RvcnlFeGlzdHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1hY2hpbmVzIGRpcmVjdG9yeSBub3QgZm91bmQgYXQgJHttYWNoaW5lc0Rpcn0uIE5vdGhpbmcgdG8gcmVtb3ZlLmApO1xuICB9XG5cbiAgaWYgKCF0b2tlbiAmJiAhZm9yY2UpIHtcbiAgICBpZiAoIXVybCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBjb2xvcnMueWVsbG93KFwi4pqg77iPIE5vIHRva2VuIG9yIFVSTCBwcm92aWRlZC4gUnVubmVycyB3aWxsIG5vdCBiZSB1bnJlZ2lzdGVyZWQgZnJvbSBHaXRIdWIuXCIpLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUud2Fybihjb2xvcnMueWVsbG93KFwiVXNlIC0tZm9yY2UgdG8gcmVtb3ZlIHJ1bm5lcnMgd2l0aG91dCB1bnJlZ2lzdGVyaW5nIHRoZW0uXCIpKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRva2VuICgtdCkgYW5kIFVSTCAoLXUpIHBhcmFtZXRlcnMgYXJlIHJlcXVpcmVkIG9yIHVzZSAtLWZvcmNlXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHNldHRpbmdzVXJsID0gY29uc3RydWN0UnVubmVyU2V0dGluZ3NVcmwodXJsKTtcblxuICAgIGNvbnN0IHNob3VsZE9wZW4gPSBhd2FpdCBjb25maXJtKHtcbiAgICAgIG1lc3NhZ2U6IGBObyB0b2tlbiBwcm92aWRlZC4gV291bGQgeW91IGxpa2UgdG8gb3BlbiBHaXRIdWIgdG8gZ2V0IGEgcnVubmVyIHRva2VuIGZvciB1bnJlZ2lzdHJhdGlvbj9cXG4gICR7c2V0dGluZ3NVcmx9YCxcbiAgICB9KTtcblxuICAgIGlmIChpc0NhbmNlbChzaG91bGRPcGVuKSB8fCAhc2hvdWxkT3Blbikge1xuICAgICAgY29uc29sZS53YXJuKGNvbG9ycy55ZWxsb3coXCJVc2UgLS1mb3JjZSB0byByZW1vdmUgcnVubmVycyB3aXRob3V0IHVucmVnaXN0ZXJpbmcgdGhlbS5cIikpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVG9rZW4gaXMgcmVxdWlyZWQgdG8gdW5yZWdpc3RlciBydW5uZXJzIChvciB1c2UgLS1mb3JjZSlcIik7XG4gICAgfVxuXG4gICAgbG9nZ2VyLmluZm8oXCJPcGVuaW5nIEdpdEh1YiBydW5uZXIgc2V0dGluZ3MuLi5cIik7XG4gICAgYXdhaXQgJGBvcGVuICR7c2V0dGluZ3NVcmx9YC5xdWlldCgpO1xuXG4gICAgY29uc3QgdG9rZW5JbnB1dCA9IGF3YWl0IHRleHQoe1xuICAgICAgbWVzc2FnZTogXCJFbnRlciB0aGUgcnVubmVyIHJlbW92YWwgdG9rZW46XCIsXG4gICAgICBwbGFjZWhvbGRlcjogXCJBWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFwiLFxuICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gXCJUb2tlbiBpcyByZXF1aXJlZFwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKGlzQ2FuY2VsKHRva2VuSW5wdXQpKSB7XG4gICAgICBjb25zb2xlLndhcm4oY29sb3JzLnllbGxvdyhcIlVzZSAtLWZvcmNlIHRvIHJlbW92ZSBydW5uZXJzIHdpdGhvdXQgdW5yZWdpc3RlcmluZyB0aGVtLlwiKSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb2tlbiBpcyByZXF1aXJlZCB0byB1bnJlZ2lzdGVyIHJ1bm5lcnMgKG9yIHVzZSAtLWZvcmNlKVwiKTtcbiAgICB9XG5cbiAgICB0b2tlbiA9IHRva2VuSW5wdXQudHJpbSgpO1xuICB9XG5cbiAgaWYgKHRva2VuICYmIHVybCkge1xuICAgIGNvbnNvbGUuaW5mbyhjb2xvcnMuY3lhbihcIlVucmVnaXN0ZXJpbmcgcnVubmVycyBmcm9tIEdpdEh1Yi4uLlwiKSk7XG4gICAgYXdhaXQgdW5yZWdpc3RlclJ1bm5lcnMoeyBkaXJlY3RvcnksIG51bWJlck9mTWFjaGluZXMsIHRva2VuIH0pO1xuICB9IGVsc2UgaWYgKCFmb3JjZSkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGNvbG9ycy55ZWxsb3coXCLimqDvuI8gTm8gdG9rZW4gb3IgVVJMIHByb3ZpZGVkLiBSdW5uZXJzIHdpbGwgbm90IGJlIHVucmVnaXN0ZXJlZCBmcm9tIEdpdEh1Yi5cIiksXG4gICAgKTtcbiAgICBjb25zb2xlLndhcm4oY29sb3JzLnllbGxvdyhcIlVzZSAtLWZvcmNlIHRvIHJlbW92ZSBydW5uZXJzIHdpdGhvdXQgdW5yZWdpc3RlcmluZyB0aGVtLlwiKSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVG9rZW4gKC10KSBhbmQgVVJMICgtdSkgcGFyYW1ldGVycyBhcmUgcmVxdWlyZWQgb3IgdXNlIC0tZm9yY2VcIik7XG4gIH1cblxuICBhd2FpdCByZW1vdmVSdW5uZXJEaXJlY3Rvcmllcyh7IGRpcmVjdG9yeSwgbnVtYmVyT2ZNYWNoaW5lcyB9KTtcblxuICBjb25zb2xlLmluZm8oY29sb3JzLmdyZWVuKFwi4pyTIFJ1bm5lcnMgc3VjY2Vzc2Z1bGx5IHJlbW92ZWRcIikpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBcmdzKCk6IFByb21pc2U8UmVtb3ZlQXJncz4ge1xuICBjb25zdCB7IHZhbHVlcyB9ID0gcGFyc2VBcmdzKHtcbiAgICBhbGxvd1Bvc2l0aW9uYWxzOiB0cnVlLFxuICAgIGFyZ3M6IEJ1bi5hcmd2LFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGNvbmZpZzogeyBzaG9ydDogXCJjXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIGRpcmVjdG9yeTogeyBkZWZhdWx0OiBgJHtwcm9jZXNzLmN3ZCgpfS9naC1ydW5uZXJzYCwgc2hvcnQ6IFwiZFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBmb3JjZTogeyBkZWZhdWx0OiBmYWxzZSwgc2hvcnQ6IFwiZlwiLCB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgbnVtYmVyT2ZNYWNoaW5lczogeyBkZWZhdWx0OiBcIjFcIiwgc2hvcnQ6IFwibVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBwcm9maWxlOiB7IHNob3J0OiBcInBcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgdG9rZW46IHsgc2hvcnQ6IFwidFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICB1cmw6IHsgc2hvcnQ6IFwidVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgfSxcbiAgICBzdHJpY3Q6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGxvYWRDb25maWcoeyBjb25maWdQYXRoOiB2YWx1ZXMuY29uZmlnIGFzIHN0cmluZyB9KTtcbiAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IGdldFByb2ZpbGUoY29uZmlnLCB2YWx1ZXMucHJvZmlsZSBhcyBzdHJpbmcpO1xuXG4gIGNvbnN0IGJhc2VBcmdzID0ge1xuICAgIGRpcmVjdG9yeTogdmFsdWVzLmRpcmVjdG9yeSBhcyBzdHJpbmcsXG4gICAgZm9yY2U6IHZhbHVlcy5mb3JjZSBhcyBib29sZWFuLFxuICAgIG51bWJlck9mTWFjaGluZXM6IHZhbHVlcy5udW1iZXJPZk1hY2hpbmVzIGFzIHN0cmluZyxcbiAgICB0b2tlbjogdmFsdWVzLnRva2VuIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB1cmw6IHZhbHVlcy51cmwgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICB9O1xuXG4gIGlmIChwcm9maWxlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpcmVjdG9yeTogYmFzZUFyZ3MuZGlyZWN0b3J5ID8/IHByb2ZpbGUuZGlyZWN0b3J5ID8/IGAke3Byb2Nlc3MuY3dkKCl9L2doLXJ1bm5lcnNgLFxuICAgICAgZm9yY2U6IGJhc2VBcmdzLmZvcmNlLFxuICAgICAgbnVtYmVyT2ZNYWNoaW5lczogYmFzZUFyZ3MubnVtYmVyT2ZNYWNoaW5lcyA/PyBTdHJpbmcocHJvZmlsZS5udW1iZXJPZk1hY2hpbmVzKSA/PyBcIjFcIixcbiAgICAgIHRva2VuOiBiYXNlQXJncy50b2tlbixcbiAgICAgIHVybDogYmFzZUFyZ3MudXJsID8/IHByb2ZpbGUudXJsLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gYmFzZUFyZ3M7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVucmVnaXN0ZXJSdW5uZXJzKHtcbiAgZGlyZWN0b3J5LFxuICBudW1iZXJPZk1hY2hpbmVzLFxuICB0b2tlbixcbn06IHtcbiAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIG51bWJlck9mTWFjaGluZXM6IHN0cmluZztcbiAgdG9rZW46IHN0cmluZztcbn0pIHtcbiAgY29uc3QgbG9nID0gbG9nZ2VyLmNoaWxkKFwidW5yZWdpc3RlclwiKTtcbiAgY29uc3QgbnVtTWFjaGluZXMgPSBOdW1iZXIobnVtYmVyT2ZNYWNoaW5lcyk7XG5cbiAgY29uc3QgY3B1Q291bnQgPSAoKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBCdW4uc3Bhd25TeW5jKFtcIm5wcm9jXCJdKTtcbiAgICAgIHJldHVybiBOdW1iZXIucGFyc2VJbnQocmVzdWx0LnN0ZG91dC50b1N0cmluZygpLnRyaW0oKSwgMTApIHx8IDQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBCdW4uc3Bhd25TeW5jKFtcInN5c2N0bFwiLCBcIi1uXCIsIFwiaHcubmNwdVwiXSk7XG4gICAgICAgIHJldHVybiBOdW1iZXIucGFyc2VJbnQocmVzdWx0LnN0ZG91dC50b1N0cmluZygpLnRyaW0oKSwgMTApIHx8IDQ7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIDQ7XG4gICAgICB9XG4gICAgfVxuICB9KSgpO1xuICBjb25zdCBjb25jdXJyZW5jeSA9IE1hdGgubWluKE1hdGgubWF4KDIsIE1hdGguZmxvb3IoY3B1Q291bnQgLyAyKSksIG51bU1hY2hpbmVzLCA4KTtcblxuICBsb2cuaW5mbyhgVW5yZWdpc3RlcmluZyAke251bU1hY2hpbmVzfSBydW5uZXJzIHdpdGggY29uY3VycmVuY3kgb2YgJHtjb25jdXJyZW5jeX1gKTtcblxuICBjb25zdCB0YXNrcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IG51bU1hY2hpbmVzIH0sIChfLCBpKSA9PiBpICsgMSkubWFwKChydW5uZXJJbmRleCkgPT4gKHtcbiAgICBleGVjdXRlOiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtYWNoaW5lRGlyZWN0b3J5ID0gYCR7ZGlyZWN0b3J5fS9tYWNoaW5lcy8ke3J1bm5lckluZGV4fWA7XG4gICAgICBjb25zdCBtYWNoaW5lRXhpc3RzID0gYXdhaXQgQnVuLmZpbGUobWFjaGluZURpcmVjdG9yeSkuZXhpc3RzKCk7XG5cbiAgICAgIGlmICghbWFjaGluZUV4aXN0cykge1xuICAgICAgICBsb2cuZGVidWcoYE1hY2hpbmUgJHtydW5uZXJJbmRleH0gZG9lc24ndCBleGlzdCwgc2tpcHBpbmcuLi5gKTtcbiAgICAgICAgcmV0dXJuIHsgcnVubmVySW5kZXgsIHN0YXR1czogXCJza2lwcGVkXCIgfTtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgbG9nLmRlYnVnKGBVbnJlZ2lzdGVyaW5nIG1hY2hpbmUgJHtydW5uZXJJbmRleH0uLi5gKTtcbiAgICAgICAgYXdhaXQgJGAke21hY2hpbmVEaXJlY3Rvcnl9L2NvbmZpZy5zaCByZW1vdmUgLS10b2tlbiAke3Rva2VufWAucXVpZXQoKTtcbiAgICAgICAgbG9nLmluZm8oYFN1Y2Nlc3NmdWxseSB1bnJlZ2lzdGVyZWQgbWFjaGluZSAke3J1bm5lckluZGV4fSBmcm9tIEdpdEh1YmApO1xuICAgICAgICByZXR1cm4geyBydW5uZXJJbmRleCwgc3RhdHVzOiBcInN1Y2Nlc3NcIiB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nLndhcm4oYFVuYWJsZSB0byB1bnJlZ2lzdGVyIG1hY2hpbmUgJHtydW5uZXJJbmRleH06ICR7ZXJyb3J9YCk7XG4gICAgICAgIHJldHVybiB7IGVycm9yLCBydW5uZXJJbmRleCwgc3RhdHVzOiBcImZhaWxlZFwiIH07XG4gICAgICB9XG4gICAgfSxcbiAgICBydW5uZXJJbmRleCxcbiAgfSkpO1xuXG4gIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YXNrcy5sZW5ndGg7IGkgKz0gY29uY3VycmVuY3kpIHtcbiAgICBjb25zdCBiYXRjaCA9IHRhc2tzLnNsaWNlKGksIGkgKyBjb25jdXJyZW5jeSk7XG4gICAgY29uc3QgYmF0Y2hSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGJhdGNoLm1hcCgodGFzaykgPT4gdGFzay5leGVjdXRlKCkpKTtcbiAgICByZXN1bHRzLnB1c2goLi4uYmF0Y2hSZXN1bHRzKTtcbiAgfVxuXG4gIGNvbnN0IHN1Y2Nlc3NmdWwgPSByZXN1bHRzLmZpbHRlcihcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiZnVsZmlsbGVkXCIgJiYgci52YWx1ZT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIixcbiAgKS5sZW5ndGg7XG4gIGNvbnN0IGZhaWxlZCA9IHJlc3VsdHMuZmlsdGVyKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJmdWxmaWxsZWRcIiAmJiByLnZhbHVlPy5zdGF0dXMgPT09IFwiZmFpbGVkXCIsXG4gICkubGVuZ3RoO1xuICBjb25zdCBza2lwcGVkID0gcmVzdWx0cy5maWx0ZXIoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcImZ1bGZpbGxlZFwiICYmIHIudmFsdWU/LnN0YXR1cyA9PT0gXCJza2lwcGVkXCIsXG4gICkubGVuZ3RoO1xuXG4gIGxvZy5pbmZvKFxuICAgIGBVbnJlZ2lzdHJhdGlvbiBjb21wbGV0ZTogJHtzdWNjZXNzZnVsfSBzdWNjZXNzZnVsLCAke2ZhaWxlZH0gZmFpbGVkLCAke3NraXBwZWR9IHNraXBwZWRgLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZW1vdmVSdW5uZXJEaXJlY3Rvcmllcyh7XG4gIGRpcmVjdG9yeSxcbiAgbnVtYmVyT2ZNYWNoaW5lcyxcbn06IHtcbiAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIG51bWJlck9mTWFjaGluZXM6IHN0cmluZztcbn0pIHtcbiAgY29uc3QgbG9nID0gbG9nZ2VyLmNoaWxkKFwicmVtb3ZlRGlyZWN0b3JpZXNcIik7XG4gIGNvbnN0IG51bU1hY2hpbmVzID0gTnVtYmVyKG51bWJlck9mTWFjaGluZXMpO1xuXG4gIGNvbnN0IHRhc2tzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogbnVtTWFjaGluZXMgfSwgKF8sIGkpID0+IGkgKyAxKS5tYXAoKHJ1bm5lckluZGV4KSA9PiAoe1xuICAgIGV4ZWN1dGU6IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1hY2hpbmVEaXJlY3RvcnkgPSBgJHtkaXJlY3Rvcnl9L21hY2hpbmVzLyR7cnVubmVySW5kZXh9YDtcbiAgICAgIGNvbnN0IG1hY2hpbmVFeGlzdHMgPSBhd2FpdCBCdW4uZmlsZShtYWNoaW5lRGlyZWN0b3J5KS5leGlzdHMoKTtcblxuICAgICAgaWYgKCFtYWNoaW5lRXhpc3RzKSB7XG4gICAgICAgIHJldHVybiB7IHJ1bm5lckluZGV4LCBzdGF0dXM6IFwic2tpcHBlZFwiIH07XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0ICRgcm0gLXJmICR7bWFjaGluZURpcmVjdG9yeX1gLnF1aWV0KCk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmVtb3ZlZCBtYWNoaW5lICR7cnVubmVySW5kZXh9IGRpcmVjdG9yeWApO1xuICAgICAgICByZXR1cm4geyBydW5uZXJJbmRleCwgc3RhdHVzOiBcInN1Y2Nlc3NcIiB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nLmVycm9yKGBFcnJvciByZW1vdmluZyBtYWNoaW5lICR7cnVubmVySW5kZXh9IGRpcmVjdG9yeTogJHtlcnJvcn1gKTtcbiAgICAgICAgcmV0dXJuIHsgZXJyb3IsIHJ1bm5lckluZGV4LCBzdGF0dXM6IFwiZmFpbGVkXCIgfTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJ1bm5lckluZGV4LFxuICB9KSk7XG5cbiAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZCh0YXNrcy5tYXAoKHRhc2spID0+IHRhc2suZXhlY3V0ZSgpKSk7XG5cbiAgY29uc3Qgc3VjY2Vzc2Z1bCA9IHJlc3VsdHMuZmlsdGVyKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJmdWxmaWxsZWRcIiAmJiByLnZhbHVlPy5zdGF0dXMgPT09IFwic3VjY2Vzc1wiLFxuICApLmxlbmd0aDtcbiAgY29uc3QgZmFpbGVkID0gcmVzdWx0cy5maWx0ZXIoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcImZ1bGZpbGxlZFwiICYmIHIudmFsdWU/LnN0YXR1cyA9PT0gXCJmYWlsZWRcIixcbiAgKS5sZW5ndGg7XG5cbiAgbG9nLmluZm8oYERpcmVjdG9yeSByZW1vdmFsIGNvbXBsZXRlOiAke3N1Y2Nlc3NmdWx9IHJlbW92ZWQsICR7ZmFpbGVkfSBmYWlsZWRgKTtcblxuICBpZiAoZmFpbGVkID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJlbW92ZSAke2ZhaWxlZH0gcnVubmVyIGRpcmVjdG9yaWVzYCk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IG1hY2hpbmVzRGlyID0gYCR7ZGlyZWN0b3J5fS9tYWNoaW5lc2A7XG4gICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgJGBscyAtQSAke21hY2hpbmVzRGlyfWAudGV4dCgpKS50cmltKCk7XG5cbiAgICBpZiAoIWZpbGVzKSB7XG4gICAgICBhd2FpdCAkYHJtIC1yZiAke21hY2hpbmVzRGlyfWAucXVpZXQoKTtcblxuICAgICAgY29uc3QgcGFyZW50RmlsZXMgPSAoYXdhaXQgJGBscyAtQSAke2RpcmVjdG9yeX1gLnRleHQoKSkudHJpbSgpO1xuICAgICAgaWYgKCFwYXJlbnRGaWxlcykge1xuICAgICAgICBhd2FpdCAkYHJtIC1yZiAke2RpcmVjdG9yeX1gLnF1aWV0KCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuaW5mbyhjb2xvcnMuZ3JlZW4oYOKckyBSZW1vdmVkIGVtcHR5IGRpcmVjdG9yaWVzYCkpO1xuICAgIH1cbiAgfSBjYXRjaCAoX2Vycm9yKSB7fVxufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RSdW5uZXJTZXR0aW5nc1VybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpO1xuICAgIGNvbnN0IHBhdGhQYXJ0cyA9IHBhcnNlZFVybC5wYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgaWYgKHBhcnNlZFVybC5ob3N0bmFtZSA9PT0gXCJnaXRodWIuY29tXCIgfHwgcGFyc2VkVXJsLmhvc3RuYW1lID09PSBcInd3dy5naXRodWIuY29tXCIpIHtcbiAgICAgIGlmIChwYXRoUGFydHNbMF0gPT09IFwib3Jnc1wiICYmIHBhdGhQYXJ0c1sxXSkge1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdhbml6YXRpb25zLyR7cGF0aFBhcnRzWzFdfS9zZXR0aW5ncy9hY3Rpb25zL3J1bm5lcnNgO1xuICAgICAgfSBlbHNlIGlmIChwYXRoUGFydHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgcmV0dXJuIGBodHRwczovL2dpdGh1Yi5jb20vJHtwYXRoUGFydHNbMF19LyR7cGF0aFBhcnRzWzFdfS9zZXR0aW5ncy9hY3Rpb25zL3J1bm5lcnNgO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGF0aFBhcnRzWzBdID09PSBcIm9yZ3NcIiAmJiBwYXRoUGFydHNbMV0pIHtcbiAgICAgICAgcmV0dXJuIGAke3BhcnNlZFVybC5vcmlnaW59L29yZ2FuaXphdGlvbnMvJHtwYXRoUGFydHNbMV19L3NldHRpbmdzL2FjdGlvbnMvcnVubmVyc2A7XG4gICAgICB9IGVsc2UgaWYgKHBhdGhQYXJ0cy5sZW5ndGggPj0gMikge1xuICAgICAgICByZXR1cm4gYCR7cGFyc2VkVXJsLm9yaWdpbn0vJHtwYXRoUGFydHNbMF19LyR7cGF0aFBhcnRzWzFdfS9zZXR0aW5ncy9hY3Rpb25zL3J1bm5lcnNgO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1cmw7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1cmw7XG4gIH1cbn1cbiIsCiAgICAiaW1wb3J0IHsgcGFyc2VBcmdzIH0gZnJvbSBcIm5vZGU6dXRpbFwiO1xuaW1wb3J0IHsgY29uZmlybSwgaXNDYW5jZWwsIHRleHQgfSBmcm9tIFwiQGNsYWNrL3Byb21wdHNcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCJAcjVuL3Rvb2xzL3V0aWxzL2xvZ2dlclwiO1xuaW1wb3J0IHsgJCB9IGZyb20gXCJidW5cIjtcbmltcG9ydCB7IGdldFByb2ZpbGUsIGxvYWRDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnXCI7XG5pbXBvcnQgeyBnZXRQYWNrYWdlUGF0aCB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XG5pbXBvcnQgeyB3b3JrZXJNYW5hZ2VyIH0gZnJvbSBcIi4uL2xpYi93b3JrZXItbWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBSdW5BcmdzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcih7IHByZWZpeDogXCJydW5NYWNoaW5lc1wiIH0pO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuTWFjaGluZXMoKSB7XG4gIGNvbnN0IGFyZ3MgPSBhd2FpdCBnZXRBcmdzKCk7XG4gIGNvbnN0IHsgZGlyZWN0b3J5LCBudW1iZXJPZk1hY2hpbmVzLCBuYW1lLCBsYWJlbHMsIHJ1bm5lckdyb3VwIH0gPSBhcmdzO1xuICBsZXQgeyB0b2tlbiwgdXJsIH0gPSBhcmdzO1xuXG4gIGlmICghdXJsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVVJMICgtdSkgcGFyYW1ldGVyIGlzIHJlcXVpcmVkXCIpO1xuICB9XG5cbiAgaWYgKCF0b2tlbikge1xuICAgIGNvbnN0IHNldHRpbmdzVXJsID0gY29uc3RydWN0UnVubmVyU2V0dGluZ3NVcmwodXJsKTtcblxuICAgIGNvbnN0IHNob3VsZE9wZW4gPSBhd2FpdCBjb25maXJtKHtcbiAgICAgIG1lc3NhZ2U6IGBObyB0b2tlbiBwcm92aWRlZC4gV291bGQgeW91IGxpa2UgdG8gb3BlbiBHaXRIdWIgdG8gZ2V0IGEgcnVubmVyIHRva2VuP1xcbiAgJHtzZXR0aW5nc1VybH1gLFxuICAgIH0pO1xuXG4gICAgaWYgKGlzQ2FuY2VsKHNob3VsZE9wZW4pIHx8ICFzaG91bGRPcGVuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb2tlbiBpcyByZXF1aXJlZCB0byBydW4gbWFjaGluZXNcIik7XG4gICAgfVxuXG4gICAgbG9nZ2VyLmluZm8oXCJPcGVuaW5nIEdpdEh1YiBydW5uZXIgc2V0dGluZ3MuLi5cIik7XG4gICAgYXdhaXQgJGBvcGVuICR7c2V0dGluZ3NVcmx9YC5xdWlldCgpO1xuXG4gICAgY29uc3QgdG9rZW5JbnB1dCA9IGF3YWl0IHRleHQoe1xuICAgICAgbWVzc2FnZTogXCJFbnRlciB0aGUgcnVubmVyIHJlZ2lzdHJhdGlvbiB0b2tlbjpcIixcbiAgICAgIHBsYWNlaG9sZGVyOiBcIkFYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYXCIsXG4gICAgICB2YWxpZGF0ZTogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBcIlRva2VuIGlzIHJlcXVpcmVkXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoaXNDYW5jZWwodG9rZW5JbnB1dCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRva2VuIGlzIHJlcXVpcmVkIHRvIHJ1biBtYWNoaW5lc1wiKTtcbiAgICB9XG5cbiAgICB0b2tlbiA9IHRva2VuSW5wdXQudHJpbSgpO1xuICB9XG5cbiAgbG9nZ2VyLmluZm8oYFN0YXJ0aW5nICR7bnVtYmVyT2ZNYWNoaW5lc30gcnVubmVycyBmcm9tICR7ZGlyZWN0b3J5fWApO1xuICBsb2dnZXIuZGVidWcoYE5hbWU6ICR7bmFtZX0sIExhYmVsczogJHtsYWJlbHMgfHwgXCJub25lXCJ9YCk7XG5cbiAgY29uc3QgZGlyZWN0b3J5RXhpc3RzID0gYXdhaXQgQnVuLmZpbGUoYCR7ZGlyZWN0b3J5fS9tYWNoaW5lc2ApLmV4aXN0cygpO1xuICBpZiAoIWRpcmVjdG9yeUV4aXN0cykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBNYWNoaW5lcyBkaXJlY3Rvcnkgbm90IGZvdW5kIGF0ICR7ZGlyZWN0b3J5fS9tYWNoaW5lcy4gUnVuICdoeWRyYSBjcmVhdGUnIGZpcnN0LmAsXG4gICAgKTtcbiAgfVxuXG4gIGF3YWl0IHN0YXJ0UnVubmVycyh7IGRpcmVjdG9yeSwgbGFiZWxzLCBuYW1lLCBudW1iZXJPZk1hY2hpbmVzLCBydW5uZXJHcm91cCwgdG9rZW4sIHVybCB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QXJncygpOiBQcm9taXNlPFJ1bkFyZ3M+IHtcbiAgY29uc3QgeyB2YWx1ZXMgfSA9IHBhcnNlQXJncyh7XG4gICAgYWxsb3dQb3NpdGlvbmFsczogdHJ1ZSxcbiAgICBhcmdzOiBCdW4uYXJndixcbiAgICBvcHRpb25zOiB7XG4gICAgICBjb25maWc6IHsgc2hvcnQ6IFwiY1wiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBkaXJlY3Rvcnk6IHsgZGVmYXVsdDogYCR7cHJvY2Vzcy5jd2QoKX0vZ2gtcnVubmVyc2AsIHNob3J0OiBcImRcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgbGFiZWxzOiB7IHNob3J0OiBcImxcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgbmFtZTogeyBkZWZhdWx0OiBcInJ1bm5lclwiLCBzaG9ydDogXCJuXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIG51bWJlck9mTWFjaGluZXM6IHsgZGVmYXVsdDogXCIxXCIsIHNob3J0OiBcIm1cIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgcHJvZmlsZTogeyBzaG9ydDogXCJwXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIHJ1bm5lckdyb3VwOiB7IHNob3J0OiBcImdcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgdG9rZW46IHsgc2hvcnQ6IFwidFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICB1cmw6IHsgc2hvcnQ6IFwidVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgfSxcbiAgICBzdHJpY3Q6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGxvYWRDb25maWcoeyBjb25maWdQYXRoOiB2YWx1ZXMuY29uZmlnIGFzIHN0cmluZyB9KTtcbiAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IGdldFByb2ZpbGUoY29uZmlnLCB2YWx1ZXMucHJvZmlsZSBhcyBzdHJpbmcpO1xuXG4gIGNvbnN0IGJhc2VBcmdzID0ge1xuICAgIGRpcmVjdG9yeTogdmFsdWVzLmRpcmVjdG9yeSBhcyBzdHJpbmcsXG4gICAgbGFiZWxzOiB2YWx1ZXMubGFiZWxzIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB2YWx1ZXMubmFtZSBhcyBzdHJpbmcsXG4gICAgbnVtYmVyT2ZNYWNoaW5lczogdmFsdWVzLm51bWJlck9mTWFjaGluZXMgYXMgc3RyaW5nLFxuICAgIHJ1bm5lckdyb3VwOiB2YWx1ZXMucnVubmVyR3JvdXAgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHRva2VuOiB2YWx1ZXMudG9rZW4gYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHVybDogdmFsdWVzLnVybCBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIH07XG5cbiAgaWYgKHByb2ZpbGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlyZWN0b3J5OiBiYXNlQXJncy5kaXJlY3RvcnkgPz8gcHJvZmlsZS5kaXJlY3RvcnkgPz8gYCR7cHJvY2Vzcy5jd2QoKX0vZ2gtcnVubmVyc2AsXG4gICAgICBsYWJlbHM6IGJhc2VBcmdzLmxhYmVscyA/PyBwcm9maWxlLmxhYmVscyxcbiAgICAgIG5hbWU6IGJhc2VBcmdzLm5hbWUgPz8gcHJvZmlsZS5uYW1lID8/IFwicnVubmVyXCIsXG4gICAgICBudW1iZXJPZk1hY2hpbmVzOiBiYXNlQXJncy5udW1iZXJPZk1hY2hpbmVzID8/IFN0cmluZyhwcm9maWxlLm51bWJlck9mTWFjaGluZXMpID8/IFwiMVwiLFxuICAgICAgcnVubmVyR3JvdXA6IGJhc2VBcmdzLnJ1bm5lckdyb3VwID8/IHByb2ZpbGUucnVubmVyR3JvdXAsXG4gICAgICB0b2tlbjogYmFzZUFyZ3MudG9rZW4sXG4gICAgICB1cmw6IGJhc2VBcmdzLnVybCA/PyBwcm9maWxlLnVybCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGJhc2VBcmdzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydFJ1bm5lcnMoe1xuICBkaXJlY3RvcnksXG4gIG51bWJlck9mTWFjaGluZXMsXG4gIHRva2VuLFxuICB1cmwsXG4gIG5hbWUsXG4gIGxhYmVscyxcbiAgcnVubmVyR3JvdXAsXG59OiB7XG4gIGRpcmVjdG9yeTogc3RyaW5nO1xuICBudW1iZXJPZk1hY2hpbmVzOiBzdHJpbmc7XG4gIHRva2VuOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhYmVscz86IHN0cmluZztcbiAgcnVubmVyR3JvdXA/OiBzdHJpbmc7XG59KSB7XG4gIGxvZ2dlci5pbmZvKGBTdGFydGluZyAke251bWJlck9mTWFjaGluZXN9IHdvcmtlcnMuLi5gKTtcblxuICBmb3IgKGxldCBydW5uZXJJbmRleCA9IDE7IHJ1bm5lckluZGV4IDw9IE51bWJlcihudW1iZXJPZk1hY2hpbmVzKTsgcnVubmVySW5kZXgrKykge1xuICAgIGNvbnN0IG1hY2hpbmVEaXJlY3RvcnkgPSBgJHtkaXJlY3Rvcnl9L21hY2hpbmVzLyR7cnVubmVySW5kZXh9YDtcbiAgICBjb25zdCBtYWNoaW5lRXhpc3RzID0gYXdhaXQgQnVuLmZpbGUobWFjaGluZURpcmVjdG9yeSkuZXhpc3RzKCk7XG5cbiAgICBpZiAoIW1hY2hpbmVFeGlzdHMpIHtcbiAgICAgIGxvZ2dlci53YXJuKGBNYWNoaW5lICR7cnVubmVySW5kZXh9IGRvZXNuJ3QgZXhpc3QsIHNraXBwaW5nLi4uYCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCB3b3JrZXJQYXRoID0gYCR7Z2V0UGFja2FnZVBhdGgoKX0vc3JjL3J1bm5lci13b3JrZXIudHNgO1xuICAgIGNvbnN0IHdvcmtlck5hbWUgPSBgJHtuYW1lfS0ke3J1bm5lckluZGV4fWA7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcih3b3JrZXJQYXRoLCB7IG5hbWU6IHdvcmtlck5hbWUsIHJlZjogdHJ1ZSB9KTtcblxuICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoeyBkYXRhIH0pID0+IHtcbiAgICAgIGNvbnN0IGxldmVsID0gZGF0YS50eXBlID09PSBcImVycm9yXCIgPyBcImVycm9yXCIgOiBcImluZm9cIjtcbiAgICAgIGxvZ2dlcltsZXZlbF0oYCR7d29ya2VyTmFtZX06ICR7ZGF0YS5tZXNzYWdlfWApO1xuICAgIH0pO1xuXG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCAoZXJyb3IpID0+IHtcbiAgICAgIGxvZ2dlci5lcnJvcihgV29ya2VyICR7d29ya2VyTmFtZX0gZXJyb3I6YCwgZXJyb3IpO1xuICAgIH0pO1xuXG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJleGl0XCIsIChjb2RlKSA9PiB7XG4gICAgICBsb2dnZXIuaW5mbyhgV29ya2VyICR7d29ya2VyTmFtZX0gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCk7XG4gICAgfSk7XG5cbiAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgaW5kZXg6IHJ1bm5lckluZGV4LFxuICAgICAgbGFiZWxzLFxuICAgICAgbWFjaGluZUN3ZDogbWFjaGluZURpcmVjdG9yeSxcbiAgICAgIG5hbWUsXG4gICAgICBydW5uZXJHcm91cCxcbiAgICAgIHRva2VuLFxuICAgICAgdXJsLFxuICAgIH0pO1xuXG4gICAgbG9nZ2VyLmluZm8oYFdvcmtlciAke3dvcmtlck5hbWV9IHN0YXJ0aW5nLi4uYCk7XG4gICAgd29ya2VyTWFuYWdlci5hZGQod29ya2VyKTtcbiAgfVxuXG4gIGxvZ2dlci5pbmZvKFwiQWxsIHdvcmtlcnMgc3RhcnRlZC4gUHJlc3MgQ3RybCtDIHRvIHN0b3AgYWxsIG1hY2hpbmVzXCIpO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RSdW5uZXJTZXR0aW5nc1VybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpO1xuICAgIGNvbnN0IHBhdGhQYXJ0cyA9IHBhcnNlZFVybC5wYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgaWYgKHBhcnNlZFVybC5ob3N0bmFtZSA9PT0gXCJnaXRodWIuY29tXCIgfHwgcGFyc2VkVXJsLmhvc3RuYW1lID09PSBcInd3dy5naXRodWIuY29tXCIpIHtcbiAgICAgIGlmIChwYXRoUGFydHNbMF0gPT09IFwib3Jnc1wiICYmIHBhdGhQYXJ0c1sxXSkge1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdhbml6YXRpb25zLyR7cGF0aFBhcnRzWzFdfS9zZXR0aW5ncy9hY3Rpb25zL3J1bm5lcnMvbmV3YDtcbiAgICAgIH0gZWxzZSBpZiAocGF0aFBhcnRzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgIHJldHVybiBgaHR0cHM6Ly9naXRodWIuY29tLyR7cGF0aFBhcnRzWzBdfS8ke3BhdGhQYXJ0c1sxXX0vc2V0dGluZ3MvYWN0aW9ucy9ydW5uZXJzL25ld2A7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYXRoUGFydHNbMF0gPT09IFwib3Jnc1wiICYmIHBhdGhQYXJ0c1sxXSkge1xuICAgICAgICByZXR1cm4gYCR7cGFyc2VkVXJsLm9yaWdpbn0vb3JnYW5pemF0aW9ucy8ke3BhdGhQYXJ0c1sxXX0vc2V0dGluZ3MvYWN0aW9ucy9ydW5uZXJzL25ld2A7XG4gICAgICB9IGVsc2UgaWYgKHBhdGhQYXJ0cy5sZW5ndGggPj0gMikge1xuICAgICAgICByZXR1cm4gYCR7cGFyc2VkVXJsLm9yaWdpbn0vJHtwYXRoUGFydHNbMF19LyR7cGF0aFBhcnRzWzFdfS9zZXR0aW5ncy9hY3Rpb25zL3J1bm5lcnMvbmV3YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdXJsO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG59XG4iLAogICAgImltcG9ydCB7IHBhcnNlQXJncyB9IGZyb20gXCJub2RlOnV0aWxcIjtcbmltcG9ydCB7IGxvZywgc3Bpbm5lciB9IGZyb20gXCJAY2xhY2svcHJvbXB0c1wiO1xuaW1wb3J0IHsgZ3JhY2VmdWxUcnksIHdpdGhSZXRyeSB9IGZyb20gXCJAcjVuL2NsaS1jb3JlXCI7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tIFwiQHI1bi90b29scy91dGlscy9jb2xvcnNcIjtcbmltcG9ydCB7ICQgfSBmcm9tIFwiYnVuXCI7XG5pbXBvcnQgeyBnZXRQcm9maWxlLCBsb2FkQ29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZ1wiO1xuXG5pbnRlcmZhY2UgUnVubmVyU3RhdHVzIHtcbiAgbmFtZTogc3RyaW5nO1xuICBzdGF0dXM6IFwib25saW5lXCIgfCBcIm9mZmxpbmVcIiB8IFwiYnVzeVwiO1xuICBsYWJlbHM6IHN0cmluZ1tdO1xuICBidXN5OiBib29sZWFuO1xuICBvczogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgR2l0SHViUnVubmVyUmVzcG9uc2Uge1xuICBydW5uZXJzOiBBcnJheTx7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgb3M6IHN0cmluZztcbiAgICBzdGF0dXM6IHN0cmluZztcbiAgICBidXN5OiBib29sZWFuO1xuICAgIGxhYmVsczogQXJyYXk8eyBuYW1lOiBzdHJpbmcgfT47XG4gIH0+O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhdHVzKCkge1xuICBjb25zdCBhcmdzID0gYXdhaXQgZ2V0QXJncygpO1xuICBjb25zdCB7IGRpcmVjdG9yeSwgdG9rZW4sIHVybCwganNvbiB9ID0gYXJncztcblxuICBpZiAoIXRva2VuIHx8ICF1cmwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb2tlbiAoLXQpIGFuZCBVUkwgKC11KSBwYXJhbWV0ZXJzIGFyZSByZXF1aXJlZFwiKTtcbiAgfVxuXG4gIGNvbnN0IHN0YXR1c1NwaW5uZXIgPSBzcGlubmVyKCk7XG4gIHN0YXR1c1NwaW5uZXIuc3RhcnQoXCJGZXRjaGluZyBydW5uZXIgc3RhdHVzLi4uXCIpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbG9jYWxSdW5uZXJzID0gYXdhaXQgZ2V0TG9jYWxSdW5uZXJzKGRpcmVjdG9yeSk7XG4gICAgY29uc3QgZ2l0aHViUnVubmVycyA9IGF3YWl0IGZldGNoR2l0SHViUnVubmVycyh1cmwsIHRva2VuKTtcbiAgICBjb25zdCBydW5uZXJTdGF0dXNlcyA9IGNvbWJpbmVSdW5uZXJTdGF0dXMobG9jYWxSdW5uZXJzLCBnaXRodWJSdW5uZXJzKTtcblxuICAgIHN0YXR1c1NwaW5uZXIuc3RvcChcIlJ1bm5lciBzdGF0dXMgZmV0Y2hlZFwiKTtcblxuICAgIGlmIChqc29uKSB7XG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShydW5uZXJTdGF0dXNlcywgbnVsbCwgMikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwbGF5UnVubmVyU3RhdHVzKHJ1bm5lclN0YXR1c2VzKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgc3RhdHVzU3Bpbm5lci5zdG9wKFwiRmFpbGVkIHRvIGZldGNoIHJ1bm5lciBzdGF0dXNcIik7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QXJncygpIHtcbiAgY29uc3QgeyB2YWx1ZXMgfSA9IHBhcnNlQXJncyh7XG4gICAgYWxsb3dQb3NpdGlvbmFsczogdHJ1ZSxcbiAgICBhcmdzOiBCdW4uYXJndixcbiAgICBvcHRpb25zOiB7XG4gICAgICBjb25maWc6IHsgc2hvcnQ6IFwiY1wiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBkaXJlY3Rvcnk6IHsgZGVmYXVsdDogYCR7cHJvY2Vzcy5jd2QoKX0vZ2gtcnVubmVyc2AsIHNob3J0OiBcImRcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAganNvbjogeyBkZWZhdWx0OiBmYWxzZSwgc2hvcnQ6IFwialwiLCB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgcHJvZmlsZTogeyBzaG9ydDogXCJwXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIHRva2VuOiB7IHNob3J0OiBcInRcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgdXJsOiB7IHNob3J0OiBcInVcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgIH0sXG4gICAgc3RyaWN0OiB0cnVlLFxuICB9KTtcblxuICBjb25zdCBjb25maWcgPSBhd2FpdCBsb2FkQ29uZmlnKHsgY29uZmlnUGF0aDogdmFsdWVzLmNvbmZpZyBhcyBzdHJpbmcgfSk7XG4gIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCBnZXRQcm9maWxlKGNvbmZpZywgdmFsdWVzLnByb2ZpbGUgYXMgc3RyaW5nKTtcblxuICByZXR1cm4ge1xuICAgIGRpcmVjdG9yeTogKHZhbHVlcy5kaXJlY3RvcnkgYXMgc3RyaW5nKSB8fCBwcm9maWxlPy5kaXJlY3RvcnkgfHwgYCR7cHJvY2Vzcy5jd2QoKX0vZ2gtcnVubmVyc2AsXG4gICAganNvbjogdmFsdWVzLmpzb24gYXMgYm9vbGVhbixcbiAgICB0b2tlbjogdmFsdWVzLnRva2VuIGFzIHN0cmluZyxcbiAgICB1cmw6ICh2YWx1ZXMudXJsIGFzIHN0cmluZykgfHwgcHJvZmlsZT8udXJsLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRMb2NhbFJ1bm5lcnMoZGlyZWN0b3J5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IG1hY2hpbmVzRGlyID0gYCR7ZGlyZWN0b3J5fS9tYWNoaW5lc2A7XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ3JhY2VmdWxUcnkoXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgJGBscyAke21hY2hpbmVzRGlyfSAyPi9kZXYvbnVsbCB8fCB0cnVlYC5xdWlldCgpO1xuICAgICAgcmV0dXJuIG91dHB1dC5zdGRvdXQudG9TdHJpbmcoKS50cmltKCkuc3BsaXQoXCJcXG5cIikuZmlsdGVyKEJvb2xlYW4pO1xuICAgIH0sXG4gICAgeyBmYWxsYmFjazogKCkgPT4ge30sIGxvZ0xldmVsOiBcImRlYnVnXCIsIG1lc3NhZ2U6IFwiTm8gbG9jYWwgcnVubmVycyBmb3VuZFwiIH0sXG4gICk7XG5cbiAgcmV0dXJuIHJlc3VsdCB8fCBbXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hHaXRIdWJSdW5uZXJzKHVybDogc3RyaW5nLCB0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxHaXRIdWJSdW5uZXJSZXNwb25zZT4ge1xuICBjb25zdCBtYXRjaCA9IHVybC5tYXRjaCgvZ2l0aHViXFwuY29tWzovXShbXi9dKykoPzpcXC8oW14vLl0rKSk/Lyk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEdpdEh1YiBVUkxcIik7XG4gIH1cblxuICBjb25zdCBbLCBvcmdPck93bmVyLCByZXBvXSA9IG1hdGNoO1xuICBjb25zdCBhcGlVcmwgPSByZXBvXG4gICAgPyBgaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy8ke29yZ09yT3duZXJ9LyR7cmVwb30vYWN0aW9ucy9ydW5uZXJzYFxuICAgIDogYGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vb3Jncy8ke29yZ09yT3duZXJ9L2FjdGlvbnMvcnVubmVyc2A7XG5cbiAgcmV0dXJuIHdpdGhSZXRyeShcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vdm5kLmdpdGh1Yi52Mytqc29uXCIsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChhcGlVcmwsIHsgaGVhZGVycyB9KTtcblxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdpdEh1YiBBUEkgZXJyb3I6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9LFxuICAgIHtcbiAgICAgIG9uUmV0cnk6IChhdHRlbXB0LCBlcnJvcikgPT4ge1xuICAgICAgICBsb2cud2FybihgUmV0cnlpbmcgR2l0SHViIEFQSSBjYWxsIChhdHRlbXB0ICR7YXR0ZW1wdH0pOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICB9LFxuICAgIH0sXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNvbWJpbmVSdW5uZXJTdGF0dXMoXG4gIGxvY2FsUnVubmVyczogc3RyaW5nW10sXG4gIGdpdGh1YkRhdGE6IEdpdEh1YlJ1bm5lclJlc3BvbnNlLFxuKTogUnVubmVyU3RhdHVzW10ge1xuICBjb25zdCBzdGF0dXNlczogUnVubmVyU3RhdHVzW10gPSBbXTtcbiAgY29uc3QgZ2l0aHViUnVubmVyTWFwID0gbmV3IE1hcChnaXRodWJEYXRhLnJ1bm5lcnMubWFwKChydW5uZXIpID0+IFtydW5uZXIubmFtZSwgcnVubmVyXSkpO1xuXG4gIGZvciAoY29uc3QgcnVubmVyRGlyIG9mIGxvY2FsUnVubmVycykge1xuICAgIGNvbnN0IHJ1bm5lck5hbWUgPSBgcnVubmVyLSR7cnVubmVyRGlyfWA7XG4gICAgY29uc3QgZ2l0aHViUnVubmVyID0gZ2l0aHViUnVubmVyTWFwLmdldChydW5uZXJOYW1lKTtcblxuICAgIGlmIChnaXRodWJSdW5uZXIpIHtcbiAgICAgIHN0YXR1c2VzLnB1c2goe1xuICAgICAgICBidXN5OiBnaXRodWJSdW5uZXIuYnVzeSxcbiAgICAgICAgbGFiZWxzOiBnaXRodWJSdW5uZXIubGFiZWxzLm1hcCgobCkgPT4gbC5uYW1lKSxcbiAgICAgICAgbmFtZTogcnVubmVyTmFtZSxcbiAgICAgICAgb3M6IGdpdGh1YlJ1bm5lci5vcyxcbiAgICAgICAgc3RhdHVzOiBnaXRodWJSdW5uZXIuYnVzeVxuICAgICAgICAgID8gXCJidXN5XCJcbiAgICAgICAgICA6IGdpdGh1YlJ1bm5lci5zdGF0dXMgPT09IFwib25saW5lXCJcbiAgICAgICAgICAgID8gXCJvbmxpbmVcIlxuICAgICAgICAgICAgOiBcIm9mZmxpbmVcIixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0dXNlcy5wdXNoKHtcbiAgICAgICAgYnVzeTogZmFsc2UsXG4gICAgICAgIGxhYmVsczogW10sXG4gICAgICAgIG5hbWU6IHJ1bm5lck5hbWUsXG4gICAgICAgIG9zOiBcInVua25vd25cIixcbiAgICAgICAgc3RhdHVzOiBcIm9mZmxpbmVcIixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0dXNlcztcbn1cblxuZnVuY3Rpb24gZGlzcGxheVJ1bm5lclN0YXR1cyhzdGF0dXNlczogUnVubmVyU3RhdHVzW10pIHtcbiAgaWYgKHN0YXR1c2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZy5pbmZvKFwiTm8gcnVubmVycyBmb3VuZFwiKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zb2xlLmxvZyhgXFxuJHtjb2xvcnMuYm9sZChcIlJ1bm5lciBTdGF0dXM6XCIpfWApO1xuICBjb25zb2xlLmxvZyhcIuKUgFwiLnJlcGVhdCg4MCkpO1xuXG4gIGNvbnN0IHN0YXR1c0NvbG9ycyA9IHsgYnVzeTogY29sb3JzLnllbGxvdywgb2ZmbGluZTogY29sb3JzLnJlZCwgb25saW5lOiBjb2xvcnMuZ3JlZW4gfTtcblxuICBmb3IgKGNvbnN0IHJ1bm5lciBvZiBzdGF0dXNlcykge1xuICAgIGNvbnN0IHN0YXR1c0NvbG9yID0gc3RhdHVzQ29sb3JzW3J1bm5lci5zdGF0dXNdO1xuICAgIGNvbnN0IHN0YXR1c1RleHQgPSBydW5uZXIuc3RhdHVzLnRvVXBwZXJDYXNlKCkucGFkRW5kKDcpO1xuXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGF0dXNDb2xvcihcIuKXj1wiKX0gJHtzdGF0dXNDb2xvcihzdGF0dXNUZXh0KX0gJHtjb2xvcnMuY3lhbihydW5uZXIubmFtZS5wYWRFbmQoMjApKX0gYCArXG4gICAgICAgIGAke2NvbG9ycy5kaW0oYE9TOiAke3J1bm5lci5vcy5wYWRFbmQoMTApfWApfSBgICtcbiAgICAgICAgYCR7cnVubmVyLmxhYmVscy5sZW5ndGggPiAwID8gY29sb3JzLmRpbShgTGFiZWxzOiAke3J1bm5lci5sYWJlbHMuam9pbihcIiwgXCIpfWApIDogXCJcIn1gLFxuICAgICk7XG4gIH1cblxuICBjb25zb2xlLmxvZyhcIuKUgFwiLnJlcGVhdCg4MCkpO1xuXG4gIGNvbnN0IHN1bW1hcnkgPSB7XG4gICAgYnVzeTogc3RhdHVzZXMuZmlsdGVyKChyKSA9PiByLnN0YXR1cyA9PT0gXCJidXN5XCIpLmxlbmd0aCxcbiAgICBvZmZsaW5lOiBzdGF0dXNlcy5maWx0ZXIoKHIpID0+IHIuc3RhdHVzID09PSBcIm9mZmxpbmVcIikubGVuZ3RoLFxuICAgIG9ubGluZTogc3RhdHVzZXMuZmlsdGVyKChyKSA9PiByLnN0YXR1cyA9PT0gXCJvbmxpbmVcIikubGVuZ3RoLFxuICAgIHRvdGFsOiBzdGF0dXNlcy5sZW5ndGgsXG4gIH07XG5cbiAgY29uc29sZS5sb2coXG4gICAgYFxcbiR7Y29sb3JzLmJvbGQoXCJTdW1tYXJ5OlwiKX0gYCArXG4gICAgICBgVG90YWw6ICR7c3VtbWFyeS50b3RhbH0gfCBgICtcbiAgICAgIGAke2NvbG9ycy5ncmVlbihgT25saW5lOiAke3N1bW1hcnkub25saW5lfWApfSB8IGAgK1xuICAgICAgYCR7Y29sb3JzLnllbGxvdyhgQnVzeTogJHtzdW1tYXJ5LmJ1c3l9YCl9IHwgYCArXG4gICAgICBgJHtjb2xvcnMucmVkKGBPZmZsaW5lOiAke3N1bW1hcnkub2ZmbGluZX1gKX1cXG5gLFxuICApO1xufVxuIiwKICAgICJpbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGNsYWNrL3Byb21wdHNcIjtcbmltcG9ydCB7IGNoZWNrQ29tbW9uTWlzdGFrZXMsIGdldFN1Z2dlc3Rpb25zIH0gZnJvbSBcIkByNW4vY2xpLWNvcmVcIjtcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gXCJAcjVuL3Rvb2xzL3V0aWxzL2NvbG9yc1wiO1xuaW1wb3J0IHsgY3JlYXRlTWFjaGluZXMgfSBmcm9tIFwiLi9tZXRob2RzL2NyZWF0ZU1hY2hpbmVzXCI7XG5pbXBvcnQgeyBoZWxwIH0gZnJvbSBcIi4vbWV0aG9kcy9oZWxwXCI7XG5pbXBvcnQgeyBpbml0IH0gZnJvbSBcIi4vbWV0aG9kcy9pbml0XCI7XG5pbXBvcnQgeyByZW1vdmVNYWNoaW5lcyB9IGZyb20gXCIuL21ldGhvZHMvcmVtb3ZlTWFjaGluZXNcIjtcbmltcG9ydCB7IHJ1bk1hY2hpbmVzIH0gZnJvbSBcIi4vbWV0aG9kcy9ydW5NYWNoaW5lc1wiO1xuaW1wb3J0IHsgc3RhdHVzIH0gZnJvbSBcIi4vbWV0aG9kcy9zdGF0dXNcIjtcblxuY29uc3QgQ09NTUFORFMgPSBbXCJpbml0XCIsIFwiY3JlYXRlXCIsIFwicnVuXCIsIFwicmVtb3ZlXCIsIFwic3RhdHVzXCIsIFwiaGVscFwiXTtcblxuY29uc3QgQ09NTU9OX01JU1RBS0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBjOiBcImNyZWF0ZVwiLFxuICBjZWF0ZTogXCJjcmVhdGVcIixcbiAgY3JhZXRlOiBcImNyZWF0ZVwiLFxuICBjcmV0YWU6IFwiY3JlYXRlXCIsXG4gIGRlbDogXCJyZW1vdmVcIixcbiAgZGVsZXRlOiBcInJlbW92ZVwiLFxuICBoOiBcImhlbHBcIixcbiAgaTogXCJpbml0XCIsXG4gIGluZm86IFwic3RhdHVzXCIsXG4gIGluaXRpYWxpc2U6IFwiaW5pdFwiLFxuICBpbnRpOiBcImluaXRcIixcbiAgaW50aWFsaXplOiBcImluaXRcIixcbiAgbGlzdDogXCJzdGF0dXNcIixcbiAgbHM6IFwic3RhdHVzXCIsXG4gIG5ldzogXCJjcmVhdGVcIixcbiAgcjogXCJydW5cIixcbiAgcmVtdm9lOiBcInJlbW92ZVwiLFxuICBybTogXCJyZW1vdmVcIixcbiAgcm1vdmU6IFwicmVtb3ZlXCIsXG4gIHJudTogXCJydW5cIixcbiAgcnVubjogXCJydW5cIixcbiAgczogXCJzdGF0dXNcIixcbiAgc3RhcnQ6IFwicnVuXCIsXG4gIHN0YXQ6IFwic3RhdHVzXCIsXG4gIHN0b3A6IFwicmVtb3ZlXCIsXG4gIHN0dGF1czogXCJzdGF0dXNcIixcbiAgdDogXCJ0cm91Ymxlc2hvb3RcIixcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgWywgLCBjb21tYW5kTmFtZSwgLi4uYXJnc10gPSBwcm9jZXNzLmFyZ3Y7XG5cbiAgICBpZiAoIWNvbW1hbmROYW1lIHx8IGNvbW1hbmROYW1lID09PSBcIi0taGVscFwiIHx8IGNvbW1hbmROYW1lID09PSBcIi1oXCIpIHtcbiAgICAgIGhlbHAoKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG5cbiAgICBsZXQgYWN0dWFsQ29tbWFuZCA9IGNvbW1hbmROYW1lO1xuXG4gICAgaWYgKCFDT01NQU5EUy5pbmNsdWRlcyhjb21tYW5kTmFtZSkpIHtcbiAgICAgIGNvbnN0IGNvcnJlY3RlZCA9IGNoZWNrQ29tbW9uTWlzdGFrZXMoY29tbWFuZE5hbWUsIENPTU1PTl9NSVNUQUtFUyk7XG4gICAgICBpZiAoY29ycmVjdGVkICYmIENPTU1BTkRTLmluY2x1ZGVzKGNvcnJlY3RlZCkpIHtcbiAgICAgICAgYWN0dWFsQ29tbWFuZCA9IGNvcnJlY3RlZDtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLnllbGxvdyhgQXNzdW1pbmcgeW91IG1lYW50ICcke2NvcnJlY3RlZH0nXFxuYCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghQ09NTUFORFMuaW5jbHVkZXMoYWN0dWFsQ29tbWFuZCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoY29sb3JzLnJlZChgVW5rbm93biBjb21tYW5kOiAke2NvbW1hbmROYW1lfWApKTtcblxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBnZXRTdWdnZXN0aW9ucyhjb21tYW5kTmFtZSwgQ09NTUFORFMpO1xuICAgICAgaWYgKHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlxcbkRpZCB5b3UgbWVhbiBvbmUgb2YgdGhlc2U/XCIpO1xuICAgICAgICBmb3IgKGNvbnN0IHN1Z2dlc3Rpb24gb2Ygc3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGAgICR7Y29sb3JzLmN5YW4oc3VnZ2VzdGlvbil9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5lcnJvcigpO1xuICAgICAgfVxuXG4gICAgICBoZWxwKCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MuaW5jbHVkZXMoXCItLWhlbHBcIikgfHwgYXJncy5pbmNsdWRlcyhcIi1oXCIpKSB7XG4gICAgICBoZWxwKGFjdHVhbENvbW1hbmQpO1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cblxuICAgIHN3aXRjaCAoYWN0dWFsQ29tbWFuZCkge1xuICAgICAgY2FzZSBcImluaXRcIjpcbiAgICAgICAgYXdhaXQgaW5pdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjcmVhdGVcIjpcbiAgICAgICAgYXdhaXQgY3JlYXRlTWFjaGluZXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwicnVuXCI6XG4gICAgICAgIGF3YWl0IHJ1bk1hY2hpbmVzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInJlbW92ZVwiOlxuICAgICAgICBhd2FpdCByZW1vdmVNYWNoaW5lcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJzdGF0dXNcIjpcbiAgICAgICAgYXdhaXQgc3RhdHVzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImhlbHBcIjoge1xuICAgICAgICBjb25zdCB0YXJnZXRDb21tYW5kID0gYXJnc1swXTtcbiAgICAgICAgaGVscCh0YXJnZXRDb21tYW5kKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY29tbWFuZDogJHthY3R1YWxDb21tYW5kfWApO1xuICAgIH1cblxuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvck9iaiA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcbiAgICBsb2cuZXJyb3IoZXJyb3JPYmoubWVzc2FnZSk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG59XG5cbmF3YWl0IG1haW4oKTtcbiIKICBdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUVBLElBQU0sTUFBTTtBQUFBLEVBQ1osSUFBTSxNQUFNLEdBQUc7QUFBQSxFQUNmLElBQU0sT0FBTztBQUFBLEVBRWIsSUFBTSxTQUFTO0FBQUEsSUFDYixFQUFFLENBQUMsR0FBRyxHQUFHO0FBQUEsTUFDUCxLQUFLO0FBQUEsUUFBRyxPQUFPLEdBQUcsTUFBTSxJQUFJO0FBQUEsTUFDNUIsT0FBTyxHQUFHLE1BQU0sSUFBSSxLQUFLLElBQUk7QUFBQTtBQUFBLElBRS9CLElBQUksQ0FBQyxHQUFHLEdBQUc7QUFBQSxNQUNULElBQUksTUFBTTtBQUFBLE1BRVYsSUFBSSxJQUFJO0FBQUEsUUFBRyxPQUFPLEdBQUcsT0FBTztBQUFBLE1BQ3ZCLFNBQUksSUFBSTtBQUFBLFFBQUcsT0FBTyxHQUFHLE1BQU07QUFBQSxNQUVoQyxJQUFJLElB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RUFBQyxPQUFPLEtBQUcsRUFBRSxjQUFZLE9BQU8sVUFBVSxlQUFlLEtBQUssR0FBRSxTQUFTLElBQUUsRUFBRSxVQUFRO0FBQUE7QUFBRSxJQUFJLElBQUUsRUFBQyxTQUFRLENBQUMsRUFBQztBQUFBLENBQUcsUUFBUSxDQUFDLEdBQUU7QUFBQSxFQUFDLElBQUksSUFBRSxDQUFDO0FBQUEsRUFBRSxFQUFFLFVBQVEsR0FBRSxFQUFFLGlCQUFlLFFBQVEsQ0FBQyxHQUFFO0FBQUEsSUFBQyxJQUFJLElBQUUsRUFBRSxXQUFXLENBQUMsR0FBRSxJQUFFLEVBQUUsVUFBUSxJQUFFLEVBQUUsV0FBVyxDQUFDLElBQUUsR0FBRSxJQUFFO0FBQUEsSUFBRSxPQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsVUFBUSxLQUFHLE1BQUssS0FBRyxNQUFLLElBQUUsS0FBRyxLQUFHLEdBQUUsS0FBRyxRQUFPLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFFBQU0sTUFBSSxLQUFHLFFBQU0sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFFBQU0sTUFBSSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFNBQU8sTUFBSSxNQUFJLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsUUFBTSxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFNBQU8sS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxLQUFHLFNBQU8sVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFdBQVMsV0FBUyxLQUFHLEtBQUcsVUFBUSxNQUFJO0FBQUEsS0FBSyxFQUFFLGtCQUFnQixRQUFRLENBQUMsR0FBRTtBQUFBLElBQUMsSUFBSSxJQUFFLEtBQUssZUFBZSxDQUFDO0FBQUEsSUFBRSxPQUFPLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxNQUFJLElBQUU7QUFBQTtBQUFBLEVBQUcsU0FBUyxDQUFDLENBQUMsR0FBRTtBQUFBLElBQUMsT0FBTyxFQUFFLE1BQU0sa0RBQWtELEtBQUcsQ0FBQztBQUFBO0FBQUEsRUFBRSxFQUFFLFNBQU8sUUFBUSxDQUFDLEdBQUU7QUFBQSxJQUFDLFNBQVEsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLElBQUUsRUFBRSxRQUFPO0FBQUEsTUFBSSxJQUFFLElBQUUsS0FBSyxnQkFBZ0IsRUFBRSxFQUFFO0FBQUEsSUFBRSxPQUFPO0FBQUEsS0FBRyxFQUFFLFFBQU0sUUFBUSxDQUFDLEdBQUUsR0FBRSxHQUFFO0FBQUEsSUFBQyxVQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUUsSUFBRSxLQUFHLEdBQUUsSUFBRSxLQUFHLEdBQUUsSUFBRSxNQUFJLElBQUUsVUFBUSxJQUFHLElBQUUsTUFBSSxJQUFFLFVBQVE7QUFBQSxJQUFHLFNBQVEsSUFBRSxJQUFHLElBQUUsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUEsTUFBQyxJQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxPQUFPLENBQUM7QUFBQSxNQUFFLElBQUcsS0FBRyxLQUFHLEtBQUcsSUFBRSxJQUFFO0FBQUEsUUFBRyxJQUFHLElBQUUsS0FBRztBQUFBLFVBQUUsS0FBRztBQUFBLFFBQU87QUFBQTtBQUFBLE1BQU0sS0FBRztBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU87QUFBQTtBQUFBLEdBQUssQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFO0FBQVEsSUFBTSxLQUFHLEVBQUUsRUFBRTtBQUFFLElBQUksS0FBRyxRQUFRLEdBQUU7QUFBQSxFQUFDLE9BQU07QUFBQTtBQUFreWUsSUFBTSxLQUFHLEVBQUUsRUFBRTtBQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUU7QUFBQSxFQUFDLElBQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxXQUFTLE1BQUksSUFBRSxFQUFDLG1CQUFrQixTQUFNLEVBQUMsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsV0FBUztBQUFBLElBQUcsT0FBTztBQUFBLEVBQUUsSUFBRSxFQUFFLFFBQVEsR0FBRyxHQUFFLElBQUk7QUFBQSxFQUFFLE1BQU0sSUFBRSxFQUFFLG9CQUFrQixJQUFFO0FBQUEsRUFBRSxJQUFJLElBQUU7QUFBQSxFQUFFLFdBQVUsS0FBSyxHQUFFO0FBQUEsSUFBQyxNQUFNLElBQUUsRUFBRSxZQUFZLENBQUM7QUFBQSxJQUFFLElBQUcsS0FBRyxNQUFJLEtBQUcsT0FBSyxLQUFHLE9B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QUEsSUFBRSxFQUFFLFdBQVMsTUFBSSxJQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxPQUFHLElBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRTtBQUFBLElBQUcsTUFBTSxJQUFFLE9BQU8sU0FBUyxHQUFFLEVBQUU7QUFBQSxJQUFFLE9BQU0sQ0FBQyxLQUFHLEtBQUcsS0FBSSxLQUFHLElBQUUsS0FBSSxJQUFFLEdBQUc7QUFBQSxLQUFHLFlBQVcsTUFBRSxHQUFFLGNBQWEsRUFBQyxPQUFNLE9BQUcsRUFBRSxhQUFhLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFFLFlBQVcsTUFBRSxHQUFFLGVBQWMsRUFBQyxPQUFNLE9BQUc7QUFBQSxJQUFDLElBQUcsSUFBRTtBQUFBLE1BQUUsT0FBTyxLQUFHO0FBQUEsSUFBRSxJQUFHLElBQUU7QUFBQSxNQUFHLE9BQU8sTUFBSSxJQUFFO0FBQUEsSUFBRyxJQUFJLEdBQUUsR0FBRTtBQUFBLElBQUUsSUFBRyxLQUFHO0FBQUEsTUFBSSxNQUFJLElBQUUsT0FBSyxLQUFHLEtBQUcsS0FBSSxJQUFFLEdBQUUsSUFBRTtBQUFBLElBQU07QUFBQSxNQUFDLEtBQUc7QUFBQSxNQUFHLE1BQU0sSUFBRSxJQUFFO0FBQUEsTUFBRyxJQUFFLEtBQUssTUFBTSxJQUFFLEVBQUUsSUFBRSxHQUFFLElBQUUsS0FBSyxNQUFNLElBQUUsQ0FBQyxJQUFFLEdBQUUsSUFBRSxJQUFFLElBQUU7QUFBQTtBQUFBLElBQUUsTUFBTSxJQUFFLEtBQUssSUFBSSxHQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUEsSUFBRSxJQUFHLE1BQUk7QUFBQSxNQUFFLE9BQU87QUFBQSxJQUFHLElBQUksSUFBRSxNQUFJLEtBQUssTUFBTSxDQUFDLEtBQUcsSUFBRSxLQUFLLE1BQU0sQ0FBQyxLQUFHLElBQUUsS0FBSyxNQUFNLENBQUM7QUFBQSxJQUFHLE9BQU8sTUFBSSxNQUFJLEtBQUcsS0FBSTtBQUFBLEtBQUcsWUFBVyxNQUFFLEdBQUUsV0FBVSxFQUFDLE9BQU0sQ0FBQyxHQUFFLEdBQUUsTUFBSSxFQUFFLGNBQWMsRUFBRSxhQUFhLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxZQUFXLE1BQUUsR0FBRSxXQUFVLEVBQUMsT0FBTSxPQUFHLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQUUsWUFBVyxNQUFFLEVBQUMsQ0FBQyxHQUFFO0FBQUE7QUFBRSxJQUFNLEtBQUcsR0FBRztBQUFaLElBQWMsSUFBRSxJQUFJLElBQUksQ0FBQyxRQUFPLE1BQU0sQ0FBQztBQUF2QyxJQUF5QyxLQUFHO0FBQTVDLElBQStDLElBQUU7QUFBakQsSUFBd0QsSUFBRTtBQUExRCxJQUE4RCxLQUFHO0FBQWpFLElBQXFFLElBQUU7QUFBdkUsSUFBMkUsSUFBRSxHQUFHO0FBQWhGLElBQXdGLElBQUUsT0FBRyxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksSUFBSTtBQUFsSSxJQUFzSSxJQUFFLE9BQUcsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLElBQUk7QUFBaEwsSUFBb0wsS0FBRyxPQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsSUFBSSxPQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQWxOLElBQW9OLElBQUUsQ0FBQyxHQUFFLEdBQUUsTUFBSTtBQUFBLEVBQUMsTUFBTSxJQUFFLENBQUMsR0FBRyxDQUFDO0FBQUEsRUFBRSxJQUFJLElBQUUsT0FBRyxJQUFFLE9BQUcsSUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQU8sRUFBRSxDQUFDO0FBQUEsRUFBRSxZQUFVLEdBQUUsTUFBSyxFQUFFLFFBQVEsR0FBRTtBQUFBLElBQUMsTUFBTSxJQUFFLEVBQUUsQ0FBQztBQUFBLElBQUUsSUFBRyxJQUFFLEtBQUcsSUFBRSxFQUFFLEVBQUUsU0FBTyxNQUFJLEtBQUcsRUFBRSxLQUFLLENBQUMsR0FBRSxJQUFFLElBQUcsRUFBRSxJQUFJLENBQUMsTUFBSSxJQUFFLE1BQUcsSUFBRSxFQUFFLE1BQU0sSUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsV0FBVyxDQUFDLElBQUcsR0FBRTtBQUFBLE1BQUMsSUFBRSxNQUFJLE1BQUksSUFBRSxPQUFHLElBQUUsU0FBSSxNQUFJLE1BQUksSUFBRTtBQUFBLE1BQUk7QUFBQSxJQUFRO0FBQUEsSUFBQyxLQUFHLEdBQUUsTUFBSSxLQUFHLElBQUUsRUFBRSxTQUFPLE1BQUksRUFBRSxLQUFLLEVBQUUsR0FBRSxJQUFFO0FBQUEsRUFBRTtBQUFBLEdBQUUsS0FBRyxFQUFFLEVBQUUsU0FBTyxHQUFHLFNBQU8sS0FBRyxFQUFFLFNBQU8sTUFBSSxFQUFFLEVBQUUsU0FBTyxNQUFJLEVBQUUsSUFBSTtBQUFBO0FBQXhqQixJQUE0akIsS0FBRyxPQUFHO0FBQUEsRUFBQyxNQUFNLElBQUUsRUFBRSxNQUFNLEdBQUc7QUFBQSxFQUFFLElBQUksSUFBRSxFQUFFO0FBQUEsRUFBTyxNQUFLLElBQUUsT0FBSyxFQUFFLEVBQUUsSUFBRSxFQUFFLElBQUU7QUFBQSxJQUFJO0FBQUEsRUFBSSxPQUFPLE1BQUksRUFBRSxTQUFPLElBQUUsRUFBRSxNQUFNLEdBQUUsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFO0FBQUE7QUFBcHNCLElBQXVzQixLQUFHLENBQUMsR0FBRSxHQUFFLElBQUUsQ0FBQyxNQUFJO0FBQUEsRUFBQyxJQUFHLEVBQUUsU0FBTyxTQUFJLEVBQUUsS0FBSyxNQUFJO0FBQUEsSUFBRyxPQUFNO0FBQUEsRUFBRyxJQUFJLElBQUUsSUFBRyxHQUFFO0FBQUEsRUFBRSxNQUFNLElBQUUsR0FBRyxDQUFDO0FBQUEsRUFBRSxJQUFJLElBQUUsQ0FBQyxFQUFFO0FBQUEsRUFBRSxZQUFVLEdBQUUsTUFBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLFFBQVEsR0FBRTtBQUFBLElBQUMsRUFBRSxTQUFPLFVBQUssRUFBRSxFQUFFLFNBQU8sS0FBRyxFQUFFLEVBQUUsU0FBTyxHQUFHLFVBQVU7QUFBQSxJQUFHLElBQUksSUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFPLEVBQUU7QUFBQSxJQUFFLElBQUcsTUFBSSxNQUFJLEtBQUcsTUFBSSxFQUFFLGFBQVcsU0FBSSxFQUFFLFNBQU8sV0FBTSxFQUFFLEtBQUssRUFBRSxHQUFFLElBQUUsS0FBSSxJQUFFLEtBQUcsRUFBRSxTQUFPLFdBQU0sRUFBRSxFQUFFLFNBQU8sTUFBSSxLQUFJLE9BQU0sRUFBRSxRQUFNLEVBQUUsS0FBRyxHQUFFO0FBQUEsTUFBQyxNQUFNLElBQUUsSUFBRSxHQUFFLElBQUUsSUFBRSxLQUFLLE9BQU8sRUFBRSxLQUFHLElBQUUsS0FBRyxDQUFDO0FBQUEsTUFBRSxLQUFLLE9BQU8sRUFBRSxLQUFHLEtBQUcsQ0FBQyxJQUFFLEtBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsTUFBRTtBQUFBLElBQVE7QUFBQSxJQUFDLElBQUcsSUFBRSxFQUFFLEtBQUcsS0FBRyxJQUFFLEtBQUcsRUFBRSxLQUFHLEdBQUU7QUFBQSxNQUFDLElBQUcsRUFBRSxhQUFXLFNBQUksSUFBRSxHQUFFO0FBQUEsUUFBQyxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsUUFBRTtBQUFBLE1BQVE7QUFBQSxNQUFDLEVBQUUsS0FBSyxFQUFFO0FBQUEsSUFBQztBQUFBLElBQUMsSUFBRyxJQUFFLEVBQUUsS0FBRyxLQUFHLEVBQUUsYUFBVyxPQUFHO0FBQUEsTUFBQyxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsTUFBRTtBQUFBLElBQVE7QUFBQSxJQUFDLEVBQUUsRUFBRSxTQUFPLE1BQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxFQUFFLFNBQU8sVUFBSyxJQUFFLEVBQUUsSUFBSSxPQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUEsRUFBRyxNQUFNLElBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSztBQUFBLENBQzV0d0IsQ0FBQztBQUFBLEVBQUUsWUFBVSxHQUFFLE1BQUssRUFBRSxRQUFRLEdBQUU7QUFBQSxJQUFDLElBQUcsS0FBRyxHQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUU7QUFBQSxN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QUFRLEVBQUMsQ0FBQztBQUFBLEVBQUkscUJBQW1CLEdBQUUsQ0FBQyxHQUFFLEVBQUUsU0FBTyxFQUFFLFdBQVcsSUFBRTtBQUFBLEVBQUUsTUFBTSxJQUFFLENBQUMsS0FBRyxNQUFLLEdBQUUsVUFBUyxRQUFLO0FBQUEsSUFBQyxNQUFNLElBQUUsT0FBTyxDQUFDO0FBQUEsSUFBRSxJQUFHLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRTtBQUFBLE1BQUMsS0FBRyxFQUFFLE1BQU0seUJBQUUsSUFBSSxHQUFFLFFBQVEsS0FBSyxDQUFDO0FBQUEsTUFBRTtBQUFBLElBQU07QUFBQSxJQUFDLEtBQUk7QUFBQSxNQUFFO0FBQUEsSUFBTyxNQUFNLElBQUUsTUFBSSxXQUFTLElBQUUsSUFBRyxJQUFFLE1BQUksV0FBUyxLQUFHO0FBQUEsSUFBSSxhQUFXLEdBQUUsR0FBRSxHQUFFLE1BQUk7QUFBQSxNQUFHLFlBQVUsR0FBRSxHQUFFLE1BQUk7QUFBQSxRQUFDLEVBQUUsS0FBSyxZQUFXLENBQUM7QUFBQSxPQUFFO0FBQUEsS0FBRTtBQUFBO0FBQUEsRUFBRyxPQUFPLEtBQUcsRUFBRSxNQUFNLHlCQUFFLElBQUksR0FBRSxFQUFFLEtBQUssWUFBVyxDQUFDLEdBQUUsTUFBSTtBQUFBLElBQUMsRUFBRSxJQUFJLFlBQVcsQ0FBQyxHQUFFLEtBQUcsRUFBRSxNQUFNLHlCQUFFLElBQUksR0FBRSxFQUFFLFVBQVEsTUFBSSxFQUFFLFdBQVcsS0FBRSxHQUFFLEVBQUUsV0FBUyxPQUFHLEVBQUUsTUFBTTtBQUFBO0FBQUE7QUFBRyxJQUFJLEtBQUcsT0FBTztBQUFkLElBQTZCLEtBQUcsQ0FBQyxHQUFFLEdBQUUsT0FBSSxLQUFLLEtBQUUsR0FBRyxHQUFFLEdBQUUsRUFBQyxZQUFXLE1BQUcsY0FBYSxNQUFHLFVBQVMsTUFBRyxPQUFNLEVBQUMsQ0FBQyxJQUFFLEVBQUUsS0FBRztBQUFqSCxJQUFtSCxJQUFFLENBQUMsR0FBRSxHQUFFLE9BQUssR0FBRyxHQUFFLE9BQU8sS0FBRyxXQUFTLElBQUUsS0FBRyxHQUFFLENBQUMsR0FBRTtBQUFBO0FBQUcsTUFBTSxFQUFDO0FBQUEsRUFBQyxXQUFXLENBQUMsR0FBRSxJQUFFLE1BQUc7QUFBQSxJQUFDLEVBQUUsTUFBSyxPQUFPLEdBQUUsRUFBRSxNQUFLLFFBQVEsR0FBRSxFQUFFLE1BQUssY0FBYyxHQUFFLEVBQUUsTUFBSyxJQUFJLEdBQUUsRUFBRSxNQUFLLE1BQU0sR0FBRSxFQUFFLE1BQUssU0FBUyxHQUFFLEVBQUUsTUFBSyxVQUFTLEtBQUUsR0FBRSxFQUFFLE1BQUssY0FBYSxFQUFFLEdBQUUsRUFBRSxNQUFLLGdCQUFlLElBQUksR0FBRyxHQUFFLEVBQUUsTUFBSyxXQUFVLENBQUMsR0FBRSxFQUFFLE1BQUssU0FBUSxTQUFTLEdBQUUsRUFBRSxNQUFLLFNBQVEsRUFBRSxHQUFFLEVBQUUsTUFBSyxPQUFPO0FBQUEsSUFBRSxRQUFNLE9BQU0sSUFBRSxHQUFFLFFBQU8sSUFBRSxHQUFFLFFBQU8sR0FBRSxRQUFPLE1BQUssTUFBRztBQUFBLElBQUUsS0FBSyxPQUFLLEdBQUUsS0FBSyxhQUFXLEtBQUssV0FBVyxLQUFLLElBQUksR0FBRSxLQUFLLFFBQU0sS0FBSyxNQUFNLEtBQUssSUFBSSxHQUFFLEtBQUssU0FBTyxLQUFLLE9BQU8sS0FBSyxJQUFJLEdBQUUsS0FBSyxVQUFRLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxTQUFPLEdBQUUsS0FBSyxlQUFhLEdBQUUsS0FBSyxRQUFNLEdBQUUsS0FBSyxTQUFPO0FBQUE7QUFBQSxFQUFFLFdBQVcsR0FBRTtBQUFBLElBQUMsS0FBSyxhQUFhLE1BQU07QUFBQTtBQUFBLEVBQUUsYUFBYSxDQUFDLEdBQUUsR0FBRTtBQUFBLElBQUMsTUFBTSxJQUFFLEtBQUssYUFBYSxJQUFJLENBQUMsS0FBRyxDQUFDO0FBQUEsSUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFFLEtBQUssYUFBYSxJQUFJLEdBQUUsQ0FBQztBQUFBO0FBQUEsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFFO0FBQUEsSUFBQyxLQUFLLGNBQWMsR0FBRSxFQUFDLElBQUcsRUFBQyxDQUFDO0FBQUE7QUFBQSxFQUFFLElBQUksQ0FBQyxHQUFFLEdBQUU7QUFBQSxJQUFDLEtBQUssY0FBYyxHQUFFLEVBQUMsSUFBRyxHQUFFLE1BQUssS0FBRSxDQUFDO0FBQUE7QUFBQSxFQUFFLElBQUksQ0FBQyxNQUFLLEdBQUU7QUFBQSxJQUFDLE1BQU0sSUFBRSxLQUFLLGFBQWEsSUFBSSxDQUFDLEtBQUcsQ0FBQyxHQUFFLElBQUUsQ0FBQztBQUFBLElBQUUsV0FBVSxLQUFLO0FBQUEsTUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUUsRUFBRSxRQUFNLEVBQUUsS0FBSyxNQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFBLElBQUUsV0FBVSxLQUFLO0FBQUEsTUFBRSxFQUFFO0FBQUE7QUFBQSxFQUFFLE1BQU0sR0FBRTtBQUFBLElBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxHQUFFLE1BQUk7QUFBQSxNQUFDLElBQUcsS0FBSyxjQUFhO0FBQUEsUUFBQyxJQUFHLEtBQUssYUFBYTtBQUFBLFVBQVEsT0FBTyxLQUFLLFFBQU0sVUFBUyxLQUFLLE1BQU0sR0FBRSxFQUFFLENBQUM7QUFBQSxRQUFFLEtBQUssYUFBYSxpQkFBaUIsU0FBUSxNQUFJO0FBQUEsVUFBQyxLQUFLLFFBQU0sVUFBUyxLQUFLLE1BQU07QUFBQSxXQUFHLEVBQUMsTUFBSyxLQUFFLENBQUM7QUFBQSxNQUFDO0FBQUEsTUFBQyxNQUFNLElBQUUsSUFBSTtBQUFBLE1BQUUsRUFBRSxTQUFPLENBQUMsR0FBRSxHQUFFLE1BQUk7QUFBQSxRQUFDLEtBQUssV0FBUyxLQUFLLFFBQU0sS0FBSyxJQUFJLEtBQUssUUFBUSxPQUFNLEVBQUUsR0FBRSxLQUFLLFVBQVEsS0FBSyxJQUFJLFVBQVEsR0FBRSxLQUFLLEtBQUssU0FBUSxLQUFLLEtBQUssSUFBRyxFQUFFO0FBQUEsU0FBRyxLQUFLLE1BQU0sS0FBSyxDQUFDLEdBQUUs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RSxNQUFNO0FBQUEsQ0FDeE0sRUFBRSxNQUFNLENBQUM7QUFBQSxVQUFFLEtBQUssT0FBTyxNQUFNLEVBQUUsS0FBSztBQUFBLENBQ3BDLENBQUMsR0FBRSxLQUFLLGFBQVc7QUFBQSxVQUFFO0FBQUEsUUFBTTtBQUFBLFFBQUMsS0FBSyxPQUFPLE1BQU0sd0JBQUUsS0FBSyxDQUFDO0FBQUE7QUFBQSxNQUFFLEtBQUssT0FBTyxNQUFNLENBQUMsR0FBRSxLQUFLLFVBQVEsY0FBWSxLQUFLLFFBQU0sV0FBVSxLQUFLLGFBQVc7QUFBQSxJQUFDO0FBQUE7QUFBRTtBQUFBO0FBQUMsTUFBTSxXQUFXLEVBQUM7QUFBQSxNQUFLLE1BQU0sR0FBRTtBQUFBLElBQUMsT0FBTyxLQUFLLFFBQU0sSUFBRTtBQUFBO0FBQUEsTUFBTSxNQUFNLEdBQUU7QUFBQSxJQUFDLE9BQU8sS0FBSyxXQUFTO0FBQUE7QUFBQSxFQUFFLFdBQVcsQ0FBQyxHQUFFO0FBQUEsSUFBQyxNQUFNLEdBQUUsS0FBRSxHQUFFLEtBQUssVUFBUSxFQUFFLGNBQWEsS0FBSyxHQUFHLFNBQVEsTUFBSTtBQUFBLE1BQUMsS0FBSyxRQUFNLEtBQUs7QUFBQSxLQUFPLEdBQUUsS0FBSyxHQUFHLFdBQVUsT0FBRztBQUFBLE1BQUMsS0FBSyxPQUFPLE1BQU0seUJBQUUsS0FBSyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUssUUFBTSxHQUFFLEtBQUssUUFBTSxVQUFTLEtBQUssTUFBTTtBQUFBLEtBQUUsR0FBRSxLQUFLLEdBQUcsVUFBUyxNQUFJO0FBQUEsTUFBQyxLQUFLLFNBQU8sS0FBSztBQUFBLEtBQU07QUFBQTtBQUFFO0FBQUMsSUFBaWY7QUFBNDZDLElBQUUsSUFBSTtBQUFtNUYsTUFBTSxXQUFXLEVBQUM7QUFBQSxNQUFLLGVBQWUsR0FBRTtBQUFBLElBQUMsSUFBRyxLQUFLLFVBQVE7QUFBQSxNQUFTLE9BQU8sS0FBSztBQUFBLElBQU0sSUFBRyxLQUFLLFVBQVEsS0FBSyxNQUFNO0FBQUEsTUFBTyxPQUFNLEdBQUcsS0FBSztBQUFB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QUMsTUFBTSxNQUFHLFlBQVksSUFBSSxJQUFFLE1BQUcsTUFBSSxLQUFFLEtBQUssTUFBTSxLQUFFLEVBQUUsR0FBRSxLQUFFLEtBQUssTUFBTSxLQUFFLEVBQUU7QUFBQSxJQUFFLE9BQU8sS0FBRSxJQUFFLElBQUksT0FBTSxTQUFNLElBQUk7QUFBQSxLQUFPLElBQUUsQ0FBQyxLQUFFLE9BQUs7QUFBQSxJQUFDLElBQUUsTUFBRyxJQUFFLEdBQUcsR0FBRSxLQUFFLEdBQUUsRUFBQyxHQUFFLEtBQUUsWUFBWSxJQUFJLEdBQUUsUUFBUSxPQUFPLE1BQU0sR0FBRywyQkFBRSxLQUFLLENBQUM7QUFBQSxDQUMxVDtBQUFBLElBQUUsSUFBSSxLQUFFLEdBQUUsS0FBRTtBQUFBLElBQUUsR0FBRSxHQUFFLElBQUUsWUFBWSxNQUFJO0FBQUEsTUFBQyxJQUFHLEtBQUcsT0FBSTtBQUFBLFFBQUU7QUFBQSxNQUFPLEdBQUUsR0FBRSxLQUFFO0FBQUEsTUFBRSxNQUFNLEtBQUUsMkJBQUUsUUFBUSxFQUFFLEdBQUU7QUFBQSxNQUFFLElBQUc7QUFBQSxRQUFFLFFBQVEsT0FBTyxNQUFNLEdBQUcsT0FBTSxPQUFNO0FBQUEsTUFBTyxTQUFHLE1BQUk7QUFBQSxRQUFRLFFBQVEsT0FBTyxNQUFNLEdBQUcsT0FBTSxNQUFLLEdBQUUsRUFBQyxHQUFHO0FBQUEsTUFBTTtBQUFBLFFBQUMsTUFBTSxLQUFFLElBQUksT0FBTyxLQUFLLE1BQU0sRUFBQyxDQUFDLEVBQUUsTUFBTSxHQUFFLENBQUM7QUFBQSxRQUFFLFFBQVEsT0FBTyxNQUFNLEdBQUcsT0FBTSxLQUFJLElBQUc7QUFBQTtBQUFBLE1BQUUsS0FBRSxLQUFFLElBQUUsRUFBRSxTQUFPLEtBQUUsSUFBRSxHQUFFLEtBQUUsS0FBRSxFQUFFLFNBQU8sS0FBRSxRQUFLO0FBQUEsT0FBRyxFQUFDO0FBQUEsS0FBRyxLQUFFLENBQUMsS0FBRSxJQUFHLEtBQUUsTUFBSTtBQUFBLElBQUMsSUFBRSxPQUFHLGNBQWMsQ0FBQyxHQUFFLEdBQUU7QUFBQSxJQUFF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QUNHO0FBQUEsUUFDSCxNQUFNLFlBQVk7QUFBQSxRQUNsQjtBQUFBLFdBQ0c7QUFBQSxRQUNILE1BQU0sZUFBZTtBQUFBLFFBQ3JCO0FBQUEsV0FDRztBQUFBLFFBQ0gsTUFBTSxPQUFPO0FBQUEsUUFDYjtBQUFBLFdBQ0csUUFBUTtBQUFBLFFBQ1gsTUFBTSxnQkFBZ0IsS0FBSztBQUFBLFFBQzNCLEtBQUssYUFBYTtBQUFBLFFBQ2xCO0FBQUEsTUFDRjtBQUFBO0FBQUEsUUFFRSxNQUFNLElBQUksTUFBTSxvQkFBb0IsZUFBZTtBQUFBO0FBQUEsSUFHdkQsUUFBUSxLQUFLLENBQUM7QUFBQSxJQUNkLE9BQU8sUUFBTztBQUFBLElBQ2QsTUFBTSxXQUFXLGtCQUFpQixRQUFRLFNBQVEsSUFBSSxNQUFNLE9BQU8sTUFBSyxDQUFDO0FBQUEsSUFDekUsR0FBSSxNQUFNLFNBQVMsT0FBTztBQUFBLElBQzFCLFFBQVEsS0FBSyxDQUFDO0FBQUE7QUFBQTtBQUlsQixNQUFNLEtBQUs7IiwKICAiZGVidWdJZCI6ICIxNzIzMTk3NjY4MDNGQkUwNjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
|
|
2450
|
+
//# debugId=B3D0294CB2540FFF64756E2164756E21
|
|
2451
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Npc3RlcmFuc2kvc3JjL2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9waWNvY29sb3JzL3BpY29jb2xvcnMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjbGFjay9jb3JlL2Rpc3QvaW5kZXgubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2xhY2svcHJvbXB0cy9kaXN0L2luZGV4Lm1qcyIsICIuLi8uLi8uLi90b29scy91dGlscy9jb2xvcnMudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Zhc3Rlc3QtbGV2ZW5zaHRlaW4vZXNtL21vZC5qcyIsICIuLi8uLi9jb3JlL3NyYy9mdXp6eS1tYXRjaC50cyIsICIuLi8uLi9jb3JlL3NyYy9ncmFjZWZ1bC50cyIsICIuLi8uLi8uLi90b29scy91dGlscy9sb2dnZXIudHMiLCAiLi4vLi4vY29yZS9zcmMvcmV0cnkudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhbmRpdHlwZXMvZGlzdC9pbmRleC5qcyIsICIuLi8uLi9jb3JlL3NyYy92YWxpZGF0b3IudHMiLCAiLi4vc3JjL21ldGhvZHMvY3JlYXRlTWFjaGluZXMudHMiLCAiLi4vc3JjL2NvbmZpZy50cyIsICIuLi9zcmMvY29uc3RhbnRzLnRzIiwgIi4uL3NyYy90eXBlcy50cyIsICIuLi9zcmMvaGVscGVycy50cyIsICIuLi9zcmMvbGliL3dvcmtlci1tYW5hZ2VyLnRzIiwgIi4uL3NyYy9tZXRob2RzL2hlbHAudHMiLCAiLi4vc3JjL21ldGhvZHMvaW5pdC50cyIsICIuLi9zcmMvbWV0aG9kcy9yZW1vdmVNYWNoaW5lcy50cyIsICIuLi9zcmMvbWV0aG9kcy9ydW5NYWNoaW5lcy50cyIsICIuLi9zcmMvbWV0aG9kcy9zdGF0dXMudHMiLCAiLi4vc3JjL2NsaS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IEVTQyA9ICdcXHgxQic7XG5jb25zdCBDU0kgPSBgJHtFU0N9W2A7XG5jb25zdCBiZWVwID0gJ1xcdTAwMDcnO1xuXG5jb25zdCBjdXJzb3IgPSB7XG4gIHRvKHgsIHkpIHtcbiAgICBpZiAoIXkpIHJldHVybiBgJHtDU0l9JHt4ICsgMX1HYDtcbiAgICByZXR1cm4gYCR7Q1NJfSR7eSArIDF9OyR7eCArIDF9SGA7XG4gIH0sXG4gIG1vdmUoeCwgeSkge1xuICAgIGxldCByZXQgPSAnJztcblxuICAgIGlmICh4IDwgMCkgcmV0ICs9IGAke0NTSX0key14fURgO1xuICAgIGVsc2UgaWYgKHggPiAwKSByZXQgKz0gYCR7Q1NJfSR7eH1DYDtcblxuICAgIGlmICh5IDwgMCkgcmV0ICs9IGAke0NTSX0key15fUFgO1xuICAgIGVsc2UgaWYgKHkgPiAwKSByZXQgKz0gYCR7Q1NJfSR7eX1CYDtcblxuICAgIHJldHVybiByZXQ7XG4gIH0sXG4gIHVwOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9JHtjb3VudH1BYCxcbiAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9QmAsXG4gIGZvcndhcmQ6IChjb3VudCA9IDEpID0+IGAke0NTSX0ke2NvdW50fUNgLFxuICBiYWNrd2FyZDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9RGAsXG4gIG5leHRMaW5lOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9RWAucmVwZWF0KGNvdW50KSxcbiAgcHJldkxpbmU6IChjb3VudCA9IDEpID0+IGAke0NTSX1GYC5yZXBlYXQoY291bnQpLFxuICBsZWZ0OiBgJHtDU0l9R2AsXG4gIGhpZGU6IGAke0NTSX0/MjVsYCxcbiAgc2hvdzogYCR7Q1NJfT8yNWhgLFxuICBzYXZlOiBgJHtFU0N9N2AsXG4gIHJlc3RvcmU6IGAke0VTQ304YFxufVxuXG5jb25zdCBzY3JvbGwgPSB7XG4gIHVwOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9U2AucmVwZWF0KGNvdW50KSxcbiAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfVRgLnJlcGVhdChjb3VudClcbn1cblxuY29uc3QgZXJhc2UgPSB7XG4gIHNjcmVlbjogYCR7Q1NJfTJKYCxcbiAgdXA6IChjb3VudCA9IDEpID0+IGAke0NTSX0xSmAucmVwZWF0KGNvdW50KSxcbiAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfUpgLnJlcGVhdChjb3VudCksXG4gIGxpbmU6IGAke0NTSX0yS2AsXG4gIGxpbmVFbmQ6IGAke0NTSX1LYCxcbiAgbGluZVN0YXJ0OiBgJHtDU0l9MUtgLFxuICBsaW5lcyhjb3VudCkge1xuICAgIGxldCBjbGVhciA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKylcbiAgICAgIGNsZWFyICs9IHRoaXMubGluZSArIChpIDwgY291bnQgLSAxID8gY3Vyc29yLnVwKCkgOiAnJyk7XG4gICAgaWYgKGNvdW50KVxuICAgICAgY2xlYXIgKz0gY3Vyc29yLmxlZnQ7XG4gICAgcmV0dXJuIGNsZWFyO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBjdXJzb3IsIHNjcm9sbCwgZXJhc2UsIGJlZXAgfTtcbiIsCiAgICAibGV0IHAgPSBwcm9jZXNzIHx8IHt9LCBhcmd2ID0gcC5hcmd2IHx8IFtdLCBlbnYgPSBwLmVudiB8fCB7fVxubGV0IGlzQ29sb3JTdXBwb3J0ZWQgPVxuXHQhKCEhZW52Lk5PX0NPTE9SIHx8IGFyZ3YuaW5jbHVkZXMoXCItLW5vLWNvbG9yXCIpKSAmJlxuXHQoISFlbnYuRk9SQ0VfQ09MT1IgfHwgYXJndi5pbmNsdWRlcyhcIi0tY29sb3JcIikgfHwgcC5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiIHx8ICgocC5zdGRvdXQgfHwge30pLmlzVFRZICYmIGVudi5URVJNICE9PSBcImR1bWJcIikgfHwgISFlbnYuQ0kpXG5cbmxldCBmb3JtYXR0ZXIgPSAob3BlbiwgY2xvc2UsIHJlcGxhY2UgPSBvcGVuKSA9PlxuXHRpbnB1dCA9PiB7XG5cdFx0bGV0IHN0cmluZyA9IFwiXCIgKyBpbnB1dCwgaW5kZXggPSBzdHJpbmcuaW5kZXhPZihjbG9zZSwgb3Blbi5sZW5ndGgpXG5cdFx0cmV0dXJuIH5pbmRleCA/IG9wZW4gKyByZXBsYWNlQ2xvc2Uoc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSwgaW5kZXgpICsgY2xvc2UgOiBvcGVuICsgc3RyaW5nICsgY2xvc2Vcblx0fVxuXG5sZXQgcmVwbGFjZUNsb3NlID0gKHN0cmluZywgY2xvc2UsIHJlcGxhY2UsIGluZGV4KSA9PiB7XG5cdGxldCByZXN1bHQgPSBcIlwiLCBjdXJzb3IgPSAwXG5cdGRvIHtcblx0XHRyZXN1bHQgKz0gc3RyaW5nLnN1YnN0cmluZyhjdXJzb3IsIGluZGV4KSArIHJlcGxhY2Vcblx0XHRjdXJzb3IgPSBpbmRleCArIGNsb3NlLmxlbmd0aFxuXHRcdGluZGV4ID0gc3RyaW5nLmluZGV4T2YoY2xvc2UsIGN1cnNvcilcblx0fSB3aGlsZSAofmluZGV4KVxuXHRyZXR1cm4gcmVzdWx0ICsgc3RyaW5nLnN1YnN0cmluZyhjdXJzb3IpXG59XG5cbmxldCBjcmVhdGVDb2xvcnMgPSAoZW5hYmxlZCA9IGlzQ29sb3JTdXBwb3J0ZWQpID0+IHtcblx0bGV0IGYgPSBlbmFibGVkID8gZm9ybWF0dGVyIDogKCkgPT4gU3RyaW5nXG5cdHJldHVybiB7XG5cdFx0aXNDb2xvclN1cHBvcnRlZDogZW5hYmxlZCxcblx0XHRyZXNldDogZihcIlxceDFiWzBtXCIsIFwiXFx4MWJbMG1cIiksXG5cdFx0Ym9sZDogZihcIlxceDFiWzFtXCIsIFwiXFx4MWJbMjJtXCIsIFwiXFx4MWJbMjJtXFx4MWJbMW1cIiksXG5cdFx0ZGltOiBmKFwiXFx4MWJbMm1cIiwgXCJcXHgxYlsyMm1cIiwgXCJcXHgxYlsyMm1cXHgxYlsybVwiKSxcblx0XHRpdGFsaWM6IGYoXCJcXHgxYlszbVwiLCBcIlxceDFiWzIzbVwiKSxcblx0XHR1bmRlcmxpbmU6IGYoXCJcXHgxYls0bVwiLCBcIlxceDFiWzI0bVwiKSxcblx0XHRpbnZlcnNlOiBmKFwiXFx4MWJbN21cIiwgXCJcXHgxYlsyN21cIiksXG5cdFx0aGlkZGVuOiBmKFwiXFx4MWJbOG1cIiwgXCJcXHgxYlsyOG1cIiksXG5cdFx0c3RyaWtldGhyb3VnaDogZihcIlxceDFiWzltXCIsIFwiXFx4MWJbMjltXCIpLFxuXG5cdFx0YmxhY2s6IGYoXCJcXHgxYlszMG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0cmVkOiBmKFwiXFx4MWJbMzFtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdGdyZWVuOiBmKFwiXFx4MWJbMzJtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdHllbGxvdzogZihcIlxceDFiWzMzbVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRibHVlOiBmKFwiXFx4MWJbMzRtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdG1hZ2VudGE6IGYoXCJcXHgxYlszNW1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0Y3lhbjogZihcIlxceDFiWzM2bVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHR3aGl0ZTogZihcIlxceDFiWzM3bVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRncmF5OiBmKFwiXFx4MWJbOTBtXCIsIFwiXFx4MWJbMzltXCIpLFxuXG5cdFx0YmdCbGFjazogZihcIlxceDFiWzQwbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRiZ1JlZDogZihcIlxceDFiWzQxbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRiZ0dyZWVuOiBmKFwiXFx4MWJbNDJtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdGJnWWVsbG93OiBmKFwiXFx4MWJbNDNtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdGJnQmx1ZTogZihcIlxceDFiWzQ0bVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRiZ01hZ2VudGE6IGYoXCJcXHgxYls0NW1cIiwgXCJcXHgxYls0OW1cIiksXG5cdFx0YmdDeWFuOiBmKFwiXFx4MWJbNDZtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdGJnV2hpdGU6IGYoXCJcXHgxYls0N21cIiwgXCJcXHgxYls0OW1cIiksXG5cblx0XHRibGFja0JyaWdodDogZihcIlxceDFiWzkwbVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRyZWRCcmlnaHQ6IGYoXCJcXHgxYls5MW1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0Z3JlZW5CcmlnaHQ6IGYoXCJcXHgxYls5Mm1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0eWVsbG93QnJpZ2h0OiBmKFwiXFx4MWJbOTNtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdGJsdWVCcmlnaHQ6IGYoXCJcXHgxYls5NG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0bWFnZW50YUJyaWdodDogZihcIlxceDFiWzk1bVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRjeWFuQnJpZ2h0OiBmKFwiXFx4MWJbOTZtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdHdoaXRlQnJpZ2h0OiBmKFwiXFx4MWJbOTdtXCIsIFwiXFx4MWJbMzltXCIpLFxuXG5cdFx0YmdCbGFja0JyaWdodDogZihcIlxceDFiWzEwMG1cIiwgXCJcXHgxYls0OW1cIiksXG5cdFx0YmdSZWRCcmlnaHQ6IGYoXCJcXHgxYlsxMDFtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdGJnR3JlZW5CcmlnaHQ6IGYoXCJcXHgxYlsxMDJtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdGJnWWVsbG93QnJpZ2h0OiBmKFwiXFx4MWJbMTAzbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRiZ0JsdWVCcmlnaHQ6IGYoXCJcXHgxYlsxMDRtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdGJnTWFnZW50YUJyaWdodDogZihcIlxceDFiWzEwNW1cIiwgXCJcXHgxYls0OW1cIiksXG5cdFx0YmdDeWFuQnJpZ2h0OiBmKFwiXFx4MWJbMTA2bVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRiZ1doaXRlQnJpZ2h0OiBmKFwiXFx4MWJbMTA3bVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUNvbG9ycygpXG5tb2R1bGUuZXhwb3J0cy5jcmVhdGVDb2xvcnMgPSBjcmVhdGVDb2xvcnNcbiIsCiAgICAiaW1wb3J0e2N1cnNvciBhcyBsLGVyYXNlIGFzIGJ9ZnJvbVwic2lzdGVyYW5zaVwiO2ltcG9ydHtzdGRpbiBhcyBqLHN0ZG91dCBhcyBNfWZyb21cIm5vZGU6cHJvY2Vzc1wiO2ltcG9ydCphcyBnIGZyb21cIm5vZGU6cmVhZGxpbmVcIjtpbXBvcnQgTyBmcm9tXCJub2RlOnJlYWRsaW5lXCI7aW1wb3J0e1dyaXRhYmxlIGFzIFh9ZnJvbVwibm9kZTpzdHJlYW1cIjtpbXBvcnQgdiBmcm9tXCJwaWNvY29sb3JzXCI7ZnVuY3Rpb24gREQoe29ubHlGaXJzdDplPSExfT17fSl7Y29uc3QgdD1bXCJbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT8oPzpcXFxcdTAwMDd8XFxcXHUwMDFCXFxcXHUwMDVDfFxcXFx1MDA5QykpXCIsXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKVwiXS5qb2luKFwifFwiKTtyZXR1cm4gbmV3IFJlZ0V4cCh0LGU/dm9pZCAwOlwiZ1wiKX1jb25zdCB1RD1ERCgpO2Z1bmN0aW9uIFAoZSl7aWYodHlwZW9mIGUhPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBcXGBzdHJpbmdcXGAsIGdvdCBcXGAke3R5cGVvZiBlfVxcYGApO3JldHVybiBlLnJlcGxhY2UodUQsXCJcIil9ZnVuY3Rpb24gTChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxcImRlZmF1bHRcIik/ZS5kZWZhdWx0OmV9dmFyIFc9e2V4cG9ydHM6e319OyhmdW5jdGlvbihlKXt2YXIgdT17fTtlLmV4cG9ydHM9dSx1LmVhc3RBc2lhbldpZHRoPWZ1bmN0aW9uKEYpe3ZhciBzPUYuY2hhckNvZGVBdCgwKSxpPUYubGVuZ3RoPT0yP0YuY2hhckNvZGVBdCgxKTowLEQ9cztyZXR1cm4gNTUyOTY8PXMmJnM8PTU2MzE5JiY1NjMyMDw9aSYmaTw9NTczNDMmJihzJj0xMDIzLGkmPTEwMjMsRD1zPDwxMHxpLEQrPTY1NTM2KSxEPT0xMjI4OHx8NjUyODE8PUQmJkQ8PTY1Mzc2fHw2NTUwNDw9RCYmRDw9NjU1MTA/XCJGXCI6RD09ODM2MXx8NjUzNzc8PUQmJkQ8PTY1NDcwfHw2NTQ3NDw9RCYmRDw9NjU0Nzl8fDY1NDgyPD1EJiZEPD02NTQ4N3x8NjU0OTA8PUQmJkQ8PTY1NDk1fHw2NTQ5ODw9RCYmRDw9NjU1MDB8fDY1NTEyPD1EJiZEPD02NTUxOD9cIkhcIjo0MzUyPD1EJiZEPD00NDQ3fHw0NTE1PD1EJiZEPD00NTE5fHw0NjAyPD1EJiZEPD00NjA3fHw5MDAxPD1EJiZEPD05MDAyfHwxMTkwNDw9RCYmRDw9MTE5Mjl8fDExOTMxPD1EJiZEPD0xMjAxOXx8MTIwMzI8PUQmJkQ8PTEyMjQ1fHwxMjI3Mjw9RCYmRDw9MTIyODN8fDEyMjg5PD1EJiZEPD0xMjM1MHx8MTIzNTM8PUQmJkQ8PTEyNDM4fHwxMjQ0MTw9RCYmRDw9MTI1NDN8fDEyNTQ5PD1EJiZEPD0xMjU4OXx8MTI1OTM8PUQmJkQ8PTEyNjg2fHwxMjY4ODw9RCYmRDw9MTI3MzB8fDEyNzM2PD1EJiZEPD0xMjc3MXx8MTI3ODQ8PUQmJkQ8PTEyODMwfHwxMjgzMjw9RCYmRDw9MTI4NzF8fDEyODgwPD1EJiZEPD0xMzA1NHx8MTMwNTY8PUQmJkQ8PTE5OTAzfHwxOTk2ODw9RCYmRDw9NDIxMjR8fDQyMTI4PD1EJiZEPD00MjE4Mnx8NDMzNjA8PUQmJkQ8PTQzMzg4fHw0NDAzMjw9RCYmRDw9NTUyMDN8fDU1MjE2PD1EJiZEPD01NTIzOHx8NTUyNDM8PUQmJkQ8PTU1MjkxfHw2Mzc0NDw9RCYmRDw9NjQyNTV8fDY1MDQwPD1EJiZEPD02NTA0OXx8NjUwNzI8PUQmJkQ8PTY1MTA2fHw2NTEwODw9RCYmRDw9NjUxMjZ8fDY1MTI4PD1EJiZEPD02NTEzMXx8MTEwNTkyPD1EJiZEPD0xMTA1OTN8fDEyNzQ4ODw9RCYmRDw9MTI3NDkwfHwxMjc1MDQ8PUQmJkQ8PTEyNzU0Nnx8MTI3NTUyPD1EJiZEPD0xMjc1NjB8fDEyNzU2ODw9RCYmRDw9MTI3NTY5fHwxMzEwNzI8PUQmJkQ8PTE5NDM2N3x8MTc3OTg0PD1EJiZEPD0xOTY2MDV8fDE5NjYwODw9RCYmRDw9MjYyMTQxP1wiV1wiOjMyPD1EJiZEPD0xMjZ8fDE2Mjw9RCYmRDw9MTYzfHwxNjU8PUQmJkQ8PTE2Nnx8RD09MTcyfHxEPT0xNzV8fDEwMjE0PD1EJiZEPD0xMDIyMXx8MTA2Mjk8PUQmJkQ8PTEwNjMwP1wiTmFcIjpEPT0xNjF8fEQ9PTE2NHx8MTY3PD1EJiZEPD0xNjh8fEQ9PTE3MHx8MTczPD1EJiZEPD0xNzR8fDE3Njw9RCYmRDw9MTgwfHwxODI8PUQmJkQ8PTE4Nnx8MTg4PD1EJiZEPD0xOTF8fEQ9PTE5OHx8RD09MjA4fHwyMTU8PUQmJkQ8PTIxNnx8MjIyPD1EJiZEPD0yMjV8fEQ9PTIzMHx8MjMyPD1EJiZEPD0yMzR8fDIzNjw9RCYmRDw9MjM3fHxEPT0yNDB8fDI0Mjw9RCYmRDw9MjQzfHwyNDc8PUQmJkQ8PTI1MHx8RD09MjUyfHxEPT0yNTR8fEQ9PTI1N3x8RD09MjczfHxEPT0yNzV8fEQ9PTI4M3x8Mjk0PD1EJiZEPD0yOTV8fEQ9PTI5OXx8MzA1PD1EJiZEPD0zMDd8fEQ9PTMxMnx8MzE5PD1EJiZEPD0zMjJ8fEQ9PTMyNHx8MzI4PD1EJiZEPD0zMzF8fEQ9PTMzM3x8MzM4PD1EJiZEPD0zMzl8fDM1ODw9RCYmRDw9MzU5fHxEPT0zNjN8fEQ9PTQ2Mnx8RD09NDY0fHxEPT00NjZ8fEQ9PTQ2OHx8RD09NDcwfHxEPT00NzJ8fEQ9PTQ3NHx8RD09NDc2fHxEPT01OTN8fEQ9PTYwOXx8RD09NzA4fHxEPT03MTF8fDcxMzw9RCYmRDw9NzE1fHxEPT03MTd8fEQ9PTcyMHx8NzI4PD1EJiZEPD03MzF8fEQ9PTczM3x8RD09NzM1fHw3Njg8PUQmJkQ8PTg3OXx8OTEzPD1EJiZEPD05Mjl8fDkzMTw9RCYmRDw9OTM3fHw5NDU8PUQmJkQ8PTk2MXx8OTYzPD1EJiZEPD05Njl8fEQ9PTEwMjV8fDEwNDA8PUQmJkQ8PTExMDN8fEQ9PTExMDV8fEQ9PTgyMDh8fDgyMTE8PUQmJkQ8PTgyMTR8fDgyMTY8PUQmJkQ8PTgyMTd8fDgyMjA8PUQmJkQ8PTgyMjF8fDgyMjQ8PUQmJkQ8PTgyMjZ8fDgyMjg8PUQmJkQ8PTgyMzF8fEQ9PTgyNDB8fDgyNDI8PUQmJkQ8PTgyNDN8fEQ9PTgyNDV8fEQ9PTgyNTF8fEQ9PTgyNTR8fEQ9PTgzMDh8fEQ9PTgzMTl8fDgzMjE8PUQmJkQ8PTgzMjR8fEQ9PTgzNjR8fEQ9PTg0NTF8fEQ9PTg0NTN8fEQ9PTg0NTd8fEQ9PTg0Njd8fEQ9PTg0NzB8fDg0ODE8PUQmJkQ8PTg0ODJ8fEQ9PTg0ODZ8fEQ9PTg0OTF8fDg1MzE8PUQmJkQ8PTg1MzJ8fDg1Mzk8PUQmJkQ8PTg1NDJ8fDg1NDQ8PUQmJkQ8PTg1NTV8fDg1NjA8PUQmJkQ8PTg1Njl8fEQ9PTg1ODV8fDg1OTI8PUQmJkQ8PTg2MDF8fDg2MzI8PUQmJkQ8PTg2MzN8fEQ9PTg2NTh8fEQ9PTg2NjB8fEQ9PTg2Nzl8fEQ9PTg3MDR8fDg3MDY8PUQmJkQ8PTg3MDd8fDg3MTE8PUQmJkQ8PTg3MTJ8fEQ9PTg3MTV8fEQ9PTg3MTl8fEQ9PTg3MjF8fEQ9PTg3MjV8fEQ9PTg3MzB8fDg3MzM8PUQmJkQ8PTg3MzZ8fEQ9PTg3Mzl8fEQ9PTg3NDF8fDg3NDM8PUQmJkQ8PTg3NDh8fEQ9PTg3NTB8fDg3NTY8PUQmJkQ8PTg3NTl8fDg3NjQ8PUQmJkQ8PTg3NjV8fEQ9PTg3NzZ8fEQ9PTg3ODB8fEQ9PTg3ODZ8fDg4MDA8PUQmJkQ8PTg4MDF8fDg4MDQ8PUQmJkQ8PTg4MDd8fDg4MTA8PUQmJkQ8PTg4MTF8fDg4MTQ8PUQmJkQ8PTg4MTV8fDg4MzQ8PUQmJkQ8PTg4MzV8fDg4Mzg8PUQmJkQ8PTg4Mzl8fEQ9PTg4NTN8fEQ9PTg4NTd8fEQ9PTg4Njl8fEQ9PTg4OTV8fEQ9PTg5Nzh8fDkzMTI8PUQmJkQ8PTk0NDl8fDk0NTE8PUQmJkQ8PTk1NDd8fDk1NTI8PUQmJkQ8PTk1ODd8fDk2MDA8PUQmJkQ8PTk2MTV8fDk2MTg8PUQmJkQ8PTk2MjF8fDk2MzI8PUQmJkQ8PTk2MzN8fDk2MzU8PUQmJkQ8PTk2NDF8fDk2NTA8PUQmJkQ8PTk2NTF8fDk2NTQ8PUQmJkQ8PTk2NTV8fDk2NjA8PUQmJkQ8PTk2NjF8fDk2NjQ8PUQmJkQ8PTk2NjV8fDk2NzA8PUQmJkQ8PTk2NzJ8fEQ9PTk2NzV8fDk2Nzg8PUQmJkQ8PTk2ODF8fDk2OTg8PUQmJkQ8PTk3MDF8fEQ9PTk3MTF8fDk3MzM8PUQmJkQ8PTk3MzR8fEQ9PTk3Mzd8fDk3NDI8PUQmJkQ8PTk3NDN8fDk3NDg8PUQmJkQ8PTk3NDl8fEQ9PTk3NTZ8fEQ9PTk3NTh8fEQ9PTk3OTJ8fEQ9PTk3OTR8fDk4MjQ8PUQmJkQ8PTk4MjV8fDk4Mjc8PUQmJkQ8PTk4Mjl8fDk4MzE8PUQmJkQ8PTk4MzR8fDk4MzY8PUQmJkQ8PTk4Mzd8fEQ9PTk4Mzl8fDk4ODY8PUQmJkQ8PTk4ODd8fDk5MTg8PUQmJkQ8PTk5MTl8fDk5MjQ8PUQmJkQ8PTk5MzN8fDk5MzU8PUQmJkQ8PTk5NTN8fEQ9PTk5NTV8fDk5NjA8PUQmJkQ8PTk5ODN8fEQ9PTEwMDQ1fHxEPT0xMDA3MXx8MTAxMDI8PUQmJkQ8PTEwMTExfHwxMTA5Mzw9RCYmRDw9MTEwOTd8fDEyODcyPD1EJiZEPD0xMjg3OXx8NTczNDQ8PUQmJkQ8PTYzNzQzfHw2NTAyNDw9RCYmRDw9NjUwMzl8fEQ9PTY1NTMzfHwxMjcyMzI8PUQmJkQ8PTEyNzI0Mnx8MTI3MjQ4PD1EJiZEPD0xMjcyNzd8fDEyNzI4MDw9RCYmRDw9MTI3MzM3fHwxMjczNDQ8PUQmJkQ8PTEyNzM4Nnx8OTE3NzYwPD1EJiZEPD05MTc5OTl8fDk4MzA0MDw9RCYmRDw9MTA0ODU3M3x8MTA0ODU3Njw9RCYmRDw9MTExNDEwOT9cIkFcIjpcIk5cIn0sdS5jaGFyYWN0ZXJMZW5ndGg9ZnVuY3Rpb24oRil7dmFyIHM9dGhpcy5lYXN0QXNpYW5XaWR0aChGKTtyZXR1cm4gcz09XCJGXCJ8fHM9PVwiV1wifHxzPT1cIkFcIj8yOjF9O2Z1bmN0aW9uIHQoRil7cmV0dXJuIEYubWF0Y2goL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl18W15cXHVEODAwLVxcdURGRkZdL2cpfHxbXX11Lmxlbmd0aD1mdW5jdGlvbihGKXtmb3IodmFyIHM9dChGKSxpPTAsRD0wO0Q8cy5sZW5ndGg7RCsrKWk9aSt0aGlzLmNoYXJhY3Rlckxlbmd0aChzW0RdKTtyZXR1cm4gaX0sdS5zbGljZT1mdW5jdGlvbihGLHMsaSl7dGV4dExlbj11Lmxlbmd0aChGKSxzPXN8fDAsaT1pfHwxLHM8MCYmKHM9dGV4dExlbitzKSxpPDAmJihpPXRleHRMZW4raSk7Zm9yKHZhciBEPVwiXCIsQz0wLG49dChGKSxFPTA7RTxuLmxlbmd0aDtFKyspe3ZhciBhPW5bRV0sbz11Lmxlbmd0aChhKTtpZihDPj1zLShvPT0yPzE6MCkpaWYoQytvPD1pKUQrPWE7ZWxzZSBicmVhaztDKz1vfXJldHVybiBEfX0pKFcpO3ZhciB0RD1XLmV4cG9ydHM7Y29uc3QgZUQ9TCh0RCk7dmFyIEZEPWZ1bmN0aW9uKCl7cmV0dXJuL1xcdUQ4M0NcXHVERkY0XFx1REI0MFxcdURDNjdcXHVEQjQwXFx1REM2Mig/OlxcdURCNDBcXHVEQzc3XFx1REI0MFxcdURDNkNcXHVEQjQwXFx1REM3M3xcXHVEQjQwXFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REI0MFxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3KVxcdURCNDBcXHVEQzdGfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkZcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZGXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRV0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkVcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZFXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZEXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRFxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSl8KD86XFx1RDgzRVxcdURERDFcXHVEODNDXFx1REZGQ1xcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxfFxcdUQ4M0RcXHVEQzY5XFx1RDgzQ1xcdURGRkNcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKSg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkJcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1xcdURGRkIoPzpcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSl8XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRnxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKT98KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKXxcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNEXFx1REM2OHwoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHUyMDBEKD86XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pKXxcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRVxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXwoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pXFx1RkUwRnxcXHUyMDBEKD86KD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKXxcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkMpP3woPzpcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKXxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSlcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDEpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSkpfFxcdUQ4M0RcXHVEQzY5KD86XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQ1xcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSkpfFxcdUQ4M0VcXHVEREQxKD86XFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZGXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZEXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfCg/OlxcdUQ4M0RcXHVEQzQxXFx1RkUwRlxcdTIwMERcXHVEODNEXFx1RERFOHxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NcXHVERkZGXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZFXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZEXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZDXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZCXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XSl8XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pfFxcdUQ4M0RcXHVERTM2XFx1MjAwRFxcdUQ4M0NcXHVERjJCfFxcdUQ4M0NcXHVERkYzXFx1RkUwRlxcdTIwMERcXHUyNkE3fFxcdUQ4M0RcXHVEQzNCXFx1MjAwRFxcdTI3NDR8KD86KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKVxcdTIwMERbXFx1MjY0MFxcdTI2NDJdfFxcdUQ4M0NcXHVERkY0XFx1MjAwRFxcdTI2MjB8KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXxbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkIwXFx1MjZCMVxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RDNcXHUyNkU5XFx1MjZGMFxcdTI2RjFcXHUyNkY0XFx1MjZGN1xcdTI2RjhcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc2M1xcdTI3QTFcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTMwMzBcXHUzMDNEXFx1MzI5N1xcdTMyOTldfFxcdUQ4M0NbXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdURFMDJcXHVERTM3XFx1REYyMVxcdURGMjQtXFx1REYyQ1xcdURGMzZcXHVERjdEXFx1REY5NlxcdURGOTdcXHVERjk5LVxcdURGOUJcXHVERjlFXFx1REY5RlxcdURGQ0RcXHVERkNFXFx1REZENC1cXHVERkRGXFx1REZGNVxcdURGRjddfFxcdUQ4M0RbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdKVxcdUZFMEZ8XFx1RDgzQ1xcdURGRjNcXHVGRTBGXFx1MjAwRFxcdUQ4M0NcXHVERjA4fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY3fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVERTM1XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCfFxcdUQ4M0RcXHVERTJFXFx1MjAwRFxcdUQ4M0RcXHVEQ0E4fFxcdUQ4M0RcXHVEQzE1XFx1MjAwRFxcdUQ4M0VcXHVEREJBfFxcdUQ4M0VcXHVEREQxKD86XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkN8XFx1RDgzQ1xcdURGRkIpP3xcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZGfFxcdUQ4M0NcXHVERkZFfFxcdUQ4M0NcXHVERkZEfFxcdUQ4M0NcXHVERkZDfFxcdUQ4M0NcXHVERkZCKT98XFx1RDgzQ1xcdURERkRcXHVEODNDXFx1RERGMHxcXHVEODNDXFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdUQ4M0NcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RDgzRFxcdURDMDhcXHUyMDBEXFx1MkIxQnxcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSl8XFx1RDgzRFxcdURDNDFcXHVGRTBGfFxcdUQ4M0NcXHVERkYzXFx1RkUwRnxcXHVEODNDXFx1RERGRig/OlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXSl8XFx1RDgzQ1xcdURERkUoPzpcXHVEODNDW1xcdURERUFcXHVEREY5XSl8XFx1RDgzQ1xcdURERkMoPzpcXHVEODNDW1xcdURERUJcXHVEREY4XSl8XFx1RDgzQ1xcdURERkIoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdKXxcXHVEODNDXFx1RERGQSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY5KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY4KD86XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXSl8XFx1RDgzQ1xcdURERjcoPzpcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXSl8XFx1RDgzQ1xcdURERjUoPzpcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV0pfFxcdUQ4M0NcXHVEREYzKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdKXxcXHVEODNDXFx1RERGMig/OlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREYxKD86XFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdKXxcXHVEODNDXFx1RERGMCg/OlxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFRig/OlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV0pfFxcdUQ4M0NcXHVEREVFKD86XFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldKXxcXHVEODNDXFx1RERFRCg/OlxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXSl8XFx1RDgzQ1xcdURERUMoPzpcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdKXxcXHVEODNDXFx1RERFQig/OlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XSl8XFx1RDgzQ1xcdURERUEoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXSl8XFx1RDgzQ1xcdURERTkoPzpcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdKXxcXHVEODNDXFx1RERFOCg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREU3KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFNig/OlxcdUQ4M0NbXFx1RERFOC1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREYyXFx1RERGNFxcdURERjYtXFx1RERGQVxcdURERkNcXHVEREZEXFx1RERGRl0pfFsjXFwqMC05XVxcdUZFMEZcXHUyMEUzfFxcdTI3NjRcXHVGRTBGfCg/OlxcdUQ4M0NbXFx1REZDM1xcdURGQzRcXHVERkNBXXxcXHVEODNEW1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0pKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNDXFx1REZGNHwoPzpbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfCg/OltcXHUyNjFEXFx1MjcwQ1xcdTI3MERdfFxcdUQ4M0RbXFx1REQ3NFxcdUREOTBdKSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDMDhcXHVEQzE1XFx1REMzQlxcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFMkVcXHVERTM1XFx1REUzNlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XXxcXHVEODNDW1xcdURGQzNcXHVERkM0XFx1REZDQV18XFx1RDgzRFtcXHVEQzZFXFx1REM3MFxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNC1cXHVERUI2XXxcXHVEODNFW1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXXxbXFx1MjMxQVxcdTIzMUJcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNUZFXFx1MjYxNFxcdTI2MTVcXHUyNjQ4LVxcdTI2NTNcXHUyNjdGXFx1MjY5M1xcdTI2QTFcXHUyNkFBXFx1MjZBQlxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkYyXFx1MjZGM1xcdTI2RjVcXHUyNkZBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc5NS1cXHUyNzk3XFx1MjdCMFxcdTI3QkZcXHUyQjFCXFx1MkIxQ1xcdTJCNTBcXHUyQjU1XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjdDXFx1REY3RS1cXHVERjg0XFx1REY4Ni1cXHVERjkzXFx1REZBMC1cXHVERkMxXFx1REZDNVxcdURGQzZcXHVERkM4XFx1REZDOVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjgtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDMDdcXHVEQzA5LVxcdURDMTRcXHVEQzE2LVxcdURDM0FcXHVEQzNDLVxcdURDM0VcXHVEQzQwXFx1REM0NFxcdURDNDVcXHVEQzUxLVxcdURDNjVcXHVEQzZBXFx1REM3OS1cXHVEQzdCXFx1REM3RC1cXHVEQzgwXFx1REM4NFxcdURDODgtXFx1REM4RVxcdURDOTBcXHVEQzkyLVxcdURDQTlcXHVEQ0FCLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVEREE0XFx1RERGQi1cXHVERTJEXFx1REUyRi1cXHVERTM0XFx1REUzNy1cXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDFEXFx1REQyMC1cXHVERDI1XFx1REQyNy1cXHVERDJGXFx1REQzQVxcdUREM0YtXFx1REQ0NVxcdURENDctXFx1REQ3NlxcdURENzhcXHVERDdBLVxcdUREQjRcXHVEREI3XFx1RERCQVxcdUREQkMtXFx1RERDQlxcdURERDBcXHVEREUwLVxcdURERkZcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZdfCg/OltcXHUyMzFBXFx1MjMxQlxcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI1RkVcXHUyNjE0XFx1MjYxNVxcdTI2NDgtXFx1MjY1M1xcdTI2N0ZcXHUyNjkzXFx1MjZBMVxcdTI2QUFcXHUyNkFCXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDNVxcdTI2Q0VcXHUyNkQ0XFx1MjZFQVxcdTI2RjJcXHUyNkYzXFx1MjZGNVxcdTI2RkFcXHUyNkZEXFx1MjcwNVxcdTI3MEFcXHUyNzBCXFx1MjcyOFxcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc1N1xcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkIxQlxcdTJCMUNcXHUyQjUwXFx1MkI1NV18XFx1RDgzQ1tcXHVEQzA0XFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY5M1xcdURGQTAtXFx1REZDQVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjRcXHVERkY4LVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVEQzNFXFx1REM0MFxcdURDNDItXFx1RENGQ1xcdURDRkYtXFx1REQzRFxcdURENEItXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdUREN0FcXHVERDk1XFx1REQ5NlxcdUREQTRcXHVEREZCLVxcdURFNEZcXHVERTgwLVxcdURFQzVcXHVERUNDXFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSl8KD86WyNcXCowLTlcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRTktXFx1MjNGM1xcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQi1cXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjFEXFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5Mi1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTFcXHUyNkE3XFx1MjZBQVxcdTI2QUJcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkM4XFx1MjZDRVxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RDRcXHUyNkU5XFx1MjZFQVxcdTI2RjAtXFx1MjZGNVxcdTI2RjctXFx1MjZGQVxcdTI2RkRcXHUyNzAyXFx1MjcwNVxcdTI3MDgtXFx1MjcwRFxcdTI3MEZcXHUyNzEyXFx1MjcxNFxcdTI3MTZcXHUyNzFEXFx1MjcyMVxcdTI3MjhcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc2M1xcdTI3NjRcXHUyNzk1LVxcdTI3OTdcXHUyN0ExXFx1MjdCMFxcdTI3QkZcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTJCMUJcXHUyQjFDXFx1MkI1MFxcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUwMlxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjFcXHVERjI0LVxcdURGOTNcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUUtXFx1REZGMFxcdURGRjMtXFx1REZGNVxcdURGRjctXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDRkRcXHVEQ0ZGLVxcdUREM0RcXHVERDQ5LVxcdURENEVcXHVERDUwLVxcdURENjdcXHVERDZGXFx1REQ3MFxcdURENzMtXFx1REQ3QVxcdUREODdcXHVERDhBLVxcdUREOERcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVEREE0XFx1RERBNVxcdUREQThcXHVEREIxXFx1RERCMlxcdUREQkNcXHVEREMyLVxcdUREQzRcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREVcXHVEREUxXFx1RERFM1xcdURERThcXHVEREVGXFx1RERGM1xcdURERkEtXFx1REU0RlxcdURFODAtXFx1REVDNVxcdURFQ0ItXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUVCXFx1REVFQ1xcdURFRjBcXHVERUYzLVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSlcXHVGRTBGfCg/OltcXHUyNjFEXFx1MjZGOVxcdTI3MEEtXFx1MjcwRF18XFx1RDgzQ1tcXHVERjg1XFx1REZDMi1cXHVERkM0XFx1REZDN1xcdURGQ0EtXFx1REZDQ118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjYtXFx1REM3OFxcdURDN0NcXHVEQzgxLVxcdURDODNcXHVEQzg1LVxcdURDODdcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDc0XFx1REQ3NVxcdUREN0FcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVERTQ1LVxcdURFNDdcXHVERTRCLVxcdURFNEZcXHVERUEzXFx1REVCNC1cXHVERUI2XFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDI2XFx1REQzMC1cXHVERDM5XFx1REQzQy1cXHVERDNFXFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCOFxcdUREQjlcXHVEREJCXFx1RERDRC1cXHVERENGXFx1REREMS1cXHVEREREXSkvZ307Y29uc3Qgc0Q9TChGRCk7ZnVuY3Rpb24gcChlLHU9e30pe2lmKHR5cGVvZiBlIT1cInN0cmluZ1wifHxlLmxlbmd0aD09PTB8fCh1PXthbWJpZ3VvdXNJc05hcnJvdzohMCwuLi51fSxlPVAoZSksZS5sZW5ndGg9PT0wKSlyZXR1cm4gMDtlPWUucmVwbGFjZShzRCgpLFwiICBcIik7Y29uc3QgdD11LmFtYmlndW91c0lzTmFycm93PzE6MjtsZXQgRj0wO2Zvcihjb25zdCBzIG9mIGUpe2NvbnN0IGk9cy5jb2RlUG9pbnRBdCgwKTtpZihpPD0zMXx8aT49MTI3JiZpPD0xNTl8fGk+PTc2OCYmaTw9ODc5KWNvbnRpbnVlO3N3aXRjaChlRC5lYXN0QXNpYW5XaWR0aChzKSl7Y2FzZVwiRlwiOmNhc2VcIldcIjpGKz0yO2JyZWFrO2Nhc2VcIkFcIjpGKz10O2JyZWFrO2RlZmF1bHQ6Ris9MX19cmV0dXJuIEZ9Y29uc3Qgdz0xMCxOPShlPTApPT51PT5gXFx4MUJbJHt1K2V9bWAsST0oZT0wKT0+dT0+YFxceDFCWyR7MzgrZX07NTske3V9bWAsUj0oZT0wKT0+KHUsdCxGKT0+YFxceDFCWyR7MzgrZX07Mjske3V9OyR7dH07JHtGfW1gLHI9e21vZGlmaWVyOntyZXNldDpbMCwwXSxib2xkOlsxLDIyXSxkaW06WzIsMjJdLGl0YWxpYzpbMywyM10sdW5kZXJsaW5lOls0LDI0XSxvdmVybGluZTpbNTMsNTVdLGludmVyc2U6WzcsMjddLGhpZGRlbjpbOCwyOF0sc3RyaWtldGhyb3VnaDpbOSwyOV19LGNvbG9yOntibGFjazpbMzAsMzldLHJlZDpbMzEsMzldLGdyZWVuOlszMiwzOV0seWVsbG93OlszMywzOV0sYmx1ZTpbMzQsMzldLG1hZ2VudGE6WzM1LDM5XSxjeWFuOlszNiwzOV0sd2hpdGU6WzM3LDM5XSxibGFja0JyaWdodDpbOTAsMzldLGdyYXk6WzkwLDM5XSxncmV5Ols5MCwzOV0scmVkQnJpZ2h0Ols5MSwzOV0sZ3JlZW5CcmlnaHQ6WzkyLDM5XSx5ZWxsb3dCcmlnaHQ6WzkzLDM5XSxibHVlQnJpZ2h0Ols5NCwzOV0sbWFnZW50YUJyaWdodDpbOTUsMzldLGN5YW5CcmlnaHQ6Wzk2LDM5XSx3aGl0ZUJyaWdodDpbOTcsMzldfSxiZ0NvbG9yOntiZ0JsYWNrOls0MCw0OV0sYmdSZWQ6WzQxLDQ5XSxiZ0dyZWVuOls0Miw0OV0sYmdZZWxsb3c6WzQzLDQ5XSxiZ0JsdWU6WzQ0LDQ5XSxiZ01hZ2VudGE6WzQ1LDQ5XSxiZ0N5YW46WzQ2LDQ5XSxiZ1doaXRlOls0Nyw0OV0sYmdCbGFja0JyaWdodDpbMTAwLDQ5XSxiZ0dyYXk6WzEwMCw0OV0sYmdHcmV5OlsxMDAsNDldLGJnUmVkQnJpZ2h0OlsxMDEsNDldLGJnR3JlZW5CcmlnaHQ6WzEwMiw0OV0sYmdZZWxsb3dCcmlnaHQ6WzEwMyw0OV0sYmdCbHVlQnJpZ2h0OlsxMDQsNDldLGJnTWFnZW50YUJyaWdodDpbMTA1LDQ5XSxiZ0N5YW5CcmlnaHQ6WzEwNiw0OV0sYmdXaGl0ZUJyaWdodDpbMTA3LDQ5XX19O09iamVjdC5rZXlzKHIubW9kaWZpZXIpO2NvbnN0IGlEPU9iamVjdC5rZXlzKHIuY29sb3IpLENEPU9iamVjdC5rZXlzKHIuYmdDb2xvcik7Wy4uLmlELC4uLkNEXTtmdW5jdGlvbiByRCgpe2NvbnN0IGU9bmV3IE1hcDtmb3IoY29uc3RbdSx0XW9mIE9iamVjdC5lbnRyaWVzKHIpKXtmb3IoY29uc3RbRixzXW9mIE9iamVjdC5lbnRyaWVzKHQpKXJbRl09e29wZW46YFxceDFCWyR7c1swXX1tYCxjbG9zZTpgXFx4MUJbJHtzWzFdfW1gfSx0W0ZdPXJbRl0sZS5zZXQoc1swXSxzWzFdKTtPYmplY3QuZGVmaW5lUHJvcGVydHkocix1LHt2YWx1ZTp0LGVudW1lcmFibGU6ITF9KX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsXCJjb2Rlc1wiLHt2YWx1ZTplLGVudW1lcmFibGU6ITF9KSxyLmNvbG9yLmNsb3NlPVwiXFx4MUJbMzltXCIsci5iZ0NvbG9yLmNsb3NlPVwiXFx4MUJbNDltXCIsci5jb2xvci5hbnNpPU4oKSxyLmNvbG9yLmFuc2kyNTY9SSgpLHIuY29sb3IuYW5zaTE2bT1SKCksci5iZ0NvbG9yLmFuc2k9Tih3KSxyLmJnQ29sb3IuYW5zaTI1Nj1JKHcpLHIuYmdDb2xvci5hbnNpMTZtPVIodyksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocix7cmdiVG9BbnNpMjU2Ont2YWx1ZToodSx0LEYpPT51PT09dCYmdD09PUY/dTw4PzE2OnU+MjQ4PzIzMTpNYXRoLnJvdW5kKCh1LTgpLzI0NyoyNCkrMjMyOjE2KzM2Kk1hdGgucm91bmQodS8yNTUqNSkrNipNYXRoLnJvdW5kKHQvMjU1KjUpK01hdGgucm91bmQoRi8yNTUqNSksZW51bWVyYWJsZTohMX0saGV4VG9SZ2I6e3ZhbHVlOnU9Pntjb25zdCB0PS9bYS1mXFxkXXs2fXxbYS1mXFxkXXszfS9pLmV4ZWModS50b1N0cmluZygxNikpO2lmKCF0KXJldHVyblswLDAsMF07bGV0W0ZdPXQ7Ri5sZW5ndGg9PT0zJiYoRj1bLi4uRl0ubWFwKGk9PmkraSkuam9pbihcIlwiKSk7Y29uc3Qgcz1OdW1iZXIucGFyc2VJbnQoRiwxNik7cmV0dXJuW3M+PjE2JjI1NSxzPj44JjI1NSxzJjI1NV19LGVudW1lcmFibGU6ITF9LGhleFRvQW5zaTI1Njp7dmFsdWU6dT0+ci5yZ2JUb0Fuc2kyNTYoLi4uci5oZXhUb1JnYih1KSksZW51bWVyYWJsZTohMX0sYW5zaTI1NlRvQW5zaTp7dmFsdWU6dT0+e2lmKHU8OClyZXR1cm4gMzArdTtpZih1PDE2KXJldHVybiA5MCsodS04KTtsZXQgdCxGLHM7aWYodT49MjMyKXQ9KCh1LTIzMikqMTArOCkvMjU1LEY9dCxzPXQ7ZWxzZXt1LT0xNjtjb25zdCBDPXUlMzY7dD1NYXRoLmZsb29yKHUvMzYpLzUsRj1NYXRoLmZsb29yKEMvNikvNSxzPUMlNi81fWNvbnN0IGk9TWF0aC5tYXgodCxGLHMpKjI7aWYoaT09PTApcmV0dXJuIDMwO2xldCBEPTMwKyhNYXRoLnJvdW5kKHMpPDwyfE1hdGgucm91bmQoRik8PDF8TWF0aC5yb3VuZCh0KSk7cmV0dXJuIGk9PT0yJiYoRCs9NjApLER9LGVudW1lcmFibGU6ITF9LHJnYlRvQW5zaTp7dmFsdWU6KHUsdCxGKT0+ci5hbnNpMjU2VG9BbnNpKHIucmdiVG9BbnNpMjU2KHUsdCxGKSksZW51bWVyYWJsZTohMX0saGV4VG9BbnNpOnt2YWx1ZTp1PT5yLmFuc2kyNTZUb0Fuc2koci5oZXhUb0Fuc2kyNTYodSkpLGVudW1lcmFibGU6ITF9fSkscn1jb25zdCBFRD1yRCgpLGQ9bmV3IFNldChbXCJcXHgxQlwiLFwiXFx4OUJcIl0pLG9EPTM5LHk9XCJcXHgwN1wiLFY9XCJbXCIsbkQ9XCJdXCIsRz1cIm1cIixfPWAke25EfTg7O2Asej1lPT5gJHtkLnZhbHVlcygpLm5leHQoKS52YWx1ZX0ke1Z9JHtlfSR7R31gLEs9ZT0+YCR7ZC52YWx1ZXMoKS5uZXh0KCkudmFsdWV9JHtffSR7ZX0ke3l9YCxhRD1lPT5lLnNwbGl0KFwiIFwiKS5tYXAodT0+cCh1KSksaz0oZSx1LHQpPT57Y29uc3QgRj1bLi4udV07bGV0IHM9ITEsaT0hMSxEPXAoUChlW2UubGVuZ3RoLTFdKSk7Zm9yKGNvbnN0W0Msbl1vZiBGLmVudHJpZXMoKSl7Y29uc3QgRT1wKG4pO2lmKEQrRTw9dD9lW2UubGVuZ3RoLTFdKz1uOihlLnB1c2gobiksRD0wKSxkLmhhcyhuKSYmKHM9ITAsaT1GLnNsaWNlKEMrMSkuam9pbihcIlwiKS5zdGFydHNXaXRoKF8pKSxzKXtpP249PT15JiYocz0hMSxpPSExKTpuPT09RyYmKHM9ITEpO2NvbnRpbnVlfUQrPUUsRD09PXQmJkM8Ri5sZW5ndGgtMSYmKGUucHVzaChcIlwiKSxEPTApfSFEJiZlW2UubGVuZ3RoLTFdLmxlbmd0aD4wJiZlLmxlbmd0aD4xJiYoZVtlLmxlbmd0aC0yXSs9ZS5wb3AoKSl9LGhEPWU9Pntjb25zdCB1PWUuc3BsaXQoXCIgXCIpO2xldCB0PXUubGVuZ3RoO2Zvcig7dD4wJiYhKHAodVt0LTFdKT4wKTspdC0tO3JldHVybiB0PT09dS5sZW5ndGg/ZTp1LnNsaWNlKDAsdCkuam9pbihcIiBcIikrdS5zbGljZSh0KS5qb2luKFwiXCIpfSxsRD0oZSx1LHQ9e30pPT57aWYodC50cmltIT09ITEmJmUudHJpbSgpPT09XCJcIilyZXR1cm5cIlwiO2xldCBGPVwiXCIscyxpO2NvbnN0IEQ9YUQoZSk7bGV0IEM9W1wiXCJdO2Zvcihjb25zdFtFLGFdb2YgZS5zcGxpdChcIiBcIikuZW50cmllcygpKXt0LnRyaW0hPT0hMSYmKENbQy5sZW5ndGgtMV09Q1tDLmxlbmd0aC0xXS50cmltU3RhcnQoKSk7bGV0IG89cChDW0MubGVuZ3RoLTFdKTtpZihFIT09MCYmKG8+PXUmJih0LndvcmRXcmFwPT09ITF8fHQudHJpbT09PSExKSYmKEMucHVzaChcIlwiKSxvPTApLChvPjB8fHQudHJpbT09PSExKSYmKENbQy5sZW5ndGgtMV0rPVwiIFwiLG8rKykpLHQuaGFyZCYmRFtFXT51KXtjb25zdCBjPXUtbyxmPTErTWF0aC5mbG9vcigoRFtFXS1jLTEpL3UpO01hdGguZmxvb3IoKERbRV0tMSkvdSk8ZiYmQy5wdXNoKFwiXCIpLGsoQyxhLHUpO2NvbnRpbnVlfWlmKG8rRFtFXT51JiZvPjAmJkRbRV0+MCl7aWYodC53b3JkV3JhcD09PSExJiZvPHUpe2soQyxhLHUpO2NvbnRpbnVlfUMucHVzaChcIlwiKX1pZihvK0RbRV0+dSYmdC53b3JkV3JhcD09PSExKXtrKEMsYSx1KTtjb250aW51ZX1DW0MubGVuZ3RoLTFdKz1hfXQudHJpbSE9PSExJiYoQz1DLm1hcChFPT5oRChFKSkpO2NvbnN0IG49Wy4uLkMuam9pbihgXG5gKV07Zm9yKGNvbnN0W0UsYV1vZiBuLmVudHJpZXMoKSl7aWYoRis9YSxkLmhhcyhhKSl7Y29uc3R7Z3JvdXBzOmN9PW5ldyBSZWdFeHAoYCg/OlxcXFwke1Z9KD88Y29kZT5cXFxcZCspbXxcXFxcJHtffSg/PHVyaT4uKikke3l9KWApLmV4ZWMobi5zbGljZShFKS5qb2luKFwiXCIpKXx8e2dyb3Vwczp7fX07aWYoYy5jb2RlIT09dm9pZCAwKXtjb25zdCBmPU51bWJlci5wYXJzZUZsb2F0KGMuY29kZSk7cz1mPT09b0Q/dm9pZCAwOmZ9ZWxzZSBjLnVyaSE9PXZvaWQgMCYmKGk9Yy51cmkubGVuZ3RoPT09MD92b2lkIDA6Yy51cmkpfWNvbnN0IG89RUQuY29kZXMuZ2V0KE51bWJlcihzKSk7bltFKzFdPT09YFxuYD8oaSYmKEYrPUsoXCJcIikpLHMmJm8mJihGKz16KG8pKSk6YT09PWBcbmAmJihzJiZvJiYoRis9eihzKSksaSYmKEYrPUsoaSkpKX1yZXR1cm4gRn07ZnVuY3Rpb24gWShlLHUsdCl7cmV0dXJuIFN0cmluZyhlKS5ub3JtYWxpemUoKS5yZXBsYWNlKC9cXHJcXG4vZyxgXG5gKS5zcGxpdChgXG5gKS5tYXAoRj0+bEQoRix1LHQpKS5qb2luKGBcbmApfWNvbnN0IHhEPVtcInVwXCIsXCJkb3duXCIsXCJsZWZ0XCIsXCJyaWdodFwiLFwic3BhY2VcIixcImVudGVyXCIsXCJjYW5jZWxcIl0sQj17YWN0aW9uczpuZXcgU2V0KHhEKSxhbGlhc2VzOm5ldyBNYXAoW1tcImtcIixcInVwXCJdLFtcImpcIixcImRvd25cIl0sW1wiaFwiLFwibGVmdFwiXSxbXCJsXCIsXCJyaWdodFwiXSxbXCJcdTAwMDNcIixcImNhbmNlbFwiXSxbXCJlc2NhcGVcIixcImNhbmNlbFwiXV0pfTtmdW5jdGlvbiBjRChlKXtmb3IoY29uc3QgdSBpbiBlKXtjb25zdCB0PXU7aWYoIU9iamVjdC5oYXNPd24oZSx0KSljb250aW51ZTtjb25zdCBGPWVbdF07c3dpdGNoKHQpe2Nhc2VcImFsaWFzZXNcIjp7Zm9yKGNvbnN0IHMgaW4gRilPYmplY3QuaGFzT3duKEYscykmJihCLmFsaWFzZXMuaGFzKHMpfHxCLmFsaWFzZXMuc2V0KHMsRltzXSkpO2JyZWFrfX19fWZ1bmN0aW9uICQoZSx1KXtpZih0eXBlb2YgZT09XCJzdHJpbmdcIilyZXR1cm4gQi5hbGlhc2VzLmdldChlKT09PXU7Zm9yKGNvbnN0IHQgb2YgZSlpZih0IT09dm9pZCAwJiYkKHQsdSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gQkQoZSx1KXtpZihlPT09dSlyZXR1cm47Y29uc3QgdD1lLnNwbGl0KGBcbmApLEY9dS5zcGxpdChgXG5gKSxzPVtdO2ZvcihsZXQgaT0wO2k8TWF0aC5tYXgodC5sZW5ndGgsRi5sZW5ndGgpO2krKyl0W2ldIT09RltpXSYmcy5wdXNoKGkpO3JldHVybiBzfWNvbnN0IEFEPWdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybS5zdGFydHNXaXRoKFwid2luXCIpLFM9U3ltYm9sKFwiY2xhY2s6Y2FuY2VsXCIpO2Z1bmN0aW9uIHBEKGUpe3JldHVybiBlPT09U31mdW5jdGlvbiBtKGUsdSl7Y29uc3QgdD1lO3QuaXNUVFkmJnQuc2V0UmF3TW9kZSh1KX1mdW5jdGlvbiBmRCh7aW5wdXQ6ZT1qLG91dHB1dDp1PU0sb3ZlcndyaXRlOnQ9ITAsaGlkZUN1cnNvcjpGPSEwfT17fSl7Y29uc3Qgcz1nLmNyZWF0ZUludGVyZmFjZSh7aW5wdXQ6ZSxvdXRwdXQ6dSxwcm9tcHQ6XCJcIix0YWJTaXplOjF9KTtnLmVtaXRLZXlwcmVzc0V2ZW50cyhlLHMpLGUuaXNUVFkmJmUuc2V0UmF3TW9kZSghMCk7Y29uc3QgaT0oRCx7bmFtZTpDLHNlcXVlbmNlOm59KT0+e2NvbnN0IEU9U3RyaW5nKEQpO2lmKCQoW0UsQyxuXSxcImNhbmNlbFwiKSl7RiYmdS53cml0ZShsLnNob3cpLHByb2Nlc3MuZXhpdCgwKTtyZXR1cm59aWYoIXQpcmV0dXJuO2NvbnN0IGE9Qz09PVwicmV0dXJuXCI/MDotMSxvPUM9PT1cInJldHVyblwiPy0xOjA7Zy5tb3ZlQ3Vyc29yKHUsYSxvLCgpPT57Zy5jbGVhckxpbmUodSwxLCgpPT57ZS5vbmNlKFwia2V5cHJlc3NcIixpKX0pfSl9O3JldHVybiBGJiZ1LndyaXRlKGwuaGlkZSksZS5vbmNlKFwia2V5cHJlc3NcIixpKSwoKT0+e2Uub2ZmKFwia2V5cHJlc3NcIixpKSxGJiZ1LndyaXRlKGwuc2hvdyksZS5pc1RUWSYmIUFEJiZlLnNldFJhd01vZGUoITEpLHMudGVybWluYWw9ITEscy5jbG9zZSgpfX12YXIgZ0Q9T2JqZWN0LmRlZmluZVByb3BlcnR5LHZEPShlLHUsdCk9PnUgaW4gZT9nRChlLHUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KTplW3VdPXQsaD0oZSx1LHQpPT4odkQoZSx0eXBlb2YgdSE9XCJzeW1ib2xcIj91K1wiXCI6dSx0KSx0KTtjbGFzcyB4e2NvbnN0cnVjdG9yKHUsdD0hMCl7aCh0aGlzLFwiaW5wdXRcIiksaCh0aGlzLFwib3V0cHV0XCIpLGgodGhpcyxcIl9hYm9ydFNpZ25hbFwiKSxoKHRoaXMsXCJybFwiKSxoKHRoaXMsXCJvcHRzXCIpLGgodGhpcyxcIl9yZW5kZXJcIiksaCh0aGlzLFwiX3RyYWNrXCIsITEpLGgodGhpcyxcIl9wcmV2RnJhbWVcIixcIlwiKSxoKHRoaXMsXCJfc3Vic2NyaWJlcnNcIixuZXcgTWFwKSxoKHRoaXMsXCJfY3Vyc29yXCIsMCksaCh0aGlzLFwic3RhdGVcIixcImluaXRpYWxcIiksaCh0aGlzLFwiZXJyb3JcIixcIlwiKSxoKHRoaXMsXCJ2YWx1ZVwiKTtjb25zdHtpbnB1dDpGPWosb3V0cHV0OnM9TSxyZW5kZXI6aSxzaWduYWw6RCwuLi5DfT11O3RoaXMub3B0cz1DLHRoaXMub25LZXlwcmVzcz10aGlzLm9uS2V5cHJlc3MuYmluZCh0aGlzKSx0aGlzLmNsb3NlPXRoaXMuY2xvc2UuYmluZCh0aGlzKSx0aGlzLnJlbmRlcj10aGlzLnJlbmRlci5iaW5kKHRoaXMpLHRoaXMuX3JlbmRlcj1pLmJpbmQodGhpcyksdGhpcy5fdHJhY2s9dCx0aGlzLl9hYm9ydFNpZ25hbD1ELHRoaXMuaW5wdXQ9Rix0aGlzLm91dHB1dD1zfXVuc3Vic2NyaWJlKCl7dGhpcy5fc3Vic2NyaWJlcnMuY2xlYXIoKX1zZXRTdWJzY3JpYmVyKHUsdCl7Y29uc3QgRj10aGlzLl9zdWJzY3JpYmVycy5nZXQodSk/P1tdO0YucHVzaCh0KSx0aGlzLl9zdWJzY3JpYmVycy5zZXQodSxGKX1vbih1LHQpe3RoaXMuc2V0U3Vic2NyaWJlcih1LHtjYjp0fSl9b25jZSh1LHQpe3RoaXMuc2V0U3Vic2NyaWJlcih1LHtjYjp0LG9uY2U6ITB9KX1lbWl0KHUsLi4udCl7Y29uc3QgRj10aGlzLl9zdWJzY3JpYmVycy5nZXQodSk/P1tdLHM9W107Zm9yKGNvbnN0IGkgb2YgRilpLmNiKC4uLnQpLGkub25jZSYmcy5wdXNoKCgpPT5GLnNwbGljZShGLmluZGV4T2YoaSksMSkpO2Zvcihjb25zdCBpIG9mIHMpaSgpfXByb21wdCgpe3JldHVybiBuZXcgUHJvbWlzZSgodSx0KT0+e2lmKHRoaXMuX2Fib3J0U2lnbmFsKXtpZih0aGlzLl9hYm9ydFNpZ25hbC5hYm9ydGVkKXJldHVybiB0aGlzLnN0YXRlPVwiY2FuY2VsXCIsdGhpcy5jbG9zZSgpLHUoUyk7dGhpcy5fYWJvcnRTaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsKCk9Pnt0aGlzLnN0YXRlPVwiY2FuY2VsXCIsdGhpcy5jbG9zZSgpfSx7b25jZTohMH0pfWNvbnN0IEY9bmV3IFg7Ri5fd3JpdGU9KHMsaSxEKT0+e3RoaXMuX3RyYWNrJiYodGhpcy52YWx1ZT10aGlzLnJsPy5saW5lLnJlcGxhY2UoL1xcdC9nLFwiXCIpLHRoaXMuX2N1cnNvcj10aGlzLnJsPy5jdXJzb3I/PzAsdGhpcy5lbWl0KFwidmFsdWVcIix0aGlzLnZhbHVlKSksRCgpfSx0aGlzLmlucHV0LnBpcGUoRiksdGhpcy5ybD1PLmNyZWF0ZUludGVyZmFjZSh7aW5wdXQ6dGhpcy5pbnB1dCxvdXRwdXQ6Rix0YWJTaXplOjIscHJvbXB0OlwiXCIsZXNjYXBlQ29kZVRpbWVvdXQ6NTAsdGVybWluYWw6ITB9KSxPLmVtaXRLZXlwcmVzc0V2ZW50cyh0aGlzLmlucHV0LHRoaXMucmwpLHRoaXMucmwucHJvbXB0KCksdGhpcy5vcHRzLmluaXRpYWxWYWx1ZSE9PXZvaWQgMCYmdGhpcy5fdHJhY2smJnRoaXMucmwud3JpdGUodGhpcy5vcHRzLmluaXRpYWxWYWx1ZSksdGhpcy5pbnB1dC5vbihcImtleXByZXNzXCIsdGhpcy5vbktleXByZXNzKSxtKHRoaXMuaW5wdXQsITApLHRoaXMub3V0cHV0Lm9uKFwicmVzaXplXCIsdGhpcy5yZW5kZXIpLHRoaXMucmVuZGVyKCksdGhpcy5vbmNlKFwic3VibWl0XCIsKCk9Pnt0aGlzLm91dHB1dC53cml0ZShsLnNob3cpLHRoaXMub3V0cHV0Lm9mZihcInJlc2l6ZVwiLHRoaXMucmVuZGVyKSxtKHRoaXMuaW5wdXQsITEpLHUodGhpcy52YWx1ZSl9KSx0aGlzLm9uY2UoXCJjYW5jZWxcIiwoKT0+e3RoaXMub3V0cHV0LndyaXRlKGwuc2hvdyksdGhpcy5vdXRwdXQub2ZmKFwicmVzaXplXCIsdGhpcy5yZW5kZXIpLG0odGhpcy5pbnB1dCwhMSksdShTKX0pfSl9b25LZXlwcmVzcyh1LHQpe2lmKHRoaXMuc3RhdGU9PT1cImVycm9yXCImJih0aGlzLnN0YXRlPVwiYWN0aXZlXCIpLHQ/Lm5hbWUmJighdGhpcy5fdHJhY2smJkIuYWxpYXNlcy5oYXModC5uYW1lKSYmdGhpcy5lbWl0KFwiY3Vyc29yXCIsQi5hbGlhc2VzLmdldCh0Lm5hbWUpKSxCLmFjdGlvbnMuaGFzKHQubmFtZSkmJnRoaXMuZW1pdChcImN1cnNvclwiLHQubmFtZSkpLHUmJih1LnRvTG93ZXJDYXNlKCk9PT1cInlcInx8dS50b0xvd2VyQ2FzZSgpPT09XCJuXCIpJiZ0aGlzLmVtaXQoXCJjb25maXJtXCIsdS50b0xvd2VyQ2FzZSgpPT09XCJ5XCIpLHU9PT1cIlx0XCImJnRoaXMub3B0cy5wbGFjZWhvbGRlciYmKHRoaXMudmFsdWV8fCh0aGlzLnJsPy53cml0ZSh0aGlzLm9wdHMucGxhY2Vob2xkZXIpLHRoaXMuZW1pdChcInZhbHVlXCIsdGhpcy5vcHRzLnBsYWNlaG9sZGVyKSkpLHUmJnRoaXMuZW1pdChcImtleVwiLHUudG9Mb3dlckNhc2UoKSksdD8ubmFtZT09PVwicmV0dXJuXCIpe2lmKHRoaXMub3B0cy52YWxpZGF0ZSl7Y29uc3QgRj10aGlzLm9wdHMudmFsaWRhdGUodGhpcy52YWx1ZSk7RiYmKHRoaXMuZXJyb3I9RiBpbnN0YW5jZW9mIEVycm9yP0YubWVzc2FnZTpGLHRoaXMuc3RhdGU9XCJlcnJvclwiLHRoaXMucmw/LndyaXRlKHRoaXMudmFsdWUpKX10aGlzLnN0YXRlIT09XCJlcnJvclwiJiYodGhpcy5zdGF0ZT1cInN1Ym1pdFwiKX0kKFt1LHQ/Lm5hbWUsdD8uc2VxdWVuY2VdLFwiY2FuY2VsXCIpJiYodGhpcy5zdGF0ZT1cImNhbmNlbFwiKSwodGhpcy5zdGF0ZT09PVwic3VibWl0XCJ8fHRoaXMuc3RhdGU9PT1cImNhbmNlbFwiKSYmdGhpcy5lbWl0KFwiZmluYWxpemVcIiksdGhpcy5yZW5kZXIoKSwodGhpcy5zdGF0ZT09PVwic3VibWl0XCJ8fHRoaXMuc3RhdGU9PT1cImNhbmNlbFwiKSYmdGhpcy5jbG9zZSgpfWNsb3NlKCl7dGhpcy5pbnB1dC51bnBpcGUoKSx0aGlzLmlucHV0LnJlbW92ZUxpc3RlbmVyKFwia2V5cHJlc3NcIix0aGlzLm9uS2V5cHJlc3MpLHRoaXMub3V0cHV0LndyaXRlKGBcbmApLG0odGhpcy5pbnB1dCwhMSksdGhpcy5ybD8uY2xvc2UoKSx0aGlzLnJsPXZvaWQgMCx0aGlzLmVtaXQoYCR7dGhpcy5zdGF0ZX1gLHRoaXMudmFsdWUpLHRoaXMudW5zdWJzY3JpYmUoKX1yZXN0b3JlQ3Vyc29yKCl7Y29uc3QgdT1ZKHRoaXMuX3ByZXZGcmFtZSxwcm9jZXNzLnN0ZG91dC5jb2x1bW5zLHtoYXJkOiEwfSkuc3BsaXQoYFxuYCkubGVuZ3RoLTE7dGhpcy5vdXRwdXQud3JpdGUobC5tb3ZlKC05OTksdSotMSkpfXJlbmRlcigpe2NvbnN0IHU9WSh0aGlzLl9yZW5kZXIodGhpcyk/P1wiXCIscHJvY2Vzcy5zdGRvdXQuY29sdW1ucyx7aGFyZDohMH0pO2lmKHUhPT10aGlzLl9wcmV2RnJhbWUpe2lmKHRoaXMuc3RhdGU9PT1cImluaXRpYWxcIil0aGlzLm91dHB1dC53cml0ZShsLmhpZGUpO2Vsc2V7Y29uc3QgdD1CRCh0aGlzLl9wcmV2RnJhbWUsdSk7aWYodGhpcy5yZXN0b3JlQ3Vyc29yKCksdCYmdD8ubGVuZ3RoPT09MSl7Y29uc3QgRj10WzBdO3RoaXMub3V0cHV0LndyaXRlKGwubW92ZSgwLEYpKSx0aGlzLm91dHB1dC53cml0ZShiLmxpbmVzKDEpKTtjb25zdCBzPXUuc3BsaXQoYFxuYCk7dGhpcy5vdXRwdXQud3JpdGUoc1tGXSksdGhpcy5fcHJldkZyYW1lPXUsdGhpcy5vdXRwdXQud3JpdGUobC5tb3ZlKDAscy5sZW5ndGgtRi0xKSk7cmV0dXJufWlmKHQmJnQ/Lmxlbmd0aD4xKXtjb25zdCBGPXRbMF07dGhpcy5vdXRwdXQud3JpdGUobC5tb3ZlKDAsRikpLHRoaXMub3V0cHV0LndyaXRlKGIuZG93bigpKTtjb25zdCBzPXUuc3BsaXQoYFxuYCkuc2xpY2UoRik7dGhpcy5vdXRwdXQud3JpdGUocy5qb2luKGBcbmApKSx0aGlzLl9wcmV2RnJhbWU9dTtyZXR1cm59dGhpcy5vdXRwdXQud3JpdGUoYi5kb3duKCkpfXRoaXMub3V0cHV0LndyaXRlKHUpLHRoaXMuc3RhdGU9PT1cImluaXRpYWxcIiYmKHRoaXMuc3RhdGU9XCJhY3RpdmVcIiksdGhpcy5fcHJldkZyYW1lPXV9fX1jbGFzcyBkRCBleHRlbmRzIHh7Z2V0IGN1cnNvcigpe3JldHVybiB0aGlzLnZhbHVlPzA6MX1nZXQgX3ZhbHVlKCl7cmV0dXJuIHRoaXMuY3Vyc29yPT09MH1jb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSx0aGlzLnZhbHVlPSEhdS5pbml0aWFsVmFsdWUsdGhpcy5vbihcInZhbHVlXCIsKCk9Pnt0aGlzLnZhbHVlPXRoaXMuX3ZhbHVlfSksdGhpcy5vbihcImNvbmZpcm1cIix0PT57dGhpcy5vdXRwdXQud3JpdGUobC5tb3ZlKDAsLTEpKSx0aGlzLnZhbHVlPXQsdGhpcy5zdGF0ZT1cInN1Ym1pdFwiLHRoaXMuY2xvc2UoKX0pLHRoaXMub24oXCJjdXJzb3JcIiwoKT0+e3RoaXMudmFsdWU9IXRoaXMudmFsdWV9KX19dmFyIG1EPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxiRD0oZSx1LHQpPT51IGluIGU/bUQoZSx1LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp0fSk6ZVt1XT10LFo9KGUsdSx0KT0+KGJEKGUsdHlwZW9mIHUhPVwic3ltYm9sXCI/dStcIlwiOnUsdCksdCkscT0oZSx1LHQpPT57aWYoIXUuaGFzKGUpKXRocm93IFR5cGVFcnJvcihcIkNhbm5vdCBcIit0KX0sVD0oZSx1LHQpPT4ocShlLHUsXCJyZWFkIGZyb20gcHJpdmF0ZSBmaWVsZFwiKSx0P3QuY2FsbChlKTp1LmdldChlKSksd0Q9KGUsdSx0KT0+e2lmKHUuaGFzKGUpKXRocm93IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgdGhlIHNhbWUgcHJpdmF0ZSBtZW1iZXIgbW9yZSB0aGFuIG9uY2VcIik7dSBpbnN0YW5jZW9mIFdlYWtTZXQ/dS5hZGQoZSk6dS5zZXQoZSx0KX0seUQ9KGUsdSx0LEYpPT4ocShlLHUsXCJ3cml0ZSB0byBwcml2YXRlIGZpZWxkXCIpLEY/Ri5jYWxsKGUsdCk6dS5zZXQoZSx0KSx0KSxBO2xldCBfRD1jbGFzcyBleHRlbmRzIHh7Y29uc3RydWN0b3IodSl7c3VwZXIodSwhMSksWih0aGlzLFwib3B0aW9uc1wiKSxaKHRoaXMsXCJjdXJzb3JcIiwwKSx3RCh0aGlzLEEsdm9pZCAwKTtjb25zdHtvcHRpb25zOnR9PXU7eUQodGhpcyxBLHUuc2VsZWN0YWJsZUdyb3VwcyE9PSExKSx0aGlzLm9wdGlvbnM9T2JqZWN0LmVudHJpZXModCkuZmxhdE1hcCgoW0Ysc10pPT5be3ZhbHVlOkYsZ3JvdXA6ITAsbGFiZWw6Rn0sLi4ucy5tYXAoaT0+KHsuLi5pLGdyb3VwOkZ9KSldKSx0aGlzLnZhbHVlPVsuLi51LmluaXRpYWxWYWx1ZXM/P1tdXSx0aGlzLmN1cnNvcj1NYXRoLm1heCh0aGlzLm9wdGlvbnMuZmluZEluZGV4KCh7dmFsdWU6Rn0pPT5GPT09dS5jdXJzb3JBdCksVCh0aGlzLEEpPzA6MSksdGhpcy5vbihcImN1cnNvclwiLEY9Pntzd2l0Y2goRil7Y2FzZVwibGVmdFwiOmNhc2VcInVwXCI6e3RoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09MD90aGlzLm9wdGlvbnMubGVuZ3RoLTE6dGhpcy5jdXJzb3ItMTtjb25zdCBzPXRoaXMub3B0aW9uc1t0aGlzLmN1cnNvcl0/Lmdyb3VwPT09ITA7IVQodGhpcyxBKSYmcyYmKHRoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09MD90aGlzLm9wdGlvbnMubGVuZ3RoLTE6dGhpcy5jdXJzb3ItMSk7YnJlYWt9Y2FzZVwiZG93blwiOmNhc2VcInJpZ2h0XCI6e3RoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09dGhpcy5vcHRpb25zLmxlbmd0aC0xPzA6dGhpcy5jdXJzb3IrMTtjb25zdCBzPXRoaXMub3B0aW9uc1t0aGlzLmN1cnNvcl0/Lmdyb3VwPT09ITA7IVQodGhpcyxBKSYmcyYmKHRoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09dGhpcy5vcHRpb25zLmxlbmd0aC0xPzA6dGhpcy5jdXJzb3IrMSk7YnJlYWt9Y2FzZVwic3BhY2VcIjp0aGlzLnRvZ2dsZVZhbHVlKCk7YnJlYWt9fSl9Z2V0R3JvdXBJdGVtcyh1KXtyZXR1cm4gdGhpcy5vcHRpb25zLmZpbHRlcih0PT50Lmdyb3VwPT09dSl9aXNHcm91cFNlbGVjdGVkKHUpe3JldHVybiB0aGlzLmdldEdyb3VwSXRlbXModSkuZXZlcnkodD0+dGhpcy52YWx1ZS5pbmNsdWRlcyh0LnZhbHVlKSl9dG9nZ2xlVmFsdWUoKXtjb25zdCB1PXRoaXMub3B0aW9uc1t0aGlzLmN1cnNvcl07aWYodS5ncm91cD09PSEwKXtjb25zdCB0PXUudmFsdWUsRj10aGlzLmdldEdyb3VwSXRlbXModCk7dGhpcy5pc0dyb3VwU2VsZWN0ZWQodCk/dGhpcy52YWx1ZT10aGlzLnZhbHVlLmZpbHRlcihzPT5GLmZpbmRJbmRleChpPT5pLnZhbHVlPT09cyk9PT0tMSk6dGhpcy52YWx1ZT1bLi4udGhpcy52YWx1ZSwuLi5GLm1hcChzPT5zLnZhbHVlKV0sdGhpcy52YWx1ZT1BcnJheS5mcm9tKG5ldyBTZXQodGhpcy52YWx1ZSkpfWVsc2V7Y29uc3QgdD10aGlzLnZhbHVlLmluY2x1ZGVzKHUudmFsdWUpO3RoaXMudmFsdWU9dD90aGlzLnZhbHVlLmZpbHRlcihGPT5GIT09dS52YWx1ZSk6Wy4uLnRoaXMudmFsdWUsdS52YWx1ZV19fX07QT1uZXcgV2Vha01hcDt2YXIga0Q9T2JqZWN0LmRlZmluZVByb3BlcnR5LCREPShlLHUsdCk9PnUgaW4gZT9rRChlLHUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KTplW3VdPXQsSD0oZSx1LHQpPT4oJEQoZSx0eXBlb2YgdSE9XCJzeW1ib2xcIj91K1wiXCI6dSx0KSx0KTtsZXQgU0Q9Y2xhc3MgZXh0ZW5kcyB4e2NvbnN0cnVjdG9yKHUpe3N1cGVyKHUsITEpLEgodGhpcyxcIm9wdGlvbnNcIiksSCh0aGlzLFwiY3Vyc29yXCIsMCksdGhpcy5vcHRpb25zPXUub3B0aW9ucyx0aGlzLnZhbHVlPVsuLi51LmluaXRpYWxWYWx1ZXM/P1tdXSx0aGlzLmN1cnNvcj1NYXRoLm1heCh0aGlzLm9wdGlvbnMuZmluZEluZGV4KCh7dmFsdWU6dH0pPT50PT09dS5jdXJzb3JBdCksMCksdGhpcy5vbihcImtleVwiLHQ9Pnt0PT09XCJhXCImJnRoaXMudG9nZ2xlQWxsKCl9KSx0aGlzLm9uKFwiY3Vyc29yXCIsdD0+e3N3aXRjaCh0KXtjYXNlXCJsZWZ0XCI6Y2FzZVwidXBcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PTA/dGhpcy5vcHRpb25zLmxlbmd0aC0xOnRoaXMuY3Vyc29yLTE7YnJlYWs7Y2FzZVwiZG93blwiOmNhc2VcInJpZ2h0XCI6dGhpcy5jdXJzb3I9dGhpcy5jdXJzb3I9PT10aGlzLm9wdGlvbnMubGVuZ3RoLTE/MDp0aGlzLmN1cnNvcisxO2JyZWFrO2Nhc2VcInNwYWNlXCI6dGhpcy50b2dnbGVWYWx1ZSgpO2JyZWFrfX0pfWdldCBfdmFsdWUoKXtyZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXS52YWx1ZX10b2dnbGVBbGwoKXtjb25zdCB1PXRoaXMudmFsdWUubGVuZ3RoPT09dGhpcy5vcHRpb25zLmxlbmd0aDt0aGlzLnZhbHVlPXU/W106dGhpcy5vcHRpb25zLm1hcCh0PT50LnZhbHVlKX10b2dnbGVWYWx1ZSgpe2NvbnN0IHU9dGhpcy52YWx1ZS5pbmNsdWRlcyh0aGlzLl92YWx1ZSk7dGhpcy52YWx1ZT11P3RoaXMudmFsdWUuZmlsdGVyKHQ9PnQhPT10aGlzLl92YWx1ZSk6Wy4uLnRoaXMudmFsdWUsdGhpcy5fdmFsdWVdfX07dmFyIFREPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxqRD0oZSx1LHQpPT51IGluIGU/VEQoZSx1LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp0fSk6ZVt1XT10LFU9KGUsdSx0KT0+KGpEKGUsdHlwZW9mIHUhPVwic3ltYm9sXCI/dStcIlwiOnUsdCksdCk7Y2xhc3MgTUQgZXh0ZW5kcyB4e2NvbnN0cnVjdG9yKHttYXNrOnUsLi4udH0pe3N1cGVyKHQpLFUodGhpcyxcInZhbHVlV2l0aEN1cnNvclwiLFwiXCIpLFUodGhpcyxcIl9tYXNrXCIsXCJcXHUyMDIyXCIpLHRoaXMuX21hc2s9dT8/XCJcXHUyMDIyXCIsdGhpcy5vbihcImZpbmFsaXplXCIsKCk9Pnt0aGlzLnZhbHVlV2l0aEN1cnNvcj10aGlzLm1hc2tlZH0pLHRoaXMub24oXCJ2YWx1ZVwiLCgpPT57aWYodGhpcy5jdXJzb3I+PXRoaXMudmFsdWUubGVuZ3RoKXRoaXMudmFsdWVXaXRoQ3Vyc29yPWAke3RoaXMubWFza2VkfSR7di5pbnZlcnNlKHYuaGlkZGVuKFwiX1wiKSl9YDtlbHNle2NvbnN0IEY9dGhpcy5tYXNrZWQuc2xpY2UoMCx0aGlzLmN1cnNvcikscz10aGlzLm1hc2tlZC5zbGljZSh0aGlzLmN1cnNvcik7dGhpcy52YWx1ZVdpdGhDdXJzb3I9YCR7Rn0ke3YuaW52ZXJzZShzWzBdKX0ke3Muc2xpY2UoMSl9YH19KX1nZXQgY3Vyc29yKCl7cmV0dXJuIHRoaXMuX2N1cnNvcn1nZXQgbWFza2VkKCl7cmV0dXJuIHRoaXMudmFsdWUucmVwbGFjZUFsbCgvLi9nLHRoaXMuX21hc2spfX12YXIgT0Q9T2JqZWN0LmRlZmluZVByb3BlcnR5LFBEPShlLHUsdCk9PnUgaW4gZT9PRChlLHUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KTplW3VdPXQsSj0oZSx1LHQpPT4oUEQoZSx0eXBlb2YgdSE9XCJzeW1ib2xcIj91K1wiXCI6dSx0KSx0KTtjbGFzcyBMRCBleHRlbmRzIHh7Y29uc3RydWN0b3IodSl7c3VwZXIodSwhMSksSih0aGlzLFwib3B0aW9uc1wiKSxKKHRoaXMsXCJjdXJzb3JcIiwwKSx0aGlzLm9wdGlvbnM9dS5vcHRpb25zLHRoaXMuY3Vyc29yPXRoaXMub3B0aW9ucy5maW5kSW5kZXgoKHt2YWx1ZTp0fSk9PnQ9PT11LmluaXRpYWxWYWx1ZSksdGhpcy5jdXJzb3I9PT0tMSYmKHRoaXMuY3Vyc29yPTApLHRoaXMuY2hhbmdlVmFsdWUoKSx0aGlzLm9uKFwiY3Vyc29yXCIsdD0+e3N3aXRjaCh0KXtjYXNlXCJsZWZ0XCI6Y2FzZVwidXBcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PTA/dGhpcy5vcHRpb25zLmxlbmd0aC0xOnRoaXMuY3Vyc29yLTE7YnJlYWs7Y2FzZVwiZG93blwiOmNhc2VcInJpZ2h0XCI6dGhpcy5jdXJzb3I9dGhpcy5jdXJzb3I9PT10aGlzLm9wdGlvbnMubGVuZ3RoLTE/MDp0aGlzLmN1cnNvcisxO2JyZWFrfXRoaXMuY2hhbmdlVmFsdWUoKX0pfWdldCBfdmFsdWUoKXtyZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXX1jaGFuZ2VWYWx1ZSgpe3RoaXMudmFsdWU9dGhpcy5fdmFsdWUudmFsdWV9fXZhciBXRD1PYmplY3QuZGVmaW5lUHJvcGVydHksTkQ9KGUsdSx0KT0+dSBpbiBlP1dEKGUsdSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dH0pOmVbdV09dCxRPShlLHUsdCk9PihORChlLHR5cGVvZiB1IT1cInN5bWJvbFwiP3UrXCJcIjp1LHQpLHQpO2NsYXNzIElEIGV4dGVuZHMgeHtjb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSxRKHRoaXMsXCJvcHRpb25zXCIpLFEodGhpcyxcImN1cnNvclwiLDApLHRoaXMub3B0aW9ucz11Lm9wdGlvbnM7Y29uc3QgdD10aGlzLm9wdGlvbnMubWFwKCh7dmFsdWU6W0ZdfSk9PkY/LnRvTG93ZXJDYXNlKCkpO3RoaXMuY3Vyc29yPU1hdGgubWF4KHQuaW5kZXhPZih1LmluaXRpYWxWYWx1ZSksMCksdGhpcy5vbihcImtleVwiLEY9PntpZighdC5pbmNsdWRlcyhGKSlyZXR1cm47Y29uc3Qgcz10aGlzLm9wdGlvbnMuZmluZCgoe3ZhbHVlOltpXX0pPT5pPy50b0xvd2VyQ2FzZSgpPT09Rik7cyYmKHRoaXMudmFsdWU9cy52YWx1ZSx0aGlzLnN0YXRlPVwic3VibWl0XCIsdGhpcy5lbWl0KFwic3VibWl0XCIpKX0pfX1jbGFzcyBSRCBleHRlbmRzIHh7Z2V0IHZhbHVlV2l0aEN1cnNvcigpe2lmKHRoaXMuc3RhdGU9PT1cInN1Ym1pdFwiKXJldHVybiB0aGlzLnZhbHVlO2lmKHRoaXMuY3Vyc29yPj10aGlzLnZhbHVlLmxlbmd0aClyZXR1cm5gJHt0aGlzLnZhbHVlfVxcdTI1ODhgO2NvbnN0IHU9dGhpcy52YWx1ZS5zbGljZSgwLHRoaXMuY3Vyc29yKSxbdCwuLi5GXT10aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yKTtyZXR1cm5gJHt1fSR7di5pbnZlcnNlKHQpfSR7Ri5qb2luKFwiXCIpfWB9Z2V0IGN1cnNvcigpe3JldHVybiB0aGlzLl9jdXJzb3J9Y29uc3RydWN0b3IodSl7c3VwZXIodSksdGhpcy5vbihcImZpbmFsaXplXCIsKCk9Pnt0aGlzLnZhbHVlfHwodGhpcy52YWx1ZT11LmRlZmF1bHRWYWx1ZSl9KX19ZXhwb3J0e2REIGFzIENvbmZpcm1Qcm9tcHQsX0QgYXMgR3JvdXBNdWx0aVNlbGVjdFByb21wdCxTRCBhcyBNdWx0aVNlbGVjdFByb21wdCxNRCBhcyBQYXNzd29yZFByb21wdCx4IGFzIFByb21wdCxJRCBhcyBTZWxlY3RLZXlQcm9tcHQsTEQgYXMgU2VsZWN0UHJvbXB0LFJEIGFzIFRleHRQcm9tcHQsZkQgYXMgYmxvY2sscEQgYXMgaXNDYW5jZWwsY0QgYXMgdXBkYXRlU2V0dGluZ3N9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwKICAgICJpbXBvcnR7c3RyaXBWVENvbnRyb2xDaGFyYWN0ZXJzIGFzIFN9ZnJvbVwibm9kZTp1dGlsXCI7aW1wb3J0e1RleHRQcm9tcHQgYXMgUSxQYXNzd29yZFByb21wdCBhcyBYLENvbmZpcm1Qcm9tcHQgYXMgWixTZWxlY3RQcm9tcHQgYXMgZWUsU2VsZWN0S2V5UHJvbXB0IGFzIHRlLE11bHRpU2VsZWN0UHJvbXB0IGFzIHJlLEdyb3VwTXVsdGlTZWxlY3RQcm9tcHQgYXMgc2UsaXNDYW5jZWwgYXMgaWUsYmxvY2sgYXMgbmV9ZnJvbVwiQGNsYWNrL2NvcmVcIjtleHBvcnR7aXNDYW5jZWwsdXBkYXRlU2V0dGluZ3N9ZnJvbVwiQGNsYWNrL2NvcmVcIjtpbXBvcnQgeSBmcm9tXCJub2RlOnByb2Nlc3NcIjtpbXBvcnQgZSBmcm9tXCJwaWNvY29sb3JzXCI7aW1wb3J0e2N1cnNvciBhcyBvZSxlcmFzZSBhcyBhZX1mcm9tXCJzaXN0ZXJhbnNpXCI7ZnVuY3Rpb24gY2UoKXtyZXR1cm4geS5wbGF0Zm9ybSE9PVwid2luMzJcIj95LmVudi5URVJNIT09XCJsaW51eFwiOiEheS5lbnYuQ0l8fCEheS5lbnYuV1RfU0VTU0lPTnx8ISF5LmVudi5URVJNSU5VU19TVUJMSU1FfHx5LmVudi5Db25FbXVUYXNrPT09XCJ7Y21kOjpDbWRlcn1cInx8eS5lbnYuVEVSTV9QUk9HUkFNPT09XCJUZXJtaW51cy1TdWJsaW1lXCJ8fHkuZW52LlRFUk1fUFJPR1JBTT09PVwidnNjb2RlXCJ8fHkuZW52LlRFUk09PT1cInh0ZXJtLTI1NmNvbG9yXCJ8fHkuZW52LlRFUk09PT1cImFsYWNyaXR0eVwifHx5LmVudi5URVJNSU5BTF9FTVVMQVRPUj09PVwiSmV0QnJhaW5zLUplZGlUZXJtXCJ9Y29uc3QgVj1jZSgpLHU9KHQsbik9PlY/dDpuLGxlPXUoXCJcXHUyNUM2XCIsXCIqXCIpLEw9dShcIlxcdTI1QTBcIixcInhcIiksVz11KFwiXFx1MjVCMlwiLFwieFwiKSxDPXUoXCJcXHUyNUM3XCIsXCJvXCIpLHVlPXUoXCJcXHUyNTBDXCIsXCJUXCIpLG89dShcIlxcdTI1MDJcIixcInxcIiksZD11KFwiXFx1MjUxNFwiLFwiXFx1MjAxNFwiKSxrPXUoXCJcXHUyNUNGXCIsXCI+XCIpLFA9dShcIlxcdTI1Q0JcIixcIiBcIiksQT11KFwiXFx1MjVGQlwiLFwiW1xcdTIwMjJdXCIpLFQ9dShcIlxcdTI1RkNcIixcIlsrXVwiKSxGPXUoXCJcXHUyNUZCXCIsXCJbIF1cIiksJGU9dShcIlxcdTI1QUFcIixcIlxcdTIwMjJcIiksXz11KFwiXFx1MjUwMFwiLFwiLVwiKSxtZT11KFwiXFx1MjU2RVwiLFwiK1wiKSxkZT11KFwiXFx1MjUxQ1wiLFwiK1wiKSxwZT11KFwiXFx1MjU2RlwiLFwiK1wiKSxxPXUoXCJcXHUyNUNGXCIsXCJcXHUyMDIyXCIpLEQ9dShcIlxcdTI1QzZcIixcIipcIiksVT11KFwiXFx1MjVCMlwiLFwiIVwiKSxLPXUoXCJcXHUyNUEwXCIsXCJ4XCIpLGI9dD0+e3N3aXRjaCh0KXtjYXNlXCJpbml0aWFsXCI6Y2FzZVwiYWN0aXZlXCI6cmV0dXJuIGUuY3lhbihsZSk7Y2FzZVwiY2FuY2VsXCI6cmV0dXJuIGUucmVkKEwpO2Nhc2VcImVycm9yXCI6cmV0dXJuIGUueWVsbG93KFcpO2Nhc2VcInN1Ym1pdFwiOnJldHVybiBlLmdyZWVuKEMpfX0sRz10PT57Y29uc3R7Y3Vyc29yOm4sb3B0aW9uczpyLHN0eWxlOml9PXQscz10Lm1heEl0ZW1zPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYz1NYXRoLm1heChwcm9jZXNzLnN0ZG91dC5yb3dzLTQsMCksYT1NYXRoLm1pbihjLE1hdGgubWF4KHMsNSkpO2xldCBsPTA7bj49bCthLTM/bD1NYXRoLm1heChNYXRoLm1pbihuLWErMyxyLmxlbmd0aC1hKSwwKTpuPGwrMiYmKGw9TWF0aC5tYXgobi0yLDApKTtjb25zdCAkPWE8ci5sZW5ndGgmJmw+MCxnPWE8ci5sZW5ndGgmJmwrYTxyLmxlbmd0aDtyZXR1cm4gci5zbGljZShsLGwrYSkubWFwKChwLHYsZik9Pntjb25zdCBqPXY9PT0wJiYkLEU9dj09PWYubGVuZ3RoLTEmJmc7cmV0dXJuIGp8fEU/ZS5kaW0oXCIuLi5cIik6aShwLHYrbD09PW4pfSl9LGhlPXQ9Pm5ldyBRKHt2YWxpZGF0ZTp0LnZhbGlkYXRlLHBsYWNlaG9sZGVyOnQucGxhY2Vob2xkZXIsZGVmYXVsdFZhbHVlOnQuZGVmYXVsdFZhbHVlLGluaXRpYWxWYWx1ZTp0LmluaXRpYWxWYWx1ZSxyZW5kZXIoKXtjb25zdCBuPWAke2UuZ3JheShvKX1cbiR7Yih0aGlzLnN0YXRlKX0gICR7dC5tZXNzYWdlfVxuYCxyPXQucGxhY2Vob2xkZXI/ZS5pbnZlcnNlKHQucGxhY2Vob2xkZXJbMF0pK2UuZGltKHQucGxhY2Vob2xkZXIuc2xpY2UoMSkpOmUuaW52ZXJzZShlLmhpZGRlbihcIl9cIikpLGk9dGhpcy52YWx1ZT90aGlzLnZhbHVlV2l0aEN1cnNvcjpyO3N3aXRjaCh0aGlzLnN0YXRlKXtjYXNlXCJlcnJvclwiOnJldHVybmAke24udHJpbSgpfVxuJHtlLnllbGxvdyhvKX0gICR7aX1cbiR7ZS55ZWxsb3coZCl9ICAke2UueWVsbG93KHRoaXMuZXJyb3IpfVxuYDtjYXNlXCJzdWJtaXRcIjpyZXR1cm5gJHtufSR7ZS5ncmF5KG8pfSAgJHtlLmRpbSh0aGlzLnZhbHVlfHx0LnBsYWNlaG9sZGVyKX1gO2Nhc2VcImNhbmNlbFwiOnJldHVybmAke259JHtlLmdyYXkobyl9ICAke2Uuc3RyaWtldGhyb3VnaChlLmRpbSh0aGlzLnZhbHVlPz9cIlwiKSl9JHt0aGlzLnZhbHVlPy50cmltKCk/YFxuJHtlLmdyYXkobyl9YDpcIlwifWA7ZGVmYXVsdDpyZXR1cm5gJHtufSR7ZS5jeWFuKG8pfSAgJHtpfVxuJHtlLmN5YW4oZCl9XG5gfX19KS5wcm9tcHQoKSxnZT10PT5uZXcgWCh7dmFsaWRhdGU6dC52YWxpZGF0ZSxtYXNrOnQubWFzaz8/JGUscmVuZGVyKCl7Y29uc3Qgbj1gJHtlLmdyYXkobyl9XG4ke2IodGhpcy5zdGF0ZSl9ICAke3QubWVzc2FnZX1cbmAscj10aGlzLnZhbHVlV2l0aEN1cnNvcixpPXRoaXMubWFza2VkO3N3aXRjaCh0aGlzLnN0YXRlKXtjYXNlXCJlcnJvclwiOnJldHVybmAke24udHJpbSgpfVxuJHtlLnllbGxvdyhvKX0gICR7aX1cbiR7ZS55ZWxsb3coZCl9ICAke2UueWVsbG93KHRoaXMuZXJyb3IpfVxuYDtjYXNlXCJzdWJtaXRcIjpyZXR1cm5gJHtufSR7ZS5ncmF5KG8pfSAgJHtlLmRpbShpKX1gO2Nhc2VcImNhbmNlbFwiOnJldHVybmAke259JHtlLmdyYXkobyl9ICAke2Uuc3RyaWtldGhyb3VnaChlLmRpbShpPz9cIlwiKSl9JHtpP2BcbiR7ZS5ncmF5KG8pfWA6XCJcIn1gO2RlZmF1bHQ6cmV0dXJuYCR7bn0ke2UuY3lhbihvKX0gICR7cn1cbiR7ZS5jeWFuKGQpfVxuYH19fSkucHJvbXB0KCkseWU9dD0+e2NvbnN0IG49dC5hY3RpdmU/P1wiWWVzXCIscj10LmluYWN0aXZlPz9cIk5vXCI7cmV0dXJuIG5ldyBaKHthY3RpdmU6bixpbmFjdGl2ZTpyLGluaXRpYWxWYWx1ZTp0LmluaXRpYWxWYWx1ZT8/ITAscmVuZGVyKCl7Y29uc3QgaT1gJHtlLmdyYXkobyl9XG4ke2IodGhpcy5zdGF0ZSl9ICAke3QubWVzc2FnZX1cbmAscz10aGlzLnZhbHVlP246cjtzd2l0Y2godGhpcy5zdGF0ZSl7Y2FzZVwic3VibWl0XCI6cmV0dXJuYCR7aX0ke2UuZ3JheShvKX0gICR7ZS5kaW0ocyl9YDtjYXNlXCJjYW5jZWxcIjpyZXR1cm5gJHtpfSR7ZS5ncmF5KG8pfSAgJHtlLnN0cmlrZXRocm91Z2goZS5kaW0ocykpfVxuJHtlLmdyYXkobyl9YDtkZWZhdWx0OnJldHVybmAke2l9JHtlLmN5YW4obyl9ICAke3RoaXMudmFsdWU/YCR7ZS5ncmVlbihrKX0gJHtufWA6YCR7ZS5kaW0oUCl9ICR7ZS5kaW0obil9YH0gJHtlLmRpbShcIi9cIil9ICR7dGhpcy52YWx1ZT9gJHtlLmRpbShQKX0gJHtlLmRpbShyKX1gOmAke2UuZ3JlZW4oayl9ICR7cn1gfVxuJHtlLmN5YW4oZCl9XG5gfX19KS5wcm9tcHQoKX0sdmU9dD0+e2NvbnN0IG49KHIsaSk9Pntjb25zdCBzPXIubGFiZWw/P1N0cmluZyhyLnZhbHVlKTtzd2l0Y2goaSl7Y2FzZVwic2VsZWN0ZWRcIjpyZXR1cm5gJHtlLmRpbShzKX1gO2Nhc2VcImFjdGl2ZVwiOnJldHVybmAke2UuZ3JlZW4oayl9ICR7c30gJHtyLmhpbnQ/ZS5kaW0oYCgke3IuaGludH0pYCk6XCJcIn1gO2Nhc2VcImNhbmNlbGxlZFwiOnJldHVybmAke2Uuc3RyaWtldGhyb3VnaChlLmRpbShzKSl9YDtkZWZhdWx0OnJldHVybmAke2UuZGltKFApfSAke2UuZGltKHMpfWB9fTtyZXR1cm4gbmV3IGVlKHtvcHRpb25zOnQub3B0aW9ucyxpbml0aWFsVmFsdWU6dC5pbml0aWFsVmFsdWUscmVuZGVyKCl7Y29uc3Qgcj1gJHtlLmdyYXkobyl9XG4ke2IodGhpcy5zdGF0ZSl9ICAke3QubWVzc2FnZX1cbmA7c3dpdGNoKHRoaXMuc3RhdGUpe2Nhc2VcInN1Ym1pdFwiOnJldHVybmAke3J9JHtlLmdyYXkobyl9ICAke24odGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXSxcInNlbGVjdGVkXCIpfWA7Y2FzZVwiY2FuY2VsXCI6cmV0dXJuYCR7cn0ke2UuZ3JheShvKX0gICR7bih0aGlzLm9wdGlvbnNbdGhpcy5jdXJzb3JdLFwiY2FuY2VsbGVkXCIpfVxuJHtlLmdyYXkobyl9YDtkZWZhdWx0OnJldHVybmAke3J9JHtlLmN5YW4obyl9ICAke0coe2N1cnNvcjp0aGlzLmN1cnNvcixvcHRpb25zOnRoaXMub3B0aW9ucyxtYXhJdGVtczp0Lm1heEl0ZW1zLHN0eWxlOihpLHMpPT5uKGkscz9cImFjdGl2ZVwiOlwiaW5hY3RpdmVcIil9KS5qb2luKGBcbiR7ZS5jeWFuKG8pfSAgYCl9XG4ke2UuY3lhbihkKX1cbmB9fX0pLnByb21wdCgpfSx3ZT10PT57Y29uc3Qgbj0ocixpPVwiaW5hY3RpdmVcIik9Pntjb25zdCBzPXIubGFiZWw/P1N0cmluZyhyLnZhbHVlKTtyZXR1cm4gaT09PVwic2VsZWN0ZWRcIj9gJHtlLmRpbShzKX1gOmk9PT1cImNhbmNlbGxlZFwiP2Ake2Uuc3RyaWtldGhyb3VnaChlLmRpbShzKSl9YDppPT09XCJhY3RpdmVcIj9gJHtlLmJnQ3lhbihlLmdyYXkoYCAke3IudmFsdWV9IGApKX0gJHtzfSAke3IuaGludD9lLmRpbShgKCR7ci5oaW50fSlgKTpcIlwifWA6YCR7ZS5ncmF5KGUuYmdXaGl0ZShlLmludmVyc2UoYCAke3IudmFsdWV9IGApKSl9ICR7c30gJHtyLmhpbnQ/ZS5kaW0oYCgke3IuaGludH0pYCk6XCJcIn1gfTtyZXR1cm4gbmV3IHRlKHtvcHRpb25zOnQub3B0aW9ucyxpbml0aWFsVmFsdWU6dC5pbml0aWFsVmFsdWUscmVuZGVyKCl7Y29uc3Qgcj1gJHtlLmdyYXkobyl9XG4ke2IodGhpcy5zdGF0ZSl9ICAke3QubWVzc2FnZX1cbmA7c3dpdGNoKHRoaXMuc3RhdGUpe2Nhc2VcInN1Ym1pdFwiOnJldHVybmAke3J9JHtlLmdyYXkobyl9ICAke24odGhpcy5vcHRpb25zLmZpbmQoaT0+aS52YWx1ZT09PXRoaXMudmFsdWUpPz90Lm9wdGlvbnNbMF0sXCJzZWxlY3RlZFwiKX1gO2Nhc2VcImNhbmNlbFwiOnJldHVybmAke3J9JHtlLmdyYXkobyl9ICAke24odGhpcy5vcHRpb25zWzBdLFwiY2FuY2VsbGVkXCIpfVxuJHtlLmdyYXkobyl9YDtkZWZhdWx0OnJldHVybmAke3J9JHtlLmN5YW4obyl9ICAke3RoaXMub3B0aW9ucy5tYXAoKGkscyk9Pm4oaSxzPT09dGhpcy5jdXJzb3I/XCJhY3RpdmVcIjpcImluYWN0aXZlXCIpKS5qb2luKGBcbiR7ZS5jeWFuKG8pfSAgYCl9XG4ke2UuY3lhbihkKX1cbmB9fX0pLnByb21wdCgpfSxmZT10PT57Y29uc3Qgbj0ocixpKT0+e2NvbnN0IHM9ci5sYWJlbD8/U3RyaW5nKHIudmFsdWUpO3JldHVybiBpPT09XCJhY3RpdmVcIj9gJHtlLmN5YW4oQSl9ICR7c30gJHtyLmhpbnQ/ZS5kaW0oYCgke3IuaGludH0pYCk6XCJcIn1gOmk9PT1cInNlbGVjdGVkXCI/YCR7ZS5ncmVlbihUKX0gJHtlLmRpbShzKX0gJHtyLmhpbnQ/ZS5kaW0oYCgke3IuaGludH0pYCk6XCJcIn1gOmk9PT1cImNhbmNlbGxlZFwiP2Ake2Uuc3RyaWtldGhyb3VnaChlLmRpbShzKSl9YDppPT09XCJhY3RpdmUtc2VsZWN0ZWRcIj9gJHtlLmdyZWVuKFQpfSAke3N9ICR7ci5oaW50P2UuZGltKGAoJHtyLmhpbnR9KWApOlwiXCJ9YDppPT09XCJzdWJtaXR0ZWRcIj9gJHtlLmRpbShzKX1gOmAke2UuZGltKEYpfSAke2UuZGltKHMpfWB9O3JldHVybiBuZXcgcmUoe29wdGlvbnM6dC5vcHRpb25zLGluaXRpYWxWYWx1ZXM6dC5pbml0aWFsVmFsdWVzLHJlcXVpcmVkOnQucmVxdWlyZWQ/PyEwLGN1cnNvckF0OnQuY3Vyc29yQXQsdmFsaWRhdGUocil7aWYodGhpcy5yZXF1aXJlZCYmci5sZW5ndGg9PT0wKXJldHVybmBQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBvcHRpb24uXG4ke2UucmVzZXQoZS5kaW0oYFByZXNzICR7ZS5ncmF5KGUuYmdXaGl0ZShlLmludmVyc2UoXCIgc3BhY2UgXCIpKSl9IHRvIHNlbGVjdCwgJHtlLmdyYXkoZS5iZ1doaXRlKGUuaW52ZXJzZShcIiBlbnRlciBcIikpKX0gdG8gc3VibWl0YCkpfWB9LHJlbmRlcigpe2NvbnN0IHI9YCR7ZS5ncmF5KG8pfVxuJHtiKHRoaXMuc3RhdGUpfSAgJHt0Lm1lc3NhZ2V9XG5gLGk9KHMsYyk9Pntjb25zdCBhPXRoaXMudmFsdWUuaW5jbHVkZXMocy52YWx1ZSk7cmV0dXJuIGMmJmE/bihzLFwiYWN0aXZlLXNlbGVjdGVkXCIpOmE/bihzLFwic2VsZWN0ZWRcIik6bihzLGM/XCJhY3RpdmVcIjpcImluYWN0aXZlXCIpfTtzd2l0Y2godGhpcy5zdGF0ZSl7Y2FzZVwic3VibWl0XCI6cmV0dXJuYCR7cn0ke2UuZ3JheShvKX0gICR7dGhpcy5vcHRpb25zLmZpbHRlcigoe3ZhbHVlOnN9KT0+dGhpcy52YWx1ZS5pbmNsdWRlcyhzKSkubWFwKHM9Pm4ocyxcInN1Ym1pdHRlZFwiKSkuam9pbihlLmRpbShcIiwgXCIpKXx8ZS5kaW0oXCJub25lXCIpfWA7Y2FzZVwiY2FuY2VsXCI6e2NvbnN0IHM9dGhpcy5vcHRpb25zLmZpbHRlcigoe3ZhbHVlOmN9KT0+dGhpcy52YWx1ZS5pbmNsdWRlcyhjKSkubWFwKGM9Pm4oYyxcImNhbmNlbGxlZFwiKSkuam9pbihlLmRpbShcIiwgXCIpKTtyZXR1cm5gJHtyfSR7ZS5ncmF5KG8pfSAgJHtzLnRyaW0oKT9gJHtzfVxuJHtlLmdyYXkobyl9YDpcIlwifWB9Y2FzZVwiZXJyb3JcIjp7Y29uc3Qgcz10aGlzLmVycm9yLnNwbGl0KGBcbmApLm1hcCgoYyxhKT0+YT09PTA/YCR7ZS55ZWxsb3coZCl9ICAke2UueWVsbG93KGMpfWA6YCAgICR7Y31gKS5qb2luKGBcbmApO3JldHVybmAke3IrZS55ZWxsb3cobyl9ICAke0coe29wdGlvbnM6dGhpcy5vcHRpb25zLGN1cnNvcjp0aGlzLmN1cnNvcixtYXhJdGVtczp0Lm1heEl0ZW1zLHN0eWxlOml9KS5qb2luKGBcbiR7ZS55ZWxsb3cobyl9ICBgKX1cbiR7c31cbmB9ZGVmYXVsdDpyZXR1cm5gJHtyfSR7ZS5jeWFuKG8pfSAgJHtHKHtvcHRpb25zOnRoaXMub3B0aW9ucyxjdXJzb3I6dGhpcy5jdXJzb3IsbWF4SXRlbXM6dC5tYXhJdGVtcyxzdHlsZTppfSkuam9pbihgXG4ke2UuY3lhbihvKX0gIGApfVxuJHtlLmN5YW4oZCl9XG5gfX19KS5wcm9tcHQoKX0sYmU9dD0+e2NvbnN0e3NlbGVjdGFibGVHcm91cHM6bj0hMH09dCxyPShpLHMsYz1bXSk9Pntjb25zdCBhPWkubGFiZWw/P1N0cmluZyhpLnZhbHVlKSxsPXR5cGVvZiBpLmdyb3VwPT1cInN0cmluZ1wiLCQ9bCYmKGNbYy5pbmRleE9mKGkpKzFdPz97Z3JvdXA6ITB9KSxnPWwmJiQuZ3JvdXA9PT0hMCxwPWw/bj9gJHtnP2Q6b30gYDpcIiAgXCI6XCJcIjtpZihzPT09XCJhY3RpdmVcIilyZXR1cm5gJHtlLmRpbShwKX0ke2UuY3lhbihBKX0gJHthfSAke2kuaGludD9lLmRpbShgKCR7aS5oaW50fSlgKTpcIlwifWA7aWYocz09PVwiZ3JvdXAtYWN0aXZlXCIpcmV0dXJuYCR7cH0ke2UuY3lhbihBKX0gJHtlLmRpbShhKX1gO2lmKHM9PT1cImdyb3VwLWFjdGl2ZS1zZWxlY3RlZFwiKXJldHVybmAke3B9JHtlLmdyZWVuKFQpfSAke2UuZGltKGEpfWA7aWYocz09PVwic2VsZWN0ZWRcIil7Y29uc3QgZj1sfHxuP2UuZ3JlZW4oVCk6XCJcIjtyZXR1cm5gJHtlLmRpbShwKX0ke2Z9ICR7ZS5kaW0oYSl9ICR7aS5oaW50P2UuZGltKGAoJHtpLmhpbnR9KWApOlwiXCJ9YH1pZihzPT09XCJjYW5jZWxsZWRcIilyZXR1cm5gJHtlLnN0cmlrZXRocm91Z2goZS5kaW0oYSkpfWA7aWYocz09PVwiYWN0aXZlLXNlbGVjdGVkXCIpcmV0dXJuYCR7ZS5kaW0ocCl9JHtlLmdyZWVuKFQpfSAke2F9ICR7aS5oaW50P2UuZGltKGAoJHtpLmhpbnR9KWApOlwiXCJ9YDtpZihzPT09XCJzdWJtaXR0ZWRcIilyZXR1cm5gJHtlLmRpbShhKX1gO2NvbnN0IHY9bHx8bj9lLmRpbShGKTpcIlwiO3JldHVybmAke2UuZGltKHApfSR7dn0gJHtlLmRpbShhKX1gfTtyZXR1cm4gbmV3IHNlKHtvcHRpb25zOnQub3B0aW9ucyxpbml0aWFsVmFsdWVzOnQuaW5pdGlhbFZhbHVlcyxyZXF1aXJlZDp0LnJlcXVpcmVkPz8hMCxjdXJzb3JBdDp0LmN1cnNvckF0LHNlbGVjdGFibGVHcm91cHM6bix2YWxpZGF0ZShpKXtpZih0aGlzLnJlcXVpcmVkJiZpLmxlbmd0aD09PTApcmV0dXJuYFBsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIG9wdGlvbi5cbiR7ZS5yZXNldChlLmRpbShgUHJlc3MgJHtlLmdyYXkoZS5iZ1doaXRlKGUuaW52ZXJzZShcIiBzcGFjZSBcIikpKX0gdG8gc2VsZWN0LCAke2UuZ3JheShlLmJnV2hpdGUoZS5pbnZlcnNlKFwiIGVudGVyIFwiKSkpfSB0byBzdWJtaXRgKSl9YH0scmVuZGVyKCl7Y29uc3QgaT1gJHtlLmdyYXkobyl9XG4ke2IodGhpcy5zdGF0ZSl9ICAke3QubWVzc2FnZX1cbmA7c3dpdGNoKHRoaXMuc3RhdGUpe2Nhc2VcInN1Ym1pdFwiOnJldHVybmAke2l9JHtlLmdyYXkobyl9ICAke3RoaXMub3B0aW9ucy5maWx0ZXIoKHt2YWx1ZTpzfSk9PnRoaXMudmFsdWUuaW5jbHVkZXMocykpLm1hcChzPT5yKHMsXCJzdWJtaXR0ZWRcIikpLmpvaW4oZS5kaW0oXCIsIFwiKSl9YDtjYXNlXCJjYW5jZWxcIjp7Y29uc3Qgcz10aGlzLm9wdGlvbnMuZmlsdGVyKCh7dmFsdWU6Y30pPT50aGlzLnZhbHVlLmluY2x1ZGVzKGMpKS5tYXAoYz0+cihjLFwiY2FuY2VsbGVkXCIpKS5qb2luKGUuZGltKFwiLCBcIikpO3JldHVybmAke2l9JHtlLmdyYXkobyl9ICAke3MudHJpbSgpP2Ake3N9XG4ke2UuZ3JheShvKX1gOlwiXCJ9YH1jYXNlXCJlcnJvclwiOntjb25zdCBzPXRoaXMuZXJyb3Iuc3BsaXQoYFxuYCkubWFwKChjLGEpPT5hPT09MD9gJHtlLnllbGxvdyhkKX0gICR7ZS55ZWxsb3coYyl9YDpgICAgJHtjfWApLmpvaW4oYFxuYCk7cmV0dXJuYCR7aX0ke2UueWVsbG93KG8pfSAgJHt0aGlzLm9wdGlvbnMubWFwKChjLGEsbCk9Pntjb25zdCAkPXRoaXMudmFsdWUuaW5jbHVkZXMoYy52YWx1ZSl8fGMuZ3JvdXA9PT0hMCYmdGhpcy5pc0dyb3VwU2VsZWN0ZWQoYCR7Yy52YWx1ZX1gKSxnPWE9PT10aGlzLmN1cnNvcjtyZXR1cm4hZyYmdHlwZW9mIGMuZ3JvdXA9PVwic3RyaW5nXCImJnRoaXMub3B0aW9uc1t0aGlzLmN1cnNvcl0udmFsdWU9PT1jLmdyb3VwP3IoYywkP1wiZ3JvdXAtYWN0aXZlLXNlbGVjdGVkXCI6XCJncm91cC1hY3RpdmVcIixsKTpnJiYkP3IoYyxcImFjdGl2ZS1zZWxlY3RlZFwiLGwpOiQ/cihjLFwic2VsZWN0ZWRcIixsKTpyKGMsZz9cImFjdGl2ZVwiOlwiaW5hY3RpdmVcIixsKX0pLmpvaW4oYFxuJHtlLnllbGxvdyhvKX0gIGApfVxuJHtzfVxuYH1kZWZhdWx0OnJldHVybmAke2l9JHtlLmN5YW4obyl9ICAke3RoaXMub3B0aW9ucy5tYXAoKHMsYyxhKT0+e2NvbnN0IGw9dGhpcy52YWx1ZS5pbmNsdWRlcyhzLnZhbHVlKXx8cy5ncm91cD09PSEwJiZ0aGlzLmlzR3JvdXBTZWxlY3RlZChgJHtzLnZhbHVlfWApLCQ9Yz09PXRoaXMuY3Vyc29yO3JldHVybiEkJiZ0eXBlb2Ygcy5ncm91cD09XCJzdHJpbmdcIiYmdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXS52YWx1ZT09PXMuZ3JvdXA/cihzLGw/XCJncm91cC1hY3RpdmUtc2VsZWN0ZWRcIjpcImdyb3VwLWFjdGl2ZVwiLGEpOiQmJmw/cihzLFwiYWN0aXZlLXNlbGVjdGVkXCIsYSk6bD9yKHMsXCJzZWxlY3RlZFwiLGEpOnIocywkP1wiYWN0aXZlXCI6XCJpbmFjdGl2ZVwiLGEpfSkuam9pbihgXG4ke2UuY3lhbihvKX0gIGApfVxuJHtlLmN5YW4oZCl9XG5gfX19KS5wcm9tcHQoKX0sTWU9KHQ9XCJcIixuPVwiXCIpPT57Y29uc3Qgcj1gXG4ke3R9XG5gLnNwbGl0KGBcbmApLGk9UyhuKS5sZW5ndGgscz1NYXRoLm1heChyLnJlZHVjZSgoYSxsKT0+e2NvbnN0ICQ9UyhsKTtyZXR1cm4gJC5sZW5ndGg+YT8kLmxlbmd0aDphfSwwKSxpKSsyLGM9ci5tYXAoYT0+YCR7ZS5ncmF5KG8pfSAgJHtlLmRpbShhKX0ke1wiIFwiLnJlcGVhdChzLVMoYSkubGVuZ3RoKX0ke2UuZ3JheShvKX1gKS5qb2luKGBcbmApO3Byb2Nlc3Muc3Rkb3V0LndyaXRlKGAke2UuZ3JheShvKX1cbiR7ZS5ncmVlbihDKX0gICR7ZS5yZXNldChuKX0gJHtlLmdyYXkoXy5yZXBlYXQoTWF0aC5tYXgocy1pLTEsMSkpK21lKX1cbiR7Y31cbiR7ZS5ncmF5KGRlK18ucmVwZWF0KHMrMikrcGUpfVxuYCl9LHhlPSh0PVwiXCIpPT57cHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7ZS5ncmF5KGQpfSAgJHtlLnJlZCh0KX1cblxuYCl9LEllPSh0PVwiXCIpPT57cHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7ZS5ncmF5KHVlKX0gICR7dH1cbmApfSxTZT0odD1cIlwiKT0+e3Byb2Nlc3Muc3Rkb3V0LndyaXRlKGAke2UuZ3JheShvKX1cbiR7ZS5ncmF5KGQpfSAgJHt0fVxuXG5gKX0sTT17bWVzc2FnZToodD1cIlwiLHtzeW1ib2w6bj1lLmdyYXkobyl9PXt9KT0+e2NvbnN0IHI9W2Ake2UuZ3JheShvKX1gXTtpZih0KXtjb25zdFtpLC4uLnNdPXQuc3BsaXQoYFxuYCk7ci5wdXNoKGAke259ICAke2l9YCwuLi5zLm1hcChjPT5gJHtlLmdyYXkobyl9ICAke2N9YCkpfXByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke3Iuam9pbihgXG5gKX1cbmApfSxpbmZvOnQ9PntNLm1lc3NhZ2UodCx7c3ltYm9sOmUuYmx1ZShxKX0pfSxzdWNjZXNzOnQ9PntNLm1lc3NhZ2UodCx7c3ltYm9sOmUuZ3JlZW4oRCl9KX0sc3RlcDp0PT57TS5tZXNzYWdlKHQse3N5bWJvbDplLmdyZWVuKEMpfSl9LHdhcm46dD0+e00ubWVzc2FnZSh0LHtzeW1ib2w6ZS55ZWxsb3coVSl9KX0sd2FybmluZzp0PT57TS53YXJuKHQpfSxlcnJvcjp0PT57TS5tZXNzYWdlKHQse3N5bWJvbDplLnJlZChLKX0pfX0sSj1gJHtlLmdyYXkobyl9ICBgLHg9e21lc3NhZ2U6YXN5bmModCx7c3ltYm9sOm49ZS5ncmF5KG8pfT17fSk9Pntwcm9jZXNzLnN0ZG91dC53cml0ZShgJHtlLmdyYXkobyl9XG4ke259ICBgKTtsZXQgcj0zO2ZvciBhd2FpdChsZXQgaSBvZiB0KXtpPWkucmVwbGFjZSgvXFxuL2csYFxuJHtKfWApLGkuaW5jbHVkZXMoYFxuYCkmJihyPTMrUyhpLnNsaWNlKGkubGFzdEluZGV4T2YoYFxuYCkpKS5sZW5ndGgpO2NvbnN0IHM9UyhpKS5sZW5ndGg7citzPHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnM/KHIrPXMscHJvY2Vzcy5zdGRvdXQud3JpdGUoaSkpOihwcm9jZXNzLnN0ZG91dC53cml0ZShgXG4ke0p9JHtpLnRyaW1TdGFydCgpfWApLHI9MytTKGkudHJpbVN0YXJ0KCkpLmxlbmd0aCl9cHJvY2Vzcy5zdGRvdXQud3JpdGUoYFxuYCl9LGluZm86dD0+eC5tZXNzYWdlKHQse3N5bWJvbDplLmJsdWUocSl9KSxzdWNjZXNzOnQ9PngubWVzc2FnZSh0LHtzeW1ib2w6ZS5ncmVlbihEKX0pLHN0ZXA6dD0+eC5tZXNzYWdlKHQse3N5bWJvbDplLmdyZWVuKEMpfSksd2Fybjp0PT54Lm1lc3NhZ2UodCx7c3ltYm9sOmUueWVsbG93KFUpfSksd2FybmluZzp0PT54Lndhcm4odCksZXJyb3I6dD0+eC5tZXNzYWdlKHQse3N5bWJvbDplLnJlZChLKX0pfSxZPSh7aW5kaWNhdG9yOnQ9XCJkb3RzXCJ9PXt9KT0+e2NvbnN0IG49Vj9bXCJcXHUyNUQyXCIsXCJcXHUyNUQwXCIsXCJcXHUyNUQzXCIsXCJcXHUyNUQxXCJdOltcIlxcdTIwMjJcIixcIm9cIixcIk9cIixcIjBcIl0scj1WPzgwOjEyMCxpPXByb2Nlc3MuZW52LkNJPT09XCJ0cnVlXCI7bGV0IHMsYyxhPSExLGw9XCJcIiwkLGc9cGVyZm9ybWFuY2Uubm93KCk7Y29uc3QgcD1tPT57Y29uc3QgaD1tPjE/XCJTb21ldGhpbmcgd2VudCB3cm9uZ1wiOlwiQ2FuY2VsZWRcIjthJiZOKGgsbSl9LHY9KCk9PnAoMiksZj0oKT0+cCgxKSxqPSgpPT57cHJvY2Vzcy5vbihcInVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvclwiLHYpLHByb2Nlc3Mub24oXCJ1bmhhbmRsZWRSZWplY3Rpb25cIix2KSxwcm9jZXNzLm9uKFwiU0lHSU5UXCIsZikscHJvY2Vzcy5vbihcIlNJR1RFUk1cIixmKSxwcm9jZXNzLm9uKFwiZXhpdFwiLHApfSxFPSgpPT57cHJvY2Vzcy5yZW1vdmVMaXN0ZW5lcihcInVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvclwiLHYpLHByb2Nlc3MucmVtb3ZlTGlzdGVuZXIoXCJ1bmhhbmRsZWRSZWplY3Rpb25cIix2KSxwcm9jZXNzLnJlbW92ZUxpc3RlbmVyKFwiU0lHSU5UXCIsZikscHJvY2Vzcy5yZW1vdmVMaXN0ZW5lcihcIlNJR1RFUk1cIixmKSxwcm9jZXNzLnJlbW92ZUxpc3RlbmVyKFwiZXhpdFwiLHApfSxCPSgpPT57aWYoJD09PXZvaWQgMClyZXR1cm47aSYmcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFxuYCk7Y29uc3QgbT0kLnNwbGl0KGBcbmApO3Byb2Nlc3Muc3Rkb3V0LndyaXRlKG9lLm1vdmUoLTk5OSxtLmxlbmd0aC0xKSkscHJvY2Vzcy5zdGRvdXQud3JpdGUoYWUuZG93bihtLmxlbmd0aCkpfSxSPW09Pm0ucmVwbGFjZSgvXFwuKyQvLFwiXCIpLE89bT0+e2NvbnN0IGg9KHBlcmZvcm1hbmNlLm5vdygpLW0pLzFlMyx3PU1hdGguZmxvb3IoaC82MCksST1NYXRoLmZsb29yKGglNjApO3JldHVybiB3PjA/YFske3d9bSAke0l9c11gOmBbJHtJfXNdYH0sSD0obT1cIlwiKT0+e2E9ITAscz1uZSgpLGw9UihtKSxnPXBlcmZvcm1hbmNlLm5vdygpLHByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke2UuZ3JheShvKX1cbmApO2xldCBoPTAsdz0wO2ooKSxjPXNldEludGVydmFsKCgpPT57aWYoaSYmbD09PSQpcmV0dXJuO0IoKSwkPWw7Y29uc3QgST1lLm1hZ2VudGEobltoXSk7aWYoaSlwcm9jZXNzLnN0ZG91dC53cml0ZShgJHtJfSAgJHtsfS4uLmApO2Vsc2UgaWYodD09PVwidGltZXJcIilwcm9jZXNzLnN0ZG91dC53cml0ZShgJHtJfSAgJHtsfSAke08oZyl9YCk7ZWxzZXtjb25zdCB6PVwiLlwiLnJlcGVhdChNYXRoLmZsb29yKHcpKS5zbGljZSgwLDMpO3Byb2Nlc3Muc3Rkb3V0LndyaXRlKGAke0l9ICAke2x9JHt6fWApfWg9aCsxPG4ubGVuZ3RoP2grMTowLHc9dzxuLmxlbmd0aD93Ky4xMjU6MH0scil9LE49KG09XCJcIixoPTApPT57YT0hMSxjbGVhckludGVydmFsKGMpLEIoKTtjb25zdCB3PWg9PT0wP2UuZ3JlZW4oQyk6aD09PTE/ZS5yZWQoTCk6ZS5yZWQoVyk7bD1SKG0/P2wpLHQ9PT1cInRpbWVyXCI/cHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7d30gICR7bH0gJHtPKGcpfVxuYCk6cHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7d30gICR7bH1cbmApLEUoKSxzKCl9O3JldHVybntzdGFydDpILHN0b3A6TixtZXNzYWdlOihtPVwiXCIpPT57bD1SKG0/P2wpfX19LENlPWFzeW5jKHQsbik9Pntjb25zdCByPXt9LGk9T2JqZWN0LmtleXModCk7Zm9yKGNvbnN0IHMgb2YgaSl7Y29uc3QgYz10W3NdLGE9YXdhaXQgYyh7cmVzdWx0czpyfSk/LmNhdGNoKGw9Pnt0aHJvdyBsfSk7aWYodHlwZW9mIG4/Lm9uQ2FuY2VsPT1cImZ1bmN0aW9uXCImJmllKGEpKXtyW3NdPVwiY2FuY2VsZWRcIixuLm9uQ2FuY2VsKHtyZXN1bHRzOnJ9KTtjb250aW51ZX1yW3NdPWF9cmV0dXJuIHJ9LFRlPWFzeW5jIHQ9Pntmb3IoY29uc3QgbiBvZiB0KXtpZihuLmVuYWJsZWQ9PT0hMSljb250aW51ZTtjb25zdCByPVkoKTtyLnN0YXJ0KG4udGl0bGUpO2NvbnN0IGk9YXdhaXQgbi50YXNrKHIubWVzc2FnZSk7ci5zdG9wKGl8fG4udGl0bGUpfX07ZXhwb3J0e3hlIGFzIGNhbmNlbCx5ZSBhcyBjb25maXJtLENlIGFzIGdyb3VwLGJlIGFzIGdyb3VwTXVsdGlzZWxlY3QsSWUgYXMgaW50cm8sTSBhcyBsb2csZmUgYXMgbXVsdGlzZWxlY3QsTWUgYXMgbm90ZSxTZSBhcyBvdXRybyxnZSBhcyBwYXNzd29yZCx2ZSBhcyBzZWxlY3Qsd2UgYXMgc2VsZWN0S2V5LFkgYXMgc3Bpbm5lcix4IGFzIHN0cmVhbSxUZSBhcyB0YXNrcyxoZSBhcyB0ZXh0fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsCiAgICAiY29uc3QgaXNDb2xvckVuYWJsZWQgPSAhcHJvY2Vzcy5lbnYuTk9fQ09MT1IgJiYgKHByb2Nlc3MuZW52LkZPUkNFX0NPTE9SIHx8IHByb2Nlc3Muc3Rkb3V0LmlzVFRZKTtcblxuY29uc3QgYmFzZUNvbG9ycyA9IFtcImJsdWVcIiwgXCJjeWFuXCIsIFwiZ3JheVwiLCBcImdyZWVuXCIsIFwibWFnZW50YVwiLCBcInJlZFwiLCBcIndoaXRlXCIsIFwieWVsbG93XCJdIGFzIGNvbnN0O1xuY29uc3QgYmFzZURlY29yYXRpb25zID0gW1wiYm9sZFwiLCBcImRpbVwiLCBcIml0YWxpY1wiLCBcInVuZGVybGluZVwiLCBcInJlc2V0XCJdIGFzIGNvbnN0O1xuY29uc3QgYW5zaUNvZGVzID0ge1xuICBib2xkOiBcIlxceDFiWzFtXCIsXG4gIGRpbTogXCJcXHgxYlsybVwiLFxuICBpdGFsaWM6IFwiXFx4MWJbM21cIixcbiAgcmVzZXQ6IFwiXFx4MWJbMG1cIixcbiAgdW5kZXJsaW5lOiBcIlxceDFiWzRtXCIsXG59O1xuXG5jb25zdCBicmlnaHRDb2xvck1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgXCJcXHgxYlszMG1cIjogXCJcXHgxYls5MG1cIixcbiAgXCJcXHgxYlszMW1cIjogXCJcXHgxYls5MW1cIixcbiAgXCJcXHgxYlszMm1cIjogXCJcXHgxYls5Mm1cIixcbiAgXCJcXHgxYlszM21cIjogXCJcXHgxYls5M21cIixcbiAgXCJcXHgxYlszNG1cIjogXCJcXHgxYls5NG1cIixcbiAgXCJcXHgxYlszNW1cIjogXCJcXHgxYls5NW1cIixcbiAgXCJcXHgxYlszNm1cIjogXCJcXHgxYls5Nm1cIixcbiAgXCJcXHgxYlszN21cIjogXCJcXHgxYls5N21cIixcbn07XG5cbmZ1bmN0aW9uIGNvbG9yaXplKGNvbG9yQ29kZTogc3RyaW5nKSB7XG4gIHJldHVybiAodGV4dDogc3RyaW5nKSA9PiAoaXNDb2xvckVuYWJsZWQgPyBgJHtjb2xvckNvZGV9JHt0ZXh0fSR7YW5zaUNvZGVzLnJlc2V0fWAgOiB0ZXh0KTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29sb3JDb2RlKHsgYnJpZ2h0ID0gZmFsc2UsIGNvbG9yIH06IHsgYnJpZ2h0PzogYm9vbGVhbjsgY29sb3I6IHN0cmluZyB9KSB7XG4gIGNvbnN0IGJhc2VDb2xvciA9IEJ1bi5jb2xvcihjb2xvciwgXCJhbnNpXCIpO1xuICBpZiAoIWJhc2VDb2xvcikgcmV0dXJuIFwiXCI7XG5cbiAgcmV0dXJuIGJyaWdodCA/IGJyaWdodENvbG9yTWFwW2Jhc2VDb2xvcl0gfHwgYmFzZUNvbG9yIDogYmFzZUNvbG9yO1xufVxuXG5jb25zdCBjb2xvckRlY29yYXRpb25zID0gYmFzZUNvbG9ycy5yZWR1Y2UoXG4gIChhY2MsIGNvbG9yKSA9PiB7XG4gICAgYWNjW2NvbG9yXSA9IGNvbG9yaXplKGdldENvbG9yQ29kZSh7IGNvbG9yIH0pKTtcbiAgICBhY2NbYCR7Y29sb3J9QnJpZ2h0YF0gPSBjb2xvcml6ZShnZXRDb2xvckNvZGUoeyBicmlnaHQ6IHRydWUsIGNvbG9yIH0pKTtcbiAgICByZXR1cm4gYWNjO1xuICB9LFxuICB7fSBhcyBSZWNvcmQ8XG4gICAgKHR5cGVvZiBiYXNlQ29sb3JzKVtudW1iZXJdIHwgYCR7KHR5cGVvZiBiYXNlQ29sb3JzKVtudW1iZXJdfUJyaWdodGAsXG4gICAgKHRleHQ6IHN0cmluZykgPT4gc3RyaW5nXG4gID4sXG4pO1xuXG5jb25zdCBkZWNvcmF0aW9ucyA9IGJhc2VEZWNvcmF0aW9ucy5yZWR1Y2UoXG4gIChhY2MsIGRlY29yYXRpb24pID0+IHtcbiAgICBhY2NbZGVjb3JhdGlvbl0gPSBjb2xvcml6ZShhbnNpQ29kZXNbZGVjb3JhdGlvbl0pO1xuICAgIHJldHVybiBhY2M7XG4gIH0sXG4gIHt9IGFzIFJlY29yZDwodHlwZW9mIGJhc2VEZWNvcmF0aW9ucylbbnVtYmVyXSwgKHRleHQ6IHN0cmluZykgPT4gc3RyaW5nPixcbik7XG5cbmV4cG9ydCBjb25zdCBjb2xvcnMgPSB7IC4uLmNvbG9yRGVjb3JhdGlvbnMsIC4uLmRlY29yYXRpb25zIH07XG4iLAogICAgImNvbnN0IHBlcSA9IG5ldyBVaW50MzJBcnJheSgweDEwMDAwKTtcbmNvbnN0IG15ZXJzXzMyID0gKGEsIGIpID0+IHtcbiAgICBjb25zdCBuID0gYS5sZW5ndGg7XG4gICAgY29uc3QgbSA9IGIubGVuZ3RoO1xuICAgIGNvbnN0IGxzdCA9IDEgPDwgKG4gLSAxKTtcbiAgICBsZXQgcHYgPSAtMTtcbiAgICBsZXQgbXYgPSAwO1xuICAgIGxldCBzYyA9IG47XG4gICAgbGV0IGkgPSBuO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgcGVxW2EuY2hhckNvZGVBdChpKV0gfD0gMSA8PCBpO1xuICAgIH1cbiAgICBmb3IgKGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgIGxldCBlcSA9IHBlcVtiLmNoYXJDb2RlQXQoaSldO1xuICAgICAgICBjb25zdCB4diA9IGVxIHwgbXY7XG4gICAgICAgIGVxIHw9ICgoZXEgJiBwdikgKyBwdikgXiBwdjtcbiAgICAgICAgbXYgfD0gfihlcSB8IHB2KTtcbiAgICAgICAgcHYgJj0gZXE7XG4gICAgICAgIGlmIChtdiAmIGxzdCkge1xuICAgICAgICAgICAgc2MrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAocHYgJiBsc3QpIHtcbiAgICAgICAgICAgIHNjLS07XG4gICAgICAgIH1cbiAgICAgICAgbXYgPSAobXYgPDwgMSkgfCAxO1xuICAgICAgICBwdiA9IChwdiA8PCAxKSB8IH4oeHYgfCBtdik7XG4gICAgICAgIG12ICY9IHh2O1xuICAgIH1cbiAgICBpID0gbjtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIHBlcVthLmNoYXJDb2RlQXQoaSldID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHNjO1xufTtcbmNvbnN0IG15ZXJzX3ggPSAoYiwgYSkgPT4ge1xuICAgIGNvbnN0IG4gPSBhLmxlbmd0aDtcbiAgICBjb25zdCBtID0gYi5sZW5ndGg7XG4gICAgY29uc3QgbWhjID0gW107XG4gICAgY29uc3QgcGhjID0gW107XG4gICAgY29uc3QgaHNpemUgPSBNYXRoLmNlaWwobiAvIDMyKTtcbiAgICBjb25zdCB2c2l6ZSA9IE1hdGguY2VpbChtIC8gMzIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaHNpemU7IGkrKykge1xuICAgICAgICBwaGNbaV0gPSAtMTtcbiAgICAgICAgbWhjW2ldID0gMDtcbiAgICB9XG4gICAgbGV0IGogPSAwO1xuICAgIGZvciAoOyBqIDwgdnNpemUgLSAxOyBqKyspIHtcbiAgICAgICAgbGV0IG12ID0gMDtcbiAgICAgICAgbGV0IHB2ID0gLTE7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gaiAqIDMyO1xuICAgICAgICBjb25zdCB2bGVuID0gTWF0aC5taW4oMzIsIG0pICsgc3RhcnQ7XG4gICAgICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IHZsZW47IGsrKykge1xuICAgICAgICAgICAgcGVxW2IuY2hhckNvZGVBdChrKV0gfD0gMSA8PCBrO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBlcSA9IHBlcVthLmNoYXJDb2RlQXQoaSldO1xuICAgICAgICAgICAgY29uc3QgcGIgPSAocGhjWyhpIC8gMzIpIHwgMF0gPj4+IGkpICYgMTtcbiAgICAgICAgICAgIGNvbnN0IG1iID0gKG1oY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICAgICAgICBjb25zdCB4diA9IGVxIHwgbXY7XG4gICAgICAgICAgICBjb25zdCB4aCA9ICgoKChlcSB8IG1iKSAmIHB2KSArIHB2KSBeIHB2KSB8IGVxIHwgbWI7XG4gICAgICAgICAgICBsZXQgcGggPSBtdiB8IH4oeGggfCBwdik7XG4gICAgICAgICAgICBsZXQgbWggPSBwdiAmIHhoO1xuICAgICAgICAgICAgaWYgKChwaCA+Pj4gMzEpIF4gcGIpIHtcbiAgICAgICAgICAgICAgICBwaGNbKGkgLyAzMikgfCAwXSBePSAxIDw8IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKG1oID4+PiAzMSkgXiBtYikge1xuICAgICAgICAgICAgICAgIG1oY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBoID0gKHBoIDw8IDEpIHwgcGI7XG4gICAgICAgICAgICBtaCA9IChtaCA8PCAxKSB8IG1iO1xuICAgICAgICAgICAgcHYgPSBtaCB8IH4oeHYgfCBwaCk7XG4gICAgICAgICAgICBtdiA9IHBoICYgeHY7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgayA9IHN0YXJ0OyBrIDwgdmxlbjsgaysrKSB7XG4gICAgICAgICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSA9IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IG12ID0gMDtcbiAgICBsZXQgcHYgPSAtMTtcbiAgICBjb25zdCBzdGFydCA9IGogKiAzMjtcbiAgICBjb25zdCB2bGVuID0gTWF0aC5taW4oMzIsIG0gLSBzdGFydCkgKyBzdGFydDtcbiAgICBmb3IgKGxldCBrID0gc3RhcnQ7IGsgPCB2bGVuOyBrKyspIHtcbiAgICAgICAgcGVxW2IuY2hhckNvZGVBdChrKV0gfD0gMSA8PCBrO1xuICAgIH1cbiAgICBsZXQgc2NvcmUgPSBtO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGVxID0gcGVxW2EuY2hhckNvZGVBdChpKV07XG4gICAgICAgIGNvbnN0IHBiID0gKHBoY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICAgIGNvbnN0IG1iID0gKG1oY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICAgICAgY29uc3QgeGggPSAoKCgoZXEgfCBtYikgJiBwdikgKyBwdikgXiBwdikgfCBlcSB8IG1iO1xuICAgICAgICBsZXQgcGggPSBtdiB8IH4oeGggfCBwdik7XG4gICAgICAgIGxldCBtaCA9IHB2ICYgeGg7XG4gICAgICAgIHNjb3JlICs9IChwaCA+Pj4gKG0gLSAxKSkgJiAxO1xuICAgICAgICBzY29yZSAtPSAobWggPj4+IChtIC0gMSkpICYgMTtcbiAgICAgICAgaWYgKChwaCA+Pj4gMzEpIF4gcGIpIHtcbiAgICAgICAgICAgIHBoY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKG1oID4+PiAzMSkgXiBtYikge1xuICAgICAgICAgICAgbWhjWyhpIC8gMzIpIHwgMF0gXj0gMSA8PCBpO1xuICAgICAgICB9XG4gICAgICAgIHBoID0gKHBoIDw8IDEpIHwgcGI7XG4gICAgICAgIG1oID0gKG1oIDw8IDEpIHwgbWI7XG4gICAgICAgIHB2ID0gbWggfCB+KHh2IHwgcGgpO1xuICAgICAgICBtdiA9IHBoICYgeHY7XG4gICAgfVxuICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IHZsZW47IGsrKykge1xuICAgICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiBzY29yZTtcbn07XG5jb25zdCBkaXN0YW5jZSA9IChhLCBiKSA9PiB7XG4gICAgaWYgKGEubGVuZ3RoIDwgYi5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgdG1wID0gYjtcbiAgICAgICAgYiA9IGE7XG4gICAgICAgIGEgPSB0bXA7XG4gICAgfVxuICAgIGlmIChiLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gYS5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChhLmxlbmd0aCA8PSAzMikge1xuICAgICAgICByZXR1cm4gbXllcnNfMzIoYSwgYik7XG4gICAgfVxuICAgIHJldHVybiBteWVyc194KGEsIGIpO1xufTtcbmNvbnN0IGNsb3Nlc3QgPSAoc3RyLCBhcnIpID0+IHtcbiAgICBsZXQgbWluX2Rpc3RhbmNlID0gSW5maW5pdHk7XG4gICAgbGV0IG1pbl9pbmRleCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZGlzdCA9IGRpc3RhbmNlKHN0ciwgYXJyW2ldKTtcbiAgICAgICAgaWYgKGRpc3QgPCBtaW5fZGlzdGFuY2UpIHtcbiAgICAgICAgICAgIG1pbl9kaXN0YW5jZSA9IGRpc3Q7XG4gICAgICAgICAgICBtaW5faW5kZXggPSBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJbbWluX2luZGV4XTtcbn07XG5leHBvcnQgeyBjbG9zZXN0LCBkaXN0YW5jZSB9O1xuIiwKICAgICJpbXBvcnQgeyBjbG9zZXN0LCBkaXN0YW5jZSB9IGZyb20gXCJmYXN0ZXN0LWxldmVuc2h0ZWluXCI7XG5cbi8qKlxuICogRmluZCB0aGUgY2xvc2VzdCBtYXRjaCBmcm9tIGEgbGlzdCBvZiBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ2xvc2VzdE1hdGNoKGlucHV0OiBzdHJpbmcsIG9wdGlvbnM6IHN0cmluZ1tdKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcmVzdWx0ID0gY2xvc2VzdChcbiAgICBpbnB1dC50b0xvd2VyQ2FzZSgpLFxuICAgIG9wdGlvbnMubWFwKChvKSA9PiBvLnRvTG93ZXJDYXNlKCkpLFxuICApO1xuICBjb25zdCBpbmRleCA9IG9wdGlvbnMuZmluZEluZGV4KChvKSA9PiBvLnRvTG93ZXJDYXNlKCkgPT09IHJlc3VsdCk7XG4gIGNvbnN0IG1hdGNoID0gaW5kZXggIT09IC0xID8gb3B0aW9uc1tpbmRleF0gOiBudWxsO1xuXG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuXG4gIC8vIE9ubHkgc3VnZ2VzdCBpZiB0aGUgZGlzdGFuY2UgaXMgcmVhc29uYWJsZSAobGVzcyB0aGFuIGhhbGYgdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQpXG4gIGNvbnN0IG1hdGNoRGlzdGFuY2UgPSBkaXN0YW5jZShpbnB1dC50b0xvd2VyQ2FzZSgpLCBtYXRjaC50b0xvd2VyQ2FzZSgpKTtcbiAgaWYgKG1hdGNoRGlzdGFuY2UgPiBNYXRoLm1heCgzLCBpbnB1dC5sZW5ndGggLyAyKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoO1xufVxuXG4vKipcbiAqIEdldCBzdWdnZXN0aW9ucyBmb3IgYSBtaXN0eXBlZCBjb21tYW5kXG4gKiBSZXR1cm5zIHVwIHRvIDMgY2xvc2VzdCBtYXRjaGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWdnZXN0aW9ucyhpbnB1dDogc3RyaW5nLCBvcHRpb25zOiBzdHJpbmdbXSwgbWF4U3VnZ2VzdGlvbnMgPSAzKTogc3RyaW5nW10ge1xuICBjb25zdCBkaXN0YW5jZXMgPSBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoe1xuICAgIGRpc3RhbmNlOiBkaXN0YW5jZShpbnB1dC50b0xvd2VyQ2FzZSgpLCBvcHRpb24udG9Mb3dlckNhc2UoKSksXG4gICAgb3B0aW9uLFxuICB9KSk7XG5cbiAgLy8gU29ydCBieSBkaXN0YW5jZSBhbmQgZmlsdGVyIHJlYXNvbmFibGUgbWF0Y2hlc1xuICBjb25zdCBzdWdnZXN0aW9ucyA9IGRpc3RhbmNlc1xuICAgIC5maWx0ZXIoKHsgZGlzdGFuY2UgfSkgPT4gZGlzdGFuY2UgPD0gTWF0aC5tYXgoMywgaW5wdXQubGVuZ3RoIC8gMikpXG4gICAgLnNvcnQoKGEsIGIpID0+IGEuZGlzdGFuY2UgLSBiLmRpc3RhbmNlKVxuICAgIC5zbGljZSgwLCBtYXhTdWdnZXN0aW9ucylcbiAgICAubWFwKCh7IG9wdGlvbiB9KSA9PiBvcHRpb24pO1xuXG4gIHJldHVybiBzdWdnZXN0aW9ucztcbn1cblxuLyoqXG4gKiBDaGVjayBmb3IgY29tbW9uIHR5cG9zIGFuZCBhYmJyZXZpYXRpb25zIHVzaW5nIGEgcHJvdmlkZWQgbWFwcGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDb21tb25NaXN0YWtlcyhcbiAgaW5wdXQ6IHN0cmluZyxcbiAgbWlzdGFrZXNNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgcmV0dXJuIG1pc3Rha2VzTWFwW2lucHV0LnRvTG93ZXJDYXNlKCldIHx8IG51bGw7XG59XG4iLAogICAgImV4cG9ydCBpbnRlcmZhY2UgR3JhY2VmdWxPcHRpb25zIHtcbiAgZmFsbGJhY2s/OiAoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgbG9nTGV2ZWw/OiBcImRlYnVnXCIgfCBcImluZm9cIiB8IFwid2FyblwiIHwgXCJlcnJvclwiO1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3JhY2VmdWxUcnk8VD4oXG4gIG9wZXJhdGlvbjogKCkgPT4gVCB8IFByb21pc2U8VD4sXG4gIG9wdGlvbnM6IEdyYWNlZnVsT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHsgZmFsbGJhY2ssIGxvZ0xldmVsID0gXCJ3YXJuXCIsIG1lc3NhZ2UgPSBcIk9wZXJhdGlvbiBmYWlsZWQgZ3JhY2VmdWxseVwiIH0gPSBvcHRpb25zO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IG9wZXJhdGlvbigpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbiAgICBjb25zb2xlW2xvZ0xldmVsXShgJHttZXNzYWdlfTogJHtlcnJvck1lc3NhZ2V9YCk7XG5cbiAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZhbGxiYWNrKCk7XG4gICAgICB9IGNhdGNoIChmYWxsYmFja0Vycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYEZhbGxiYWNrIGFsc28gZmFpbGVkOiAke2ZhbGxiYWNrRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGZhbGxiYWNrRXJyb3IubWVzc2FnZSA6IFN0cmluZyhmYWxsYmFja0Vycm9yKX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdyYWNlZnVsV3JhcHBlcjxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KFxuICBmbjogVCxcbiAgb3B0aW9uczogR3JhY2VmdWxPcHRpb25zID0ge30sXG4pOiAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4gUHJvbWlzZTxSZXR1cm5UeXBlPFQ+IHwgdW5kZWZpbmVkPiB7XG4gIHJldHVybiBhc3luYyAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4ge1xuICAgIHJldHVybiBncmFjZWZ1bFRyeSgoKSA9PiBmbiguLi5hcmdzKSwgb3B0aW9ucyk7XG4gIH07XG59XG4iLAogICAgImltcG9ydCB7IGNvbG9ycyB9IGZyb20gXCIuL2NvbG9yc1wiO1xuXG5leHBvcnQgZW51bSBMb2dMZXZlbCB7XG4gIERFQlVHID0gMCxcbiAgSU5GTyA9IDEsXG4gIFdBUk4gPSAyLFxuICBFUlJPUiA9IDMsXG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVMb2dnZXIgPSAoe1xuICBwcmVmaXggPSBcIlwiLFxuICBsZXZlbCA9IHByb2Nlc3MuZW52LkRFQlVHID8gTG9nTGV2ZWwuREVCVUcgOiBMb2dMZXZlbC5JTkZPLFxufToge1xuICBwcmVmaXg/OiBzdHJpbmc7XG4gIGxldmVsPzogTG9nTGV2ZWw7XG59ID0ge30pID0+IHtcbiAgZnVuY3Rpb24gZGVidWcoLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgaWYgKGxldmVsIDw9IExvZ0xldmVsLkRFQlVHKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYXJncy5qb2luKFwiIFwiKTtcbiAgICAgIGNvbnNvbGUubG9nKGZvcm1hdCh7IGxldmVsOiBjb2xvcnMuZGltKFwiREVCVUdcIiksIG1lc3NhZ2UsIHByZWZpeCB9KSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5mbyguLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICBpZiAobGV2ZWwgPD0gTG9nTGV2ZWwuSU5GTykge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGFyZ3Muam9pbihcIiBcIik7XG4gICAgICBjb25zb2xlLmluZm8oZm9ybWF0KHsgbGV2ZWw6IGNvbG9ycy5jeWFuKFwiSU5GTyBcIiksIG1lc3NhZ2UsIHByZWZpeCB9KSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gd2FybiguLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICBpZiAobGV2ZWwgPD0gTG9nTGV2ZWwuV0FSTikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGFyZ3Muam9pbihcIiBcIik7XG4gICAgICBjb25zb2xlLndhcm4oZm9ybWF0KHsgbGV2ZWw6IGNvbG9ycy55ZWxsb3coXCJXQVJOIFwiKSwgbWVzc2FnZSwgcHJlZml4IH0pKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlcnJvciguLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICBpZiAobGV2ZWwgPD0gTG9nTGV2ZWwuRVJST1IpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhcmdzLmpvaW4oXCIgXCIpO1xuICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoeyBsZXZlbDogY29sb3JzLnJlZChcIkVSUk9SXCIpLCBtZXNzYWdlLCBwcmVmaXggfSkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNoaWxkKGNoaWxkUHJlZml4OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY3JlYXRlTG9nZ2VyKHsgbGV2ZWwsIHByZWZpeDogYCR7cHJlZml4fToke2NoaWxkUHJlZml4fWAgfSk7XG4gIH1cblxuICByZXR1cm4geyBjaGlsZCwgZGVidWcsIGVycm9yLCBpbmZvLCB3YXJuIH07XG59O1xuXG5leHBvcnQgY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCk7XG5cbmZ1bmN0aW9uIGZvcm1hdCh7IHByZWZpeCwgbGV2ZWwsIG1lc3NhZ2UgfTogeyBwcmVmaXg6IHN0cmluZzsgbGV2ZWw6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0pIHtcbiAgY29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVsxXT8uc3BsaXQoXCIuXCIpWzBdIHx8IFwiXCI7XG4gIGNvbnN0IGZvcm1hdFByZWZpeCA9IHByZWZpeCA/IGBbJHtwcmVmaXh9XSBgIDogXCJcIjtcbiAgcmV0dXJuIGAke2NvbG9ycy5kaW0odGltZXN0YW1wIHx8IFwiXCIpfSAke2xldmVsfSAke2Zvcm1hdFByZWZpeH0ke21lc3NhZ2V9YDtcbn1cbiIsCiAgICAiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIkByNW4vdG9vbHMvdXRpbHMvbG9nZ2VyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlPcHRpb25zIHtcbiAgbWF4QXR0ZW1wdHM/OiBudW1iZXI7XG4gIGluaXRpYWxEZWxheT86IG51bWJlcjtcbiAgbWF4RGVsYXk/OiBudW1iZXI7XG4gIGJhY2tvZmZNdWx0aXBsaWVyPzogbnVtYmVyO1xuICByZXRyeWFibGVFcnJvcnM/OiBzdHJpbmdbXTtcbiAgb25SZXRyeT86IChhdHRlbXB0OiBudW1iZXIsIGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbn1cblxuY29uc3QgREVGQVVMVF9PUFRJT05TOiBSZXF1aXJlZDxSZXRyeU9wdGlvbnM+ID0ge1xuICBiYWNrb2ZmTXVsdGlwbGllcjogMixcbiAgaW5pdGlhbERlbGF5OiAxMDAwLFxuICBtYXhBdHRlbXB0czogMyxcbiAgbWF4RGVsYXk6IDMwMDAwLFxuICBvblJldHJ5OiAoYXR0ZW1wdCwgZXJyb3IpID0+IHtcbiAgICBsb2dnZXIud2FybihgUmV0cnkgYXR0ZW1wdCAke2F0dGVtcHR9OiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gIH0sXG4gIHJldHJ5YWJsZUVycm9yczogW1xuICAgIFwiRUNPTk5SRUZVU0VEXCIsXG4gICAgXCJFQ09OTlJFU0VUXCIsXG4gICAgXCJFVElNRURPVVRcIixcbiAgICBcIkVOT1RGT1VORFwiLFxuICAgIFwicmF0ZSBsaW1pdFwiLFxuICAgIFwiNDI5XCIsXG4gICAgXCI1MDNcIixcbiAgICBcIjUwMlwiLFxuICAgIFwiNTA0XCIsXG4gICAgXCJucG0gRVJSIVwiLFxuICAgIFwiRVBVQkxJU0hDT05GTElDVFwiLFxuICBdLFxufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhSZXRyeTxUPihcbiAgb3BlcmF0aW9uOiAoKSA9PiBQcm9taXNlPFQ+LFxuICBvcHRpb25zOiBSZXRyeU9wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8VD4ge1xuICBjb25zdCBvcHRzID0geyAuLi5ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgbGV0IGxhc3RFcnJvcjogRXJyb3IgPSBuZXcgRXJyb3IoXCJPcGVyYXRpb24gZmFpbGVkXCIpO1xuXG4gIGZvciAobGV0IGF0dGVtcHQgPSAxOyBhdHRlbXB0IDw9IG9wdHMubWF4QXR0ZW1wdHM7IGF0dGVtcHQrKykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgb3BlcmF0aW9uKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxhc3RFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcblxuICAgICAgY29uc3QgaXNSZXRyeWFibGUgPSBvcHRzLnJldHJ5YWJsZUVycm9ycy5zb21lKChyZXRyeWFibGVFcnJvcikgPT5cbiAgICAgICAgbGFzdEVycm9yLm1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhyZXRyeWFibGVFcnJvci50b0xvd2VyQ2FzZSgpKSxcbiAgICAgICk7XG5cbiAgICAgIGlmICghaXNSZXRyeWFibGUgfHwgYXR0ZW1wdCA9PT0gb3B0cy5tYXhBdHRlbXB0cykge1xuICAgICAgICB0aHJvdyBsYXN0RXJyb3I7XG4gICAgICB9XG5cbiAgICAgIG9wdHMub25SZXRyeShhdHRlbXB0LCBsYXN0RXJyb3IpO1xuXG4gICAgICBjb25zdCBkZWxheSA9IE1hdGgubWluKFxuICAgICAgICBvcHRzLmluaXRpYWxEZWxheSAqIG9wdHMuYmFja29mZk11bHRpcGxpZXIgKiogKGF0dGVtcHQgLSAxKSxcbiAgICAgICAgb3B0cy5tYXhEZWxheSxcbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIGRlbGF5KSk7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbGFzdEVycm9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmV0cnlhYmxlT3BlcmF0aW9uPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IFByb21pc2U8YW55Pj4oXG4gIG9wZXJhdGlvbjogVCxcbiAgb3B0aW9uczogUmV0cnlPcHRpb25zID0ge30sXG4pOiBUIHtcbiAgcmV0dXJuIChhc3luYyAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4ge1xuICAgIHJldHVybiB3aXRoUmV0cnkoKCkgPT4gb3BlcmF0aW9uKC4uLmFyZ3MpLCBvcHRpb25zKTtcbiAgfSkgYXMgVDtcbn1cbiIsCiAgICAiLy8gQ29yZVxuZXhwb3J0IGNvbnN0IGJhbmRpdHlwZSA9IChjYXN0KSA9PiB7XG4gICAgY2FzdC5tYXAgPSAoZXh0cmEpID0+IGJhbmRpdHlwZSgocmF3KSA9PiBleHRyYShjYXN0KHJhdykpKTtcbiAgICBjYXN0Lm9yID0gKGV4dHJhKSA9PiBiYW5kaXR5cGUoKHJhdykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGNhc3QocmF3KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZXh0cmEocmF3KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjYXN0O1xufTtcbi8vIEVycm9yIGhlbHBlclxuZXhwb3J0IGNvbnN0IGZhaWwgPSAoKSA9PiBcImJhZCBiYW5kaXR5cGVcIigpO1xuZXhwb3J0IGNvbnN0IG5ldmVyID0gKCkgPT4gYmFuZGl0eXBlKCgpID0+IGZhaWwoKSk7XG5leHBvcnQgY29uc3QgdW5rbm93biA9ICgpID0+IGJhbmRpdHlwZSgocmF3KSA9PiByYXcpO1xuZXhwb3J0IGNvbnN0IGVudW1zID0gKGl0ZW1zKSA9PiBiYW5kaXR5cGUoKHJhdykgPT4gaXRlbXMuaW5jbHVkZXMocmF3KSA/IHJhdyA6IGZhaWwoKSk7XG5leHBvcnQgY29uc3QgbGlrZSA9ICgodGFnKSA9PiBiYW5kaXR5cGUoKHJhdykgPT4gKHR5cGVvZiByYXcgPT09IHR5cGVvZiB0YWcgPyByYXcgOiBmYWlsKCkpKSk7XG5leHBvcnQgY29uc3Qgc3RyaW5nID0gKCkgPT4gbGlrZShcIlwiKTtcbmV4cG9ydCBjb25zdCBudW1iZXIgPSAoKSA9PiBsaWtlKDApO1xuZXhwb3J0IGNvbnN0IGJvb2xlYW4gPSAoKSA9PiBsaWtlKHRydWUpO1xuZXhwb3J0IGNvbnN0IGZ1bmMgPSAoKSA9PiBsaWtlKGZhaWwpO1xuZXhwb3J0IGNvbnN0IG9wdGlvbmFsID0gKCkgPT4gbGlrZSgpO1xuZXhwb3J0IGNvbnN0IG51bGxhYmxlID0gKCkgPT4gYmFuZGl0eXBlKChyYXcpID0+IChyYXcgPT09IG51bGwgPyByYXcgOiBmYWlsKCkpKTtcbi8vIENsYXNzZXNcbmV4cG9ydCBjb25zdCBpbnN0YW5jZSA9IChwcm90bykgPT4gYmFuZGl0eXBlKChyYXcpID0+IChyYXcgaW5zdGFuY2VvZiBwcm90byA/IHJhdyA6IGZhaWwoKSkpO1xuLy8gb2JqZWN0c1xuZXhwb3J0IGNvbnN0IHJlY29yZCA9IChjYXN0VmFsdWUpID0+IGluc3RhbmNlKE9iamVjdCkubWFwKChyYXcpID0+IHtcbiAgICBjb25zdCByZXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiByYXcpIHtcbiAgICAgICAgY29uc3QgZiA9IGNhc3RWYWx1ZShyYXdba2V5XSk7XG4gICAgICAgIGYgIT09IHVuZGVmaW5lZCAmJiAocmVzW2tleV0gPSBmKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn0pO1xuZXhwb3J0IGNvbnN0IG9iamVjdCA9IChzY2hlbWEpID0+IGluc3RhbmNlKE9iamVjdCkubWFwKChyYXcpID0+IHtcbiAgICBjb25zdCByZXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEpIHtcbiAgICAgICAgY29uc3QgZiA9IHNjaGVtYVtrZXldKHJhd1trZXldKTtcbiAgICAgICAgZiAhPT0gdW5kZWZpbmVkICYmIChyZXNba2V5XSA9IGYpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufSk7XG5leHBvcnQgY29uc3Qgb2JqZWN0TG9vc2UgPSAoc2NoZW1hKSA9PiBpbnN0YW5jZShPYmplY3QpLm1hcCgocmF3KSA9PiB7XG4gICAgY29uc3QgcmVzID0geyAuLi5yYXcgfTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEpIHtcbiAgICAgICAgY29uc3QgZiA9IHNjaGVtYVtrZXldKHJhd1trZXldKTtcbiAgICAgICAgZiAhPT0gdW5kZWZpbmVkICYmIChyZXNba2V5XSA9IGYpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufSk7XG4vLyBhcnJheXNcbmV4cG9ydCBjb25zdCBhcnJheSA9IChjYXN0SXRlbSkgPT4gaW5zdGFuY2UoQXJyYXkpLm1hcCgoYXJyKSA9PiBhcnIubWFwKGNhc3RJdGVtKSk7XG5leHBvcnQgY29uc3QgdHVwbGUgPSAoc2NoZW1hKSA9PiBpbnN0YW5jZShBcnJheSkubWFwKChhcnIpID0+IHtcbiAgICByZXR1cm4gc2NoZW1hLm1hcCgoY2FzdCwgaSkgPT4gY2FzdChhcnJbaV0pKTtcbn0pO1xuZXhwb3J0IGNvbnN0IHNldCA9IChjYXN0SXRlbSkgPT4gaW5zdGFuY2UoU2V0KS5tYXAoKHNldCkgPT4gbmV3IFNldChbLi4uc2V0XS5tYXAoY2FzdEl0ZW0pKSk7XG5leHBvcnQgY29uc3QgbWFwID0gKGNhc3RLZXksIGNhc3RWYWx1ZSkgPT4gaW5zdGFuY2UoTWFwKS5tYXAoKG1hcCkgPT4ge1xuICAgIHJldHVybiBuZXcgTWFwKFsuLi5tYXBdLm1hcCgoW2ssIHZdKSA9PiBbY2FzdEtleShrKSwgY2FzdFZhbHVlKHYpXSkpO1xufSk7XG5leHBvcnQgY29uc3QgbGF6eSA9IChjYXN0KSA9PiBiYW5kaXR5cGUoKHJhdykgPT4gY2FzdCgpKHJhdykpO1xuIiwKICAgICJpbXBvcnQge1xuICBhcnJheSxcbiAgdHlwZSBJbmZlciBhcyBCVEluZmVyLFxuICBib29sZWFuLFxuICB0eXBlIENhc3QsXG4gIGVudW1zLFxuICBmYWlsLFxuICBudW1iZXIsXG4gIG9iamVjdCxcbiAgb3B0aW9uYWwsXG4gIHJlY29yZCxcbiAgc3RyaW5nLFxuICBiYW5kaXR5cGUgYXMgdmFsaWRhdG9yLFxufSBmcm9tIFwiYmFuZGl0eXBlc1wiO1xuXG5leHBvcnQgeyBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiwgb2JqZWN0LCBhcnJheSwgb3B0aW9uYWwsIHJlY29yZCwgZW51bXMsIGZhaWwgfTtcblxuZXhwb3J0IHR5cGUgSW5mZXI8VCBleHRlbmRzIENhc3Q8dW5rbm93bj4+ID0gQlRJbmZlcjxUPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVuaW9uPEEsIEI+KHNjaGVtYUE6IENhc3Q8QT4sIHNjaGVtYUI6IENhc3Q8Qj4pOiBDYXN0PEEgfCBCPiB7XG4gIHJldHVybiB2YWxpZGF0b3IoKGRhdGE6IHVua25vd24pOiBBIHwgQiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBzY2hlbWFBKGRhdGEpIGFzIEE7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gc2NoZW1hQihkYXRhKSBhcyBCO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG1hdGNoaW5nIHNjaGVtYSBpbiB1bmlvblwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFRvPFQ+KHNjaGVtYTogQ2FzdDxUPiwgZGVmYXVsdFZhbHVlOiBUKSB7XG4gIHJldHVybiAoZGF0YTogdW5rbm93bikgPT4ge1xuICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgcmV0dXJuIHNjaGVtYShkYXRhKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aXZlSW50KCkge1xuICByZXR1cm4gdmFsaWRhdG9yKChkYXRhOiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgbiA9IG51bWJlcigpKGRhdGEpO1xuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihuKSB8fCBuIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyXCIpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cmwoKSB7XG4gIHJldHVybiB2YWxpZGF0b3IoKGRhdGE6IHVua25vd24pID0+IHtcbiAgICBjb25zdCBzID0gc3RyaW5nKCkoZGF0YSk7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBVUkwocyk7XG4gICAgICByZXR1cm4gcztcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk11c3QgYmUgYSB2YWxpZCBVUkxcIik7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtYWlsKCkge1xuICByZXR1cm4gdmFsaWRhdG9yKChkYXRhOiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgcyA9IHN0cmluZygpKGRhdGEpO1xuICAgIGNvbnN0IGVtYWlsUmVnZXggPSAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLztcbiAgICBpZiAoIWVtYWlsUmVnZXgudGVzdChzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTXVzdCBiZSBhIHZhbGlkIGVtYWlsXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcztcbiAgfSk7XG59XG5cbi8vIE1pbi9tYXggaGVscGVyc1xuZXhwb3J0IGZ1bmN0aW9uIG1pbihtaW5WYWw6IG51bWJlcikge1xuICByZXR1cm4gdmFsaWRhdG9yKChkYXRhOiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgbiA9IG51bWJlcigpKGRhdGEpO1xuICAgIGlmIChuIDwgbWluVmFsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE11c3QgYmUgYXQgbGVhc3QgJHttaW5WYWx9YCk7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pbkxlbmd0aChtaW5MZW46IG51bWJlcikge1xuICByZXR1cm4gdmFsaWRhdG9yKChkYXRhOiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgcyA9IHN0cmluZygpKGRhdGEpO1xuICAgIGlmIChzLmxlbmd0aCA8IG1pbkxlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNdXN0IGJlIGF0IGxlYXN0ICR7bWluTGVufSBjaGFyYWN0ZXJzYCk7XG4gICAgfVxuICAgIHJldHVybiBzO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2V4KHBhdHRlcm46IFJlZ0V4cCwgbWVzc2FnZT86IHN0cmluZykge1xuICByZXR1cm4gdmFsaWRhdG9yKChkYXRhOiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgcyA9IHN0cmluZygpKGRhdGEpO1xuICAgIGlmICghcGF0dGVybi50ZXN0KHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSB8fCBgTXVzdCBtYXRjaCBwYXR0ZXJuICR7cGF0dGVybn1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHM7XG4gIH0pO1xufVxuXG4vLyBIZWxwZXIgdG8gY3JlYXRlIHNjaGVtYXMgd2l0aCBiZXR0ZXIgZXJyb3IgaGFuZGxpbmdcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTY2hlbWE8VD4odmFsaWRhdG9yOiBDYXN0PFQ+KSB7XG4gIHJldHVybiB7XG4gICAgcGFyc2UodmFsdWU6IHVua25vd24pOiBUIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0b3IodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogXCJWYWxpZGF0aW9uIGZhaWxlZFwiKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNhZmVQYXJzZSh2YWx1ZTogdW5rbm93bik6IHsgc3VjY2VzczogdHJ1ZTsgZGF0YTogVCB9IHwgeyBzdWNjZXNzOiBmYWxzZTsgZXJyb3I6IEVycm9yIH0ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHsgZGF0YTogdmFsaWRhdG9yKHZhbHVlKSwgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFwiVmFsaWRhdGlvbiBmYWlsZWRcIiksXG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0b3IsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25maWdWYWxpZGF0b3I8VD4oc2NoZW1hOiBDYXN0PFQ+KSB7XG4gIGNvbnN0IHZhbGlkYXRvciA9IGNyZWF0ZVNjaGVtYShzY2hlbWEpO1xuXG4gIHJldHVybiB7XG4gICAgcGFyc2U6IHZhbGlkYXRvci5wYXJzZSxcbiAgICBwYXJzZUpTT04oanNvbjogc3RyaW5nKTogVCB7XG4gICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShqc29uKTtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHZhbGlkYXRvci5zYWZlUGFyc2UoZGF0YSk7XG5cbiAgICAgIGlmICghY29uZmlnLnN1Y2Nlc3MpIHtcbiAgICAgICAgY29uc3QgaXNFcnJvciA9IGNvbmZpZy5lcnJvciBpbnN0YW5jZW9mIEVycm9yO1xuICAgICAgICB0aHJvdyBpc0Vycm9yID8gbmV3IEVycm9yKGBJbnZhbGlkIEpTT046ICR7Y29uZmlnLmVycm9yLm1lc3NhZ2V9YCkgOiBjb25maWcuZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb25maWcuZGF0YTtcbiAgICB9LFxuICAgIHNhZmVQYXJzZTogdmFsaWRhdG9yLnNhZmVQYXJzZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsU3RyaW5nKCkge1xuICByZXR1cm4gdW5pb24ob3B0aW9uYWwoKSwgc3RyaW5nKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uYWxCb29sZWFuKCkge1xuICByZXR1cm4gdW5pb24ob3B0aW9uYWwoKSwgYm9vbGVhbigpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRTdHJpbmcoZGVmYXVsdFZhbHVlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmF1bHRUbyhzdHJpbmcoKSwgZGVmYXVsdFZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRCb29sZWFuKGRlZmF1bHRWYWx1ZTogYm9vbGVhbikge1xuICByZXR1cm4gZGVmYXVsdFRvKGJvb2xlYW4oKSwgZGVmYXVsdFZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRPcHRpb25hbFN0cmluZyhkZWZhdWx0VmFsdWU6IHN0cmluZykge1xuICByZXR1cm4gZGVmYXVsdFRvKG9wdGlvbmFsU3RyaW5nKCksIGRlZmF1bHRWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0T3B0aW9uYWxCb29sZWFuKGRlZmF1bHRWYWx1ZTogYm9vbGVhbikge1xuICByZXR1cm4gZGVmYXVsdFRvKG9wdGlvbmFsQm9vbGVhbigpLCBkZWZhdWx0VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uYWxPYmplY3Q8VD4oc2NoZW1hOiBDYXN0PFQ+KSB7XG4gIHJldHVybiB1bmlvbihvcHRpb25hbCgpLCBzY2hlbWEpO1xufVxuIiwKICAgICJpbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tIFwibm9kZTp1dGlsXCI7XG5pbXBvcnQgeyBjb25maXJtLCBpc0NhbmNlbCwgdGV4dCB9IGZyb20gXCJAY2xhY2svcHJvbXB0c1wiO1xuaW1wb3J0IHsgd2l0aFJldHJ5IH0gZnJvbSBcIkByNW4vY2xpLWNvcmVcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCJAcjVuL3Rvb2xzL3V0aWxzL2xvZ2dlclwiO1xuaW1wb3J0IHsgJCB9IGZyb20gXCJidW5cIjtcbmltcG9ydCB7IGdldFByb2ZpbGUsIGxvYWRDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnXCI7XG5pbXBvcnQgeyBnZXRQYWNrYWdlUGF0aCB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XG5pbXBvcnQgeyB3b3JrZXJNYW5hZ2VyIH0gZnJvbSBcIi4uL2xpYi93b3JrZXItbWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVBcmdzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcih7IHByZWZpeDogXCJjcmVhdGVNYWNoaW5lc1wiIH0pO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlTWFjaGluZXMoKSB7XG4gIGNvbnN0IGFyZ3MgPSBhd2FpdCBnZXRBcmdzKCk7XG4gIGNvbnN0IHsgb3ZlcndyaXRlLCBkaXJlY3RvcnksIG51bWJlck9mTWFjaGluZXMsIG9zLCBydW4sIG5hbWUsIGxhYmVscywgcnVubmVyR3JvdXAgfSA9IGFyZ3M7XG4gIGxldCB7IHRva2VuLCB1cmwgfSA9IGFyZ3M7XG5cbiAgaWYgKCF1cmwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVUkwgKC11KSBwYXJhbWV0ZXIgaXMgcmVxdWlyZWRcIik7XG4gIH1cblxuICBpZiAoIXRva2VuKSB7XG4gICAgY29uc3Qgc2V0dGluZ3NVcmwgPSBjb25zdHJ1Y3RSdW5uZXJTZXR0aW5nc1VybCh1cmwpO1xuXG4gICAgY29uc3Qgc2hvdWxkT3BlbiA9IGF3YWl0IGNvbmZpcm0oe1xuICAgICAgbWVzc2FnZTogYE5vIHRva2VuIHByb3ZpZGVkLiBXb3VsZCB5b3UgbGlrZSB0byBvcGVuIEdpdEh1YiB0byBnZXQgYSBydW5uZXIgdG9rZW4/XFxuICAke3NldHRpbmdzVXJsfWAsXG4gICAgfSk7XG5cbiAgICBpZiAoaXNDYW5jZWwoc2hvdWxkT3BlbikgfHwgIXNob3VsZE9wZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRva2VuIGlzIHJlcXVpcmVkIHRvIGNyZWF0ZSBydW5uZXJzXCIpO1xuICAgIH1cblxuICAgIGxvZ2dlci5pbmZvKFwiT3BlbmluZyBHaXRIdWIgcnVubmVyIHNldHRpbmdzLi4uXCIpO1xuICAgIGF3YWl0ICRgb3BlbiAke3NldHRpbmdzVXJsfWAucXVpZXQoKTtcblxuICAgIGNvbnN0IHRva2VuSW5wdXQgPSBhd2FpdCB0ZXh0KHtcbiAgICAgIG1lc3NhZ2U6IFwiRW50ZXIgdGhlIHJ1bm5lciByZWdpc3RyYXRpb24gdG9rZW46XCIsXG4gICAgICBwbGFjZWhvbGRlcjogXCJBWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFwiLFxuICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gXCJUb2tlbiBpcyByZXF1aXJlZFwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKGlzQ2FuY2VsKHRva2VuSW5wdXQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb2tlbiBpcyByZXF1aXJlZCB0byBjcmVhdGUgcnVubmVyc1wiKTtcbiAgICB9XG5cbiAgICB0b2tlbiA9IHRva2VuSW5wdXQudHJpbSgpO1xuICB9XG5cbiAgbG9nZ2VyLmluZm8oYENyZWF0aW5nICR7bnVtYmVyT2ZNYWNoaW5lc30gcnVubmVycyBpbiAke2RpcmVjdG9yeX1gKTtcbiAgbG9nZ2VyLmRlYnVnKGBPUzogJHtvc30sIE5hbWU6ICR7bmFtZX0sIExhYmVsczogJHtsYWJlbHMgfHwgXCJub25lXCJ9YCk7XG5cbiAgY29uc3QgZGlyZWN0b3J5RXhpc3RzID0gYXdhaXQgQnVuLmZpbGUoZGlyZWN0b3J5KS5leGlzdHMoKTtcbiAgaWYgKGRpcmVjdG9yeUV4aXN0cykge1xuICAgIGlmIChvdmVyd3JpdGUpIHtcbiAgICAgIGxvZ2dlci53YXJuKGBEaXJlY3RvcnkgJHtkaXJlY3Rvcnl9IGV4aXN0cywgcmVtb3ZpbmcuLi5gKTtcbiAgICAgIGF3YWl0ICRgcm0gLXJmICR7ZGlyZWN0b3J5fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlyZWN0b3J5ICR7ZGlyZWN0b3J5fSBhbHJlYWR5IGV4aXN0c2ApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJ1bm5lckJhc2UgPSBhd2FpdCBkb3dubG9hZExhdGVzdFJ1bm5lckltYWdlKHsgZGlyZWN0b3J5LCBvcyB9KTtcbiAgYXdhaXQgZXh0cmFjdEFuZENvcHlSdW5uZXJCYXNlKHsgZGlyZWN0b3J5LCBudW1iZXJPZk1hY2hpbmVzLCBvdmVyd3JpdGUsIHJ1bm5lckJhc2UgfSk7XG5cbiAgaWYgKCFydW4pIHtcbiAgICBsb2dnZXIuaW5mbyhcIlJ1bm5lcnMgY3JlYXRlZCBidXQgbm90IHN0YXJ0ZWRcIik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhcnRSdW5uZXJzKHsgZGlyZWN0b3J5LCBsYWJlbHMsIG5hbWUsIG51bWJlck9mTWFjaGluZXMsIHJ1bm5lckdyb3VwLCB0b2tlbiwgdXJsIH0pO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RSdW5uZXJTZXR0aW5nc1VybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpO1xuICAgIGNvbnN0IHBhdGhQYXJ0cyA9IHBhcnNlZFVybC5wYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgLy8gSGFuZGxlIGRpZmZlcmVudCBHaXRIdWIgVVJMIGZvcm1hdHNcbiAgICBpZiAocGFyc2VkVXJsLmhvc3RuYW1lID09PSBcImdpdGh1Yi5jb21cIiB8fCBwYXJzZWRVcmwuaG9zdG5hbWUgPT09IFwid3d3LmdpdGh1Yi5jb21cIikge1xuICAgICAgaWYgKHBhdGhQYXJ0c1swXSA9PT0gXCJvcmdzXCIgJiYgcGF0aFBhcnRzWzFdKSB7XG4gICAgICAgIC8vIE9yZ2FuaXphdGlvbiBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdzL215b3JnXG4gICAgICAgIHJldHVybiBgaHR0cHM6Ly9naXRodWIuY29tL29yZ2FuaXphdGlvbnMvJHtwYXRoUGFydHNbMV19L3NldHRpbmdzL2FjdGlvbnMvcnVubmVycy9uZXdgO1xuICAgICAgfSBlbHNlIGlmIChwYXRoUGFydHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgLy8gUmVwb3NpdG9yeSBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9vd25lci9yZXBvXG4gICAgICAgIHJldHVybiBgaHR0cHM6Ly9naXRodWIuY29tLyR7cGF0aFBhcnRzWzBdfS8ke3BhdGhQYXJ0c1sxXX0vc2V0dGluZ3MvYWN0aW9ucy9ydW5uZXJzL25ld2A7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEdpdEh1YiBFbnRlcnByaXNlIFVSTFxuICAgICAgaWYgKHBhdGhQYXJ0c1swXSA9PT0gXCJvcmdzXCIgJiYgcGF0aFBhcnRzWzFdKSB7XG4gICAgICAgIHJldHVybiBgJHtwYXJzZWRVcmwub3JpZ2lufS9vcmdhbml6YXRpb25zLyR7cGF0aFBhcnRzWzFdfS9zZXR0aW5ncy9hY3Rpb25zL3J1bm5lcnMvbmV3YDtcbiAgICAgIH0gZWxzZSBpZiAocGF0aFBhcnRzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgIHJldHVybiBgJHtwYXJzZWRVcmwub3JpZ2lufS8ke3BhdGhQYXJ0c1swXX0vJHtwYXRoUGFydHNbMV19L3NldHRpbmdzL2FjdGlvbnMvcnVubmVycy9uZXdgO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIHRvIG9yaWdpbmFsIFVSTCBpZiB3ZSBjYW4ndCBwYXJzZSBpdFxuICAgIHJldHVybiB1cmw7XG4gIH0gY2F0Y2gge1xuICAgIC8vIElmIFVSTCBwYXJzaW5nIGZhaWxzLCByZXR1cm4gdGhlIG9yaWdpbmFsXG4gICAgcmV0dXJuIHVybDtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBcmdzKCk6IFByb21pc2U8Q3JlYXRlQXJncz4ge1xuICBjb25zdCB7IHZhbHVlcyB9ID0gcGFyc2VBcmdzKHtcbiAgICBhbGxvd1Bvc2l0aW9uYWxzOiB0cnVlLFxuICAgIGFyZ3M6IEJ1bi5hcmd2LFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGNvbmZpZzogeyBzaG9ydDogXCJjXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIGRpcmVjdG9yeTogeyBkZWZhdWx0OiBgJHtwcm9jZXNzLmN3ZCgpfS9naC1ydW5uZXJzYCwgc2hvcnQ6IFwiZFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBsYWJlbHM6IHsgc2hvcnQ6IFwibFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBuYW1lOiB7IGRlZmF1bHQ6IFwicnVubmVyXCIsIHNob3J0OiBcIm5cIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgbnVtYmVyT2ZNYWNoaW5lczogeyBkZWZhdWx0OiBcIjFcIiwgc2hvcnQ6IFwibVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBvczogeyBkZWZhdWx0OiBcIm9zeFwiLCBzaG9ydDogXCJzXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIG92ZXJ3cml0ZTogeyBkZWZhdWx0OiBmYWxzZSwgc2hvcnQ6IFwiZlwiLCB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgcHJvZmlsZTogeyBzaG9ydDogXCJwXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIHJ1bjogeyBkZWZhdWx0OiBmYWxzZSwgc2hvcnQ6IFwiclwiLCB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgcnVubmVyR3JvdXA6IHsgc2hvcnQ6IFwiZ1wiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICB0b2tlbjogeyBzaG9ydDogXCJ0XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIHVybDogeyBzaG9ydDogXCJ1XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICB9LFxuICAgIHN0cmljdDogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZENvbmZpZyh7IGNvbmZpZ1BhdGg6IHZhbHVlcy5jb25maWcgYXMgc3RyaW5nIH0pO1xuICBjb25zdCBwcm9maWxlID0gYXdhaXQgZ2V0UHJvZmlsZShjb25maWcsIHZhbHVlcy5wcm9maWxlIGFzIHN0cmluZyk7XG5cbiAgY29uc3QgYmFzZUFyZ3MgPSB7XG4gICAgZGlyZWN0b3J5OiB2YWx1ZXMuZGlyZWN0b3J5IGFzIHN0cmluZyxcbiAgICBsYWJlbHM6IHZhbHVlcy5sYWJlbHMgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIG5hbWU6IHZhbHVlcy5uYW1lIGFzIHN0cmluZyxcbiAgICBudW1iZXJPZk1hY2hpbmVzOiB2YWx1ZXMubnVtYmVyT2ZNYWNoaW5lcyBhcyBzdHJpbmcsXG4gICAgb3M6IHZhbHVlcy5vcyBhcyBzdHJpbmcsXG4gICAgb3ZlcndyaXRlOiB2YWx1ZXMub3ZlcndyaXRlIGFzIGJvb2xlYW4sXG4gICAgcnVuOiB2YWx1ZXMucnVuIGFzIGJvb2xlYW4sXG4gICAgcnVubmVyR3JvdXA6IHZhbHVlcy5ydW5uZXJHcm91cCBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdG9rZW46IHZhbHVlcy50b2tlbiBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdXJsOiB2YWx1ZXMudXJsIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgfTtcblxuICAvLyBNZXJnZSB3aXRoIHByb2ZpbGVcbiAgaWYgKHByb2ZpbGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlyZWN0b3J5OiBiYXNlQXJncy5kaXJlY3RvcnkgPz8gcHJvZmlsZS5kaXJlY3RvcnkgPz8gYCR7cHJvY2Vzcy5jd2QoKX0vZ2gtcnVubmVyc2AsXG4gICAgICBsYWJlbHM6IGJhc2VBcmdzLmxhYmVscyA/PyBwcm9maWxlLmxhYmVscyxcbiAgICAgIG5hbWU6IGJhc2VBcmdzLm5hbWUgPz8gcHJvZmlsZS5uYW1lID8/IFwicnVubmVyXCIsXG4gICAgICBudW1iZXJPZk1hY2hpbmVzOiBiYXNlQXJncy5udW1iZXJPZk1hY2hpbmVzID8/IFN0cmluZyhwcm9maWxlLm51bWJlck9mTWFjaGluZXMpID8/IFwiMVwiLFxuICAgICAgb3M6IChiYXNlQXJncy5vcyA/PyBwcm9maWxlLm9zID8/IFwib3N4XCIpIGFzIFwib3N4XCIgfCBcImxpbnV4XCIgfCBcIndpbmRvd3NcIixcbiAgICAgIG92ZXJ3cml0ZTogYmFzZUFyZ3Mub3ZlcndyaXRlID8/IHByb2ZpbGUub3ZlcndyaXRlID8/IGZhbHNlLFxuICAgICAgcnVuOiBiYXNlQXJncy5ydW4gPz8gcHJvZmlsZS5ydW4gPz8gZmFsc2UsXG4gICAgICBydW5uZXJHcm91cDogYmFzZUFyZ3MucnVubmVyR3JvdXAgPz8gcHJvZmlsZS5ydW5uZXJHcm91cCxcbiAgICAgIHRva2VuOiBiYXNlQXJncy50b2tlbixcbiAgICAgIHVybDogYmFzZUFyZ3MudXJsID8/IHByb2ZpbGUudXJsLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRpcmVjdG9yeTogYmFzZUFyZ3MuZGlyZWN0b3J5LFxuICAgIGxhYmVsczogYmFzZUFyZ3MubGFiZWxzLFxuICAgIG5hbWU6IGJhc2VBcmdzLm5hbWUsXG4gICAgbnVtYmVyT2ZNYWNoaW5lczogYmFzZUFyZ3MubnVtYmVyT2ZNYWNoaW5lcyxcbiAgICBvczogYmFzZUFyZ3Mub3MgYXMgXCJvc3hcIiB8IFwibGludXhcIiB8IFwid2luZG93c1wiLFxuICAgIG92ZXJ3cml0ZTogYmFzZUFyZ3Mub3ZlcndyaXRlLFxuICAgIHJ1bjogYmFzZUFyZ3MucnVuLFxuICAgIHJ1bm5lckdyb3VwOiBiYXNlQXJncy5ydW5uZXJHcm91cCxcbiAgICB0b2tlbjogYmFzZUFyZ3MudG9rZW4sXG4gICAgdXJsOiBiYXNlQXJncy51cmwsXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkTGF0ZXN0UnVubmVySW1hZ2UoeyBkaXJlY3RvcnksIG9zIH06IHsgZGlyZWN0b3J5OiBzdHJpbmc7IG9zOiBzdHJpbmcgfSkge1xuICBjb25zdCBsb2cgPSBsb2dnZXIuY2hpbGQoXCJkb3dubG9hZFwiKTtcblxuICBsb2cuaW5mbyhgRmV0Y2hpbmcgbGF0ZXN0IHJ1bm5lciB2ZXJzaW9uIGZvciAke29zfS4uLmApO1xuICBjb25zdCByZWxlYXNlSW5mbyA9IGF3YWl0IHdpdGhSZXRyeShcbiAgICBhc3luYyAoKSA9PlxuICAgICAgKFxuICAgICAgICBhd2FpdCAkYGN1cmwgLUxzIC1vIC9kZXYvbnVsbCAtdyBcIiV7dXJsX2VmZmVjdGl2ZX1cIiBodHRwczovL2dpdGh1Yi5jb20vYWN0aW9ucy9ydW5uZXIvcmVsZWFzZXMvbGF0ZXN0YFxuICAgICAgKS50ZXh0KCksXG4gICAge1xuICAgICAgb25SZXRyeTogKGF0dGVtcHQsIGVycm9yKSA9PiB7XG4gICAgICAgIGxvZy53YXJuKGBSZXRyeWluZyBHaXRIdWIgQVBJIGNhbGwgKGF0dGVtcHQgJHthdHRlbXB0fSk6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgKTtcbiAgY29uc3QgbGFzdFJlbGVhc2UgPSAoYXdhaXQgJGBiYXNlbmFtZSAke3JlbGVhc2VJbmZvfWApLnRleHQoKTtcblxuICBjb25zdCB2ZXJzaW9uID0gbGFzdFJlbGVhc2UudHJpbSgpLnJlcGxhY2UoXCJ2XCIsIFwiXCIpO1xuICBjb25zdCBydW5uZXJCYXNlID0gYGFjdGlvbnMtcnVubmVyLSR7b3N9LXg2NC0ke3ZlcnNpb259LnRhci5nemA7XG4gIGNvbnN0IGdpdGh1YlJlbGVhc2VVcmwgPSBgaHR0cHM6Ly9naXRodWIuY29tL2FjdGlvbnMvcnVubmVyL3JlbGVhc2VzL2Rvd25sb2FkL3Yke3ZlcnNpb259LyR7cnVubmVyQmFzZX1gO1xuXG4gIGxvZy5kZWJ1ZyhgUnVubmVyIHZlcnNpb246ICR7dmVyc2lvbn1gKTtcbiAgbG9nLmRlYnVnKGBEb3dubG9hZCBVUkw6ICR7Z2l0aHViUmVsZWFzZVVybH1gKTtcblxuICBhd2FpdCAkYG1rZGlyIC1wICR7ZGlyZWN0b3J5fWA7XG4gIGF3YWl0ICRgbWtkaXIgLXAgJHtkaXJlY3Rvcnl9L21hY2hpbmVzYDtcblxuICBjb25zdCBydW5uZXJGaWxlRXhpc3RzID0gYXdhaXQgQnVuLmZpbGUoYCR7ZGlyZWN0b3J5fS8ke3J1bm5lckJhc2V9YCkuZXhpc3RzKCk7XG4gIGlmICghcnVubmVyRmlsZUV4aXN0cykge1xuICAgIGxvZy5pbmZvKFwiRG93bmxvYWRpbmcgcnVubmVyIGltYWdlLi4uXCIpO1xuICAgIGF3YWl0IHdpdGhSZXRyeShcbiAgICAgIGFzeW5jICgpID0+IGF3YWl0ICRgY3VybCAtbyAke2RpcmVjdG9yeX0vJHtydW5uZXJCYXNlfSAtTCAke2dpdGh1YlJlbGVhc2VVcmx9YCxcbiAgICAgIHtcbiAgICAgICAgbWF4QXR0ZW1wdHM6IDUsXG4gICAgICAgIG9uUmV0cnk6IChhdHRlbXB0LCBlcnJvcikgPT4ge1xuICAgICAgICAgIGxvZy53YXJuKGBSZXRyeWluZyBydW5uZXIgZG93bmxvYWQgKGF0dGVtcHQgJHthdHRlbXB0fSk6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBsb2cuaW5mbyhcIkRvd25sb2FkIGNvbXBsZXRlXCIpO1xuICB9IGVsc2Uge1xuICAgIGxvZy5pbmZvKFwiUnVubmVyIGltYWdlIGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyBkb3dubG9hZFwiKTtcbiAgfVxuXG4gIHJldHVybiBydW5uZXJCYXNlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0QW5kQ29weVJ1bm5lckJhc2Uoe1xuICBvdmVyd3JpdGUsXG4gIG51bWJlck9mTWFjaGluZXMsXG4gIGRpcmVjdG9yeSxcbiAgcnVubmVyQmFzZSxcbn06IHtcbiAgb3ZlcndyaXRlOiBib29sZWFuO1xuICBudW1iZXJPZk1hY2hpbmVzOiBzdHJpbmc7XG4gIGRpcmVjdG9yeTogc3RyaW5nO1xuICBydW5uZXJCYXNlOiBzdHJpbmc7XG59KSB7XG4gIGNvbnN0IGxvZyA9IGxvZ2dlci5jaGlsZChcImV4dHJhY3RcIik7XG4gIGNvbnN0IG51bU1hY2hpbmVzID0gTnVtYmVyKG51bWJlck9mTWFjaGluZXMpO1xuXG4gIGNvbnN0IGNwdUNvdW50ID0gKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gQnVuLnNwYXduU3luYyhbXCJucHJvY1wiXSk7XG4gICAgICByZXR1cm4gTnVtYmVyLnBhcnNlSW50KHJlc3VsdC5zdGRvdXQudG9TdHJpbmcoKS50cmltKCksIDEwKSB8fCA0O1xuICAgIH0gY2F0Y2gge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gQnVuLnNwYXduU3luYyhbXCJzeXNjdGxcIiwgXCItblwiLCBcImh3Lm5jcHVcIl0pO1xuICAgICAgICByZXR1cm4gTnVtYmVyLnBhcnNlSW50KHJlc3VsdC5zdGRvdXQudG9TdHJpbmcoKS50cmltKCksIDEwKSB8fCA0O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiA0O1xuICAgICAgfVxuICAgIH1cbiAgfSkoKTtcbiAgY29uc3QgY29uY3VycmVuY3kgPSBNYXRoLm1pbihNYXRoLm1heCgyLCBNYXRoLmZsb29yKGNwdUNvdW50IC8gMikpLCBudW1NYWNoaW5lcywgOCk7XG5cbiAgbG9nLmluZm8oYEV4dHJhY3RpbmcgJHtudW1NYWNoaW5lc30gcnVubmVycyB3aXRoIGNvbmN1cnJlbmN5IG9mICR7Y29uY3VycmVuY3l9YCk7XG5cbiAgY29uc3QgdGFza3MgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBudW1NYWNoaW5lcyB9LCAoXywgaSkgPT4gaSArIDEpLm1hcCgocnVubmVySW5kZXgpID0+ICh7XG4gICAgZXhlY3V0ZTogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbWFjaGluZURpcmVjdG9yeSA9IGAke2RpcmVjdG9yeX0vbWFjaGluZXMvJHtydW5uZXJJbmRleH1gO1xuICAgICAgY29uc3QgbWFjaGluZUV4aXN0cyA9IGF3YWl0IEJ1bi5maWxlKG1hY2hpbmVEaXJlY3RvcnkpLmV4aXN0cygpO1xuXG4gICAgICBpZiAobWFjaGluZUV4aXN0cykge1xuICAgICAgICBpZiAob3ZlcndyaXRlKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBNYWNoaW5lICR7cnVubmVySW5kZXh9IGFscmVhZHkgZXhpc3RzLCByZW1vdmluZy4uLmApO1xuICAgICAgICAgIGF3YWl0ICRgcm0gLXJmICR7bWFjaGluZURpcmVjdG9yeX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgTWFjaGluZSAke3J1bm5lckluZGV4fSBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmcuLi5gKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgJGBta2RpciAtcCAke21hY2hpbmVEaXJlY3Rvcnl9YDtcblxuICAgICAgYXdhaXQgJGB0YXIgeHpmICR7cnVubmVyQmFzZX0gLUMgJHttYWNoaW5lRGlyZWN0b3J5LnJlcGxhY2UoYCR7ZGlyZWN0b3J5fS9gLCBcIlwiKX1gLmN3ZChcbiAgICAgICAgZGlyZWN0b3J5LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgcnVubmVyUGF0aCA9IGAke2dldFBhY2thZ2VQYXRoKCl9L3NyYy9ydW5uZXJgO1xuXG4gICAgICBhd2FpdCAkYGNwIC1SICR7cnVubmVyUGF0aH0vaG9va3MgJHttYWNoaW5lRGlyZWN0b3J5fWA7XG4gICAgICBhd2FpdCAkYGNwIC1SICR7cnVubmVyUGF0aH0vLnJ1bm5lci1lbnYgJHttYWNoaW5lRGlyZWN0b3J5fS8ucnVubmVyLWVudmA7XG5cbiAgICAgIGxvZy5kZWJ1ZyhgTWFjaGluZSAke3J1bm5lckluZGV4fSBleHRyYWN0ZWQgc3VjY2Vzc2Z1bGx5YCk7XG4gICAgfSxcbiAgICBydW5uZXJJbmRleCxcbiAgfSkpO1xuXG4gIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YXNrcy5sZW5ndGg7IGkgKz0gY29uY3VycmVuY3kpIHtcbiAgICBjb25zdCBiYXRjaCA9IHRhc2tzLnNsaWNlKGksIGkgKyBjb25jdXJyZW5jeSk7XG4gICAgY29uc3QgYmF0Y2hSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGJhdGNoLm1hcCgodGFzaykgPT4gdGFzay5leGVjdXRlKCkpKTtcblxuICAgIGZvciAoY29uc3QgW2luZGV4LCByZXN1bHRdIG9mIGJhdGNoUmVzdWx0cy5lbnRyaWVzKCkpIHtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInJlamVjdGVkXCIpIHtcbiAgICAgICAgbG9nLmVycm9yKGBGYWlsZWQgdG8gZXh0cmFjdCBydW5uZXIgJHtiYXRjaFtpbmRleF0/LnJ1bm5lckluZGV4fTogJHtyZXN1bHQucmVhc29ufWApO1xuICAgICAgICB0aHJvdyByZXN1bHQucmVhc29uO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlc3VsdHMucHVzaCguLi5iYXRjaFJlc3VsdHMpO1xuICB9XG5cbiAgbG9nLmluZm8oYFN1Y2Nlc3NmdWxseSBleHRyYWN0ZWQgJHtudW1NYWNoaW5lc30gcnVubmVyc2ApO1xufVxuXG5mdW5jdGlvbiBzdGFydFJ1bm5lcnMoe1xuICBkaXJlY3RvcnksXG4gIG51bWJlck9mTWFjaGluZXMsXG4gIHRva2VuLFxuICB1cmwsXG4gIG5hbWUsXG4gIGxhYmVscyxcbiAgcnVubmVyR3JvdXAsXG59OiB7XG4gIGRpcmVjdG9yeTogc3RyaW5nO1xuICBudW1iZXJPZk1hY2hpbmVzOiBzdHJpbmc7XG4gIHRva2VuOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhYmVscz86IHN0cmluZztcbiAgcnVubmVyR3JvdXA/OiBzdHJpbmc7XG59KSB7XG4gIGxvZ2dlci5pbmZvKGBTdGFydGluZyAke251bWJlck9mTWFjaGluZXN9IHJ1bm5lcnMuLi5gKTtcblxuICBmb3IgKGxldCBydW5uZXJJbmRleCA9IDE7IHJ1bm5lckluZGV4IDw9IE51bWJlcihudW1iZXJPZk1hY2hpbmVzKTsgcnVubmVySW5kZXgrKykge1xuICAgIGNvbnN0IHdvcmtlclBhdGggPSBgJHtnZXRQYWNrYWdlUGF0aCgpfS9zcmMvcnVubmVyLXdvcmtlci50c2A7XG4gICAgY29uc3Qgd29ya2VyTmFtZSA9IGAke25hbWV9LSR7cnVubmVySW5kZXh9YDtcbiAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKHdvcmtlclBhdGgsIHsgbmFtZTogd29ya2VyTmFtZSwgcmVmOiB0cnVlIH0pO1xuXG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJvcGVuXCIsICgpID0+IHtcbiAgICAgIGxvZ2dlci5pbmZvKGBXb3JrZXIgJHt3b3JrZXJOYW1lfSBzdGFydGVkYCk7XG5cbiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgIGluZGV4OiBydW5uZXJJbmRleCxcbiAgICAgICAgbGFiZWxzLFxuICAgICAgICBtYWNoaW5lQ3dkOiBgJHtkaXJlY3Rvcnl9L21hY2hpbmVzLyR7cnVubmVySW5kZXh9YCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcnVubmVyR3JvdXAsXG4gICAgICAgIHRva2VuLFxuICAgICAgICB1cmwsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoeyBkYXRhIH0pID0+IHtcbiAgICAgIGNvbnN0IGxldmVsID0gZGF0YS50eXBlID09PSBcImVycm9yXCIgPyBcImVycm9yXCIgOiBcImluZm9cIjtcbiAgICAgIGxvZ2dlcltsZXZlbF0oYCR7d29ya2VyTmFtZX06ICR7ZGF0YS5tZXNzYWdlfWApO1xuICAgIH0pO1xuXG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCAoZXJyb3IpID0+IHtcbiAgICAgIGxvZ2dlci5lcnJvcihgV29ya2VyICR7d29ya2VyTmFtZX0gZXJyb3I6YCwgZXJyb3IpO1xuICAgIH0pO1xuXG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJleGl0XCIsIChjb2RlKSA9PiB7XG4gICAgICBsb2dnZXIuaW5mbyhgV29ya2VyICR7d29ya2VyTmFtZX0gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCk7XG4gICAgfSk7XG5cbiAgICB3b3JrZXJNYW5hZ2VyLmFkZCh3b3JrZXIpO1xuICB9XG5cbiAgbG9nZ2VyLmluZm8oXCJBbGwgd29ya2VycyBzdGFydGVkLiBQcmVzcyBDdHJsK0MgdG8gc3RvcCBhbGwgbWFjaGluZXNcIik7XG59XG4iLAogICAgImltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyAkIH0gZnJvbSBcImJ1blwiO1xuaW1wb3J0IHsgUEFUSFMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlnLCBDb25maWdGaWxlT3B0aW9ucywgUHJvZmlsZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBDb25maWdTY2hlbWEgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5jb25zdCBDT05GSUdfRklMRV9OQU1FUyA9IFtcImh5ZHJhLmpzb25cIiwgXCIuaHlkcmEuanNvblwiLCBcImh5ZHJhLnRvbWxcIiwgXCIuaHlkcmEudG9tbFwiXTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRDb25maWdGaWxlKHN0YXJ0UGF0aDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKSk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICBmb3IgKGNvbnN0IGZpbGVOYW1lIG9mIENPTkZJR19GSUxFX05BTUVTKSB7XG4gICAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4oc3RhcnRQYXRoLCBmaWxlTmFtZSk7XG4gICAgY29uc3QgZmlsZSA9IEJ1bi5maWxlKGNvbmZpZ1BhdGgpO1xuICAgIGlmIChhd2FpdCBmaWxlLmV4aXN0cygpKSB7XG4gICAgICByZXR1cm4gY29uZmlnUGF0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlnKG9wdGlvbnM/OiBDb25maWdGaWxlT3B0aW9ucyk6IFByb21pc2U8Q29uZmlnIHwgbnVsbD4ge1xuICBjb25zdCBjb25maWdQYXRoID0gb3B0aW9ucz8uY29uZmlnUGF0aCB8fCAoYXdhaXQgZmluZENvbmZpZ0ZpbGUoKSk7XG5cbiAgaWYgKCFjb25maWdQYXRoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBmaWxlID0gQnVuLmZpbGUoY29uZmlnUGF0aCk7XG4gIGlmICghKGF3YWl0IGZpbGUuZXhpc3RzKCkpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmaWxlLnRleHQoKTtcbiAgICBjb25zdCBkYXRhID0gY29uZmlnUGF0aC5lbmRzV2l0aChcIi50b21sXCIpID8gYXdhaXQgcGFyc2VUb21sKGNvbnRlbnQpIDogSlNPTi5wYXJzZShjb250ZW50KTtcblxuICAgIHJldHVybiBDb25maWdTY2hlbWEucGFyc2UoZGF0YSkgYXMgQ29uZmlnO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29uZmlnIGZpbGU6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFByb2ZpbGUoXG4gIGNvbmZpZzogQ29uZmlnIHwgbnVsbCxcbiAgcHJvZmlsZU5hbWU/OiBzdHJpbmcsXG4pOiBQcm9taXNlPFByb2ZpbGUgfCBudWxsPiB7XG4gIGlmICghY29uZmlnKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBuYW1lID0gcHJvZmlsZU5hbWUgfHwgY29uZmlnLmRlZmF1bHRQcm9maWxlO1xuICBpZiAoIW5hbWUpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBjb25maWcucHJvZmlsZXNbbmFtZV0gfHwgbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlUHJvZmlsZVdpdGhBcmdzPFQgZXh0ZW5kcyBQYXJ0aWFsPFByb2ZpbGU+PihcbiAgcHJvZmlsZTogUHJvZmlsZSB8IG51bGwsXG4gIGFyZ3M6IFQsXG4pOiBUIHtcbiAgaWYgKCFwcm9maWxlKSByZXR1cm4gYXJncztcblxuICBjb25zdCBtZXJnZWQgPSB7IC4uLmFyZ3MgfSBhcyBUO1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb2ZpbGUpKSB7XG4gICAgaWYgKChtZXJnZWQgYXMgYW55KVtrZXldID09PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgKG1lcmdlZCBhcyBhbnkpW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYXJzZVRvbWwoY29udGVudDogc3RyaW5nKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBjb25zdCB0ZW1wRmlsZSA9IGpvaW4oUEFUSFMuVEVNUF9ESVIsIGBoeWRyYS1jb25maWctJHtEYXRlLm5vdygpfS50b21sYCk7XG4gIGF3YWl0IEJ1bi53cml0ZSh0ZW1wRmlsZSwgY29udGVudCk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBtb2R1bGUgPSBhd2FpdCBpbXBvcnQodGVtcEZpbGUpO1xuICAgIGF3YWl0ICRgcm0gLWYgJHt0ZW1wRmlsZX1gLnF1aWV0KCk7XG4gICAgcmV0dXJuIG1vZHVsZS5kZWZhdWx0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGF3YWl0ICRgcm0gLWYgJHt0ZW1wRmlsZX1gLnF1aWV0KCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2UgVE9NTCBjb25maWd1cmF0aW9uOiAke2Vycm9yfWApO1xuICB9XG59XG4iLAogICAgImltcG9ydCB7IHRtcGRpciB9IGZyb20gXCJub2RlOm9zXCI7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUUyA9IHtcbiAgRElSRUNUT1JZOiBcIi4vZ2gtcnVubmVyc1wiLFxuICBOQU1FOiBcInJ1bm5lclwiLFxuICBOVU1CRVJfT0ZfTUFDSElORVM6IDEsXG4gIE9TOiBcIm9zeFwiIGFzIGNvbnN0LFxuICBQUk9GSUxFOiBcImRlZmF1bHRcIixcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBGSUxFX0VYVEVOU0lPTlMgPSB7IEpTT046IFwiLmpzb25cIiwgVE9NTDogXCIudG9tbFwiIH0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBXT1JLRVJfTUVTU0FHRVMgPSB7IEVSUk9SOiBcImVycm9yXCIsIFNVQ0NFU1M6IFwic3VjY2Vzc1wiIH0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBQQVRIUyA9IHsgTUFDSElORVNfRElSOiBcIm1hY2hpbmVzXCIsIFRFTVBfRElSOiB0bXBkaXIoKSB9IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgVElNRU9VVFMgPSB7IERPV05MT0FEOiAzMDAwMDAsIFdPUktFUl9SRVNQT05TRTogNTAwMCB9IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgU1VQUE9SVEVEX09TID0gW1wib3N4XCIsIFwibGludXhcIiwgXCJ3aW5cIl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTdXBwb3J0ZWRPUyA9ICh0eXBlb2YgU1VQUE9SVEVEX09TKVtudW1iZXJdO1xuIiwKICAgICJpbXBvcnQge1xuICBjcmVhdGVTY2hlbWEsXG4gIGRlZmF1bHRCb29sZWFuLFxuICBkZWZhdWx0U3RyaW5nLFxuICBkZWZhdWx0VG8sXG4gIGVudW1zLFxuICBvYmplY3QsXG4gIG9wdGlvbmFsU3RyaW5nLFxuICBwb3NpdGl2ZUludCxcbiAgcmVjb3JkLFxufSBmcm9tIFwiQHI1bi9jbGktY29yZVwiO1xuXG5jb25zdCBwcm9maWxlVmFsaWRhdG9yID0gb2JqZWN0KHtcbiAgZGlyZWN0b3J5OiBkZWZhdWx0U3RyaW5nKFwiLi9naC1ydW5uZXJzXCIpLFxuICBsYWJlbHM6IG9wdGlvbmFsU3RyaW5nKCksXG4gIG5hbWU6IGRlZmF1bHRTdHJpbmcoXCJydW5uZXJcIiksXG4gIG51bWJlck9mTWFjaGluZXM6IGRlZmF1bHRUbyhwb3NpdGl2ZUludCgpLCAxKSxcbiAgb3M6IGRlZmF1bHRUbyhlbnVtcyhbXCJvc3hcIiwgXCJsaW51eFwiLCBcIndpbmRvd3NcIl0pLCBcIm9zeFwiKSxcbiAgb3ZlcndyaXRlOiBkZWZhdWx0Qm9vbGVhbihmYWxzZSksXG4gIHJ1bjogZGVmYXVsdEJvb2xlYW4oZmFsc2UpLFxuICBydW5uZXJHcm91cDogb3B0aW9uYWxTdHJpbmcoKSxcbiAgdXJsOiBvcHRpb25hbFN0cmluZygpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBQcm9maWxlU2NoZW1hID0gY3JlYXRlU2NoZW1hKHByb2ZpbGVWYWxpZGF0b3IpO1xuXG5leHBvcnQgY29uc3QgQ29uZmlnU2NoZW1hID0gY3JlYXRlU2NoZW1hKFxuICBvYmplY3QoeyBkZWZhdWx0UHJvZmlsZTogb3B0aW9uYWxTdHJpbmcoKSwgcHJvZmlsZXM6IHJlY29yZChQcm9maWxlU2NoZW1hLnZhbGlkYXRvcikgfSksXG4pO1xuXG4vLyBNYW51YWxseSBkZWZpbmUgdHlwZXMgZm9yIGJldHRlciB0cmVlLXNoYWtpbmdcbmV4cG9ydCB0eXBlIFByb2ZpbGUgPSB7XG4gIGRpcmVjdG9yeTogc3RyaW5nO1xuICBsYWJlbHM/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgbnVtYmVyT2ZNYWNoaW5lczogbnVtYmVyO1xuICBvczogXCJvc3hcIiB8IFwibGludXhcIiB8IFwid2luZG93c1wiO1xuICBvdmVyd3JpdGU6IGJvb2xlYW47XG4gIHJ1bjogYm9vbGVhbjtcbiAgcnVubmVyR3JvdXA/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENvbmZpZyA9IHsgZGVmYXVsdFByb2ZpbGU/OiBzdHJpbmc7IHByb2ZpbGVzOiBSZWNvcmQ8c3RyaW5nLCBQcm9maWxlPiB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ0ZpbGVPcHRpb25zIHtcbiAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgcHJvZmlsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBcmdzIHtcbiAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIGxhYmVscz86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBudW1iZXJPZk1hY2hpbmVzOiBzdHJpbmc7XG4gIG9zOiBcIm9zeFwiIHwgXCJsaW51eFwiIHwgXCJ3aW5kb3dzXCI7XG4gIG92ZXJ3cml0ZTogYm9vbGVhbjtcbiAgcnVuOiBib29sZWFuO1xuICBydW5uZXJHcm91cD86IHN0cmluZztcbiAgdG9rZW4/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdW5BcmdzIHtcbiAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIGxhYmVscz86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBudW1iZXJPZk1hY2hpbmVzOiBzdHJpbmc7XG4gIHJ1bm5lckdyb3VwPzogc3RyaW5nO1xuICB0b2tlbj86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZUFyZ3Mge1xuICBkaXJlY3Rvcnk6IHN0cmluZztcbiAgZm9yY2U6IGJvb2xlYW47XG4gIG51bWJlck9mTWFjaGluZXM6IHN0cmluZztcbiAgdG9rZW4/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbn1cbiIsCiAgICAiaW1wb3J0IHsgcGFyc2VBcmdzIH0gZnJvbSBcIm5vZGU6dXRpbFwiO1xuaW1wb3J0IHtcbiAgYm9vbGVhbixcbiAgY3JlYXRlU2NoZW1hLFxuICBkZWZhdWx0VG8sXG4gIGVudW1zLFxuICBvYmplY3QsXG4gIG9wdGlvbmFsLFxuICByZWdleCxcbiAgc3RyaW5nLFxuICB1bmlvbixcbiAgdXJsLFxufSBmcm9tIFwiQHI1bi9jbGktY29yZVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFja2FnZVBhdGgoKSB7XG4gIGNvbnN0IGN1cnJlbnRGaWxlUGF0aCA9IGltcG9ydC5tZXRhLnBhdGg7XG5cbiAgY29uc3QgY3VycmVudERpciA9IGN1cnJlbnRGaWxlUGF0aC5zdWJzdHJpbmcoMCwgY3VycmVudEZpbGVQYXRoLmxhc3RJbmRleE9mKFwiL1wiKSk7XG5cbiAgY29uc3Qgc3JjRGlyID0gY3VycmVudERpci5zdWJzdHJpbmcoMCwgY3VycmVudERpci5sYXN0SW5kZXhPZihcIi9cIikpO1xuXG4gIHJldHVybiBzcmNEaXI7XG59XG5cbmNvbnN0IGNsaUFyZ3NWYWxpZGF0b3IgPSBvYmplY3Qoe1xuICBkaXJlY3Rvcnk6IGRlZmF1bHRUbyhzdHJpbmcoKSwgYCR7cHJvY2Vzcy5jd2QoKX0vZ2gtcnVubmVyc2ApLFxuICBsYWJlbHM6IHVuaW9uKHN0cmluZygpLCBvcHRpb25hbCgpKSxcbiAgbmFtZTogZGVmYXVsdFRvKHN0cmluZygpLCBcInJ1bm5lclwiKSxcbiAgbnVtYmVyT2ZNYWNoaW5lczogZGVmYXVsdFRvKHJlZ2V4KC9eXFxkKyQvLCBcIk51bWJlciBvZiBtYWNoaW5lcyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlclwiKSwgXCIxXCIpLFxuICBvczogZGVmYXVsdFRvKGVudW1zKFtcIm9zeFwiLCBcImxpbnV4XCIsIFwid2luZG93c1wiXSksIFwib3N4XCIpLFxuICBvdmVyd3JpdGU6IGRlZmF1bHRUbyhib29sZWFuKCksIGZhbHNlKSxcbiAgcnVuOiBkZWZhdWx0VG8oYm9vbGVhbigpLCBmYWxzZSksXG4gIHRva2VuOiBkZWZhdWx0VG8oc3RyaW5nKCksIHByb2Nlc3MuZW52LkdJVEhVQl9QRVJTT05BTF9BQ0NFU1NfVE9LRU4gPz8gXCJcIiksXG4gIHVybDogdXJsKCksXG59KTtcblxuY29uc3QgQ2xpQXJnc1NjaGVtYSA9IGNyZWF0ZVNjaGVtYShjbGlBcmdzVmFsaWRhdG9yKTtcblxuZXhwb3J0IHR5cGUgQ2xpQXJncyA9IHtcbiAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIGxhYmVscz86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBudW1iZXJPZk1hY2hpbmVzOiBzdHJpbmc7XG4gIG9zOiBcIm9zeFwiIHwgXCJsaW51eFwiIHwgXCJ3aW5kb3dzXCI7XG4gIG92ZXJ3cml0ZTogYm9vbGVhbjtcbiAgcnVuOiBib29sZWFuO1xuICB0b2tlbjogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGlBcmdzKCk6IENsaUFyZ3Mge1xuICB0cnkge1xuICAgIGNvbnN0IHsgdmFsdWVzIH0gPSBwYXJzZUFyZ3Moe1xuICAgICAgYWxsb3dQb3NpdGlvbmFsczogdHJ1ZSxcbiAgICAgIGFyZ3M6IEJ1bi5hcmd2LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBjb25maWc6IHsgZGVmYXVsdDogYCR7cHJvY2Vzcy5jd2QoKX0vLmh5ZHJhLmpzb25gLCBzaG9ydDogXCJjXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgZGlyZWN0b3J5OiB7IGRlZmF1bHQ6IGAke3Byb2Nlc3MuY3dkKCl9L2doLXJ1bm5lcnNgLCBzaG9ydDogXCJkXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgbGFiZWxzOiB7IHNob3J0OiBcImxcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICBuYW1lOiB7IGRlZmF1bHQ6IFwicnVubmVyXCIsIHNob3J0OiBcIm5cIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICBudW1iZXJPZk1hY2hpbmVzOiB7IGRlZmF1bHQ6IFwiMVwiLCBzaG9ydDogXCJtXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgb3M6IHsgZGVmYXVsdDogXCJvc3hcIiwgc2hvcnQ6IFwic1wiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIG92ZXJ3cml0ZTogeyBkZWZhdWx0OiBmYWxzZSwgc2hvcnQ6IFwiZlwiLCB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICBydW46IHsgZGVmYXVsdDogZmFsc2UsIHNob3J0OiBcInJcIiwgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgICAgdG9rZW46IHsgc2hvcnQ6IFwidFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIHVybDogeyBzaG9ydDogXCJ1XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIH0sXG4gICAgICBzdHJpY3Q6IHRydWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBDbGlBcmdzU2NoZW1hLnNhZmVQYXJzZSh2YWx1ZXMpO1xuXG4gICAgaWYgKCFyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFyZ3VtZW50czogJHtyZXN1bHQuZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBcIkZhaWxlZCB0byBwYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzXCIsXG4gICAgKTtcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwiQHI1bi90b29scy91dGlscy9sb2dnZXJcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKHsgcHJlZml4OiBcIldvcmtlck1hbmFnZXJcIiB9KTtcblxuLy8gSW50ZXJuYWwgc3RhdGVcbmNvbnN0IHdvcmtlcnM6IFNldDxXb3JrZXI+ID0gbmV3IFNldCgpO1xubGV0IGNsZWFudXBSZWdpc3RlcmVkID0gZmFsc2U7XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyQ2xlYW51cCgpOiB2b2lkIHtcbiAgaWYgKGNsZWFudXBSZWdpc3RlcmVkKSByZXR1cm47XG5cbiAgY2xlYW51cFJlZ2lzdGVyZWQgPSB0cnVlO1xuXG4gIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgaWYgKHdvcmtlcnMuc2l6ZSA+IDApIHtcbiAgICAgIGxvZ2dlci5pbmZvKFwiQ2xlYW5pbmcgdXAgd29ya2Vycy4uLlwiKTtcbiAgICB9XG4gICAgdGVybWluYXRlQWxsKCk7XG4gIH07XG5cbiAgcHJvY2Vzcy5vbihcImV4aXRcIiwgY2xlYW51cCk7XG4gIHByb2Nlc3Mub24oXCJTSUdJTlRcIiwgY2xlYW51cCk7XG4gIHByb2Nlc3Mub24oXCJTSUdURVJNXCIsIGNsZWFudXApO1xuICBwcm9jZXNzLm9uKFwidW5jYXVnaHRFeGNlcHRpb25cIiwgKGVycm9yKSA9PiB7XG4gICAgbG9nZ2VyLmVycm9yKFwiVW5jYXVnaHQgZXhjZXB0aW9uOlwiLCBlcnJvcik7XG4gICAgY2xlYW51cCgpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRXb3JrZXIod29ya2VyOiBXb3JrZXIpOiB2b2lkIHtcbiAgd29ya2Vycy5hZGQod29ya2VyKTtcbiAgbG9nZ2VyLmRlYnVnKGBXb3JrZXIgYWRkZWQuIFRvdGFsIHdvcmtlcnM6ICR7d29ya2Vycy5zaXplfWApO1xuXG4gIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKFwiZXhpdFwiLCAoKSA9PiB7XG4gICAgd29ya2Vycy5kZWxldGUod29ya2VyKTtcbiAgICBsb2dnZXIuZGVidWcoYFdvcmtlciBleGl0ZWQuIFJlbWFpbmluZyB3b3JrZXJzOiAke3dvcmtlcnMuc2l6ZX1gKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVXb3JrZXIod29ya2VyOiBXb3JrZXIpOiB2b2lkIHtcbiAgaWYgKHdvcmtlcnMuaGFzKHdvcmtlcikpIHtcbiAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgd29ya2Vycy5kZWxldGUod29ya2VyKTtcbiAgICBsb2dnZXIuZGVidWcoYFdvcmtlciByZW1vdmVkLiBSZW1haW5pbmcgd29ya2VyczogJHt3b3JrZXJzLnNpemV9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1pbmF0ZUFsbCgpOiB2b2lkIHtcbiAgaWYgKHdvcmtlcnMuc2l6ZSA+IDApIHtcbiAgICBsb2dnZXIuaW5mbyhgVGVybWluYXRpbmcgJHt3b3JrZXJzLnNpemV9IHdvcmtlcnMuLi5gKTtcbiAgICBmb3IgKGNvbnN0IHdvcmtlciBvZiB3b3JrZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byB0ZXJtaW5hdGUgd29ya2VyOmAsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgd29ya2Vycy5jbGVhcigpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3JrZXJDb3VudCgpOiBudW1iZXIge1xuICByZXR1cm4gd29ya2Vycy5zaXplO1xufVxuXG4vLyBJbml0aWFsaXplIGNsZWFudXAgb24gbW9kdWxlIGxvYWRcbnJlZ2lzdGVyQ2xlYW51cCgpO1xuXG4vLyBFeHBvcnQgYSBjb252ZW5pZW50IGludGVyZmFjZSB0aGF0IG1hdGNoZXMgdGhlIG9sZCB1c2FnZSBwYXR0ZXJuXG5leHBvcnQgY29uc3Qgd29ya2VyTWFuYWdlciA9IHtcbiAgYWRkOiBhZGRXb3JrZXIsXG4gIHJlbW92ZTogcmVtb3ZlV29ya2VyLFxuICBnZXQgc2l6ZSgpIHtcbiAgICByZXR1cm4gZ2V0V29ya2VyQ291bnQoKTtcbiAgfSxcbiAgdGVybWluYXRlQWxsLFxufTtcbiIsCiAgICAiaW1wb3J0IHsgY29sb3JzIH0gZnJvbSBcIkByNW4vdG9vbHMvdXRpbHMvY29sb3JzXCI7XG5cbmNvbnN0IENPTU1BTkRfSEVMUDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgY3JlYXRlOiBgXG5oeWRyYSBjcmVhdGUgLSBDcmVhdGUgYW5kIHJlZ2lzdGVyIG5ldyBHaXRIdWIgcnVubmVyIG1hY2hpbmVzXG5cblVTQUdFXG4gIGh5ZHJhIGNyZWF0ZSBbb3B0aW9uc11cblxuT1BUSU9OU1xuICAtdCwgLS10b2tlbiAgICAgICAgICAgICBHaXRIdWIgUGVyc29uYWwgQWNjZXNzIFRva2VuICAgICAgW3N0cmluZ10gKHJlcXVpcmVkKVxuICAtdSwgLS11cmwgICAgICAgICAgICAgICBHaXRIdWIgcmVwb3NpdG9yeSBvciBvcmcgVVJMICAgICAgW3N0cmluZ10gKHJlcXVpcmVkKVxuICAtbSwgLS1udW1iZXJPZk1hY2hpbmVzICBOdW1iZXIgb2YgbWFjaGluZXMgICAgICAgICAgICAgICAgW251bWJlcl0gKGRlZmF1bHQ6IDEpXG4gIC1uLCAtLW5hbWUgICAgICAgICAgICAgIFJ1bm5lciBuYW1lIHByZWZpeCAgICAgICAgICAgICAgICBbc3RyaW5nXVxuICAtbCwgLS1sYWJlbHMgICAgICAgICAgICBDb21tYS1zZXBhcmF0ZWQgcnVubmVyIGxhYmVscyAgICAgW3N0cmluZ11cbiAgLW8sIC0tb3MgICAgICAgICAgICAgICAgUnVubmVyIE9TICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddIChkZWZhdWx0OiBvc3gpXG4gIC1kLCAtLWRpcmVjdG9yeSAgICAgICAgIFJ1bm5lcnMgZGlyZWN0b3J5ICAgICAgICAgICAgICAgICBbc3RyaW5nXVxuICAtTywgLS1vdmVyd3JpdGUgICAgICAgICBPdmVyd3JpdGUgZXhpc3RpbmcgcnVubmVycyAgICAgICAgW2Jvb2xlYW5dXG4gIC1wLCAtLXByb2ZpbGUgICAgICAgICAgIENvbmZpZ3VyYXRpb24gcHJvZmlsZSAgICAgICAgICAgICBbc3RyaW5nXVxuICAtYywgLS1jb25maWcgICAgICAgICAgICBDb25maWd1cmF0aW9uIGZpbGUgcGF0aCAgICAgICAgICAgW3N0cmluZ11cblxuRVhBTVBMRVNcbiAgIyBDcmVhdGUgYSBzaW5nbGUgcnVubmVyXG4gIGh5ZHJhIGNyZWF0ZSAtdCBUT0tFTiAtdSBodHRwczovL2dpdGh1Yi5jb20vb3JnL3JlcG9cblxuICAjIENyZWF0ZSAzIHJ1bm5lcnMgd2l0aCBsYWJlbHNcbiAgaHlkcmEgY3JlYXRlIC1tIDMgLXQgVE9LRU4gLXUgVVJMIC1sIGRvY2tlcixncHVcblxuICAjIENyZWF0ZSB1c2luZyBwcm9maWxlXG4gIGh5ZHJhIGNyZWF0ZSAtcCBwcm9kdWN0aW9uIC10IFRPS0VOXG5gLFxuICBpbml0OiBgXG5oeWRyYSBpbml0IC0gSW5pdGlhbGl6ZSBhIG5ldyBIeWRyYSBjb25maWd1cmF0aW9uIGZpbGVcblxuVVNBR0VcbiAgaHlkcmEgaW5pdCBbb3B0aW9uc11cblxuT1BUSU9OU1xuICAtdCwgLS10b21sICAgICAgVXNlIFRPTUwgZm9ybWF0IGluc3RlYWQgb2YgSlNPTiAgICAgICAgIFtib29sZWFuXVxuXG5FWEFNUExFU1xuICAjIEluaXRpYWxpemUgd2l0aCBpbnRlcmFjdGl2ZSBwcm9tcHRzXG4gIGh5ZHJhIGluaXRcblxuICAjIEluaXRpYWxpemUgd2l0aCBUT01MIGZvcm1hdFxuICBoeWRyYSBpbml0IC0tdG9tbFxuYCxcblxuICByZW1vdmU6IGBcbmh5ZHJhIHJlbW92ZSAtIFJlbW92ZSBHaXRIdWIgcnVubmVyIG1hY2hpbmVzXG5cblVTQUdFXG4gIGh5ZHJhIHJlbW92ZSBbb3B0aW9uc11cblxuT1BUSU9OU1xuICAtdCwgLS10b2tlbiAgICAgICAgICAgICBHaXRIdWIgUGVyc29uYWwgQWNjZXNzIFRva2VuICAgICAgW3N0cmluZ10gKHJlcXVpcmVkKVxuICAtdSwgLS11cmwgICAgICAgICAgICAgICBHaXRIdWIgcmVwb3NpdG9yeSBvciBvcmcgVVJMICAgICAgW3N0cmluZ10gKHJlcXVpcmVkKVxuICAtbSwgLS1udW1iZXJPZk1hY2hpbmVzICBOdW1iZXIgb2YgbWFjaGluZXMgICAgICAgICAgICAgICAgW251bWJlcl0gKGRlZmF1bHQ6IDEpXG4gIC1uLCAtLW5hbWUgICAgICAgICAgICAgIFJ1bm5lciBuYW1lIHByZWZpeCAgICAgICAgICAgICAgICBbc3RyaW5nXVxuICAtZCwgLS1kaXJlY3RvcnkgICAgICAgICBSdW5uZXJzIGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgW3N0cmluZ11cbiAgLWYsIC0tZm9yY2UgICAgICAgICAgICAgRm9yY2UgcmVtb3ZhbCAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXVxuICAtcCwgLS1wcm9maWxlICAgICAgICAgICBDb25maWd1cmF0aW9uIHByb2ZpbGUgICAgICAgICAgICAgW3N0cmluZ11cbiAgLWMsIC0tY29uZmlnICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBmaWxlIHBhdGggICAgICAgICAgIFtzdHJpbmddXG5cbkVYQU1QTEVTXG4gICMgUmVtb3ZlIGFuZCB1bnJlZ2lzdGVyXG4gIGh5ZHJhIHJlbW92ZSAtdCBUT0tFTiAtdSBodHRwczovL2dpdGh1Yi5jb20vb3JnL3JlcG9cblxuICAjIEZvcmNlIHJlbW92ZVxuICBoeWRyYSByZW1vdmUgLW0gMiAtLWZvcmNlXG5cbiAgIyBSZW1vdmUgc3BlY2lmaWMgcnVubmVyc1xuICBoeWRyYSByZW1vdmUgLW4gY3VzdG9tIC1tIDMgLXQgVE9LRU4gLXUgVVJMXG5gLFxuXG4gIHJ1bjogYFxuaHlkcmEgcnVuIC0gU3RhcnQgZXhpc3RpbmcgR2l0SHViIHJ1bm5lciBtYWNoaW5lc1xuXG5VU0FHRVxuICBoeWRyYSBydW4gW29wdGlvbnNdXG5cbk9QVElPTlNcbiAgLXQsIC0tdG9rZW4gICAgICAgICAgICAgR2l0SHViIFBlcnNvbmFsIEFjY2VzcyBUb2tlbiAgICAgIFtzdHJpbmddIChyZXF1aXJlZClcbiAgLXUsIC0tdXJsICAgICAgICAgICAgICAgR2l0SHViIHJlcG9zaXRvcnkgb3Igb3JnIFVSTCAgICAgIFtzdHJpbmddIChyZXF1aXJlZClcbiAgLW0sIC0tbnVtYmVyT2ZNYWNoaW5lcyAgTnVtYmVyIG9mIG1hY2hpbmVzICAgICAgICAgICAgICAgIFtudW1iZXJdIChkZWZhdWx0OiAxKVxuICAtbiwgLS1uYW1lICAgICAgICAgICAgICBSdW5uZXIgbmFtZSBwcmVmaXggICAgICAgICAgICAgICAgW3N0cmluZ11cbiAgLWQsIC0tZGlyZWN0b3J5ICAgICAgICAgUnVubmVycyBkaXJlY3RvcnkgICAgICAgICAgICAgICAgIFtzdHJpbmddXG4gIC1wLCAtLXByb2ZpbGUgICAgICAgICAgIENvbmZpZ3VyYXRpb24gcHJvZmlsZSAgICAgICAgICAgICBbc3RyaW5nXVxuICAtYywgLS1jb25maWcgICAgICAgICAgICBDb25maWd1cmF0aW9uIGZpbGUgcGF0aCAgICAgICAgICAgW3N0cmluZ11cblxuRVhBTVBMRVNcbiAgIyBSdW4gZXhpc3RpbmcgcnVubmVyc1xuICBoeWRyYSBydW4gLXQgVE9LRU4gLXUgaHR0cHM6Ly9naXRodWIuY29tL29yZy9yZXBvXG5cbiAgIyBSdW4gc3BlY2lmaWMgcnVubmVyc1xuICBoeWRyYSBydW4gLW0gMiAtbiBjdXN0b20gLXQgVE9LRU4gLXUgVVJMXG5gLFxuXG4gIHN0YXR1czogYFxuaHlkcmEgc3RhdHVzIC0gQ2hlY2sgdGhlIHN0YXR1cyBvZiBHaXRIdWIgcnVubmVyIG1hY2hpbmVzXG5cblVTQUdFXG4gIGh5ZHJhIHN0YXR1cyBbb3B0aW9uc11cblxuT1BUSU9OU1xuICAtdCwgLS10b2tlbiAgICAgICAgICAgICBHaXRIdWIgUGVyc29uYWwgQWNjZXNzIFRva2VuICAgICAgW3N0cmluZ10gKHJlcXVpcmVkKVxuICAtdSwgLS11cmwgICAgICAgICAgICAgICBHaXRIdWIgcmVwb3NpdG9yeSBvciBvcmcgVVJMICAgICAgW3N0cmluZ10gKHJlcXVpcmVkKVxuICAtZCwgLS1kaXJlY3RvcnkgICAgICAgICBSdW5uZXJzIGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgW3N0cmluZ11cbiAgLWosIC0tanNvbiAgICAgICAgICAgICAgT3V0cHV0IHN0YXR1cyBpbiBKU09OIGZvcm1hdCAgICAgIFtib29sZWFuXVxuICAtcCwgLS1wcm9maWxlICAgICAgICAgICBDb25maWd1cmF0aW9uIHByb2ZpbGUgICAgICAgICAgICAgW3N0cmluZ11cbiAgLWMsIC0tY29uZmlnICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBmaWxlIHBhdGggICAgICAgICAgIFtzdHJpbmddXG5cbkVYQU1QTEVTXG4gICMgQ2hlY2sgcnVubmVyIHN0YXR1c1xuICBoeWRyYSBzdGF0dXMgLXQgVE9LRU4gLXUgaHR0cHM6Ly9naXRodWIuY29tL29yZy9yZXBvXG5cbiAgIyBPdXRwdXQgYXMgSlNPTlxuICBoeWRyYSBzdGF0dXMgLXQgVE9LRU4gLXUgVVJMIC0tanNvblxuXG4gICMgU3RhdHVzIHVzaW5nIHByb2ZpbGVcbiAgaHlkcmEgc3RhdHVzIC1wIHByb2R1Y3Rpb25cbmAsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaGVscChjb21tYW5kTmFtZT86IHN0cmluZykge1xuICBpZiAoY29tbWFuZE5hbWUgJiYgQ09NTUFORF9IRUxQW2NvbW1hbmROYW1lXSkge1xuICAgIGNvbnN0IGhlbHBUZXh0ID0gQ09NTUFORF9IRUxQW2NvbW1hbmROYW1lXTtcbiAgICBjb25zdCBjb2xvcmVkSGVscCA9IGhlbHBUZXh0XG4gICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChcImh5ZHJhXCIpKSByZXR1cm4gY29sb3JzLmJvbGQobGluZSk7XG4gICAgICAgIGlmIChsaW5lID09PSBcIlVTQUdFXCIgfHwgbGluZSA9PT0gXCJPUFRJT05TXCIgfHwgbGluZSA9PT0gXCJFWEFNUExFU1wiKSByZXR1cm4gY29sb3JzLmJvbGQobGluZSk7XG4gICAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCIgIC1cIikpIHtcbiAgICAgICAgICBjb25zdCBtYXRjaCA9IGxpbmUubWF0Y2goL14oXFxzKy1cXHcsXFxzLS1cXHcrKVxccysoLispJC8pO1xuICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgY29uc3QgWywgZmxhZ3MgPSBcIlwiLCBkZXNjcmlwdGlvbiA9IFwiXCJdID0gbWF0Y2g7XG4gICAgICAgICAgICBjb25zdCBjb2xvcmVkRGVzYyA9IGRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgIC5yZXBsYWNlKFwiKHJlcXVpcmVkKVwiLCBjb2xvcnMucmVkKFwiKHJlcXVpcmVkKVwiKSlcbiAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKGRlZmF1bHQ6IChbXildKylcXCkvZywgKF8sIHZhbHVlKSA9PiBjb2xvcnMuZGltKGAoZGVmYXVsdDogJHt2YWx1ZX0pYCkpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFtib29sZWFuXFxdL2csIGNvbG9ycy5jeWFuKFwiW2Jvb2xlYW5dXCIpKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbc3RyaW5nXFxdL2csIGNvbG9ycy5ncmVlbihcIltzdHJpbmddXCIpKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbbnVtYmVyXFxdL2csIGNvbG9ycy5tYWdlbnRhKFwiW251bWJlcl1cIikpO1xuXG4gICAgICAgICAgICByZXR1cm4gYCAgJHtjb2xvcnMueWVsbG93KGZsYWdzLnBhZEVuZCgyNikpfSAke2NvbG9yZWREZXNjfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCIgICMgXCIpKSByZXR1cm4gY29sb3JzLmRpbShsaW5lKTtcbiAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChcIiAgaHlkcmFcIikpIHJldHVybiBgICAke2NvbG9ycy5jeWFuKGxpbmUudHJpbSgpKX1gO1xuICAgICAgICByZXR1cm4gbGluZTtcbiAgICAgIH0pXG4gICAgICAuam9pbihcIlxcblwiKTtcblxuICAgIGNvbnNvbGUuaW5mbyhjb2xvcmVkSGVscCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc29sZS5pbmZvKGBcbiR7Y29sb3JzLmJvbGQoXCJIeWRyYSAtIEdpdEh1YiBzZWxmLWhvc3RlZCBydW5uZXIgbWFuYWdlclwiKX1cblxuJHtjb2xvcnMuYm9sZChcIlVTQUdFXCIpfVxuICBoeWRyYSA8Y29tbWFuZD4gW29wdGlvbnNdXG5cbiR7Y29sb3JzLmJvbGQoXCJDT01NQU5EU1wiKX1cbiAgJHtjb2xvcnMuZ3JlZW4oXCJpbml0XCIpfSAgICAgICAgICAgSW5pdGlhbGl6ZSBhIG5ldyBIeWRyYSBjb25maWd1cmF0aW9uIGZpbGVcbiAgJHtjb2xvcnMuZ3JlZW4oXCJjcmVhdGVcIil9ICAgICAgICAgQ3JlYXRlIGFuZCByZWdpc3RlciBuZXcgR2l0SHViIHJ1bm5lciBtYWNoaW5lc1xuICAke2NvbG9ycy5ncmVlbihcInJ1blwiKX0gICAgICAgICAgICBTdGFydCBleGlzdGluZyBHaXRIdWIgcnVubmVyIG1hY2hpbmVzXG4gICR7Y29sb3JzLmdyZWVuKFwicmVtb3ZlXCIpfSAgICAgICAgIFJlbW92ZSBHaXRIdWIgcnVubmVyIG1hY2hpbmVzXG4gICR7Y29sb3JzLmdyZWVuKFwic3RhdHVzXCIpfSAgICAgICAgIENoZWNrIHRoZSBzdGF0dXMgb2YgR2l0SHViIHJ1bm5lciBtYWNoaW5lc1xuICAke2NvbG9ycy5ncmVlbihcImhlbHBcIil9ICAgICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdlXG5cblVzZSAke2NvbG9ycy5jeWFuKFwiaHlkcmEgPGNvbW1hbmQ+IC0taGVscFwiKX0gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYSBjb21tYW5kLlxuYCk7XG59XG4iLAogICAgImltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tIFwibm9kZTp1dGlsXCI7XG5pbXBvcnQgeyBjYW5jZWwsIGNvbmZpcm0sIGdyb3VwLCBpbnRybywgaXNDYW5jZWwsIG91dHJvLCB0ZXh0IH0gZnJvbSBcIkBjbGFjay9wcm9tcHRzXCI7XG5pbXBvcnQgeyBncmFjZWZ1bFRyeSB9IGZyb20gXCJAcjVuL2NsaS1jb3JlXCI7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tIFwiQHI1bi90b29scy91dGlscy9jb2xvcnNcIjtcbmltcG9ydCB7ICQgfSBmcm9tIFwiYnVuXCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdCgpIHtcbiAgY29uc3QgeyB0b21sIH0gPSBnZXRBcmdzKCk7XG5cbiAgY29uc3QgY29uZmlnRmlsZU5hbWUgPSB0b21sID8gXCJoeWRyYS50b21sXCIgOiBcImh5ZHJhLmpzb25cIjtcbiAgY29uc3QgY29uZmlnUGF0aCA9IHJlc29sdmUocHJvY2Vzcy5jd2QoKSwgY29uZmlnRmlsZU5hbWUpO1xuXG4gIGNvbnN0IGZpbGUgPSBCdW4uZmlsZShjb25maWdQYXRoKTtcbiAgaWYgKGF3YWl0IGZpbGUuZXhpc3RzKCkpIHtcbiAgICBjb25zdCBvdmVyd3JpdGUgPSBhd2FpdCBjb25maXJtKHtcbiAgICAgIGluaXRpYWxWYWx1ZTogZmFsc2UsXG4gICAgICBtZXNzYWdlOiBgQ29uZmlndXJhdGlvbiBmaWxlICR7Y29uZmlnRmlsZU5hbWV9IGFscmVhZHkgZXhpc3RzLiBPdmVyd3JpdGU/YCxcbiAgICB9KTtcbiAgICBpZiAoaXNDYW5jZWwob3ZlcndyaXRlKSB8fCAhb3ZlcndyaXRlKSB7XG4gICAgICBjYW5jZWwoXCJDb25maWd1cmF0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG4gIH1cblxuICBpbnRybyhjb2xvcnMuY3lhbihcIvCfmoAgSHlkcmEgQ29uZmlndXJhdGlvbiBTZXR1cFwiKSk7XG4gIGNvbnNvbGUuaW5mbyhjb2xvcnMuZGltKFwiVGhpcyB3aWxsIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZSB3aXRoIHlvdXIgcnVubmVyIHNldHRpbmdzLlwiKSk7XG4gIGNvbnNvbGUuaW5mbyhjb2xvcnMuZGltKFwiWW91IGNhbiBhbHdheXMgZWRpdCB0aGUgZmlsZSBsYXRlciBvciBjcmVhdGUgYWRkaXRpb25hbCBwcm9maWxlcy5cXG5cIikpO1xuXG4gIGNvbnN0IGFuc3dlcnMgPSBhd2FpdCBncm91cChcbiAgICAvLyBiaW9tZS1pZ25vcmUgYXNzaXN0L3NvdXJjZS91c2VTb3J0ZWRLZXlzOiBTa2lwIGxpbnQgdGhlcmVcbiAgICB7XG4gICAgICBwcm9maWxlTmFtZTogKCkgPT4gdGV4dCh7IG1lc3NhZ2U6IFwiUHJvZmlsZSBuYW1lP1wiLCBwbGFjZWhvbGRlcjogXCJkZWZhdWx0XCIgfSksXG4gICAgICBkaXJlY3Rvcnk6ICgpID0+XG4gICAgICAgIHRleHQoe1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogXCIuL2doLXJ1bm5lcnNcIixcbiAgICAgICAgICBtZXNzYWdlOiBcIkRpcmVjdG9yeSB0byBzdG9yZSBydW5uZXJzP1wiLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIi4vZ2gtcnVubmVyc1wiLFxuICAgICAgICB9KSxcbiAgICAgIG5hbWU6ICgpID0+XG4gICAgICAgIHRleHQoeyBkZWZhdWx0VmFsdWU6IFwicnVubmVyXCIsIG1lc3NhZ2U6IFwiUnVubmVyIG5hbWUgcHJlZml4P1wiLCBwbGFjZWhvbGRlcjogXCJydW5uZXJcIiB9KSxcbiAgICAgIGxhYmVsczogKHsgcmVzdWx0cyB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gKHJlc3VsdHMubmFtZSB8fCBcInJ1bm5lclwiKSBhcyBzdHJpbmc7XG5cbiAgICAgICAgcmV0dXJuIHRleHQoe1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogcGxhY2Vob2xkZXIsXG4gICAgICAgICAgbWVzc2FnZTogXCJSdW5uZXIgbGFiZWxzIChjb21tYS1zZXBhcmF0ZWQpP1wiLFxuICAgICAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBudW1iZXJPZk1hY2hpbmVzOiAoKSA9PlxuICAgICAgICB0ZXh0KHtcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IFwiMVwiLFxuICAgICAgICAgIG1lc3NhZ2U6IFwiTnVtYmVyIG9mIHJ1bm5lciBtYWNoaW5lcz9cIixcbiAgICAgICAgICBwbGFjZWhvbGRlcjogXCIxXCIsXG4gICAgICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyLnBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKG51bSkgfHwgbnVtIDwgMSkgcmV0dXJuIFwiUGxlYXNlIGVudGVyIGEgdmFsaWQgbnVtYmVyIGdyZWF0ZXIgdGhhbiAwXCI7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgdXJsOiAoKSA9PlxuICAgICAgICB0ZXh0KHtcbiAgICAgICAgICBtZXNzYWdlOiBcIkdpdEh1YiByZXBvc2l0b3J5IG9yIG9yZ2FuaXphdGlvbiBVUkw/IChvcHRpb25hbClcIixcbiAgICAgICAgICBwbGFjZWhvbGRlcjogXCJodHRwczovL2dpdGh1Yi5jb20vb3JnL3JlcG9cIixcbiAgICAgICAgfSksXG4gICAgfSxcbiAgICB7XG4gICAgICBvbkNhbmNlbDogKCkgPT4ge1xuICAgICAgICBjYW5jZWwoXCJDb25maWd1cmF0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgfSxcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgcHJvZmlsZU5hbWUsIGxhYmVscywgbnVtYmVyT2ZNYWNoaW5lcywgLi4ucHJvZmlsZSB9ID0gYW5zd2VycztcbiAgY29uc3QgY29uZmlnOiBDb25maWcgPSB7XG4gICAgZGVmYXVsdFByb2ZpbGU6IHByb2ZpbGVOYW1lLFxuICAgIHByb2ZpbGVzOiB7XG4gICAgICBbcHJvZmlsZU5hbWVdOiB7XG4gICAgICAgIC4uLnByb2ZpbGUsXG4gICAgICAgIGxhYmVsczogbGFiZWxzIGFzIHN0cmluZyxcbiAgICAgICAgbnVtYmVyT2ZNYWNoaW5lczogTnVtYmVyLnBhcnNlSW50KG51bWJlck9mTWFjaGluZXMsIDEwKSxcbiAgICAgICAgb3M6IFwib3N4XCIgYXMgY29uc3QsXG4gICAgICAgIG92ZXJ3cml0ZTogZmFsc2UsXG4gICAgICAgIHJ1bjogZmFsc2UsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3QgY29udGVudCA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMik7XG5cbiAgYXdhaXQgQnVuLndyaXRlKGNvbmZpZ1BhdGgsIGNvbnRlbnQpO1xuXG4gIGF3YWl0IGdyYWNlZnVsVHJ5KFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0ICRgY2htb2QgNjAwICR7Y29uZmlnUGF0aH1gLnF1aWV0KCk7XG4gICAgfSxcbiAgICB7IGxvZ0xldmVsOiBcIndhcm5cIiwgbWVzc2FnZTogXCJDb3VsZCBub3Qgc2V0IHNlY3VyZSBmaWxlIHBlcm1pc3Npb25zXCIgfSxcbiAgKTtcblxuICBvdXRybyhjb2xvcnMuZ3JlZW4oYOKckyBDb25maWd1cmF0aW9uIHNhdmVkIHRvICR7Y29uZmlnRmlsZU5hbWV9YCkpO1xuXG4gIGNvbnNvbGUuaW5mbyhcIlxcbkV4YW1wbGUgdXNhZ2U6XCIpO1xuICBjb25zb2xlLmluZm8oXG4gICAgY29sb3JzLmN5YW4oXG4gICAgICBgICBoeWRyYSBjcmVhdGUgLXAgJHtwcm9maWxlTmFtZX0gLS10b2tlbiBZT1VSX1RPS0VOJHthbnN3ZXJzLnVybCA/IFwiXCIgOiBcIiAtLXVybCBSRVBPX1VSTFwifWAsXG4gICAgKSxcbiAgKTtcbiAgY29uc29sZS5pbmZvKFwiXFxuWW91IGNhbiBhZGQgbW9yZSBwcm9maWxlcyBieSBlZGl0aW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuXCIpO1xuXG4gIGlmIChhbnN3ZXJzLnVybCkge1xuICAgIGF3YWl0IG9wZW5HaXRIdWJTZXR0aW5ncyhhbnN3ZXJzLnVybCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gb3BlbkdpdEh1YlNldHRpbmdzKHVybDogc3RyaW5nKSB7XG4gIGNvbnN0IGdpdGh1YlJlZ2V4ID0gL2dpdGh1YlxcLmNvbVs6L10oW14vXSspKD86XFwvKFteLy5dKykpPy87XG4gIGNvbnN0IG1hdGNoID0gdXJsLm1hdGNoKGdpdGh1YlJlZ2V4KTtcblxuICBpZiAoIW1hdGNoKSByZXR1cm47XG5cbiAgY29uc3QgWywgb3JnT3JPd25lciwgcmVwb10gPSBtYXRjaDtcblxuICBjb25zdCByZXBvVXJsID0gcmVwbyA/IGAke29yZ09yT3duZXJ9LyR7cmVwb31gIDogYG9yZ2FuaXphdGlvbnMvJHtvcmdPck93bmVyfWA7XG4gIGNvbnN0IHNldHRpbmdzVXJsID0gYGh0dHBzOi8vZ2l0aHViLmNvbS8ke3JlcG9Vcmx9L3NldHRpbmdzL2FjdGlvbnMvcnVubmVyc2A7XG5cbiAgY29uc29sZS5pbmZvKGBcXG5PcGVuaW5nIEdpdEh1YiBzZXR0aW5nczogJHtjb2xvcnMuY3lhbihzZXR0aW5nc1VybCl9YCk7XG5cbiAgYXdhaXQgZ3JhY2VmdWxUcnkoXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgJGBvcGVuICR7c2V0dGluZ3NVcmx9YC5xdWlldCgpO1xuICAgIH0sXG4gICAge1xuICAgICAgZmFsbGJhY2s6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgZ3JhY2VmdWxUcnkoXG4gICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgJGB4ZGctb3BlbiAke3NldHRpbmdzVXJsfWAucXVpZXQoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIlxcblBsZWFzZSBvcGVuIHRoZSBVUkwgbWFudWFsbHkgdG8gYWRkIGEgbmV3IHJ1bm5lciB0b2tlbi5cIik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9nTGV2ZWw6IFwiaW5mb1wiLFxuICAgICAgICAgICAgbWVzc2FnZTogXCJBbHRlcm5hdGl2ZSBicm93c2VyIG9wZW4gbWV0aG9kIGFsc28gZmFpbGVkXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBsb2dMZXZlbDogXCJpbmZvXCIsXG4gICAgICBtZXNzYWdlOiBcIkNvdWxkIG5vdCBvcGVuIGJyb3dzZXIgYXV0b21hdGljYWxseVwiLFxuICAgIH0sXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldEFyZ3MoKSB7XG4gIGNvbnN0IHsgdmFsdWVzIH0gPSBwYXJzZUFyZ3Moe1xuICAgIGFsbG93UG9zaXRpb25hbHM6IHRydWUsXG4gICAgYXJnczogQnVuLmFyZ3YsXG4gICAgb3B0aW9uczogeyB0b21sOiB7IGRlZmF1bHQ6IGZhbHNlLCBzaG9ydDogXCJ0XCIsIHR5cGU6IFwiYm9vbGVhblwiIH0gfSxcbiAgICBzdHJpY3Q6IHRydWUsXG4gIH0pO1xuXG4gIHJldHVybiB2YWx1ZXM7XG59XG4iLAogICAgImltcG9ydCB7IHBhcnNlQXJncyB9IGZyb20gXCJub2RlOnV0aWxcIjtcbmltcG9ydCB7IGNvbmZpcm0sIGlzQ2FuY2VsLCB0ZXh0IH0gZnJvbSBcIkBjbGFjay9wcm9tcHRzXCI7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tIFwiQHI1bi90b29scy91dGlscy9jb2xvcnNcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCJAcjVuL3Rvb2xzL3V0aWxzL2xvZ2dlclwiO1xuaW1wb3J0IHsgJCB9IGZyb20gXCJidW5cIjtcbmltcG9ydCB7IGdldFByb2ZpbGUsIGxvYWRDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnXCI7XG5pbXBvcnQgdHlwZSB7IFJlbW92ZUFyZ3MgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKHsgcHJlZml4OiBcInJlbW92ZU1hY2hpbmVzXCIgfSk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVNYWNoaW5lcygpIHtcbiAgY29uc3QgYXJncyA9IGF3YWl0IGdldEFyZ3MoKTtcbiAgY29uc3QgeyBkaXJlY3RvcnksIG51bWJlck9mTWFjaGluZXMsIGZvcmNlIH0gPSBhcmdzO1xuICBsZXQgeyB0b2tlbiwgdXJsIH0gPSBhcmdzO1xuXG4gIGNvbnN0IG1hY2hpbmVzRGlyID0gYCR7ZGlyZWN0b3J5fS9tYWNoaW5lc2A7XG4gIGNvbnN0IGRpcmVjdG9yeUV4aXN0cyA9IGF3YWl0IEJ1bi5maWxlKG1hY2hpbmVzRGlyKS5leGlzdHMoKTtcbiAgaWYgKCFkaXJlY3RvcnlFeGlzdHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1hY2hpbmVzIGRpcmVjdG9yeSBub3QgZm91bmQgYXQgJHttYWNoaW5lc0Rpcn0uIE5vdGhpbmcgdG8gcmVtb3ZlLmApO1xuICB9XG5cbiAgaWYgKCF0b2tlbiAmJiAhZm9yY2UpIHtcbiAgICBpZiAoIXVybCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBjb2xvcnMueWVsbG93KFwi4pqg77iPIE5vIHRva2VuIG9yIFVSTCBwcm92aWRlZC4gUnVubmVycyB3aWxsIG5vdCBiZSB1bnJlZ2lzdGVyZWQgZnJvbSBHaXRIdWIuXCIpLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUud2Fybihjb2xvcnMueWVsbG93KFwiVXNlIC0tZm9yY2UgdG8gcmVtb3ZlIHJ1bm5lcnMgd2l0aG91dCB1bnJlZ2lzdGVyaW5nIHRoZW0uXCIpKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRva2VuICgtdCkgYW5kIFVSTCAoLXUpIHBhcmFtZXRlcnMgYXJlIHJlcXVpcmVkIG9yIHVzZSAtLWZvcmNlXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHNldHRpbmdzVXJsID0gY29uc3RydWN0UnVubmVyU2V0dGluZ3NVcmwodXJsKTtcblxuICAgIGNvbnN0IHNob3VsZE9wZW4gPSBhd2FpdCBjb25maXJtKHtcbiAgICAgIG1lc3NhZ2U6IGBObyB0b2tlbiBwcm92aWRlZC4gV291bGQgeW91IGxpa2UgdG8gb3BlbiBHaXRIdWIgdG8gZ2V0IGEgcnVubmVyIHRva2VuIGZvciB1bnJlZ2lzdHJhdGlvbj9cXG4gICR7c2V0dGluZ3NVcmx9YCxcbiAgICB9KTtcblxuICAgIGlmIChpc0NhbmNlbChzaG91bGRPcGVuKSB8fCAhc2hvdWxkT3Blbikge1xuICAgICAgY29uc29sZS53YXJuKGNvbG9ycy55ZWxsb3coXCJVc2UgLS1mb3JjZSB0byByZW1vdmUgcnVubmVycyB3aXRob3V0IHVucmVnaXN0ZXJpbmcgdGhlbS5cIikpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVG9rZW4gaXMgcmVxdWlyZWQgdG8gdW5yZWdpc3RlciBydW5uZXJzIChvciB1c2UgLS1mb3JjZSlcIik7XG4gICAgfVxuXG4gICAgbG9nZ2VyLmluZm8oXCJPcGVuaW5nIEdpdEh1YiBydW5uZXIgc2V0dGluZ3MuLi5cIik7XG4gICAgYXdhaXQgJGBvcGVuICR7c2V0dGluZ3NVcmx9YC5xdWlldCgpO1xuXG4gICAgY29uc3QgdG9rZW5JbnB1dCA9IGF3YWl0IHRleHQoe1xuICAgICAgbWVzc2FnZTogXCJFbnRlciB0aGUgcnVubmVyIHJlbW92YWwgdG9rZW46XCIsXG4gICAgICBwbGFjZWhvbGRlcjogXCJBWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFwiLFxuICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gXCJUb2tlbiBpcyByZXF1aXJlZFwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKGlzQ2FuY2VsKHRva2VuSW5wdXQpKSB7XG4gICAgICBjb25zb2xlLndhcm4oY29sb3JzLnllbGxvdyhcIlVzZSAtLWZvcmNlIHRvIHJlbW92ZSBydW5uZXJzIHdpdGhvdXQgdW5yZWdpc3RlcmluZyB0aGVtLlwiKSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb2tlbiBpcyByZXF1aXJlZCB0byB1bnJlZ2lzdGVyIHJ1bm5lcnMgKG9yIHVzZSAtLWZvcmNlKVwiKTtcbiAgICB9XG5cbiAgICB0b2tlbiA9IHRva2VuSW5wdXQudHJpbSgpO1xuICB9XG5cbiAgaWYgKHRva2VuICYmIHVybCkge1xuICAgIGNvbnNvbGUuaW5mbyhjb2xvcnMuY3lhbihcIlVucmVnaXN0ZXJpbmcgcnVubmVycyBmcm9tIEdpdEh1Yi4uLlwiKSk7XG4gICAgYXdhaXQgdW5yZWdpc3RlclJ1bm5lcnMoeyBkaXJlY3RvcnksIG51bWJlck9mTWFjaGluZXMsIHRva2VuIH0pO1xuICB9IGVsc2UgaWYgKCFmb3JjZSkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGNvbG9ycy55ZWxsb3coXCLimqDvuI8gTm8gdG9rZW4gb3IgVVJMIHByb3ZpZGVkLiBSdW5uZXJzIHdpbGwgbm90IGJlIHVucmVnaXN0ZXJlZCBmcm9tIEdpdEh1Yi5cIiksXG4gICAgKTtcbiAgICBjb25zb2xlLndhcm4oY29sb3JzLnllbGxvdyhcIlVzZSAtLWZvcmNlIHRvIHJlbW92ZSBydW5uZXJzIHdpdGhvdXQgdW5yZWdpc3RlcmluZyB0aGVtLlwiKSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVG9rZW4gKC10KSBhbmQgVVJMICgtdSkgcGFyYW1ldGVycyBhcmUgcmVxdWlyZWQgb3IgdXNlIC0tZm9yY2VcIik7XG4gIH1cblxuICBhd2FpdCByZW1vdmVSdW5uZXJEaXJlY3Rvcmllcyh7IGRpcmVjdG9yeSwgbnVtYmVyT2ZNYWNoaW5lcyB9KTtcblxuICBjb25zb2xlLmluZm8oY29sb3JzLmdyZWVuKFwi4pyTIFJ1bm5lcnMgc3VjY2Vzc2Z1bGx5IHJlbW92ZWRcIikpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBcmdzKCk6IFByb21pc2U8UmVtb3ZlQXJncz4ge1xuICBjb25zdCB7IHZhbHVlcyB9ID0gcGFyc2VBcmdzKHtcbiAgICBhbGxvd1Bvc2l0aW9uYWxzOiB0cnVlLFxuICAgIGFyZ3M6IEJ1bi5hcmd2LFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGNvbmZpZzogeyBzaG9ydDogXCJjXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIGRpcmVjdG9yeTogeyBkZWZhdWx0OiBgJHtwcm9jZXNzLmN3ZCgpfS9naC1ydW5uZXJzYCwgc2hvcnQ6IFwiZFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBmb3JjZTogeyBkZWZhdWx0OiBmYWxzZSwgc2hvcnQ6IFwiZlwiLCB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgbnVtYmVyT2ZNYWNoaW5lczogeyBkZWZhdWx0OiBcIjFcIiwgc2hvcnQ6IFwibVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBwcm9maWxlOiB7IHNob3J0OiBcInBcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgdG9rZW46IHsgc2hvcnQ6IFwidFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICB1cmw6IHsgc2hvcnQ6IFwidVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgfSxcbiAgICBzdHJpY3Q6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGxvYWRDb25maWcoeyBjb25maWdQYXRoOiB2YWx1ZXMuY29uZmlnIGFzIHN0cmluZyB9KTtcbiAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IGdldFByb2ZpbGUoY29uZmlnLCB2YWx1ZXMucHJvZmlsZSBhcyBzdHJpbmcpO1xuXG4gIGNvbnN0IGJhc2VBcmdzID0ge1xuICAgIGRpcmVjdG9yeTogdmFsdWVzLmRpcmVjdG9yeSBhcyBzdHJpbmcsXG4gICAgZm9yY2U6IHZhbHVlcy5mb3JjZSBhcyBib29sZWFuLFxuICAgIG51bWJlck9mTWFjaGluZXM6IHZhbHVlcy5udW1iZXJPZk1hY2hpbmVzIGFzIHN0cmluZyxcbiAgICB0b2tlbjogdmFsdWVzLnRva2VuIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB1cmw6IHZhbHVlcy51cmwgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICB9O1xuXG4gIGlmIChwcm9maWxlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpcmVjdG9yeTogYmFzZUFyZ3MuZGlyZWN0b3J5ID8/IHByb2ZpbGUuZGlyZWN0b3J5ID8/IGAke3Byb2Nlc3MuY3dkKCl9L2doLXJ1bm5lcnNgLFxuICAgICAgZm9yY2U6IGJhc2VBcmdzLmZvcmNlLFxuICAgICAgbnVtYmVyT2ZNYWNoaW5lczogYmFzZUFyZ3MubnVtYmVyT2ZNYWNoaW5lcyA/PyBTdHJpbmcocHJvZmlsZS5udW1iZXJPZk1hY2hpbmVzKSA/PyBcIjFcIixcbiAgICAgIHRva2VuOiBiYXNlQXJncy50b2tlbixcbiAgICAgIHVybDogYmFzZUFyZ3MudXJsID8/IHByb2ZpbGUudXJsLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gYmFzZUFyZ3M7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVucmVnaXN0ZXJSdW5uZXJzKHtcbiAgZGlyZWN0b3J5LFxuICBudW1iZXJPZk1hY2hpbmVzLFxuICB0b2tlbixcbn06IHtcbiAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIG51bWJlck9mTWFjaGluZXM6IHN0cmluZztcbiAgdG9rZW46IHN0cmluZztcbn0pIHtcbiAgY29uc3QgbG9nID0gbG9nZ2VyLmNoaWxkKFwidW5yZWdpc3RlclwiKTtcbiAgY29uc3QgbnVtTWFjaGluZXMgPSBOdW1iZXIobnVtYmVyT2ZNYWNoaW5lcyk7XG5cbiAgY29uc3QgY3B1Q291bnQgPSAoKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBCdW4uc3Bhd25TeW5jKFtcIm5wcm9jXCJdKTtcbiAgICAgIHJldHVybiBOdW1iZXIucGFyc2VJbnQocmVzdWx0LnN0ZG91dC50b1N0cmluZygpLnRyaW0oKSwgMTApIHx8IDQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBCdW4uc3Bhd25TeW5jKFtcInN5c2N0bFwiLCBcIi1uXCIsIFwiaHcubmNwdVwiXSk7XG4gICAgICAgIHJldHVybiBOdW1iZXIucGFyc2VJbnQocmVzdWx0LnN0ZG91dC50b1N0cmluZygpLnRyaW0oKSwgMTApIHx8IDQ7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIDQ7XG4gICAgICB9XG4gICAgfVxuICB9KSgpO1xuICBjb25zdCBjb25jdXJyZW5jeSA9IE1hdGgubWluKE1hdGgubWF4KDIsIE1hdGguZmxvb3IoY3B1Q291bnQgLyAyKSksIG51bU1hY2hpbmVzLCA4KTtcblxuICBsb2cuaW5mbyhgVW5yZWdpc3RlcmluZyAke251bU1hY2hpbmVzfSBydW5uZXJzIHdpdGggY29uY3VycmVuY3kgb2YgJHtjb25jdXJyZW5jeX1gKTtcblxuICBjb25zdCB0YXNrcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IG51bU1hY2hpbmVzIH0sIChfLCBpKSA9PiBpICsgMSkubWFwKChydW5uZXJJbmRleCkgPT4gKHtcbiAgICBleGVjdXRlOiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtYWNoaW5lRGlyZWN0b3J5ID0gYCR7ZGlyZWN0b3J5fS9tYWNoaW5lcy8ke3J1bm5lckluZGV4fWA7XG4gICAgICBjb25zdCBtYWNoaW5lRXhpc3RzID0gYXdhaXQgQnVuLmZpbGUobWFjaGluZURpcmVjdG9yeSkuZXhpc3RzKCk7XG5cbiAgICAgIGlmICghbWFjaGluZUV4aXN0cykge1xuICAgICAgICBsb2cuZGVidWcoYE1hY2hpbmUgJHtydW5uZXJJbmRleH0gZG9lc24ndCBleGlzdCwgc2tpcHBpbmcuLi5gKTtcbiAgICAgICAgcmV0dXJuIHsgcnVubmVySW5kZXgsIHN0YXR1czogXCJza2lwcGVkXCIgfTtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgbG9nLmRlYnVnKGBVbnJlZ2lzdGVyaW5nIG1hY2hpbmUgJHtydW5uZXJJbmRleH0uLi5gKTtcbiAgICAgICAgYXdhaXQgJGAke21hY2hpbmVEaXJlY3Rvcnl9L2NvbmZpZy5zaCByZW1vdmUgLS10b2tlbiAke3Rva2VufWAucXVpZXQoKTtcbiAgICAgICAgbG9nLmluZm8oYFN1Y2Nlc3NmdWxseSB1bnJlZ2lzdGVyZWQgbWFjaGluZSAke3J1bm5lckluZGV4fSBmcm9tIEdpdEh1YmApO1xuICAgICAgICByZXR1cm4geyBydW5uZXJJbmRleCwgc3RhdHVzOiBcInN1Y2Nlc3NcIiB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nLndhcm4oYFVuYWJsZSB0byB1bnJlZ2lzdGVyIG1hY2hpbmUgJHtydW5uZXJJbmRleH06ICR7ZXJyb3J9YCk7XG4gICAgICAgIHJldHVybiB7IGVycm9yLCBydW5uZXJJbmRleCwgc3RhdHVzOiBcImZhaWxlZFwiIH07XG4gICAgICB9XG4gICAgfSxcbiAgICBydW5uZXJJbmRleCxcbiAgfSkpO1xuXG4gIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YXNrcy5sZW5ndGg7IGkgKz0gY29uY3VycmVuY3kpIHtcbiAgICBjb25zdCBiYXRjaCA9IHRhc2tzLnNsaWNlKGksIGkgKyBjb25jdXJyZW5jeSk7XG4gICAgY29uc3QgYmF0Y2hSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGJhdGNoLm1hcCgodGFzaykgPT4gdGFzay5leGVjdXRlKCkpKTtcbiAgICByZXN1bHRzLnB1c2goLi4uYmF0Y2hSZXN1bHRzKTtcbiAgfVxuXG4gIGNvbnN0IHN1Y2Nlc3NmdWwgPSByZXN1bHRzLmZpbHRlcihcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiZnVsZmlsbGVkXCIgJiYgci52YWx1ZT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIixcbiAgKS5sZW5ndGg7XG4gIGNvbnN0IGZhaWxlZCA9IHJlc3VsdHMuZmlsdGVyKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJmdWxmaWxsZWRcIiAmJiByLnZhbHVlPy5zdGF0dXMgPT09IFwiZmFpbGVkXCIsXG4gICkubGVuZ3RoO1xuICBjb25zdCBza2lwcGVkID0gcmVzdWx0cy5maWx0ZXIoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcImZ1bGZpbGxlZFwiICYmIHIudmFsdWU/LnN0YXR1cyA9PT0gXCJza2lwcGVkXCIsXG4gICkubGVuZ3RoO1xuXG4gIGxvZy5pbmZvKFxuICAgIGBVbnJlZ2lzdHJhdGlvbiBjb21wbGV0ZTogJHtzdWNjZXNzZnVsfSBzdWNjZXNzZnVsLCAke2ZhaWxlZH0gZmFpbGVkLCAke3NraXBwZWR9IHNraXBwZWRgLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZW1vdmVSdW5uZXJEaXJlY3Rvcmllcyh7XG4gIGRpcmVjdG9yeSxcbiAgbnVtYmVyT2ZNYWNoaW5lcyxcbn06IHtcbiAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIG51bWJlck9mTWFjaGluZXM6IHN0cmluZztcbn0pIHtcbiAgY29uc3QgbG9nID0gbG9nZ2VyLmNoaWxkKFwicmVtb3ZlRGlyZWN0b3JpZXNcIik7XG4gIGNvbnN0IG51bU1hY2hpbmVzID0gTnVtYmVyKG51bWJlck9mTWFjaGluZXMpO1xuXG4gIGNvbnN0IHRhc2tzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogbnVtTWFjaGluZXMgfSwgKF8sIGkpID0+IGkgKyAxKS5tYXAoKHJ1bm5lckluZGV4KSA9PiAoe1xuICAgIGV4ZWN1dGU6IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1hY2hpbmVEaXJlY3RvcnkgPSBgJHtkaXJlY3Rvcnl9L21hY2hpbmVzLyR7cnVubmVySW5kZXh9YDtcbiAgICAgIGNvbnN0IG1hY2hpbmVFeGlzdHMgPSBhd2FpdCBCdW4uZmlsZShtYWNoaW5lRGlyZWN0b3J5KS5leGlzdHMoKTtcblxuICAgICAgaWYgKCFtYWNoaW5lRXhpc3RzKSB7XG4gICAgICAgIHJldHVybiB7IHJ1bm5lckluZGV4LCBzdGF0dXM6IFwic2tpcHBlZFwiIH07XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0ICRgcm0gLXJmICR7bWFjaGluZURpcmVjdG9yeX1gLnF1aWV0KCk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmVtb3ZlZCBtYWNoaW5lICR7cnVubmVySW5kZXh9IGRpcmVjdG9yeWApO1xuICAgICAgICByZXR1cm4geyBydW5uZXJJbmRleCwgc3RhdHVzOiBcInN1Y2Nlc3NcIiB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nLmVycm9yKGBFcnJvciByZW1vdmluZyBtYWNoaW5lICR7cnVubmVySW5kZXh9IGRpcmVjdG9yeTogJHtlcnJvcn1gKTtcbiAgICAgICAgcmV0dXJuIHsgZXJyb3IsIHJ1bm5lckluZGV4LCBzdGF0dXM6IFwiZmFpbGVkXCIgfTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJ1bm5lckluZGV4LFxuICB9KSk7XG5cbiAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZCh0YXNrcy5tYXAoKHRhc2spID0+IHRhc2suZXhlY3V0ZSgpKSk7XG5cbiAgY29uc3Qgc3VjY2Vzc2Z1bCA9IHJlc3VsdHMuZmlsdGVyKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJmdWxmaWxsZWRcIiAmJiByLnZhbHVlPy5zdGF0dXMgPT09IFwic3VjY2Vzc1wiLFxuICApLmxlbmd0aDtcbiAgY29uc3QgZmFpbGVkID0gcmVzdWx0cy5maWx0ZXIoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcImZ1bGZpbGxlZFwiICYmIHIudmFsdWU/LnN0YXR1cyA9PT0gXCJmYWlsZWRcIixcbiAgKS5sZW5ndGg7XG5cbiAgbG9nLmluZm8oYERpcmVjdG9yeSByZW1vdmFsIGNvbXBsZXRlOiAke3N1Y2Nlc3NmdWx9IHJlbW92ZWQsICR7ZmFpbGVkfSBmYWlsZWRgKTtcblxuICBpZiAoZmFpbGVkID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJlbW92ZSAke2ZhaWxlZH0gcnVubmVyIGRpcmVjdG9yaWVzYCk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IG1hY2hpbmVzRGlyID0gYCR7ZGlyZWN0b3J5fS9tYWNoaW5lc2A7XG4gICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgJGBscyAtQSAke21hY2hpbmVzRGlyfWAudGV4dCgpKS50cmltKCk7XG5cbiAgICBpZiAoIWZpbGVzKSB7XG4gICAgICBhd2FpdCAkYHJtIC1yZiAke21hY2hpbmVzRGlyfWAucXVpZXQoKTtcblxuICAgICAgY29uc3QgcGFyZW50RmlsZXMgPSAoYXdhaXQgJGBscyAtQSAke2RpcmVjdG9yeX1gLnRleHQoKSkudHJpbSgpO1xuICAgICAgaWYgKCFwYXJlbnRGaWxlcykge1xuICAgICAgICBhd2FpdCAkYHJtIC1yZiAke2RpcmVjdG9yeX1gLnF1aWV0KCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuaW5mbyhjb2xvcnMuZ3JlZW4oYOKckyBSZW1vdmVkIGVtcHR5IGRpcmVjdG9yaWVzYCkpO1xuICAgIH1cbiAgfSBjYXRjaCAoX2Vycm9yKSB7fVxufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RSdW5uZXJTZXR0aW5nc1VybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpO1xuICAgIGNvbnN0IHBhdGhQYXJ0cyA9IHBhcnNlZFVybC5wYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgaWYgKHBhcnNlZFVybC5ob3N0bmFtZSA9PT0gXCJnaXRodWIuY29tXCIgfHwgcGFyc2VkVXJsLmhvc3RuYW1lID09PSBcInd3dy5naXRodWIuY29tXCIpIHtcbiAgICAgIGlmIChwYXRoUGFydHNbMF0gPT09IFwib3Jnc1wiICYmIHBhdGhQYXJ0c1sxXSkge1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdhbml6YXRpb25zLyR7cGF0aFBhcnRzWzFdfS9zZXR0aW5ncy9hY3Rpb25zL3J1bm5lcnNgO1xuICAgICAgfSBlbHNlIGlmIChwYXRoUGFydHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgcmV0dXJuIGBodHRwczovL2dpdGh1Yi5jb20vJHtwYXRoUGFydHNbMF19LyR7cGF0aFBhcnRzWzFdfS9zZXR0aW5ncy9hY3Rpb25zL3J1bm5lcnNgO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGF0aFBhcnRzWzBdID09PSBcIm9yZ3NcIiAmJiBwYXRoUGFydHNbMV0pIHtcbiAgICAgICAgcmV0dXJuIGAke3BhcnNlZFVybC5vcmlnaW59L29yZ2FuaXphdGlvbnMvJHtwYXRoUGFydHNbMV19L3NldHRpbmdzL2FjdGlvbnMvcnVubmVyc2A7XG4gICAgICB9IGVsc2UgaWYgKHBhdGhQYXJ0cy5sZW5ndGggPj0gMikge1xuICAgICAgICByZXR1cm4gYCR7cGFyc2VkVXJsLm9yaWdpbn0vJHtwYXRoUGFydHNbMF19LyR7cGF0aFBhcnRzWzFdfS9zZXR0aW5ncy9hY3Rpb25zL3J1bm5lcnNgO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1cmw7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1cmw7XG4gIH1cbn1cbiIsCiAgICAiaW1wb3J0IHsgcGFyc2VBcmdzIH0gZnJvbSBcIm5vZGU6dXRpbFwiO1xuaW1wb3J0IHsgY29uZmlybSwgaXNDYW5jZWwsIHRleHQgfSBmcm9tIFwiQGNsYWNrL3Byb21wdHNcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCJAcjVuL3Rvb2xzL3V0aWxzL2xvZ2dlclwiO1xuaW1wb3J0IHsgJCB9IGZyb20gXCJidW5cIjtcbmltcG9ydCB7IGdldFByb2ZpbGUsIGxvYWRDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnXCI7XG5pbXBvcnQgeyBnZXRQYWNrYWdlUGF0aCB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XG5pbXBvcnQgeyB3b3JrZXJNYW5hZ2VyIH0gZnJvbSBcIi4uL2xpYi93b3JrZXItbWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBSdW5BcmdzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcih7IHByZWZpeDogXCJydW5NYWNoaW5lc1wiIH0pO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuTWFjaGluZXMoKSB7XG4gIGNvbnN0IGFyZ3MgPSBhd2FpdCBnZXRBcmdzKCk7XG4gIGNvbnN0IHsgZGlyZWN0b3J5LCBudW1iZXJPZk1hY2hpbmVzLCBuYW1lLCBsYWJlbHMsIHJ1bm5lckdyb3VwIH0gPSBhcmdzO1xuICBsZXQgeyB0b2tlbiwgdXJsIH0gPSBhcmdzO1xuXG4gIGlmICghdXJsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVVJMICgtdSkgcGFyYW1ldGVyIGlzIHJlcXVpcmVkXCIpO1xuICB9XG5cbiAgaWYgKCF0b2tlbikge1xuICAgIGNvbnN0IHNldHRpbmdzVXJsID0gY29uc3RydWN0UnVubmVyU2V0dGluZ3NVcmwodXJsKTtcblxuICAgIGNvbnN0IHNob3VsZE9wZW4gPSBhd2FpdCBjb25maXJtKHtcbiAgICAgIG1lc3NhZ2U6IGBObyB0b2tlbiBwcm92aWRlZC4gV291bGQgeW91IGxpa2UgdG8gb3BlbiBHaXRIdWIgdG8gZ2V0IGEgcnVubmVyIHRva2VuP1xcbiAgJHtzZXR0aW5nc1VybH1gLFxuICAgIH0pO1xuXG4gICAgaWYgKGlzQ2FuY2VsKHNob3VsZE9wZW4pIHx8ICFzaG91bGRPcGVuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb2tlbiBpcyByZXF1aXJlZCB0byBydW4gbWFjaGluZXNcIik7XG4gICAgfVxuXG4gICAgbG9nZ2VyLmluZm8oXCJPcGVuaW5nIEdpdEh1YiBydW5uZXIgc2V0dGluZ3MuLi5cIik7XG4gICAgYXdhaXQgJGBvcGVuICR7c2V0dGluZ3NVcmx9YC5xdWlldCgpO1xuXG4gICAgY29uc3QgdG9rZW5JbnB1dCA9IGF3YWl0IHRleHQoe1xuICAgICAgbWVzc2FnZTogXCJFbnRlciB0aGUgcnVubmVyIHJlZ2lzdHJhdGlvbiB0b2tlbjpcIixcbiAgICAgIHBsYWNlaG9sZGVyOiBcIkFYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYXCIsXG4gICAgICB2YWxpZGF0ZTogKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBcIlRva2VuIGlzIHJlcXVpcmVkXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoaXNDYW5jZWwodG9rZW5JbnB1dCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRva2VuIGlzIHJlcXVpcmVkIHRvIHJ1biBtYWNoaW5lc1wiKTtcbiAgICB9XG5cbiAgICB0b2tlbiA9IHRva2VuSW5wdXQudHJpbSgpO1xuICB9XG5cbiAgbG9nZ2VyLmluZm8oYFN0YXJ0aW5nICR7bnVtYmVyT2ZNYWNoaW5lc30gcnVubmVycyBmcm9tICR7ZGlyZWN0b3J5fWApO1xuICBsb2dnZXIuZGVidWcoYE5hbWU6ICR7bmFtZX0sIExhYmVsczogJHtsYWJlbHMgfHwgXCJub25lXCJ9YCk7XG5cbiAgY29uc3QgZGlyZWN0b3J5RXhpc3RzID0gYXdhaXQgQnVuLmZpbGUoYCR7ZGlyZWN0b3J5fS9tYWNoaW5lc2ApLmV4aXN0cygpO1xuICBpZiAoIWRpcmVjdG9yeUV4aXN0cykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBNYWNoaW5lcyBkaXJlY3Rvcnkgbm90IGZvdW5kIGF0ICR7ZGlyZWN0b3J5fS9tYWNoaW5lcy4gUnVuICdoeWRyYSBjcmVhdGUnIGZpcnN0LmAsXG4gICAgKTtcbiAgfVxuXG4gIGF3YWl0IHN0YXJ0UnVubmVycyh7IGRpcmVjdG9yeSwgbGFiZWxzLCBuYW1lLCBudW1iZXJPZk1hY2hpbmVzLCBydW5uZXJHcm91cCwgdG9rZW4sIHVybCB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QXJncygpOiBQcm9taXNlPFJ1bkFyZ3M+IHtcbiAgY29uc3QgeyB2YWx1ZXMgfSA9IHBhcnNlQXJncyh7XG4gICAgYWxsb3dQb3NpdGlvbmFsczogdHJ1ZSxcbiAgICBhcmdzOiBCdW4uYXJndixcbiAgICBvcHRpb25zOiB7XG4gICAgICBjb25maWc6IHsgc2hvcnQ6IFwiY1wiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBkaXJlY3Rvcnk6IHsgZGVmYXVsdDogYCR7cHJvY2Vzcy5jd2QoKX0vZ2gtcnVubmVyc2AsIHNob3J0OiBcImRcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgbGFiZWxzOiB7IHNob3J0OiBcImxcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgbmFtZTogeyBkZWZhdWx0OiBcInJ1bm5lclwiLCBzaG9ydDogXCJuXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIG51bWJlck9mTWFjaGluZXM6IHsgZGVmYXVsdDogXCIxXCIsIHNob3J0OiBcIm1cIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgcHJvZmlsZTogeyBzaG9ydDogXCJwXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIHJ1bm5lckdyb3VwOiB7IHNob3J0OiBcImdcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgdG9rZW46IHsgc2hvcnQ6IFwidFwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICB1cmw6IHsgc2hvcnQ6IFwidVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgfSxcbiAgICBzdHJpY3Q6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGxvYWRDb25maWcoeyBjb25maWdQYXRoOiB2YWx1ZXMuY29uZmlnIGFzIHN0cmluZyB9KTtcbiAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IGdldFByb2ZpbGUoY29uZmlnLCB2YWx1ZXMucHJvZmlsZSBhcyBzdHJpbmcpO1xuXG4gIGNvbnN0IGJhc2VBcmdzID0ge1xuICAgIGRpcmVjdG9yeTogdmFsdWVzLmRpcmVjdG9yeSBhcyBzdHJpbmcsXG4gICAgbGFiZWxzOiB2YWx1ZXMubGFiZWxzIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB2YWx1ZXMubmFtZSBhcyBzdHJpbmcsXG4gICAgbnVtYmVyT2ZNYWNoaW5lczogdmFsdWVzLm51bWJlck9mTWFjaGluZXMgYXMgc3RyaW5nLFxuICAgIHJ1bm5lckdyb3VwOiB2YWx1ZXMucnVubmVyR3JvdXAgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHRva2VuOiB2YWx1ZXMudG9rZW4gYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHVybDogdmFsdWVzLnVybCBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIH07XG5cbiAgaWYgKHByb2ZpbGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlyZWN0b3J5OiBiYXNlQXJncy5kaXJlY3RvcnkgPz8gcHJvZmlsZS5kaXJlY3RvcnkgPz8gYCR7cHJvY2Vzcy5jd2QoKX0vZ2gtcnVubmVyc2AsXG4gICAgICBsYWJlbHM6IGJhc2VBcmdzLmxhYmVscyA/PyBwcm9maWxlLmxhYmVscyxcbiAgICAgIG5hbWU6IGJhc2VBcmdzLm5hbWUgPz8gcHJvZmlsZS5uYW1lID8/IFwicnVubmVyXCIsXG4gICAgICBudW1iZXJPZk1hY2hpbmVzOiBiYXNlQXJncy5udW1iZXJPZk1hY2hpbmVzID8/IFN0cmluZyhwcm9maWxlLm51bWJlck9mTWFjaGluZXMpID8/IFwiMVwiLFxuICAgICAgcnVubmVyR3JvdXA6IGJhc2VBcmdzLnJ1bm5lckdyb3VwID8/IHByb2ZpbGUucnVubmVyR3JvdXAsXG4gICAgICB0b2tlbjogYmFzZUFyZ3MudG9rZW4sXG4gICAgICB1cmw6IGJhc2VBcmdzLnVybCA/PyBwcm9maWxlLnVybCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGJhc2VBcmdzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydFJ1bm5lcnMoe1xuICBkaXJlY3RvcnksXG4gIG51bWJlck9mTWFjaGluZXMsXG4gIHRva2VuLFxuICB1cmwsXG4gIG5hbWUsXG4gIGxhYmVscyxcbiAgcnVubmVyR3JvdXAsXG59OiB7XG4gIGRpcmVjdG9yeTogc3RyaW5nO1xuICBudW1iZXJPZk1hY2hpbmVzOiBzdHJpbmc7XG4gIHRva2VuOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhYmVscz86IHN0cmluZztcbiAgcnVubmVyR3JvdXA/OiBzdHJpbmc7XG59KSB7XG4gIGxvZ2dlci5pbmZvKGBTdGFydGluZyAke251bWJlck9mTWFjaGluZXN9IHdvcmtlcnMuLi5gKTtcblxuICBmb3IgKGxldCBydW5uZXJJbmRleCA9IDE7IHJ1bm5lckluZGV4IDw9IE51bWJlcihudW1iZXJPZk1hY2hpbmVzKTsgcnVubmVySW5kZXgrKykge1xuICAgIGNvbnN0IG1hY2hpbmVEaXJlY3RvcnkgPSBgJHtkaXJlY3Rvcnl9L21hY2hpbmVzLyR7cnVubmVySW5kZXh9YDtcbiAgICBjb25zdCBtYWNoaW5lRXhpc3RzID0gYXdhaXQgQnVuLmZpbGUobWFjaGluZURpcmVjdG9yeSkuZXhpc3RzKCk7XG5cbiAgICBpZiAoIW1hY2hpbmVFeGlzdHMpIHtcbiAgICAgIGxvZ2dlci53YXJuKGBNYWNoaW5lICR7cnVubmVySW5kZXh9IGRvZXNuJ3QgZXhpc3QsIHNraXBwaW5nLi4uYCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCB3b3JrZXJQYXRoID0gYCR7Z2V0UGFja2FnZVBhdGgoKX0vc3JjL3J1bm5lci13b3JrZXIudHNgO1xuICAgIGNvbnN0IHdvcmtlck5hbWUgPSBgJHtuYW1lfS0ke3J1bm5lckluZGV4fWA7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcih3b3JrZXJQYXRoLCB7IG5hbWU6IHdvcmtlck5hbWUsIHJlZjogdHJ1ZSB9KTtcblxuICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoeyBkYXRhIH0pID0+IHtcbiAgICAgIGNvbnN0IGxldmVsID0gZGF0YS50eXBlID09PSBcImVycm9yXCIgPyBcImVycm9yXCIgOiBcImluZm9cIjtcbiAgICAgIGxvZ2dlcltsZXZlbF0oYCR7d29ya2VyTmFtZX06ICR7ZGF0YS5tZXNzYWdlfWApO1xuICAgIH0pO1xuXG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCAoZXJyb3IpID0+IHtcbiAgICAgIGxvZ2dlci5lcnJvcihgV29ya2VyICR7d29ya2VyTmFtZX0gZXJyb3I6YCwgZXJyb3IpO1xuICAgIH0pO1xuXG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJleGl0XCIsIChjb2RlKSA9PiB7XG4gICAgICBsb2dnZXIuaW5mbyhgV29ya2VyICR7d29ya2VyTmFtZX0gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCk7XG4gICAgfSk7XG5cbiAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgaW5kZXg6IHJ1bm5lckluZGV4LFxuICAgICAgbGFiZWxzLFxuICAgICAgbWFjaGluZUN3ZDogbWFjaGluZURpcmVjdG9yeSxcbiAgICAgIG5hbWUsXG4gICAgICBydW5uZXJHcm91cCxcbiAgICAgIHRva2VuLFxuICAgICAgdXJsLFxuICAgIH0pO1xuXG4gICAgbG9nZ2VyLmluZm8oYFdvcmtlciAke3dvcmtlck5hbWV9IHN0YXJ0aW5nLi4uYCk7XG4gICAgd29ya2VyTWFuYWdlci5hZGQod29ya2VyKTtcbiAgfVxuXG4gIGxvZ2dlci5pbmZvKFwiQWxsIHdvcmtlcnMgc3RhcnRlZC4gUHJlc3MgQ3RybCtDIHRvIHN0b3AgYWxsIG1hY2hpbmVzXCIpO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RSdW5uZXJTZXR0aW5nc1VybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpO1xuICAgIGNvbnN0IHBhdGhQYXJ0cyA9IHBhcnNlZFVybC5wYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgaWYgKHBhcnNlZFVybC5ob3N0bmFtZSA9PT0gXCJnaXRodWIuY29tXCIgfHwgcGFyc2VkVXJsLmhvc3RuYW1lID09PSBcInd3dy5naXRodWIuY29tXCIpIHtcbiAgICAgIGlmIChwYXRoUGFydHNbMF0gPT09IFwib3Jnc1wiICYmIHBhdGhQYXJ0c1sxXSkge1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdhbml6YXRpb25zLyR7cGF0aFBhcnRzWzFdfS9zZXR0aW5ncy9hY3Rpb25zL3J1bm5lcnMvbmV3YDtcbiAgICAgIH0gZWxzZSBpZiAocGF0aFBhcnRzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgIHJldHVybiBgaHR0cHM6Ly9naXRodWIuY29tLyR7cGF0aFBhcnRzWzBdfS8ke3BhdGhQYXJ0c1sxXX0vc2V0dGluZ3MvYWN0aW9ucy9ydW5uZXJzL25ld2A7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYXRoUGFydHNbMF0gPT09IFwib3Jnc1wiICYmIHBhdGhQYXJ0c1sxXSkge1xuICAgICAgICByZXR1cm4gYCR7cGFyc2VkVXJsLm9yaWdpbn0vb3JnYW5pemF0aW9ucy8ke3BhdGhQYXJ0c1sxXX0vc2V0dGluZ3MvYWN0aW9ucy9ydW5uZXJzL25ld2A7XG4gICAgICB9IGVsc2UgaWYgKHBhdGhQYXJ0cy5sZW5ndGggPj0gMikge1xuICAgICAgICByZXR1cm4gYCR7cGFyc2VkVXJsLm9yaWdpbn0vJHtwYXRoUGFydHNbMF19LyR7cGF0aFBhcnRzWzFdfS9zZXR0aW5ncy9hY3Rpb25zL3J1bm5lcnMvbmV3YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdXJsO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG59XG4iLAogICAgImltcG9ydCB7IHBhcnNlQXJncyB9IGZyb20gXCJub2RlOnV0aWxcIjtcbmltcG9ydCB7IGxvZywgc3Bpbm5lciB9IGZyb20gXCJAY2xhY2svcHJvbXB0c1wiO1xuaW1wb3J0IHsgZ3JhY2VmdWxUcnksIHdpdGhSZXRyeSB9IGZyb20gXCJAcjVuL2NsaS1jb3JlXCI7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tIFwiQHI1bi90b29scy91dGlscy9jb2xvcnNcIjtcbmltcG9ydCB7ICQgfSBmcm9tIFwiYnVuXCI7XG5pbXBvcnQgeyBnZXRQcm9maWxlLCBsb2FkQ29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZ1wiO1xuXG5pbnRlcmZhY2UgUnVubmVyU3RhdHVzIHtcbiAgbmFtZTogc3RyaW5nO1xuICBzdGF0dXM6IFwib25saW5lXCIgfCBcIm9mZmxpbmVcIiB8IFwiYnVzeVwiO1xuICBsYWJlbHM6IHN0cmluZ1tdO1xuICBidXN5OiBib29sZWFuO1xuICBvczogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgR2l0SHViUnVubmVyUmVzcG9uc2Uge1xuICBydW5uZXJzOiBBcnJheTx7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgb3M6IHN0cmluZztcbiAgICBzdGF0dXM6IHN0cmluZztcbiAgICBidXN5OiBib29sZWFuO1xuICAgIGxhYmVsczogQXJyYXk8eyBuYW1lOiBzdHJpbmcgfT47XG4gIH0+O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhdHVzKCkge1xuICBjb25zdCBhcmdzID0gYXdhaXQgZ2V0QXJncygpO1xuICBjb25zdCB7IGRpcmVjdG9yeSwgdG9rZW4sIHVybCwganNvbiB9ID0gYXJncztcblxuICBpZiAoIXRva2VuIHx8ICF1cmwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb2tlbiAoLXQpIGFuZCBVUkwgKC11KSBwYXJhbWV0ZXJzIGFyZSByZXF1aXJlZFwiKTtcbiAgfVxuXG4gIGNvbnN0IHN0YXR1c1NwaW5uZXIgPSBzcGlubmVyKCk7XG4gIHN0YXR1c1NwaW5uZXIuc3RhcnQoXCJGZXRjaGluZyBydW5uZXIgc3RhdHVzLi4uXCIpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbG9jYWxSdW5uZXJzID0gYXdhaXQgZ2V0TG9jYWxSdW5uZXJzKGRpcmVjdG9yeSk7XG4gICAgY29uc3QgZ2l0aHViUnVubmVycyA9IGF3YWl0IGZldGNoR2l0SHViUnVubmVycyh1cmwsIHRva2VuKTtcbiAgICBjb25zdCBydW5uZXJTdGF0dXNlcyA9IGNvbWJpbmVSdW5uZXJTdGF0dXMobG9jYWxSdW5uZXJzLCBnaXRodWJSdW5uZXJzKTtcblxuICAgIHN0YXR1c1NwaW5uZXIuc3RvcChcIlJ1bm5lciBzdGF0dXMgZmV0Y2hlZFwiKTtcblxuICAgIGlmIChqc29uKSB7XG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShydW5uZXJTdGF0dXNlcywgbnVsbCwgMikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwbGF5UnVubmVyU3RhdHVzKHJ1bm5lclN0YXR1c2VzKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgc3RhdHVzU3Bpbm5lci5zdG9wKFwiRmFpbGVkIHRvIGZldGNoIHJ1bm5lciBzdGF0dXNcIik7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QXJncygpIHtcbiAgY29uc3QgeyB2YWx1ZXMgfSA9IHBhcnNlQXJncyh7XG4gICAgYWxsb3dQb3NpdGlvbmFsczogdHJ1ZSxcbiAgICBhcmdzOiBCdW4uYXJndixcbiAgICBvcHRpb25zOiB7XG4gICAgICBjb25maWc6IHsgc2hvcnQ6IFwiY1wiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBkaXJlY3Rvcnk6IHsgZGVmYXVsdDogYCR7cHJvY2Vzcy5jd2QoKX0vZ2gtcnVubmVyc2AsIHNob3J0OiBcImRcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAganNvbjogeyBkZWZhdWx0OiBmYWxzZSwgc2hvcnQ6IFwialwiLCB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgcHJvZmlsZTogeyBzaG9ydDogXCJwXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIHRva2VuOiB7IHNob3J0OiBcInRcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgdXJsOiB7IHNob3J0OiBcInVcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgIH0sXG4gICAgc3RyaWN0OiB0cnVlLFxuICB9KTtcblxuICBjb25zdCBjb25maWcgPSBhd2FpdCBsb2FkQ29uZmlnKHsgY29uZmlnUGF0aDogdmFsdWVzLmNvbmZpZyBhcyBzdHJpbmcgfSk7XG4gIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCBnZXRQcm9maWxlKGNvbmZpZywgdmFsdWVzLnByb2ZpbGUgYXMgc3RyaW5nKTtcblxuICByZXR1cm4ge1xuICAgIGRpcmVjdG9yeTogKHZhbHVlcy5kaXJlY3RvcnkgYXMgc3RyaW5nKSB8fCBwcm9maWxlPy5kaXJlY3RvcnkgfHwgYCR7cHJvY2Vzcy5jd2QoKX0vZ2gtcnVubmVyc2AsXG4gICAganNvbjogdmFsdWVzLmpzb24gYXMgYm9vbGVhbixcbiAgICB0b2tlbjogdmFsdWVzLnRva2VuIGFzIHN0cmluZyxcbiAgICB1cmw6ICh2YWx1ZXMudXJsIGFzIHN0cmluZykgfHwgcHJvZmlsZT8udXJsLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRMb2NhbFJ1bm5lcnMoZGlyZWN0b3J5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IG1hY2hpbmVzRGlyID0gYCR7ZGlyZWN0b3J5fS9tYWNoaW5lc2A7XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ3JhY2VmdWxUcnkoXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgJGBscyAke21hY2hpbmVzRGlyfSAyPi9kZXYvbnVsbCB8fCB0cnVlYC5xdWlldCgpO1xuICAgICAgcmV0dXJuIG91dHB1dC5zdGRvdXQudG9TdHJpbmcoKS50cmltKCkuc3BsaXQoXCJcXG5cIikuZmlsdGVyKEJvb2xlYW4pO1xuICAgIH0sXG4gICAgeyBmYWxsYmFjazogKCkgPT4ge30sIGxvZ0xldmVsOiBcImRlYnVnXCIsIG1lc3NhZ2U6IFwiTm8gbG9jYWwgcnVubmVycyBmb3VuZFwiIH0sXG4gICk7XG5cbiAgcmV0dXJuIHJlc3VsdCB8fCBbXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hHaXRIdWJSdW5uZXJzKHVybDogc3RyaW5nLCB0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxHaXRIdWJSdW5uZXJSZXNwb25zZT4ge1xuICBjb25zdCBtYXRjaCA9IHVybC5tYXRjaCgvZ2l0aHViXFwuY29tWzovXShbXi9dKykoPzpcXC8oW14vLl0rKSk/Lyk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEdpdEh1YiBVUkxcIik7XG4gIH1cblxuICBjb25zdCBbLCBvcmdPck93bmVyLCByZXBvXSA9IG1hdGNoO1xuICBjb25zdCBhcGlVcmwgPSByZXBvXG4gICAgPyBgaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy8ke29yZ09yT3duZXJ9LyR7cmVwb30vYWN0aW9ucy9ydW5uZXJzYFxuICAgIDogYGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vb3Jncy8ke29yZ09yT3duZXJ9L2FjdGlvbnMvcnVubmVyc2A7XG5cbiAgcmV0dXJuIHdpdGhSZXRyeShcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vdm5kLmdpdGh1Yi52Mytqc29uXCIsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChhcGlVcmwsIHsgaGVhZGVycyB9KTtcblxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdpdEh1YiBBUEkgZXJyb3I6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9LFxuICAgIHtcbiAgICAgIG9uUmV0cnk6IChhdHRlbXB0LCBlcnJvcikgPT4ge1xuICAgICAgICBsb2cud2FybihgUmV0cnlpbmcgR2l0SHViIEFQSSBjYWxsIChhdHRlbXB0ICR7YXR0ZW1wdH0pOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICB9LFxuICAgIH0sXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNvbWJpbmVSdW5uZXJTdGF0dXMoXG4gIGxvY2FsUnVubmVyczogc3RyaW5nW10sXG4gIGdpdGh1YkRhdGE6IEdpdEh1YlJ1bm5lclJlc3BvbnNlLFxuKTogUnVubmVyU3RhdHVzW10ge1xuICBjb25zdCBzdGF0dXNlczogUnVubmVyU3RhdHVzW10gPSBbXTtcbiAgY29uc3QgZ2l0aHViUnVubmVyTWFwID0gbmV3IE1hcChnaXRodWJEYXRhLnJ1bm5lcnMubWFwKChydW5uZXIpID0+IFtydW5uZXIubmFtZSwgcnVubmVyXSkpO1xuXG4gIGZvciAoY29uc3QgcnVubmVyRGlyIG9mIGxvY2FsUnVubmVycykge1xuICAgIGNvbnN0IHJ1bm5lck5hbWUgPSBgcnVubmVyLSR7cnVubmVyRGlyfWA7XG4gICAgY29uc3QgZ2l0aHViUnVubmVyID0gZ2l0aHViUnVubmVyTWFwLmdldChydW5uZXJOYW1lKTtcblxuICAgIGlmIChnaXRodWJSdW5uZXIpIHtcbiAgICAgIHN0YXR1c2VzLnB1c2goe1xuICAgICAgICBidXN5OiBnaXRodWJSdW5uZXIuYnVzeSxcbiAgICAgICAgbGFiZWxzOiBnaXRodWJSdW5uZXIubGFiZWxzLm1hcCgobCkgPT4gbC5uYW1lKSxcbiAgICAgICAgbmFtZTogcnVubmVyTmFtZSxcbiAgICAgICAgb3M6IGdpdGh1YlJ1bm5lci5vcyxcbiAgICAgICAgc3RhdHVzOiBnaXRodWJSdW5uZXIuYnVzeVxuICAgICAgICAgID8gXCJidXN5XCJcbiAgICAgICAgICA6IGdpdGh1YlJ1bm5lci5zdGF0dXMgPT09IFwib25saW5lXCJcbiAgICAgICAgICAgID8gXCJvbmxpbmVcIlxuICAgICAgICAgICAgOiBcIm9mZmxpbmVcIixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0dXNlcy5wdXNoKHtcbiAgICAgICAgYnVzeTogZmFsc2UsXG4gICAgICAgIGxhYmVsczogW10sXG4gICAgICAgIG5hbWU6IHJ1bm5lck5hbWUsXG4gICAgICAgIG9zOiBcInVua25vd25cIixcbiAgICAgICAgc3RhdHVzOiBcIm9mZmxpbmVcIixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0dXNlcztcbn1cblxuZnVuY3Rpb24gZGlzcGxheVJ1bm5lclN0YXR1cyhzdGF0dXNlczogUnVubmVyU3RhdHVzW10pIHtcbiAgaWYgKHN0YXR1c2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZy5pbmZvKFwiTm8gcnVubmVycyBmb3VuZFwiKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zb2xlLmxvZyhgXFxuJHtjb2xvcnMuYm9sZChcIlJ1bm5lciBTdGF0dXM6XCIpfWApO1xuICBjb25zb2xlLmxvZyhcIuKUgFwiLnJlcGVhdCg4MCkpO1xuXG4gIGNvbnN0IHN0YXR1c0NvbG9ycyA9IHsgYnVzeTogY29sb3JzLnllbGxvdywgb2ZmbGluZTogY29sb3JzLnJlZCwgb25saW5lOiBjb2xvcnMuZ3JlZW4gfTtcblxuICBmb3IgKGNvbnN0IHJ1bm5lciBvZiBzdGF0dXNlcykge1xuICAgIGNvbnN0IHN0YXR1c0NvbG9yID0gc3RhdHVzQ29sb3JzW3J1bm5lci5zdGF0dXNdO1xuICAgIGNvbnN0IHN0YXR1c1RleHQgPSBydW5uZXIuc3RhdHVzLnRvVXBwZXJDYXNlKCkucGFkRW5kKDcpO1xuXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGF0dXNDb2xvcihcIuKXj1wiKX0gJHtzdGF0dXNDb2xvcihzdGF0dXNUZXh0KX0gJHtjb2xvcnMuY3lhbihydW5uZXIubmFtZS5wYWRFbmQoMjApKX0gYCArXG4gICAgICAgIGAke2NvbG9ycy5kaW0oYE9TOiAke3J1bm5lci5vcy5wYWRFbmQoMTApfWApfSBgICtcbiAgICAgICAgYCR7cnVubmVyLmxhYmVscy5sZW5ndGggPiAwID8gY29sb3JzLmRpbShgTGFiZWxzOiAke3J1bm5lci5sYWJlbHMuam9pbihcIiwgXCIpfWApIDogXCJcIn1gLFxuICAgICk7XG4gIH1cblxuICBjb25zb2xlLmxvZyhcIuKUgFwiLnJlcGVhdCg4MCkpO1xuXG4gIGNvbnN0IHN1bW1hcnkgPSB7XG4gICAgYnVzeTogc3RhdHVzZXMuZmlsdGVyKChyKSA9PiByLnN0YXR1cyA9PT0gXCJidXN5XCIpLmxlbmd0aCxcbiAgICBvZmZsaW5lOiBzdGF0dXNlcy5maWx0ZXIoKHIpID0+IHIuc3RhdHVzID09PSBcIm9mZmxpbmVcIikubGVuZ3RoLFxuICAgIG9ubGluZTogc3RhdHVzZXMuZmlsdGVyKChyKSA9PiByLnN0YXR1cyA9PT0gXCJvbmxpbmVcIikubGVuZ3RoLFxuICAgIHRvdGFsOiBzdGF0dXNlcy5sZW5ndGgsXG4gIH07XG5cbiAgY29uc29sZS5sb2coXG4gICAgYFxcbiR7Y29sb3JzLmJvbGQoXCJTdW1tYXJ5OlwiKX0gYCArXG4gICAgICBgVG90YWw6ICR7c3VtbWFyeS50b3RhbH0gfCBgICtcbiAgICAgIGAke2NvbG9ycy5ncmVlbihgT25saW5lOiAke3N1bW1hcnkub25saW5lfWApfSB8IGAgK1xuICAgICAgYCR7Y29sb3JzLnllbGxvdyhgQnVzeTogJHtzdW1tYXJ5LmJ1c3l9YCl9IHwgYCArXG4gICAgICBgJHtjb2xvcnMucmVkKGBPZmZsaW5lOiAke3N1bW1hcnkub2ZmbGluZX1gKX1cXG5gLFxuICApO1xufVxuIiwKICAgICJpbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGNsYWNrL3Byb21wdHNcIjtcbmltcG9ydCB7IGNoZWNrQ29tbW9uTWlzdGFrZXMsIGdldFN1Z2dlc3Rpb25zIH0gZnJvbSBcIkByNW4vY2xpLWNvcmVcIjtcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gXCJAcjVuL3Rvb2xzL3V0aWxzL2NvbG9yc1wiO1xuaW1wb3J0IHsgY3JlYXRlTWFjaGluZXMgfSBmcm9tIFwiLi9tZXRob2RzL2NyZWF0ZU1hY2hpbmVzXCI7XG5pbXBvcnQgeyBoZWxwIH0gZnJvbSBcIi4vbWV0aG9kcy9oZWxwXCI7XG5pbXBvcnQgeyBpbml0IH0gZnJvbSBcIi4vbWV0aG9kcy9pbml0XCI7XG5pbXBvcnQgeyByZW1vdmVNYWNoaW5lcyB9IGZyb20gXCIuL21ldGhvZHMvcmVtb3ZlTWFjaGluZXNcIjtcbmltcG9ydCB7IHJ1bk1hY2hpbmVzIH0gZnJvbSBcIi4vbWV0aG9kcy9ydW5NYWNoaW5lc1wiO1xuaW1wb3J0IHsgc3RhdHVzIH0gZnJvbSBcIi4vbWV0aG9kcy9zdGF0dXNcIjtcblxuY29uc3QgQ09NTUFORFMgPSBbXCJpbml0XCIsIFwiY3JlYXRlXCIsIFwicnVuXCIsIFwicmVtb3ZlXCIsIFwic3RhdHVzXCIsIFwiaGVscFwiXTtcblxuY29uc3QgQ09NTU9OX01JU1RBS0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBjOiBcImNyZWF0ZVwiLFxuICBjZWF0ZTogXCJjcmVhdGVcIixcbiAgY3JhZXRlOiBcImNyZWF0ZVwiLFxuICBjcmV0YWU6IFwiY3JlYXRlXCIsXG4gIGRlbDogXCJyZW1vdmVcIixcbiAgZGVsZXRlOiBcInJlbW92ZVwiLFxuICBoOiBcImhlbHBcIixcbiAgaTogXCJpbml0XCIsXG4gIGluZm86IFwic3RhdHVzXCIsXG4gIGluaXRpYWxpc2U6IFwiaW5pdFwiLFxuICBpbnRpOiBcImluaXRcIixcbiAgaW50aWFsaXplOiBcImluaXRcIixcbiAgbGlzdDogXCJzdGF0dXNcIixcbiAgbHM6IFwic3RhdHVzXCIsXG4gIG5ldzogXCJjcmVhdGVcIixcbiAgcjogXCJydW5cIixcbiAgcmVtdm9lOiBcInJlbW92ZVwiLFxuICBybTogXCJyZW1vdmVcIixcbiAgcm1vdmU6IFwicmVtb3ZlXCIsXG4gIHJudTogXCJydW5cIixcbiAgcnVubjogXCJydW5cIixcbiAgczogXCJzdGF0dXNcIixcbiAgc3RhcnQ6IFwicnVuXCIsXG4gIHN0YXQ6IFwic3RhdHVzXCIsXG4gIHN0b3A6IFwicmVtb3ZlXCIsXG4gIHN0dGF1czogXCJzdGF0dXNcIixcbiAgdDogXCJ0cm91Ymxlc2hvb3RcIixcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgWywgLCBjb21tYW5kTmFtZSwgLi4uYXJnc10gPSBwcm9jZXNzLmFyZ3Y7XG5cbiAgICBpZiAoIWNvbW1hbmROYW1lIHx8IGNvbW1hbmROYW1lID09PSBcIi0taGVscFwiIHx8IGNvbW1hbmROYW1lID09PSBcIi1oXCIpIHtcbiAgICAgIGhlbHAoKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG5cbiAgICBsZXQgYWN0dWFsQ29tbWFuZCA9IGNvbW1hbmROYW1lO1xuXG4gICAgaWYgKCFDT01NQU5EUy5pbmNsdWRlcyhjb21tYW5kTmFtZSkpIHtcbiAgICAgIGNvbnN0IGNvcnJlY3RlZCA9IGNoZWNrQ29tbW9uTWlzdGFrZXMoY29tbWFuZE5hbWUsIENPTU1PTl9NSVNUQUtFUyk7XG4gICAgICBpZiAoY29ycmVjdGVkICYmIENPTU1BTkRTLmluY2x1ZGVzKGNvcnJlY3RlZCkpIHtcbiAgICAgICAgYWN0dWFsQ29tbWFuZCA9IGNvcnJlY3RlZDtcbiAgICAgICAgY29uc29sZS5sb2coY29sb3JzLnllbGxvdyhgQXNzdW1pbmcgeW91IG1lYW50ICcke2NvcnJlY3RlZH0nXFxuYCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghQ09NTUFORFMuaW5jbHVkZXMoYWN0dWFsQ29tbWFuZCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoY29sb3JzLnJlZChgVW5rbm93biBjb21tYW5kOiAke2NvbW1hbmROYW1lfWApKTtcblxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBnZXRTdWdnZXN0aW9ucyhjb21tYW5kTmFtZSwgQ09NTUFORFMpO1xuICAgICAgaWYgKHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlxcbkRpZCB5b3UgbWVhbiBvbmUgb2YgdGhlc2U/XCIpO1xuICAgICAgICBmb3IgKGNvbnN0IHN1Z2dlc3Rpb24gb2Ygc3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGAgICR7Y29sb3JzLmN5YW4oc3VnZ2VzdGlvbil9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5lcnJvcigpO1xuICAgICAgfVxuXG4gICAgICBoZWxwKCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MuaW5jbHVkZXMoXCItLWhlbHBcIikgfHwgYXJncy5pbmNsdWRlcyhcIi1oXCIpKSB7XG4gICAgICBoZWxwKGFjdHVhbENvbW1hbmQpO1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cblxuICAgIHN3aXRjaCAoYWN0dWFsQ29tbWFuZCkge1xuICAgICAgY2FzZSBcImluaXRcIjpcbiAgICAgICAgYXdhaXQgaW5pdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjcmVhdGVcIjpcbiAgICAgICAgYXdhaXQgY3JlYXRlTWFjaGluZXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwicnVuXCI6XG4gICAgICAgIGF3YWl0IHJ1bk1hY2hpbmVzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInJlbW92ZVwiOlxuICAgICAgICBhd2FpdCByZW1vdmVNYWNoaW5lcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJzdGF0dXNcIjpcbiAgICAgICAgYXdhaXQgc3RhdHVzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImhlbHBcIjoge1xuICAgICAgICBjb25zdCB0YXJnZXRDb21tYW5kID0gYXJnc1swXTtcbiAgICAgICAgaGVscCh0YXJnZXRDb21tYW5kKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY29tbWFuZDogJHthY3R1YWxDb21tYW5kfWApO1xuICAgIH1cblxuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvck9iaiA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcbiAgICBsb2cuZXJyb3IoZXJyb3JPYmoubWVzc2FnZSk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG59XG5cbmF3YWl0IG1haW4oKTtcbiIKICBdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUVBLElBQU0sTUFBTTtBQUFBLEVBQ1osSUFBTSxNQUFNLEdBQUc7QUFBQSxFQUNmLElBQU0sT0FBTztBQUFBLEVBRWIsSUFBTSxTQUFTO0FBQUEsSUFDYixFQUFFLENBQUMsR0FBRyxHQUFHO0FBQUEsTUFDUCxLQUFLO0FBQUEsUUFBRyxPQUFPLEdBQUcsTUFBTSxJQUFJO0FBQUEsTUFDNUIsT0FBTyxHQUFHLE1BQU0sSUFBSSxLQUFLLElBQUk7QUFBQTtBQUFBLElBRS9CLElBQUksQ0FBQyxHQUFHLEdBQUc7QUFBQSxNQUNULElBQUksTUFBTTtBQUFBLE1BRVYsSUFBSSxJQUFJO0FBQUEsUUFBRyxPQUFPLEdBQUcsT0FBTztBQUFBLE1BQ3ZCLFNBQUksSUFBSTtBQUFBLFFBQUcsT0FBTyxHQUFHLE1BQU07QUFBQSxNQUVoQyxJQUFJLElBQUk7QUFBQSxRQUFHLE9BQU8sR0FBRyxPQUFPO0FBQUEsTUFDdkIsU0FBSSxJQUFJO0FBQUEsUUFBRyxPQUFPLEdBQUcsTUFBTTtBQUFBLE1BRWhDLE9BQU87QUFBQTtBQUFBLElBRVQsSUFBSSxDQUFDLFFBQVEsTUFBTSxHQUFHLE1BQU07QUFBQSxJQUM1QixNQUFNLENBQUMsUUFBUSxNQUFNLEdB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RSxFQUFFLFVBQVEsR0FBRSxFQUFFLGlCQUFlLFFBQVEsQ0FBQyxHQUFFO0FBQUEsSUFBQyxJQUFJLElBQUUsRUFBRSxXQUFXLENBQUMsR0FBRSxJQUFFLEVBQUUsVUFBUSxJQUFFLEVBQUUsV0FBVyxDQUFDLElBQUUsR0FBRSxJQUFFO0FBQUEsSUFBRSxPQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsVUFBUSxLQUFHLE1BQUssS0FBRyxNQUFLLElBQUUsS0FBRyxLQUFHLEdBQUUsS0FBRyxRQUFPLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFFBQU0sTUFBSSxLQUFHLFFBQU0sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFFBQU0sTUFBSSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFNBQU8sTUFBSSxNQUFJLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsUUFBTSxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFNBQU8sS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxLQUFHLFNBQU8sVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFdBQVMsV0FBUyxLQUFHLEtBQUcsVUFBUSxNQUFJO0FBQUEsS0FBSyxFQUFFLGtCQUFnQixRQUFRLENBQUMsR0FBRTtBQUFBLElBQUMsSUFBSSxJQUFFLEtBQUssZUFBZSxDQUFDO0FBQUEsSUFBRSxPQUFPLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxNQUFJLElBQUU7QUFBQTtBQUFBLEVBQUcsU0FBUyxDQUFDLENBQUMsR0FBRTtBQUFBLElBQUMsT0FBTyxFQUFFLE1BQU0sa0RBQWtELEtBQUcsQ0FBQztBQUFBO0FBQUEsRUFBRSxFQUFFLFNBQU8sUUFBUSxDQUFDLEdBQUU7QUFBQSxJQUFDLFNBQVEsSUFBRSxFQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsSUFBRSxFQUFFLElBQUUsRUFBRSxRQUFPO0FBQUEsTUFBSSxJQUFFLElBQUUsS0FBSyxnQkFBZ0IsRUFBRSxFQUFFO0FBQUEsSUFBRSxPQUFPO0FBQUEsS0FBRyxFQUFFLFFBQU0sUUFBUSxDQUFDLEdBQUUsR0FBRSxHQUFFO0FBQUEsSUFBQyxVQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUUsSUFBRSxLQUFHLEdBQUUsSUFBRSxLQUFHLEdBQUUsSUFBRSxNQUFJLElBQUUsVUFBUSxJQUFHLElBQUUsTUFBSSxJQUFFLFVBQVE7QUFBQSxJQUFHLFNBQVEsSUFBRSxJQUFHLElBQUUsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUEsTUFBQyxJQUFJLElBQUUsRUFBRSxJQUFHLElBQUUsRUFBRSxPQUFPLENBQUM7QUFBQSxNQUFFLElBQUcsS0FBRyxLQUFHLEtBQUcsSUFBRSxJQUFFO0FBQUEsUUFBRyxJQUFHLElBQUUsS0FBRztBQUFBLFVBQUUsS0FBRztBQUFBLFFBQU87QUFBQTtBQUFBLE1BQU0sS0FBRztBQUFBLElBQUM7QUFBQSxJQUFDLE9BQU87QUFBQTtBQUFBLEdBQUssQ0FBQztBQUFFLElBQUksS0FBRyxFQUFFO0FBQVEsSUFBTSxLQUFHLEVBQUUsRUFBRTtBQUFFLElBQUksS0FBRyxRQUFRLEdBQUU7QUFBQSxFQUFDLE9BQU07QUFBQTtBQUFreWUsSUFBTSxLQUFHLEVBQUUsRUFBRTtBQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUUsSUFBRSxDQUFDLEdBQUU7QUFBQSxFQUFDLElBQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxXQUFTLE1BQUksSUFBRSxFQUFDLG1CQUFrQixTQUFNLEVBQUMsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsV0FBUztBQUFBLElBQUcsT0FBTztBQUFBLEVBQUUsSUFBRSxFQUFFLFFBQVEsR0FBRyxHQUFFLElBQUk7QUFBQSxFQUFFLE1BQU0sSUFBRSxFQUFFLG9CQUFrQixJQUFFO0FBQUEsRUFBRSxJQUFJLElBQUU7QUFBQSxFQUFFLFdBQVUsS0FBSyxHQUFFO0FBQUEsSUFBQyxNQUFNLElBQUUsRUFBRSxZQUFZLENBQUM7QUFBQSxJQUFFLElBQUcsS0FBRyxNQUFJLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUc7QUFBQSxNQUFJO0FBQUEsSUFBUyxRQUFPLEdBQUcsZUFBZSxDQUFDO0FBQUEsV0FBTztBQUFBLFdBQVE7QUFBQSxRQUFJLEtBQUc7QUFBQSxRQUFFO0FBQUEsV0FBVTtBQUFBLFFBQUksS0FBRztBQUFBLFFBQUU7QUFBQTtBQUFBLFFBQWMsS0FBRztBQUFBO0FBQUEs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S0FBSSxJQUFFLEdBQUc7QUFBQSxLQUFHLFlBQVcsTUFBRSxHQUFFLGNBQWEsRUFBQyxPQUFNLE9BQUcsRUFBRSxhQUFhLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFFLFlBQVcsTUFBRSxHQUFFLGVBQWMsRUFBQyxPQUFNLE9BQUc7QUFBQSxJQUFDLElBQUcsSUFBRTtBQUFBLE1BQUUsT0FBTyxLQUFHO0FBQUEsSUFBRSxJQUFHLElBQUU7QUFBQSxNQUFHLE9BQU8sTUFBSSxJQUFFO0FBQUEsSUFBRyxJQUFJLEdBQUUsR0FBRTtBQUFBLElBQUUsSUFBRyxLQUFHO0FBQUEsTUFBSSxNQUFJLElBQUUsT0FBSyxLQUFHLEtBQUcsS0FBSSxJQUFFLEdBQUUsSUFBRTtBQUFBLElBQU07QUFBQSxNQUFDLEtBQUc7QUFBQSxNQUFHLE1BQU0sSUFBRSxJQUFFO0FBQUEsTUFBRyxJQUFFLEtBQUssTUFBTSxJQUFFLEVBQUUsSUFBRSxHQUFFLElBQUUsS0FBSyxNQUFNLElBQUUsQ0FBQyxJQUFFLEdBQUUsSUFBRSxJQUFFLElBQUU7QUFBQTtBQUFBLElBQUUsTUFBTSxJQUFFLEtBQUssSUFBSSxHQUFFLEdBQUUsQ0FBQyxJQUFFO0FBQUEsSUFBRSxJQUFHLE1BQUk7QUFBQSxNQUFFLE9BQU87QUFBQSxJQUFHLElBQUksSUFBRSxNQUFJLEtBQUssTUFBTSxDQUFDLEtBQUcsSUFBRSxLQUFLLE1BQU0sQ0FBQyxLQUFHLElBQUUsS0FBSyxNQUFNLENBQUM7QUFBQSxJQUFHLE9BQU8sTUFBSSxNQUFJLEtBQUcsS0FBSTtBQUFBLEtBQUcsWUFBVyxNQUFFLEdBQUUsV0FBVSxFQUFDLE9BQU0sQ0FBQyxHQUFFLEdBQUUsTUFBSSxFQUFFLGNBQWMsRUFBRSxhQUFhLEdBQUUsR0FBRSxDQUFDLENBQUMsR0FBRSxZQUFXLE1BQUUsR0FBRSxXQUFVLEVBQUMsT0FBTSxPQUFHLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQUUsWUFBVyxNQUFFLEVBQUMsQ0FBQyxHQUFFO0FBQUE7QUFBRSxJQUFNLEtBQUcs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QUUsS0FBRyxHQUFFO0FBQUEsTUFBQyxNQUFNLElBQUUsSUFBRSxHQUFFLElBQUUsSUFBRSxLQUFLLE9BQU8sRUFBRSxLQUFHLElBQUUsS0FBRyxDQUFDO0FBQUEsTUFBRSxLQUFLLE9BQU8sRUFBRSxLQUFHLEtBQUcsQ0FBQyxJQUFFLEtBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRSxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsTUFBRTtBQUFBLElBQVE7QUFBQSxJQUFDLElBQUcsSUFBRSxFQUFFLEtBQUcsS0FBRyxJQUFFLEtBQUcsRUFBRSxLQUFHLEdBQUU7QUFBQSxNQUFDLElBQUcsRUFBRSxhQUFXLFNBQUksSUFBRSxHQUFFO0FBQUEsUUFBQyxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsUUFBRTtBQUFBLE1BQVE7QUFBQSxNQUFDLEVBQUUsS0FBSyxFQUFFO0FBQUEsSUFBQztBQUFBLElBQUMsSUFBRyxJQUFFLEVBQUUsS0FBRyxLQUFHLEVBQUUsYUFBVyxPQUFHO0FBQUEsTUFBQyxFQUFFLEdBQUUsR0FBRSxDQUFDO0FBQUEsTUFBRTtBQUFBLElBQVE7QUFBQSxJQUFDLEVBQUUsRUFBRSxTQUFPLE1BQUk7QUFBQSxFQUFDO0FBQUEsRUFBQyxFQUFFLFNBQU8sVUFBSyxJQUFFLEVBQUUsSUFBSSxPQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUEsRUFBRyxNQUFNLElBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSztBQUFBLENBQzV0d0IsQ0FBQztBQUFBLEVBQUUsWUFBVSxHQUFFLE1BQUssRUFBRSxRQUFRLEdBQUU7QUFBQSxJQUFDLElBQUcsS0FBRyxHQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUU7QUFBQSxNQUFDLFFBQU0sUUFBTyxNQUFHLElBQUksT0FBTyxRQUFRLHFCQUFxQixjQUFjLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsS0FBRyxFQUFDLFFBQU8sQ0FBQyxFQUFDO0FBQUEsTUFBRSxJQUFHLEVBQUUsU0FBWSxXQUFFO0FBQUEsUUFBQyxNQUFNLElBQUUsT0FBTyxXQUFXLEVBQUUsSUFBSTtBQUFBLFFBQUUsSUFBRSxNQUFJLEtBQVEsWUFBRTtBQUFBLE1BQUMsRUFBTTtBQUFBLFVBQUUsUUFBVyxjQUFJLElBQUUsRUFBRSxJQUFJLFdBQVMsSUFBTyxZQUFFLEVBQUU7QUFBQSxJQUFJO0FBQUEsSUFBQyxNQUFNLElBQUUsR0FBRyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUM7QUFBQSxJQUFFLEVBQUUsSUFBRSxPQUFLO0FBQUEsS0FDNVUsTUFBSSxLQUFHLEVBQUUsRUFBRSxJQUFHLEtBQUcsTUFBSSxLQUFHLEVBQUUsQ0FBQyxNQUFJLE1BQUk7QUFBQSxNQUNsQyxLQUFHLE1BQUksS0FBRyxFQUFFLENBQUMsSUFBRyxNQUFJLEtBQUcsRUFBRSxDQUFDO0FBQUEsRUFBRztBQUFBLEVBQUMsT0FBTztBQUFBO0FBQUcsU0FBUyxDQUFDLENBQUMsR0FBRSxHQUFFLEdBQUU7QUFBQSxFQUFDLE9BQU8sT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsU0FBUTtBQUFBLENBQzFHLEVBQUUsTUFBTTtBQUFBLENBQ1IsRUFBRSxJQUFJLE9BQUcsR0FBRyxHQUFFLEdBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSztBQUFBLENBQ3pCO0FBQUE7QUFBRSxJQUFNLEtBQUcsQ0FBQyxNQUFLLFFBQU8sUUFBTyxTQUFRLFNBQVEsU0FBUSxRQUFRO0FBQTdELElBQStELElBQUUsRUFBQyxTQUFRLElBQUksSUFBSSxFQUFFLEdBQUUsU0FBUSxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUksSUFBSSxHQUFFLENBQUMsS0FBSSxNQUFNLEdBQUUsQ0FBQyxLQUFJLE1BQU0sR0FBRSxDQUFDLEtBQUksT0FBTyxHQUFFLENBQUMsUUFBSSxRQUFRLEdBQUUsQ0FBQyxVQUFTLFFBQVEsQ0FBQyxDQUFDLEVBQUM7QUFBMk0sU0FBUyxDQUFDLENBQUMsR0FBRSxHQUFFO0FBQUEsRUFBQyxJQUFHLE9BQU8sS0FBRztBQUFBLElBQVMsT0FBTyxFQUFFLFFBQVEsSUFBSSxDQUFDLE1BQUk7QUFBQSxFQUFFLFdBQVUsS0FBSztBQUFBLElBQUUsSUFBRyxNQUFTLGFBQUcsRUFBRSxHQUFFLENBQUM7QUFBQSxNQUFFLE9BQU07QUFBQSxFQUFHLE9BQU07QUFBQTtBQUFHLFNBQVMsRUFBRSxDQUFDLEdBQUUsR0FBRTtBQUFBLEVBQUMsSUFBRyxNQUFJO0FBQUEsSUFBRTtBQUFBLEVBQU8sTUFBTSxJQUFFLEVBQUUsTUFBTTtBQUFBLENBQ3ZqQixHQUFFLElBQUUsRUFBRSxNQUFNO0FBQUEsQ0FDWixHQUFFLElBQUUsQ0FBQztBQUFBLEVBQUUsU0FBUSxJQUFFLEVBQUUsSUFBRSxLQUFLLElBQUksRUFBRSxRQUFPLEVBQUUsTUFBTSxHQUFFO0FBQUEsSUFBSSxFQUFFLE9BQUssRUFBRSxNQUFJLEVBQUUsS0FBSyxDQUFDO0FBQUEsRUFBRSxPQUFPO0FBQUE7QUFBRSxJQUFNLEtBQUcsV0FBVyxRQUFRLFNBQVMsV0FBVyxLQUFLO0FBQXJELElBQXVELElBQUUsT0FBTyxjQUFjO0FBQUUsU0FBUyxFQUFFLENBQUMsR0FBRTtBQUFBLEVBQUMsT0FBTyxNQUFJO0FBQUE7QUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFFLEdBQUU7QUFBQSxFQUFDLE1BQU0sSUFBRTtBQUFBLEVBQUUsRUFBRSxTQUFPLEVBQUUsV0FBVyxDQUFDO0FBQUE7QUFBRSxTQUFTLEVBQUUsR0FBRSxPQUFNLElBQUUsR0FBRSxRQUFPLElBQUUsR0FBRSxXQUFVLElBQUUsTUFBRyxZQUFXLElBQUUsU0FBSSxDQUFDLEdBQUU7QUFBQSxFQUFDLE1BQU0sSUFBSSxrQkFBZ0IsRUFBQyxPQUFNLEdBQUUsUUFBTyxHQUFFLFFBQU8sSUFBRyxTQUFRLEVBQUMsQ0FBQztBQUFBLEVBQUkscUJBQW1CLEdBQUUsQ0FBQyxHQUFFLEVBQUUsU0FBTyxFQUFFLFdBQVcsSUFBRTtBQUFBLEVBQUUsTUFBTSxJQUFFLENBQUMsS0FBRyxNQUFLLEdBQUUsVUFBUyxRQUFLO0FBQUEsSUFBQyxNQUFNLElBQUUsT0FBTyxDQUFDO0FBQUEsSUFBRSxJQUFHLEVBQUUsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRTtBQUFBLE1BQUMsS0FBRyxFQUFFLE1BQU0seUJBQUUsSUFBSSxHQUFFLFFBQVEsS0FBSyxDQUFDO0FBQUEsTUFBRTtBQUFBLElBQU07QUFBQSxJQUFDLEtBQUk7QUFBQSxNQUFFO0FBQUEsSUFBTyxNQUFNLElBQUUsTUFBSSxXQUFTLElBQUUsSUFBRyxJQUFFLE1BQUksV0FBUyxLQUFHO0FBQUEsSUFBSSxhQUFXLEdBQUUsR0FBRSxHQUFFLE1BQUk7QUFBQSxNQUFHLFlBQVUsR0FBRSxHQUFFLE1BQUk7QUFBQSxRQUFDLEVBQUUsS0FBSyxZQUFXLENBQUM7QUFBQSxPQUFFO0FBQUEsS0FBRTtBQUFBO0FBQUEsRUFBRyxPQUFPLEtBQUcsRUFBRSxNQUFNLHlCQUFFLElBQUksR0FBRSxFQUFFLEtBQUssWUFBVyxDQUFDLEdBQUUsTUFBSTtBQUFBLElBQUMsRUFBRSxJQUFJLFlBQVcsQ0FBQyxHQUFFLEtBQUcsRUFBRSxNQUFNLHlCQUFFLElBQUksR0FBRSxFQUFFLFVBQVEsTUFBSSxFQUFFLFdBQVcsS0FBRSxHQUFFLEVBQUUsV0FBUyxPQUFHLEVBQUUsTUFBTTtBQUFBO0FBQUE7QUFBRyxJQUFJLEtBQUcsT0FBTztBQUFkLElBQTZCLEtBQUcsQ0FBQyxHQUFFLEdBQUUsT0FBSSxLQUFLLEtBQUUsR0FBRyxHQUFFLEdBQUUsRUFBQyxZQUFXLE1BQUcsY0FBYSxNQUFHLFVBQVMsTUFBRyxPQUFNLEVBQUMsQ0FBQyxJQUFFLEVBQUUsS0FBRztBQUFqSCxJQUFtSCxJQUFFLENBQUMsR0FBRSxHQUFFLE9BQUssR0FBRyxHQUFFLE9BQU8sS0FBRyxXQUFTLElBQUUsS0FBRyxHQUFFLENBQUMsR0FBRTtBQUFBO0FBQUcsTUFBTSxFQUFDO0FBQUEsRUFBQyxXQUFXLENBQUMsR0FBRSxJQUFFLE1BQUc7QUFBQSxJQUFDLEVBQUUsTUFBSyxPQUFPLEdBQUUsRUFBRSxNQUFLLFFBQVEsR0FBRSxFQUFFLE1BQUssY0FBYyxHQUFFLEVBQUUsTUFBSyxJQUFJLEdBQUUsRUFBRSxNQUFLLE1BQU0sR0FBRSxFQUFFLE1BQUssU0FBUyxHQUFFLEVBQUUsTUFBSyxVQUFTLEtBQUUsR0FBRSxFQUFFLE1BQUssY0FBYSxFQUFFLEdBQUUsRUFBRSxNQUFLLGdCQUFlLElBQUksR0FBRyxHQUFFLEVBQUUsTUFBSyxXQUFVLENBQUMsR0FBRSxFQUFFLE1BQUssU0FBUSxTQUFTLEdBQUUsRUFBRSxNQUFLLFNBQVEsRUFBRSxHQUFFLEVBQUUsTUFBSyxPQUFPO0FBQUEsSUFBRSxRQUFNLE9BQU0sSUFBRSxHQUFFLFFBQU8sSUFBRSxHQUFFLFFBQU8sR0FBRSxRQUFPLE1BQUssTUFBRztBQUFBLElBQUUsS0FBSyxPQUFLLEdBQUUsS0FBSyxhQUFXLEtBQUssV0FBVyxLQUFLLElBQUksR0FBRSxLQUFLLFFBQU0sS0FBSyxNQUFNLEtBQUssSUFBSSxHQUFFLEtBQUssU0FBTyxLQUFLLE9BQU8sS0FBSyxJQUFJLEdBQUUsS0FBSyxVQUFRLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxTQUFPLEdBQUUsS0FBSyxlQUFhLEdBQUUsS0FBSyxRQUFNLEdBQUUsS0FBSyxTQUFPO0FBQUE7QUFBQSxFQUFFLFdBQVcsR0FBRTtBQUFBLElBQUMsS0FBSyxhQUFhLE1BQU07QUFBQTtBQUFBLEVBQUUsYUFBYSxDQUFDLEdBQUUsR0FBRTtBQUFBLElBQUMsTUFBTSxJQUFFLEtBQUssYUFBYSxJQUFJLENBQUMsS0FBRyxDQUFDO0FBQUEsSUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFFLEtBQUssYUFBYSxJQUFJLEdBQUUsQ0FBQztBQUFBO0FBQUEsRUFBRSxFQUFFLENBQUMsR0FBRSxHQUFFO0FBQUEsSUFBQyxLQUFLLGNBQWMsR0FBRSxFQUFDLElBQUcsRUFBQyxDQUFDO0FBQUE7QUFBQSxFQUFFLElBQUksQ0FBQyxHQUFFLEdBQUU7QUFBQSxJQUFDLEtBQUssY0FBYyxHQUFFLEVBQUMsSUFBRyxHQUFFLE1BQUssS0FBRSxDQUFDO0FBQUE7QUFBQSxFQUFFLElBQUksQ0FBQyxNQUFLLEdBQUU7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QUksS0FBRyxLQUFLLEtBQUssT0FBTSxFQUFFLFlBQVksQ0FBQyxHQUFFLEdBQUcsU0FBTyxVQUFTO0FBQUEsTUFBQyxJQUFHLEtBQUssS0FBSyxVQUFTO0FBQUEsUUFBQyxNQUFNLElBQUUsS0FBSyxLQUFLLFNBQVMsS0FBSyxLQUFLO0FBQUEsUUFBRSxNQUFJLEtBQUssUUFBTSxhQUFhLFFBQU0sRUFBRSxVQUFRLEdBQUUsS0FBSyxRQUFNLFNBQVEsS0FBSyxJQUFJLE1BQU0sS0FBSyxLQUFLO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSyxVQUFRLFlBQVUsS0FBSyxRQUFNO0FBQUEsSUFBUztBQUFBLElBQUMsRUFBRSxDQUFDLEdBQUUsR0FBRyxNQUFLLEdBQUcsUUFBUSxHQUFFLFFBQVEsTUFBSSxLQUFLLFFBQU0sWUFBVyxLQUFLLFVBQVEsWUFBVSxLQUFLLFVBQVEsYUFBVyxLQUFLLEtBQUssVUFBVSxHQUFFLEtBQUssT0FBTyxJQUFHLEtBQUssVUFBUSxZQUFVLEtBQUssVUFBUSxhQUFXLEtBQUssTUFBTTtBQUFBO0FBQUEsRUFBRSxLQUFLLEdBQUU7QUFBQSxJQUFDLEtBQUssTUFBTSxPQUFPLEdBQUUsS0FBSyxNQUFNLGVBQWUsWUFBVyxLQUFLLFVBQVUsR0FBRSxLQUFLLE9BQU8sTUFBTTtBQUFBLENBQzl5SCxHQUFFLEVBQUUsS0FBSyxPQUFNLEtBQUUsR0FBRSxLQUFLLElBQUksTUFBTSxHQUFFLEtBQUssS0FBUSxXQUFFLEtBQUssS0FBSyxHQUFHLEtBQUssU0FBUSxLQUFLLEtBQUssR0FBRSxLQUFLLFlBQVk7QUFBQTtBQUFBLEVBQUUsYUFBYSxHQUFFO0FBQUEsSUFBQyxNQUFNLElBQUUsRUFBRSxLQUFLLFlBQVcsUUFBUSxPQUFPLFNBQVEsRUFBQyxNQUFLLEtBQUUsQ0FBQyxFQUFFLE1BQU07QUFBQSxDQUM5TCxFQUFFLFNBQU87QUFBQSxJQUFFLEtBQUssT0FBTyxNQUFNLHlCQUFFLEtBQUssTUFBSyxJQUFFLEVBQUUsQ0FBQztBQUFBO0FBQUEsRUFBRSxNQUFNLEdBQUU7QUFBQSxJQUFDLE1BQU0sSUFBRSxFQUFFLEtBQUssUUFBUSxJQUFJLEtBQUcsSUFBRyxRQUFRLE9BQU8sU0FBUSxFQUFDLE1BQUssS0FBRSxDQUFDO0FBQUEsSUFBRSxJQUFHLE1BQUksS0FBSyxZQUFXO0FBQUEsTUFBQyxJQUFHLEtBQUssVUFBUTtBQUFBLFFBQVUsS0FBSyxPQUFPLE1BQU0seUJBQUUsSUFBSTtBQUFBLE1BQU07QUFBQSxRQUFDLE1BQU0sSUFBRSxHQUFHLEtBQUssWUFBVyxDQUFDO0FBQUEsUUFBRSxJQUFHLEtBQUssY0FBYyxHQUFFLEtBQUcsR0FBRyxXQUFTLEdBQUU7QUFBQSxVQUFDLE1BQU0sSUFBRSxFQUFFO0FBQUEsVUFBRyxLQUFLLE9BQU8sTUFBTSx5QkFBRSxLQUFLLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBSyxPQUFPLE1BQU0sd0JBQUUsTUFBTSxDQUFDLENBQUM7QUFBQSxVQUFFLE1BQU0sSUFBRSxFQUFFLE1BQU07QUFBQSxDQUMvVztBQUFBLFVBQUUsS0FBSyxPQUFPLE1BQU0sRUFBRSxFQUFFLEdBQUUsS0FBSyxhQUFXLEdBQUUsS0FBSyxPQUFPLE1BQU0seUJBQUUsS0FBSyxHQUFFLEVBQUUsU0FBTyxJQUFFLENBQUMsQ0FBQztBQUFBLFVBQUU7QUFBQSxRQUFNO0FBQUEsUUFBQyxJQUFHLEtBQUcsR0FBRyxTQUFPLEdBQUU7QUFBQSxVQUFDLE1BQU0sSUFBRSxFQUFFO0FBQUEsVUFBRyxLQUFLLE9BQU8sTUFBTSx5QkFBRSxLQUFLLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBSyxPQUFPLE1BQU0sd0JBQUUsS0FBSyxDQUFDO0FBQUEsVUFBRSxNQUFNLElBQUUsRUFBRSxNQUFNO0FBQUEsQ0FDeE0sRUFBRSxNQUFNLENBQUM7QUFBQSxVQUFFLEtBQUssT0FBTyxNQUFNLEVBQUUsS0FBSztBQUFBLENBQ3BDLENBQUMsR0FBRSxLQUFLLGFBQVc7QUFBQSxVQUFFO0FBQUEsUUFBTTtBQUFBLFFBQUMsS0FBSyxPQUFPLE1BQU0sd0JBQUUsS0FBSyxDQUFDO0FBQUE7QUFBQSxNQUFFLEtBQUssT0FBTyxNQUFNLENBQUMsR0FBRSxLQUFLLFVBQVEsY0FBWSxLQUFLLFFBQU0sV0FBVSxLQUFLLGFBQVc7QUFBQSxJQUFDO0FBQUE7QUFBRTtBQUFBO0FBQUMsTUFBTSxXQUFXLEVBQUM7QUFBQSxNQUFLLE1BQU0sR0FBRTtBQUFBLElBQUMsT0FBTyxLQUFLLFFBQU0sSUFBRTtBQUFBO0FBQUEsTUFBTSxNQUFNLEdBQUU7QUFBQSxJQUFDLE9BQU8sS0FBSyxXQUFTO0FBQUE7QUFBQSxFQUFFLFdBQVcsQ0FBQyxHQUFFO0FBQUEsSUFBQyxNQUFNLEdBQUUsS0FBRSxHQUFFLEtBQUssVUFBUSxFQUFFLGNBQWEsS0FBSyxHQUFHLFNBQVEsTUFBSTtBQUFBLE1BQUMsS0FBSyxRQUFNLEtBQUs7QUFBQSxLQUFPLEdBQUUsS0FBSyxHQUFHLFdBQVUsT0FBRztBQUFBLE1BQUMsS0FBSyxPQUFPLE1BQU0seUJBQUUsS0FBSyxHQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUssUUFBTSxHQUFFLEtBQUssUUFBTSxVQUFTLEtBQUssTUFBTTtBQUFBLEtBQUUsR0FBRSxLQUFLLEdBQUcsVUFBUyxNQUFJO0FBQUEsTUFBQyxLQUFLLFNBQU8sS0FBSztBQUFBLEtBQU07QUFBQTtBQUFFO0FBQUMsSUFBaWY7QUFBNDZDLElBQUUsSUFBSTtBQUFtNUYsTUFBTSxXQUFXLEVBQUM7QUFBQSxNQUFLLGVBQWUsR0FBRTtBQUFBLElBQUMsSUFBRyxLQUFLLFVBQVE7QUFBQSxNQUFTLE9BQU8sS0FBSztBQUFBLElBQU0sSUFBRyxLQUFLLFVBQVEsS0FBSyxNQUFNO0FBQUEsTUFBTyxPQUFNLEdBQUcsS0FBSztBQUFBLElBQWMsTUFBTSxJQUFFLEtBQUssTUFBTSxNQUFNLEdBQUUsS0FBSyxNQUFNLElBQUcsTUFBSyxLQUFHLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTTtBQUFBLElBQUUsT0FBTSxHQUFHLElBQUksMEJBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7QUFBQTtBQUFBLE1BQVEsTUFBTSxH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QUFBQSxJQUFDLElBQUUsTUFBRyxJQUFFLEdBQUcsR0FBRSxLQUFFLEdBQUUsRUFBQyxHQUFFLEtBQUUsWUFBWSxJQUFJLEdBQUUsUUFBUSxPQUFPLE1BQU0sR0FBRywyQkFBRSxLQUFLLENBQUM7QUFBQSxDQUMxVDtBQUFBLElBQUUsSUFBSSxLQUFFLEdBQUUsS0FBRTtBQUFBLElBQUUsR0FBRSxHQUFFLElBQUUsWUFBWSxNQUFJO0FBQUEsTUFBQyxJQUFHLEtBQUcsT0FBSTtBQUFBLFFBQUU7QUFBQSxNQUFPLEdBQUUsR0FBRSxLQUFFO0FBQUEsTUFBRSxNQUFNLEtBQUUsMkJBQUUsUUFBUSxFQUFFLEdBQUU7QUFBQSxNQUFFLElBQUc7QUFBQSxRQUFFLFFBQVEsT0FBTyxNQUFNLEdBQUcsT0FBTSxPQUFNO0FBQUEsTUFBTyxTQUFHLE1BQUk7QUFBQSxRQUFRLFFBQVEsT0FBTyxNQUFNLEdBQUcsT0FBTSxNQUFLLEdBQUUsRUFBQyxHQUFHO0FBQUEsTUFBTTtBQUFBLFFBQUMsTUFBTSxLQUFFLElBQUksT0FBTyxLQUFLLE1BQU0sRUFBQyxDQUFDLEVBQUUsTUFBTSxHQUFFLENBQUM7QUFBQSxRQUFFLFFBQVEsT0FBTyxNQUFNLEdBQUcsT0FBTSxLQUFJLElBQUc7QUFBQTtBQUFBLE1BQUUsS0FBRSxLQUFFLElBQUUsRUFBRSxTQUFPLEtBQUUsSUFBRSxHQUFFLEtBQUUsS0FBRSxFQUFFLFNBQU8sS0FBRSxRQUFLO0FBQUEsT0FBRyxFQUFDO0FBQUEsS0FBRyxLQUFFLENBQUMsS0FBRSxJQUFHLEtBQUUsTUFBSTtBQUFBLElBQUMsSUFBRSxPQUFHLGNBQWMsQ0FBQyxHQUFFLEdBQUU7QUFBQSxJQUFFLE1BQU0sS0FBRSxPQUFJLElBQUUsMkJBQUUsTUFBTSxDQUFDLElBQUUsT0FBSSxJQUFFLDJCQUFFLElBQUksRUFBQyxJQUFFLDJCQUFFLElBQUksRUFBQztBQUFBLElBQUUsS0FBRSxHQUFFLE1BQUcsRUFBQyxHQUFFLE1BQUksVUFBUSxRQUFRLE9BQU8sTUFBTSxHQUFHLE9BQU0sTUFBSyxHQUFF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U0FBUyxXQUFXLEdBQUc7QUFBQSxNQUNuQyxNQUFNLFlBQVksb0JBQW9CLGFBQWEsZUFBZTtBQUFBLE1BQ2xFLElBQUksYUFBYSxTQUFTLFNBQVMsU0FBUyxHQUFHO0FBQUEsUUFDN0MsZ0JBQWdCO0FBQUEsUUFDaEIsUUFBUSxJQUFJLE9BQU8sT0FBTyx1QkFBdUI7QUFBQSxDQUFjLENBQUM7QUFBQSxNQUNsRTtBQUFBLElBQ0Y7QUFBQSxJQUVBLEtBQUssU0FBUyxTQUFTLGFBQWEsR0FBRztBQUFBLE1BQ3JDLFFBQVEsTUFBTSxPQUFPLElBQUksb0JBQW9CLGFBQWEsQ0FBQztBQUFBLE1BRTNELE1BQU0sY0FBYyxlQUFlLGFBQWEsUUFBUTtBQUFBLE1BQ3hELElBQUksWUFBWSxTQUFTLEdBQUc7QUFBQSxRQUMxQixRQUFRLE1BQU07QUFBQSwyQkFBOEI7QUFBQSxRQUM1QyxXQUFXLGNBQWMsYUFBYTtBQUFBLFVBQ3BDLFFBQVEsTUFBTSxLQUFLLE9BQU8sS0FBSyxVQUFVLEdBQUc7QUFBQSxRQUM5QztBQUFBLFFBQ0EsUUFBUSxNQUFNO0FBQUEsTUFDaEI7QUFBQSxNQUVBLEtBQUs7QUFBQSxNQUNMLFFBQVEsS0FBSyxDQUFDO0FBQUEsSUFDaEI7QUFBQSxJQUVBLElBQUksS0FBSyxTQUFTLFFBQVEsS0FBSyxLQUFLLFNBQVMsSUFBSSxHQUFHO0FBQUEsTUFDbEQsS0FBSyxhQUFhO0FBQUEsTUFDbEIsUUFBUSxLQUFLLENBQUM7QUFBQSxJQUNoQjtBQUFBLElBRUEsUUFBUTtBQUFBLFdBQ0Q7QUFBQSxRQUNILE1BQU0sS0FBSztBQUFBLFFBQ1g7QUFBQSxXQUNHO0FBQUEsUUFDSCxNQUFNLGVBQWU7QUFBQSxRQUNyQjtBQUFBLFdBQ0c7QUFBQSxRQUNILE1BQU0sWUFBWTtBQUFBLFFBQ2xCO0FBQUEsV0FDRztBQUFBLFFBQ0gsTUFBTSxlQUFlO0FBQUEsUUFDckI7QUFBQSxXQUNHO0FBQUEsUUFDSCxNQUFNLE9BQU87QUFBQSxRQUNiO0FBQUEsV0FDRyxRQUFRO0FBQUEsUUFDWCxNQUFNLGdCQUFnQixLQUFLO0FBQUEsUUFDM0IsS0FBSyxhQUFhO0FBQUEsUUFDbEI7QUFBQSxNQUNGO0FBQUE7QUFBQSxRQUVFLE1BQU0sSUFBSSxNQUFNLG9CQUFvQixlQUFlO0FBQUE7QUFBQSxJQUd2RCxRQUFRLEtBQUssQ0FBQztBQUFBLElBQ2QsT0FBTyxRQUFPO0FBQUEsSUFDZCxNQUFNLFdBQVcsa0JBQWlCLFFBQVEsU0FBUSxJQUFJLE1BQU0sT0FBTyxNQUFLLENBQUM7QUFBQSxJQUN6RSxHQUFJLE1BQU0sU0FBUyxPQUFPO0FBQUEsSUFDMUIsUUFBUSxLQUFLLENBQUM7QUFBQTtBQUFBO0FBSWxCLE1BQU0sS0FBSzsiLAogICJkZWJ1Z0lkIjogIkIzRDAyOTRDQjI1NDBGRkY2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|