every-plugin 0.4.12 → 0.4.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build/rspack/index.cjs +2 -3
- package/dist/build/rspack/index.mjs +2 -3
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{package-DawQ8na8.cjs → package-CMoV9xVN.cjs} +2 -2
- package/dist/{package-OrUVCH-p.mjs → package-WZ0vKAyb.mjs} +2 -2
- package/dist/runtime/index.cjs +2 -2
- package/dist/runtime/index.mjs +2 -2
- package/dist/{runtime-Br0wOcuk.mjs → runtime-B4AItsDQ.mjs} +2 -2
- package/dist/{runtime-Ckpw0yAc.cjs → runtime-D5bSEcHa.cjs} +2 -2
- package/dist/testing/index.cjs +2 -2
- package/dist/testing/index.mjs +2 -2
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_chunk = require('../../chunk-zltIcp7o.cjs');
|
|
2
2
|
const require_normalize = require('../../normalize-D4Qh0wVk.cjs');
|
|
3
|
-
const require_package$1 = require('../../package-
|
|
3
|
+
const require_package$1 = require('../../package-CMoV9xVN.cjs');
|
|
4
4
|
let __rspack_core = require("@rspack/core");
|
|
5
5
|
let node_path = require("node:path");
|
|
6
6
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -309,7 +309,6 @@ var EveryPluginDevServer = class {
|
|
|
309
309
|
compiler.options.output.path = node_path.default.resolve(context, "dist");
|
|
310
310
|
compiler.options.output.clean = true;
|
|
311
311
|
compiler.options.output.library = { type: "commonjs-module" };
|
|
312
|
-
if (!compiler.options.entry) compiler.options.entry = { main: { import: ["./src/index"] } };
|
|
313
312
|
if (!compiler.options.target) compiler.options.target = "async-node";
|
|
314
313
|
if (!compiler.options.mode) compiler.options.mode = process.env.NODE_ENV === "development" ? "development" : "production";
|
|
315
314
|
if (!compiler.options.devtool) compiler.options.devtool = "source-map";
|
|
@@ -360,4 +359,4 @@ var EveryPluginDevServer = class {
|
|
|
360
359
|
|
|
361
360
|
//#endregion
|
|
362
361
|
exports.EveryPluginDevServer = EveryPluginDevServer;
|
|
363
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwibmFtZXMiOlsicGF0aCIsImZzIiwiZ2V0Tm9ybWFsaXplZFJlbW90ZU5hbWUiLCJtb2R1bGUiLCJoYW5kbGVyczogeyBycGM6IGFueSwgYXBpOiBhbnkgfSIsImNsZWFudXA6ICgoKSA9PiBQcm9taXNlPHZvaWQ+KSB8IG51bGwiLCJsaW5lczogc3RyaW5nW10iLCJvcHRpb25zOiBFdmVyeVBsdWdpbk9wdGlvbnMiLCJyc3BhY2siLCJwYXRoIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay91dGlscy50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svbW9kdWxlLWZlZGVyYXRpb24udHMiLCIuLi8uLi8uLi9zcmMvYnVpbGQvcnNwYWNrL2Rldi1zZXJ2ZXItbWlkZGxld2FyZS50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svcGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBnZXROb3JtYWxpemVkUmVtb3RlTmFtZSB9IGZyb20gJ2V2ZXJ5LXBsdWdpbi9ub3JtYWxpemUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgbm9ybWFsaXplZE5hbWU6IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBwZWVyRGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luSW5mbyhjb250ZXh0OiBzdHJpbmcpOiBQbHVnaW5JbmZvIHtcbiAgY29uc3QgcGtnUGF0aCA9IHBhdGguam9pbihjb250ZXh0LCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBrZ1BhdGgsICd1dGYtOCcpKTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICAgIG5vcm1hbGl6ZWROYW1lOiBnZXROb3JtYWxpemVkUmVtb3RlTmFtZShwa2cubmFtZSksXG4gICAgZGVwZW5kZW5jaWVzOiBwa2cuZGVwZW5kZW5jaWVzIHx8IHt9LFxuICAgIHBlZXJEZXBlbmRlbmNpZXM6IHBrZy5wZWVyRGVwZW5kZW5jaWVzIHx8IHt9LFxuICB9O1xufVxuXG5jb25zdCBsb2FkZWRNb2R1bGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRGV2Q29uZmlnKGRldkNvbmZpZ1BhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKGRldkNvbmZpZ1BhdGgpO1xuICAgIFxuICAgIGlmIChsb2FkZWRNb2R1bGVzLmhhcyhmdWxsUGF0aCkpIHtcbiAgICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW2Z1bGxQYXRoXTtcbiAgICAgIGNvbnN0IGRpclBhdGggPSBwYXRoLmRpcm5hbWUoZnVsbFBhdGgpO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVxdWlyZS5jYWNoZSkpIHtcbiAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKGRpclBhdGgpICYmIGtleSAhPT0gZnVsbFBhdGgpIHtcbiAgICAgICAgICBkZWxldGUgcmVxdWlyZS5jYWNoZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IG1vZHVsZSA9IHJlcXVpcmUoZnVsbFBhdGgpLmRlZmF1bHQ7XG4gICAgbG9hZGVkTW9kdWxlcy5hZGQoZnVsbFBhdGgpO1xuICAgIHJldHVybiBtb2R1bGU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS53YXJuKGBDb3VsZCBub3QgbG9hZCBkZXYgY29uZmlnIGZyb20gJHtkZXZDb25maWdQYXRofTpgLCAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwRGV2Q29uZmlnKCkge1xuICBmb3IgKGNvbnN0IG1vZHVsZVBhdGggb2YgbG9hZGVkTW9kdWxlcykge1xuICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW21vZHVsZVBhdGhdO1xuICB9XG4gIGxvYWRlZE1vZHVsZXMuY2xlYXIoKTtcbn1cbiIsImltcG9ydCB0eXBlIHsgUGx1Z2luSW5mbyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTaGFyZWREZXBlbmRlbmNpZXMocGx1Z2luSW5mbzogUGx1Z2luSW5mbykge1xuICAvLyBHZXQgZXZlcnktcGx1Z2luIHBhY2thZ2UgaW5mbyBmb3IgdmVyc2lvbiBjb25zdHJhaW50c1xuICBjb25zdCBldmVyeVBsdWdpblBrZyA9IHJlcXVpcmUoJ2V2ZXJ5LXBsdWdpbi9wYWNrYWdlLmpzb24nKTtcblxuICByZXR1cm4ge1xuICAgICdldmVyeS1wbHVnaW4nOiB7XG4gICAgICB2ZXJzaW9uOiBldmVyeVBsdWdpblBrZy52ZXJzaW9uLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy52ZXJzaW9ufWAsXG4gICAgICBzdHJpY3RWZXJzaW9uOiBmYWxzZSxcbiAgICAgIGVhZ2VyOiBmYWxzZSxcbiAgICB9LFxuICAgIGVmZmVjdDoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdCxcbiAgICAgIHNpbmdsZXRvbjogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkVmVyc2lvbjogYCR7ZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdH1gLFxuICAgICAgc3RyaWN0VmVyc2lvbjogZmFsc2UsXG4gICAgICBlYWdlcjogZmFsc2UsXG4gICAgfSxcbiAgICB6b2Q6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2QsXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2R9YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL2NvbnRyYWN0Jzoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzWydAb3JwYy9jb250cmFjdCddLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXNbJ0BvcnBjL2NvbnRyYWN0J119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL3NlcnZlcic6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ10sXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gIH07XG59XG4iLCJpbXBvcnQgdHlwZSB7IFBsdWdpbkluZm8gfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgY29yc0hlYWRlcnMgPSB7XG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiAnKicsXG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnOiAnWC1SZXF1ZXN0ZWQtV2l0aCwgY29udGVudC10eXBlLCBBdXRob3JpemF0aW9uJ1xufTtcblxuY29uc3QgYXBwbHlDb3JzSGVhZGVycyA9IChyZXM6IGFueSkgPT4ge1xuICBPYmplY3QuZW50cmllcyhjb3JzSGVhZGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgfSk7XG59O1xuXG5jb25zdCBub3JtYWxpemVQcmVmaXggPSAocHJlZml4Pzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFwcmVmaXgpIHJldHVybiAnJztcbiAgY29uc3QgY2xlYW5lZCA9IHByZWZpeC5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCAnJyk7XG4gIHJldHVybiBjbGVhbmVkID8gYC8ke2NsZWFuZWR9YCA6ICcnO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXI6IGFueSwgcGx1Z2luSW5mbzogUGx1Z2luSW5mbywgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICBjb25zdCBycGNQcmVmaXggPSBub3JtYWxpemVQcmVmaXgoZGV2Q29uZmlnPy5wcmVmaXgpO1xuICBsZXQgaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0gPSB7IHJwYzogbnVsbCwgYXBpOiBudWxsIH07XG4gIGxldCBjbGVhbnVwOiAoKCkgPT4gUHJvbWlzZTx2b2lkPikgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBwZXJmb3JtQ2xlYW51cCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoY2xlYW51cCkge1xuICAgICAgYXdhaXQgY2xlYW51cCgpO1xuICAgICAgY2xlYW51cCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGNyZWF0ZVBsdWdpblJ1bnRpbWUgfSA9IGF3YWl0IGltcG9ydCgnZXZlcnktcGx1Z2luJyk7XG4gICAgICBjb25zdCB7IFJQQ0hhbmRsZXIgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyL2ZldGNoJyk7XG4gICAgICBjb25zdCB7IG9uRXJyb3IgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyJyk7XG4gICAgICBjb25zdCB7IE9wZW5BUElIYW5kbGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL29wZW5hcGkvZmV0Y2gnKTtcbiAgICAgIGNvbnN0IHsgT3BlbkFQSVJlZmVyZW5jZVBsdWdpbiB9ID0gYXdhaXQgaW1wb3J0KCdAb3JwYy9vcGVuYXBpL3BsdWdpbnMnKTtcbiAgICAgIGNvbnN0IHsgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL3pvZC96b2Q0Jyk7XG5cbiAgICAgIGNvbnN0IHBsdWdpbklkID0gZGV2Q29uZmlnPy5wbHVnaW5JZCB8fCBwbHVnaW5JbmZvLm5vcm1hbGl6ZWROYW1lO1xuXG4gICAgICBjb25zdCBydW50aW1lID0gY3JlYXRlUGx1Z2luUnVudGltZSh7XG4gICAgICAgIHJlZ2lzdHJ5OiB7XG4gICAgICAgICAgW3BsdWdpbklkXToge1xuICAgICAgICAgICAgcmVtb3RlVXJsOiBgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L3JlbW90ZUVudHJ5LmpzYFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGxvYWRlZCA9IGF3YWl0IHJ1bnRpbWUudXNlUGx1Z2luKHBsdWdpbklkLCBkZXZDb25maWc/LmNvbmZpZyk7XG5cbiAgICAgIGNsZWFudXAgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkZWQgJiYgdHlwZW9mIChsb2FkZWQgYXMgYW55KS5kaXNwb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKGxvYWRlZCBhcyBhbnkpLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocnVudGltZSAmJiB0eXBlb2YgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwKCk7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlcnMucnBjID0gbnVsbDtcbiAgICAgICAgaGFuZGxlcnMuYXBpID0gbnVsbDtcbiAgICAgICAgaWYgKGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmb3JtYXRFcnJvciA9IChlcnJvcjogYW55LCBjb250ZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW2BcXG7wn5S0ICR7Y29udGV4dH0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcid9YF07XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/Lmlzc3VlcyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmNhdXNlLmlzc3VlcykpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OLIFZhbGlkYXRpb24gSXNzdWVzOicpO1xuICAgICAgICAgIGVycm9yLmNhdXNlLmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGAgICR7aW5kZXggKyAxfS4gJHtpc3N1ZS5wYXRoPy5qb2luKCcuJykgfHwgJ3Jvb3QnfWApO1xuICAgICAgICAgICAgbGluZXMucHVzaChgICAgICDilJzilIAgQ29kZTogJHtpc3N1ZS5jb2RlIHx8ICd1bmtub3duJ31gKTtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgICAg4pSc4pSAIE1lc3NhZ2U6ICR7aXNzdWUubWVzc2FnZSB8fCAnTm8gbWVzc2FnZSd9YCk7XG4gICAgICAgICAgICBpZiAoaXNzdWUuZXhwZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUnOKUgCBFeHBlY3RlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5leHBlY3RlZCl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNzdWUucmVjZWl2ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCBSZWNlaXZlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5yZWNlaXZlZCl9YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCAoZW5kKWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuZGF0YSAmJiB0eXBlb2YgZXJyb3IuZGF0YSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoZXJyb3IuZGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goJ1xcbvCfk4ogRXJyb3IgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/LmRhdGEpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OmIFJlcXVlc3QgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmNhdXNlLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuY2F1c2UuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY29kZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYFxcbuKaoO+4jyAgRXJyb3IgQ29kZTogJHtlcnJvci5jb2RlfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICAgICAgbGluZXMucHVzaChg8J+TjSBTdGF0dXM6ICR7ZXJyb3Iuc3RhdHVzfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihsaW5lcy5qb2luKCdcXG4nKSk7XG4gICAgICB9O1xuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG5vIHR5cGVcbiAgICAgIGhhbmRsZXJzLnJwYyA9IG5ldyBSUENIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgaW50ZXJjZXB0b3JzOiBbXG4gICAgICAgICAgb25FcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgZm9ybWF0RXJyb3IoZXJyb3IsICdSUEMnKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igbm8gdHlwZVxuICAgICAgaGFuZGxlcnMuYXBpID0gbmV3IE9wZW5BUElIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgIG5ldyBPcGVuQVBJUmVmZXJlbmNlUGx1Z2luKHtcbiAgICAgICAgICAgIHNjaGVtYUNvbnZlcnRlcnM6IFtuZXcgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyKCldLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBpbnRlcmNlcHRvcnM6IFtcbiAgICAgICAgICBvbkVycm9yKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICBmb3JtYXRFcnJvcihlcnJvciwgJ09wZW5BUEknKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKGDila3ilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBgKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIOKchSBQbHVnaW4gZGV2IHNlcnZlciByZWFkeTogYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5OhIFJQQzogICAgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2FwaS9ycGMke3JwY1ByZWZpeH1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIPCfk5YgRG9jczogICBodHRwOi8vbG9jYWxob3N0OiR7cG9ydH0vYXBpYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5KaIEhlYWx0aDogaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2ApO1xuICAgICAgY29uc29sZS5sb2coYOKVsOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgGApO1xuXG4gICAgICBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycyA9IGhhbmRsZXJzO1xuXG4gICAgICBpZiAoZGV2U2VydmVyLnNlcnZlcikge1xuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLm9uY2UoJ2Nsb3NlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCfinYwgRmFpbGVkIHRvIGxvYWQgcGx1Z2luOicsIGVycm9yKTtcbiAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgfVxuICB9KSgpO1xuXG4gIHByb2Nlc3Mub25jZSgnU0lHSU5UJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gIH0pO1xuICBwcm9jZXNzLm9uY2UoJ1NJR1RFUk0nLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcbiAgfSk7XG5cbiAgZGV2U2VydmVyLmFwcC5vcHRpb25zKCcqJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuc3RhdHVzKDIwMCkuZW5kKCk7XG4gIH0pO1xuXG4gIGRldlNlcnZlci5hcHAuZ2V0KCcvJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBsdWdpbjogcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZSxcbiAgICAgIHZlcnNpb246IHBsdWdpbkluZm8udmVyc2lvbixcbiAgICAgIHN0YXR1czogZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnM/LnJwYyA/ICdyZWFkeScgOiAnbG9hZGluZycsXG4gICAgICBlbmRwb2ludHM6IHtcbiAgICAgICAgaGVhbHRoOiAnLycsXG4gICAgICAgIGRvY3M6ICcvYXBpJyxcbiAgICAgICAgcnBjOiBgL2FwaS9ycGMke3JwY1ByZWZpeH1gXG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBhbmQgUkVTVCBlbmRwb2ludHMgYXQgL2FwaSBhbmQgL2FwaS8qXG4gIGNvbnN0IGhhbmRsZUFwaVJlcXVlc3QgPSBhc3luYyAocmVxOiBhbnksIHJlczogYW55KSA9PiB7XG4gICAgYXBwbHlDb3JzSGVhZGVycyhyZXMpO1xuICAgIGNvbnN0IGFwaUhhbmRsZXIgPSBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycz8uYXBpO1xuICAgIGlmICghYXBpSGFuZGxlcikge1xuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAzKS5qc29uKHsgZXJyb3I6ICdQbHVnaW4gc3RpbGwgbG9hZGluZy4uLicgfSk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IGBodHRwOi8vJHtyZXEuaGVhZGVycy5ob3N0fSR7cmVxLnVybH1gO1xuICAgICAgY29uc3Qgd2ViUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwge1xuICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLFxuICAgICAgICBib2R5OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyByZXEgOiB1bmRlZmluZWQsXG4gICAgICAgIGR1cGxleDogcmVxLm1ldGhvZCAhPT0gJ0dFVCcgJiYgcmVxLm1ldGhvZCAhPT0gJ0hFQUQnID8gJ2hhbGYnIDogdW5kZWZpbmVkXG4gICAgICB9IGFzIFJlcXVlc3RJbml0KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBpSGFuZGxlci5oYW5kbGUod2ViUmVxdWVzdCwge1xuICAgICAgICBwcmVmaXg6ICcvYXBpJyxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignT3BlbkFQSSBlcnJvcjonLCBlcnJvcik7XG4gICAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7IGVycm9yOiAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UgfSk7XG4gICAgfVxuICB9O1xuXG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpJywgaGFuZGxlQXBpUmVxdWVzdCk7XG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpLyonLCBoYW5kbGVBcGlSZXF1ZXN0KTtcblxuICBkZXZTZXJ2ZXIuYXBwLmFsbChgL2FwaS9ycGMke3JwY1ByZWZpeH0vKmAsIGFzeW5jIChyZXE6IGFueSwgcmVzOiBhbnkpID0+IHtcbiAgICBhcHBseUNvcnNIZWFkZXJzKHJlcyk7XG4gICAgY29uc3QgcnBjSGFuZGxlciA9IGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzPy5ycGM7XG4gICAgaWYgKCFycGNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDMpLmpzb24oeyBlcnJvcjogJ1BsdWdpbiBzdGlsbCBsb2FkaW5nLi4uJyB9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9JHtyZXEudXJsfWA7XG4gICAgICBjb25zdCB3ZWJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6IHJlcS5tZXRob2QgIT09ICdHRVQnICYmIHJlcS5tZXRob2QgIT09ICdIRUFEJyA/IHJlcSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZHVwbGV4OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyAnaGFsZicgOiB1bmRlZmluZWRcbiAgICAgIH0gYXMgUmVxdWVzdEluaXQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGNIYW5kbGVyLmhhbmRsZSh3ZWJSZXF1ZXN0LCB7XG4gICAgICAgIHByZWZpeDogYC9hcGkvcnBjJHtycGNQcmVmaXh9YCxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignUlBDIGVycm9yOicsIGVycm9yKTtcbiAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHsgZXJyb3I6IChlcnJvciBhcyBFcnJvcikubWVzc2FnZSB9KTtcbiAgICB9XG4gIH0pO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBDb21waWxlciwgUnNwYWNrUGx1Z2luSW5zdGFuY2UgfSBmcm9tICdAcnNwYWNrL2NvcmUnO1xuaW1wb3J0IHsgcnNwYWNrIH0gZnJvbSAnQHJzcGFjay9jb3JlJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBnZXRQbHVnaW5JbmZvIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBsb2FkRGV2Q29uZmlnIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBidWlsZFNoYXJlZERlcGVuZGVuY2llcyB9IGZyb20gJy4vbW9kdWxlLWZlZGVyYXRpb24nO1xuaW1wb3J0IHsgc2V0dXBQbHVnaW5NaWRkbGV3YXJlIH0gZnJvbSAnLi9kZXYtc2VydmVyLW1pZGRsZXdhcmUnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlcnlQbHVnaW5PcHRpb25zIHtcbiAgZGV2Q29uZmlnUGF0aD86IHN0cmluZzsgIC8vIGRlZmF1bHRzIHRvICcuL3BsdWdpbi5kZXYudHMnXG4gIHBvcnQ/OiBudW1iZXI7ICAgICAgICAgICAvLyBvdmVycmlkZSBwbHVnaW4uZGV2LnRzIHBvcnRcbiAgcGx1Z2luSWQ/OiBzdHJpbmc7ICAgICAgIC8vIG92ZXJyaWRlIGF1dG8tZGV0ZWN0ZWRcbn1cblxuZXhwb3J0IGNsYXNzIEV2ZXJ5UGx1Z2luRGV2U2VydmVyIGltcGxlbWVudHMgUnNwYWNrUGx1Z2luSW5zdGFuY2Uge1xuICBuYW1lID0gJ0V2ZXJ5UGx1Z2luRGV2U2VydmVyJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM6IEV2ZXJ5UGx1Z2luT3B0aW9ucyA9IHt9KSB7fVxuXG4gIGFwcGx5KGNvbXBpbGVyOiBDb21waWxlcikge1xuICAgIC8vIExvYWQgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IHBsdWdpbkluZm8gPSBnZXRQbHVnaW5JbmZvKGNvbXBpbGVyLm9wdGlvbnMuY29udGV4dCB8fCBwcm9jZXNzLmN3ZCgpKTtcbiAgICBjb25zdCBkZXZDb25maWcgPSBsb2FkRGV2Q29uZmlnKHRoaXMub3B0aW9ucy5kZXZDb25maWdQYXRoIHx8ICcuL3BsdWdpbi5kZXYudHMnKTtcbiAgICBjb25zdCBwb3J0ID0gdGhpcy5vcHRpb25zLnBvcnQgfHwgZGV2Q29uZmlnPy5wb3J0IHx8IDM5OTk7XG5cbiAgICAvLyBDb25maWd1cmUgZGVmYXVsdHMgaW1tZWRpYXRlbHkgKG5vIGhvb2tzIG5lZWRlZClcbiAgICB0aGlzLmNvbmZpZ3VyZURlZmF1bHRzKGNvbXBpbGVyLCBwbHVnaW5JbmZvKTtcblxuICAgIC8vIEluaXRpYWxpemUgZGV2U2VydmVyIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlciA9IHt9O1xuICAgIH1cblxuICAgIC8vIENvbmZpZ3VyZSBkZXYgc2VydmVyXG4gICAgdGhpcy5jb25maWd1cmVEZXZTZXJ2ZXIoY29tcGlsZXIsIHBsdWdpbkluZm8sIGRldkNvbmZpZywgcG9ydCk7XG5cbiAgICAvLyBBcHBseSBNb2R1bGUgRmVkZXJhdGlvbiBwbHVnaW5cbiAgICBuZXcgcnNwYWNrLmNvbnRhaW5lci5Nb2R1bGVGZWRlcmF0aW9uUGx1Z2luKHtcbiAgICAgIG5hbWU6IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWUsXG4gICAgICBmaWxlbmFtZTogJ3JlbW90ZUVudHJ5LmpzJyxcbiAgICAgIHJ1bnRpbWVQbHVnaW5zOiBbXG4gICAgICAgIHJlcXVpcmUucmVzb2x2ZSgnQG1vZHVsZS1mZWRlcmF0aW9uL25vZGUvcnVudGltZVBsdWdpbicpLFxuICAgICAgXSxcbiAgICAgIGxpYnJhcnk6IHsgdHlwZTogJ2NvbW1vbmpzLW1vZHVsZScgfSxcbiAgICAgIGV4cG9zZXM6IHtcbiAgICAgICAgJy4vcGx1Z2luJzogJy4vc3JjL2luZGV4LnRzJyxcbiAgICAgIH0sXG4gICAgICBzaGFyZWQ6IGJ1aWxkU2hhcmVkRGVwZW5kZW5jaWVzKHBsdWdpbkluZm8pLFxuICAgIH0pLmFwcGx5KGNvbXBpbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRGVmYXVsdHMoY29tcGlsZXI6IENvbXBpbGVyLCBwbHVnaW5JbmZvOiBhbnkpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gY29tcGlsZXIub3B0aW9ucy5jb250ZXh0IHx8IHByb2Nlc3MuY3dkKCk7XG5cbiAgICAvLyBDb25maWd1cmUgb3V0cHV0IGRlZmF1bHRzXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm91dHB1dCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQgPSB7fTtcbiAgICB9XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQudW5pcXVlTmFtZSA9IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQucHVibGljUGF0aCA9ICdhdXRvJztcbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC5wYXRoID0gcGF0aC5yZXNvbHZlKGNvbnRleHQsICdkaXN0Jyk7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQuY2xlYW4gPSB0cnVlO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0LmxpYnJhcnkgPSB7IHR5cGU6ICdjb21tb25qcy1tb2R1bGUnIH07XG5cbiAgICAvLyBDb25maWd1cmUgZW50cnkgaWYgbm90IHNldFxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5lbnRyeSkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5lbnRyeSA9IHtcbiAgICAgICAgbWFpbjoge1xuICAgICAgICAgIGltcG9ydDogWycuL3NyYy9pbmRleCddXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIHRhcmdldCBhbmQgbW9kZSBkZWZhdWx0c1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy50YXJnZXQpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMudGFyZ2V0ID0gJ2FzeW5jLW5vZGUnO1xuICAgIH1cblxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2RlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZGUgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyA/ICdkZXZlbG9wbWVudCcgOiAncHJvZHVjdGlvbic7XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIGRldnRvb2xcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMuZGV2dG9vbCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5kZXZ0b29sID0gJ3NvdXJjZS1tYXAnO1xuICAgIH1cblxuICAgIC8vIFN1cHByZXNzIHZlcmJvc2UgaW5mcmFzdHJ1Y3R1cmUgbG9nZ2luZ1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5pbmZyYXN0cnVjdHVyZUxvZ2dpbmcpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMuaW5mcmFzdHJ1Y3R1cmVMb2dnaW5nID0ge1xuICAgICAgICBsZXZlbDogJ3dhcm4nLCAgLy8gT25seSBzaG93IHdhcm5pbmdzIGFuZCBlcnJvcnNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIG1vZHVsZSBydWxlcyAtIGVuc3VyZSBUeXBlU2NyaXB0IGxvYWRlciBpcyBwcmVzZW50XG4gICAgdGhpcy5lbnN1cmVUeXBlU2NyaXB0TG9hZGVyKGNvbXBpbGVyKTtcblxuICAgIC8vIENvbmZpZ3VyZSByZXNvbHZlIGV4dGVuc2lvbnNcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMucmVzb2x2ZSkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlID0ge307XG4gICAgfVxuICAgIGNvbXBpbGVyLm9wdGlvbnMucmVzb2x2ZS5leHRlbnNpb25zID0gWycuLi4nLCAnLnRzeCcsICcudHMnXTtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlVHlwZVNjcmlwdExvYWRlcihjb21waWxlcjogQ29tcGlsZXIpIHtcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMubW9kdWxlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZHVsZSA9IHsgcnVsZXM6IFtdIH0gYXMgYW55O1xuICAgIH1cblxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2R1bGUucnVsZXMpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzID0gW107XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgVHlwZVNjcmlwdCBsb2FkZXIgaXMgYWxyZWFkeSBjb25maWd1cmVkXG4gICAgY29uc3QgaGFzVHNMb2FkZXIgPSBjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcy5zb21lKChydWxlOiBhbnkpID0+XG4gICAgICB0eXBlb2YgcnVsZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHJ1bGUgIT09IG51bGwgJiZcbiAgICAgICd0ZXN0JyBpbiBydWxlICYmXG4gICAgICBydWxlLnRlc3QgaW5zdGFuY2VvZiBSZWdFeHAgJiZcbiAgICAgIHJ1bGUudGVzdC50ZXN0KCcudHMnKVxuICAgICk7XG5cbiAgICAvLyBBZGQgVHlwZVNjcmlwdCBsb2FkZXIgaWYgbm90IHByZXNlbnRcbiAgICBpZiAoIWhhc1RzTG9hZGVyKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcy5wdXNoKHtcbiAgICAgICAgdGVzdDogL1xcLnRzeD8kLyxcbiAgICAgICAgdXNlOiAnYnVpbHRpbjpzd2MtbG9hZGVyJyxcbiAgICAgICAgZXhjbHVkZTogL25vZGVfbW9kdWxlcy8sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZURldlNlcnZlcihjb21waWxlcjogQ29tcGlsZXIsIHBsdWdpbkluZm86IGFueSwgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjsgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbiBkdWUgdG8gY2hlY2sgaW4gYXBwbHkoKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBvcmlnaW5hbFNldHVwID0gY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuc2V0dXBNaWRkbGV3YXJlcztcblxuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnBvcnQgPSBwb3J0O1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnN0YXRpYyA9IHBhdGguam9pbihjb250ZXh0LCAnZGlzdCcpO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmhvdCA9IHRydWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuZGV2TWlkZGxld2FyZSA9IHsgd3JpdGVUb0Rpc2s6IHRydWUgfTtcbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5oZWFkZXJzID0ge1xuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbic6ICcqJyxcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyxcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJzogJ1gtUmVxdWVzdGVkLVdpdGgsIGNvbnRlbnQtdHlwZSwgQXV0aG9yaXphdGlvbicsXG4gICAgfTtcblxuICAgIC8vIFN1cHByZXNzIHZlcmJvc2UgbG9nZ2luZ1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmNsaWVudCA9IHtcbiAgICAgIGxvZ2dpbmc6ICd3YXJuJywgIC8vIE9ubHkgc2hvdyB3YXJuaW5ncyBhbmQgZXJyb3JzXG4gICAgICBvdmVybGF5OiB7XG4gICAgICAgIHdhcm5pbmdzOiBmYWxzZSwgIC8vIERvbid0IHNob3cgd2FybmluZyBvdmVybGF5XG4gICAgICAgIGVycm9yczogdHJ1ZSwgICAgIC8vIFN0aWxsIHNob3cgZXJyb3JzXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBkZXZTZXJ2ZXIpID0+IHtcbiAgICAgIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXIsIHBsdWdpbkluZm8sIGRldkNvbmZpZywgcG9ydCk7XG4gICAgICByZXR1cm4gb3JpZ2luYWxTZXR1cCA/IG9yaWdpbmFsU2V0dXAobWlkZGxld2FyZXMsIGRldlNlcnZlcikgOiBtaWRkbGV3YXJlcztcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFZQSxTQUFnQixjQUFjLFNBQTZCO0NBQ3pELE1BQU0sVUFBVUEsa0JBQUssS0FBSyxTQUFTLGVBQWU7Q0FDbEQsTUFBTSxNQUFNLEtBQUssTUFBTUMsZ0JBQUcsYUFBYSxTQUFTLFFBQVEsQ0FBQztBQUV6RCxRQUFPO0VBQ0wsTUFBTSxJQUFJO0VBQ1YsU0FBUyxJQUFJO0VBQ2IsZ0JBQWdCQywwQ0FBd0IsSUFBSSxLQUFLO0VBQ2pELGNBQWMsSUFBSSxnQkFBZ0IsRUFBRTtFQUNwQyxrQkFBa0IsSUFBSSxvQkFBb0IsRUFBRTtFQUM3Qzs7QUFHSCxNQUFNLGdDQUFnQixJQUFJLEtBQWE7QUFFdkMsU0FBZ0IsY0FBYyxlQUF1QjtBQUNuRCxLQUFJO0VBQ0YsTUFBTSxXQUFXRixrQkFBSyxRQUFRLGNBQWM7QUFFNUMsTUFBSSxjQUFjLElBQUksU0FBUyxFQUFFO0FBQy9CLFVBQU8sUUFBUSxNQUFNO0dBQ3JCLE1BQU0sVUFBVUEsa0JBQUssUUFBUSxTQUFTO0FBQ3RDLFFBQUssTUFBTSxPQUFPLE9BQU8sS0FBSyxRQUFRLE1BQU0sQ0FDMUMsS0FBSSxJQUFJLFdBQVcsUUFBUSxJQUFJLFFBQVEsU0FDckMsUUFBTyxRQUFRLE1BQU07O0VBSzNCLE1BQU1HLFdBQVMsUUFBUSxTQUFTLENBQUM7QUFDakMsZ0JBQWMsSUFBSSxTQUFTO0FBQzNCLFNBQU9BO1VBQ0EsT0FBTztBQUNkLFVBQVEsS0FBSyxrQ0FBa0MsY0FBYyxJQUFLLE1BQWdCLFFBQVE7QUFDMUYsU0FBTzs7Ozs7O0FDNUNYLFNBQWdCLHdCQUF3QixZQUF3QjtDQUU5RCxNQUFNO0FBRU4sUUFBTztFQUNMLGdCQUFnQjtHQUNkLFNBQVMsZUFBZTtHQUN4QixXQUFXO0dBQ1gsaUJBQWlCLEdBQUcsZUFBZTtHQUNuQyxlQUFlO0dBQ2YsT0FBTztHQUNSO0VBQ0QsUUFBUTtHQUNOLFNBQVMsZUFBZSxhQUFhO0dBQ3JDLFdBQVc7R0FDWCxpQkFBaUIsR0FBRyxlQUFlLGFBQWE7R0FDaEQsZUFBZTtHQUNmLE9BQU87R0FDUjtFQUNELEtBQUs7R0FDSCxTQUFTLGVBQWUsYUFBYTtHQUNyQyxXQUFXO0dBQ1gsaUJBQWlCLEdBQUcsZUFBZSxhQUFhO0dBQ2hELGVBQWU7R0FDZixPQUFPO0dBQ1I7RUFDRCxrQkFBa0I7R0FDaEIsU0FBUyxlQUFlLGFBQWE7R0FDckMsV0FBVztHQUNYLGlCQUFpQixHQUFHLGVBQWUsYUFBYTtHQUNoRCxlQUFlO0dBQ2YsT0FBTztHQUNSO0VBQ0QsZ0JBQWdCO0dBQ2QsU0FBUyxlQUFlLGFBQWE7R0FDckMsV0FBVztHQUNYLGlCQUFpQixHQUFHLGVBQWUsYUFBYTtHQUNoRCxlQUFlO0dBQ2YsT0FBTztHQUNSO0VBQ0Y7Ozs7O0FDeENILE1BQU0sY0FBYztDQUNsQiwrQkFBK0I7Q0FDL0IsZ0NBQWdDO0NBQ2hDLGdDQUFnQztDQUNqQztBQUVELE1BQU0sb0JBQW9CLFFBQWE7QUFDckMsUUFBTyxRQUFRLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxXQUFXO0FBQ3BELE1BQUksVUFBVSxLQUFLLE1BQU07R0FDekI7O0FBR0osTUFBTSxtQkFBbUIsV0FBNEI7QUFDbkQsS0FBSSxDQUFDLE9BQVEsUUFBTztDQUNwQixNQUFNLFVBQVUsT0FBTyxRQUFRLGNBQWMsR0FBRztBQUNoRCxRQUFPLFVBQVUsSUFBSSxZQUFZOztBQUduQyxTQUFnQixzQkFBc0IsV0FBZ0IsWUFBd0IsV0FBZ0IsTUFBYztDQUMxRyxNQUFNLFlBQVksZ0JBQWdCLFdBQVcsT0FBTztDQUNwRCxJQUFJQyxXQUFtQztFQUFFLEtBQUs7RUFBTSxLQUFLO0VBQU07Q0FDL0QsSUFBSUMsVUFBd0M7Q0FFNUMsTUFBTSxpQkFBaUIsWUFBWTtBQUNqQyxNQUFJLFNBQVM7QUFDWCxTQUFNLFNBQVM7QUFDZixhQUFVOzs7QUFJZCxFQUFDLFlBQVk7QUFDWCxRQUFNLGdCQUFnQjtBQUV0QixNQUFJO0dBQ0YsTUFBTSxFQUFFLHdCQUF3QiwyQ0FBTTtHQUN0QyxNQUFNLEVBQUUsZUFBZSxNQUFNLE9BQU87R0FDcEMsTUFBTSxFQUFFLFlBQVksTUFBTSxPQUFPO0dBQ2pDLE1BQU0sRUFBRSxtQkFBbUIsMkNBQU07R0FDakMsTUFBTSxFQUFFLDJCQUEyQiwyQ0FBTTtHQUN6QyxNQUFNLEVBQUUsNkJBQTZCLE1BQU0sT0FBTztHQUVsRCxNQUFNLFdBQVcsV0FBVyxZQUFZLFdBQVc7R0FFbkQsTUFBTSxVQUFVLG9CQUFvQixFQUNsQyxVQUFVLEdBQ1AsV0FBVyxFQUNWLFdBQVcsb0JBQW9CLEtBQUssa0JBQ3JDLEVBQ0YsRUFDRixDQUFDO0dBRUYsTUFBTSxTQUFTLE1BQU0sUUFBUSxVQUFVLFVBQVUsV0FBVyxPQUFPO0FBRW5FLGFBQVUsWUFBWTtBQUNwQixRQUFJLFVBQVUsT0FBUSxPQUFlLFlBQVksV0FDL0MsT0FBTyxPQUFlLFNBQVM7QUFFakMsUUFBSSxXQUFXLE9BQVEsUUFBZ0IsWUFBWSxXQUNqRCxPQUFPLFFBQWdCLFNBQVM7QUFFbEMsYUFBUyxNQUFNO0FBQ2YsYUFBUyxNQUFNO0FBQ2YsUUFBSSxVQUFVLElBQUksT0FBTyxTQUN2QixXQUFVLElBQUksT0FBTyxXQUFXOztHQUlwQyxNQUFNLGVBQWUsT0FBWSxZQUFvQjtJQUNuRCxNQUFNQyxRQUFrQixDQUFDLFFBQVEsUUFBUSxVQUFVLE1BQU0sV0FBVyxrQkFBa0I7QUFFdEYsUUFBSSxNQUFNLE9BQU8sVUFBVSxNQUFNLFFBQVEsTUFBTSxNQUFNLE9BQU8sRUFBRTtBQUM1RCxXQUFNLEtBQUssMEJBQTBCO0FBQ3JDLFdBQU0sTUFBTSxPQUFPLFNBQVMsT0FBWSxVQUFrQjtBQUN4RCxZQUFNLEtBQUssS0FBSyxRQUFRLEVBQUUsSUFBSSxNQUFNLE1BQU0sS0FBSyxJQUFJLElBQUksU0FBUztBQUNoRSxZQUFNLEtBQUssaUJBQWlCLE1BQU0sUUFBUSxZQUFZO0FBQ3RELFlBQU0sS0FBSyxvQkFBb0IsTUFBTSxXQUFXLGVBQWU7QUFDL0QsVUFBSSxNQUFNLGFBQWEsT0FDckIsT0FBTSxLQUFLLHFCQUFxQixLQUFLLFVBQVUsTUFBTSxTQUFTLEdBQUc7QUFFbkUsVUFBSSxNQUFNLGFBQWEsT0FDckIsT0FBTSxLQUFLLHFCQUFxQixLQUFLLFVBQVUsTUFBTSxTQUFTLEdBQUc7VUFFakUsT0FBTSxLQUFLLGdCQUFnQjtPQUU3Qjs7QUFHSixRQUFJLE1BQU0sUUFBUSxPQUFPLE1BQU0sU0FBUyxZQUFZLE9BQU8sS0FBSyxNQUFNLEtBQUssQ0FBQyxTQUFTLEdBQUc7QUFDdEYsV0FBTSxLQUFLLG1CQUFtQjtBQUM5QixTQUFJO0FBRUYsTUFEZ0IsS0FBSyxVQUFVLE1BQU0sTUFBTSxNQUFNLEVBQUUsQ0FDM0MsTUFBTSxLQUFLLENBQUMsU0FBUSxTQUFRO0FBQ2xDLGFBQU0sS0FBSyxLQUFLLE9BQU87UUFDdkI7YUFDSTtBQUNOLFlBQU0sS0FBSyxLQUFLLE9BQU8sTUFBTSxLQUFLLEdBQUc7OztBQUl6QyxRQUFJLE1BQU0sT0FBTyxNQUFNO0FBQ3JCLFdBQU0sS0FBSyxxQkFBcUI7QUFDaEMsU0FBSTtBQUVGLE1BRGdCLEtBQUssVUFBVSxNQUFNLE1BQU0sTUFBTSxNQUFNLEVBQUUsQ0FDakQsTUFBTSxLQUFLLENBQUMsU0FBUSxTQUFRO0FBQ2xDLGFBQU0sS0FBSyxLQUFLLE9BQU87UUFDdkI7YUFDSTtBQUNOLFlBQU0sS0FBSyxLQUFLLE9BQU8sTUFBTSxNQUFNLEtBQUssR0FBRzs7O0FBSS9DLFFBQUksTUFBTSxLQUNSLE9BQU0sS0FBSyxxQkFBcUIsTUFBTSxPQUFPO0FBRy9DLFFBQUksTUFBTSxPQUNSLE9BQU0sS0FBSyxjQUFjLE1BQU0sU0FBUztBQUcxQyxVQUFNLEtBQUssR0FBRztBQUNkLFlBQVEsTUFBTSxNQUFNLEtBQUssS0FBSyxDQUFDOztBQUlqQyxZQUFTLE1BQU0sSUFBSSxXQUFXLE9BQU8sUUFBUSxFQUMzQyxjQUFjLENBQ1osU0FBUyxVQUFlO0FBQ3RCLGdCQUFZLE9BQU8sTUFBTTtLQUN6QixDQUNILEVBQ0YsQ0FBQztBQUdGLFlBQVMsTUFBTSxJQUFJLGVBQWUsT0FBTyxRQUFRO0lBQy9DLFNBQVMsQ0FDUCxJQUFJLHVCQUF1QixFQUN6QixrQkFBa0IsQ0FBQyxJQUFJLDBCQUEwQixDQUFDLEVBQ25ELENBQUMsQ0FDSDtJQUNELGNBQWMsQ0FDWixTQUFTLFVBQWU7QUFDdEIsaUJBQVksT0FBTyxVQUFVO01BQzdCLENBQ0g7SUFDRixDQUFDO0FBRUYsV0FBUSxJQUFJLGlEQUFpRDtBQUM3RCxXQUFRLElBQUksaUNBQWlDO0FBQzdDLFdBQVEsSUFBSSxpREFBaUQ7QUFDN0QsV0FBUSxJQUFJLGtDQUFrQyxLQUFLLFVBQVUsWUFBWTtBQUN6RSxXQUFRLElBQUksa0NBQWtDLEtBQUssTUFBTTtBQUN6RCxXQUFRLElBQUksa0NBQWtDLEtBQUssR0FBRztBQUN0RCxXQUFRLElBQUksaURBQWlEO0FBRTdELGFBQVUsSUFBSSxPQUFPLFdBQVc7QUFFaEMsT0FBSSxVQUFVLE9BQ1osV0FBVSxPQUFPLEtBQUssU0FBUyxZQUFZO0FBQ3pDLFVBQU0sZ0JBQWdCO0tBQ3RCO1dBRUcsT0FBTztBQUNkLFdBQVEsTUFBTSw0QkFBNEIsTUFBTTtBQUNoRCxTQUFNLGdCQUFnQjs7S0FFdEI7QUFFSixTQUFRLEtBQUssVUFBVSxZQUFZO0FBQ2pDLFFBQU0sZ0JBQWdCO0dBQ3RCO0FBQ0YsU0FBUSxLQUFLLFdBQVcsWUFBWTtBQUNsQyxRQUFNLGdCQUFnQjtHQUN0QjtBQUVGLFdBQVUsSUFBSSxRQUFRLE1BQU0sS0FBVSxRQUFhO0FBQ2pELG1CQUFpQixJQUFJO0FBQ3JCLE1BQUksT0FBTyxJQUFJLENBQUMsS0FBSztHQUNyQjtBQUVGLFdBQVUsSUFBSSxJQUFJLE1BQU0sS0FBVSxRQUFhO0FBQzdDLG1CQUFpQixJQUFJO0FBQ3JCLE1BQUksS0FBSztHQUNQLElBQUk7R0FDSixRQUFRLFdBQVc7R0FDbkIsU0FBUyxXQUFXO0dBQ3BCLFFBQVEsVUFBVSxJQUFJLE9BQU8sVUFBVSxNQUFNLFVBQVU7R0FDdkQsV0FBVztJQUNULFFBQVE7SUFDUixNQUFNO0lBQ04sS0FBSyxXQUFXO0lBQ2pCO0dBQ0YsQ0FBQztHQUNGO0NBR0YsTUFBTSxtQkFBbUIsT0FBTyxLQUFVLFFBQWE7QUFDckQsbUJBQWlCLElBQUk7RUFDckIsTUFBTSxhQUFhLFVBQVUsSUFBSSxPQUFPLFVBQVU7QUFDbEQsTUFBSSxDQUFDLFdBQ0gsUUFBTyxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLDJCQUEyQixDQUFDO0FBR25FLE1BQUk7R0FDRixNQUFNLE1BQU0sVUFBVSxJQUFJLFFBQVEsT0FBTyxJQUFJO0dBQzdDLE1BQU0sYUFBYSxJQUFJLFFBQVEsS0FBSztJQUNsQyxRQUFRLElBQUk7SUFDWixTQUFTLElBQUk7SUFDYixNQUFNLElBQUksV0FBVyxTQUFTLElBQUksV0FBVyxTQUFTLE1BQU07SUFDNUQsUUFBUSxJQUFJLFdBQVcsU0FBUyxJQUFJLFdBQVcsU0FBUyxTQUFTO0lBQ2xFLENBQWdCO0dBRWpCLE1BQU0sU0FBUyxNQUFNLFdBQVcsT0FBTyxZQUFZO0lBQ2pELFFBQVE7SUFDUixTQUFTLEVBQUU7SUFDWixDQUFDO0FBRUYsT0FBSSxPQUFPLFVBQVU7QUFDbkIsUUFBSSxPQUFPLE9BQU8sU0FBUyxPQUFPO0FBQ2xDLFdBQU8sU0FBUyxRQUFRLFNBQVMsT0FBZSxRQUFnQjtBQUM5RCxTQUFJLFVBQVUsS0FBSyxNQUFNO01BQ3pCO0lBQ0YsTUFBTSxPQUFPLE1BQU0sT0FBTyxTQUFTLE1BQU07QUFDekMsUUFBSSxLQUFLLEtBQUs7U0FFZCxLQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssWUFBWTtXQUU1QixPQUFPO0FBQ2QsV0FBUSxNQUFNLGtCQUFrQixNQUFNO0FBQ3RDLE9BQUksT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQVEsTUFBZ0IsU0FBUyxDQUFDOzs7QUFJN0QsV0FBVSxJQUFJLElBQUksUUFBUSxpQkFBaUI7QUFDM0MsV0FBVSxJQUFJLElBQUksVUFBVSxpQkFBaUI7QUFFN0MsV0FBVSxJQUFJLElBQUksV0FBVyxVQUFVLEtBQUssT0FBTyxLQUFVLFFBQWE7QUFDeEUsbUJBQWlCLElBQUk7RUFDckIsTUFBTSxhQUFhLFVBQVUsSUFBSSxPQUFPLFVBQVU7QUFDbEQsTUFBSSxDQUFDLFdBQ0gsUUFBTyxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLDJCQUEyQixDQUFDO0FBR25FLE1BQUk7R0FDRixNQUFNLE1BQU0sVUFBVSxJQUFJLFFBQVEsT0FBTyxJQUFJO0dBQzdDLE1BQU0sYUFBYSxJQUFJLFFBQVEsS0FBSztJQUNsQyxRQUFRLElBQUk7SUFDWixTQUFTLElBQUk7SUFDYixNQUFNLElBQUksV0FBVyxTQUFTLElBQUksV0FBVyxTQUFTLE1BQU07SUFDNUQsUUFBUSxJQUFJLFdBQVcsU0FBUyxJQUFJLFdBQVcsU0FBUyxTQUFTO0lBQ2xFLENBQWdCO0dBRWpCLE1BQU0sU0FBUyxNQUFNLFdBQVcsT0FBTyxZQUFZO0lBQ2pELFFBQVEsV0FBVztJQUNuQixTQUFTLEVBQUU7SUFDWixDQUFDO0FBRUYsT0FBSSxPQUFPLFVBQVU7QUFDbkIsUUFBSSxPQUFPLE9BQU8sU0FBUyxPQUFPO0FBQ2xDLFdBQU8sU0FBUyxRQUFRLFNBQVMsT0FBZSxRQUFnQjtBQUM5RCxTQUFJLFVBQVUsS0FBSyxNQUFNO01BQ3pCO0lBQ0YsTUFBTSxPQUFPLE1BQU0sT0FBTyxTQUFTLE1BQU07QUFDekMsUUFBSSxLQUFLLEtBQUs7U0FFZCxLQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssWUFBWTtXQUU1QixPQUFPO0FBQ2QsV0FBUSxNQUFNLGNBQWMsTUFBTTtBQUNsQyxPQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFRLE1BQWdCLFNBQVMsQ0FBQzs7R0FFM0Q7Ozs7O0FDalFKLElBQWEsdUJBQWIsTUFBa0U7Q0FDaEUsT0FBTztDQUVQLFlBQVksQUFBUUMsVUFBOEIsRUFBRSxFQUFFO0VBQWxDOztDQUVwQixNQUFNLFVBQW9CO0VBRXhCLE1BQU0sYUFBYSxjQUFjLFNBQVMsUUFBUSxXQUFXLFFBQVEsS0FBSyxDQUFDO0VBQzNFLE1BQU0sWUFBWSxjQUFjLEtBQUssUUFBUSxpQkFBaUIsa0JBQWtCO0VBQ2hGLE1BQU0sT0FBTyxLQUFLLFFBQVEsUUFBUSxXQUFXLFFBQVE7QUFHckQsT0FBSyxrQkFBa0IsVUFBVSxXQUFXO0FBRzVDLE1BQUksQ0FBQyxTQUFTLFFBQVEsVUFDcEIsVUFBUyxRQUFRLFlBQVksRUFBRTtBQUlqQyxPQUFLLG1CQUFtQixVQUFVLFlBQVksV0FBVyxLQUFLO0FBRzlELE1BQUlDLHFCQUFPLFVBQVUsdUJBQXVCO0dBQzFDLE1BQU0sV0FBVztHQUNqQixVQUFVO0dBQ1YsZ0JBQWdCLENBQ2QsUUFBUSxRQUFRLHdDQUF3QyxDQUN6RDtHQUNELFNBQVMsRUFBRSxNQUFNLG1CQUFtQjtHQUNwQyxTQUFTLEVBQ1AsWUFBWSxrQkFDYjtHQUNELFFBQVEsd0JBQXdCLFdBQVc7R0FDNUMsQ0FBQyxDQUFDLE1BQU0sU0FBUzs7Q0FHcEIsQUFBUSxrQkFBa0IsVUFBb0IsWUFBaUI7RUFDN0QsTUFBTSxVQUFVLFNBQVMsUUFBUSxXQUFXLFFBQVEsS0FBSztBQUd6RCxNQUFJLENBQUMsU0FBUyxRQUFRLE9BQ3BCLFVBQVMsUUFBUSxTQUFTLEVBQUU7QUFFOUIsV0FBUyxRQUFRLE9BQU8sYUFBYSxXQUFXO0FBQ2hELFdBQVMsUUFBUSxPQUFPLGFBQWE7QUFDckMsV0FBUyxRQUFRLE9BQU8sT0FBT0Msa0JBQUssUUFBUSxTQUFTLE9BQU87QUFDNUQsV0FBUyxRQUFRLE9BQU8sUUFBUTtBQUNoQyxXQUFTLFFBQVEsT0FBTyxVQUFVLEVBQUUsTUFBTSxtQkFBbUI7QUFHN0QsTUFBSSxDQUFDLFNBQVMsUUFBUSxNQUNwQixVQUFTLFFBQVEsUUFBUSxFQUN2QixNQUFNLEVBQ0osUUFBUSxDQUFDLGNBQWMsRUFDeEIsRUFDRjtBQUlILE1BQUksQ0FBQyxTQUFTLFFBQVEsT0FDcEIsVUFBUyxRQUFRLFNBQVM7QUFHNUIsTUFBSSxDQUFDLFNBQVMsUUFBUSxLQUNwQixVQUFTLFFBQVEsT0FBTyxRQUFRLElBQUksYUFBYSxnQkFBZ0IsZ0JBQWdCO0FBSW5GLE1BQUksQ0FBQyxTQUFTLFFBQVEsUUFDcEIsVUFBUyxRQUFRLFVBQVU7QUFJN0IsTUFBSSxDQUFDLFNBQVMsUUFBUSxzQkFDcEIsVUFBUyxRQUFRLHdCQUF3QixFQUN2QyxPQUFPLFFBQ1I7QUFJSCxPQUFLLHVCQUF1QixTQUFTO0FBR3JDLE1BQUksQ0FBQyxTQUFTLFFBQVEsUUFDcEIsVUFBUyxRQUFRLFVBQVUsRUFBRTtBQUUvQixXQUFTLFFBQVEsUUFBUSxhQUFhO0dBQUM7R0FBTztHQUFRO0dBQU07O0NBRzlELEFBQVEsdUJBQXVCLFVBQW9CO0FBQ2pELE1BQUksQ0FBQyxTQUFTLFFBQVEsT0FDcEIsVUFBUyxRQUFRLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRTtBQUd6QyxNQUFJLENBQUMsU0FBUyxRQUFRLE9BQU8sTUFDM0IsVUFBUyxRQUFRLE9BQU8sUUFBUSxFQUFFO0FBYXBDLE1BQUksQ0FUZ0IsU0FBUyxRQUFRLE9BQU8sTUFBTSxNQUFNLFNBQ3RELE9BQU8sU0FBUyxZQUNoQixTQUFTLFFBQ1QsVUFBVSxRQUNWLEtBQUssZ0JBQWdCLFVBQ3JCLEtBQUssS0FBSyxLQUFLLE1BQU0sQ0FDdEIsQ0FJQyxVQUFTLFFBQVEsT0FBTyxNQUFNLEtBQUs7R0FDakMsTUFBTTtHQUNOLEtBQUs7R0FDTCxTQUFTO0dBQ1YsQ0FBQzs7Q0FJTixBQUFRLG1CQUFtQixVQUFvQixZQUFpQixXQUFnQixNQUFjO0FBQzVGLE1BQUksQ0FBQyxTQUFTLFFBQVEsVUFDcEI7RUFHRixNQUFNLFVBQVUsU0FBUyxRQUFRLFdBQVcsUUFBUSxLQUFLO0VBQ3pELE1BQU0sZ0JBQWdCLFNBQVMsUUFBUSxVQUFVO0FBRWpELFdBQVMsUUFBUSxVQUFVLE9BQU87QUFDbEMsV0FBUyxRQUFRLFVBQVUsU0FBU0Esa0JBQUssS0FBSyxTQUFTLE9BQU87QUFDOUQsV0FBUyxRQUFRLFVBQVUsTUFBTTtBQUNqQyxXQUFTLFFBQVEsVUFBVSxnQkFBZ0IsRUFBRSxhQUFhLE1BQU07QUFDaEUsV0FBUyxRQUFRLFVBQVUsVUFBVTtHQUNuQywrQkFBK0I7R0FDL0IsZ0NBQWdDO0dBQ2hDLGdDQUFnQztHQUNqQztBQUdELFdBQVMsUUFBUSxVQUFVLFNBQVM7R0FDbEMsU0FBUztHQUNULFNBQVM7SUFDUCxVQUFVO0lBQ1YsUUFBUTtJQUNUO0dBQ0Y7QUFFRCxXQUFTLFFBQVEsVUFBVSxvQkFBb0IsYUFBYSxjQUFjO0FBQ3hFLHlCQUFzQixXQUFXLFlBQVksV0FBVyxLQUFLO0FBQzdELFVBQU8sZ0JBQWdCLGNBQWMsYUFBYSxVQUFVLEdBQUcifQ==
|
|
362
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwibmFtZXMiOlsicGF0aCIsImZzIiwiZ2V0Tm9ybWFsaXplZFJlbW90ZU5hbWUiLCJtb2R1bGUiLCJoYW5kbGVyczogeyBycGM6IGFueSwgYXBpOiBhbnkgfSIsImNsZWFudXA6ICgoKSA9PiBQcm9taXNlPHZvaWQ+KSB8IG51bGwiLCJsaW5lczogc3RyaW5nW10iLCJvcHRpb25zOiBFdmVyeVBsdWdpbk9wdGlvbnMiLCJyc3BhY2siLCJwYXRoIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay91dGlscy50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svbW9kdWxlLWZlZGVyYXRpb24udHMiLCIuLi8uLi8uLi9zcmMvYnVpbGQvcnNwYWNrL2Rldi1zZXJ2ZXItbWlkZGxld2FyZS50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svcGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBnZXROb3JtYWxpemVkUmVtb3RlTmFtZSB9IGZyb20gJ2V2ZXJ5LXBsdWdpbi9ub3JtYWxpemUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgbm9ybWFsaXplZE5hbWU6IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBwZWVyRGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luSW5mbyhjb250ZXh0OiBzdHJpbmcpOiBQbHVnaW5JbmZvIHtcbiAgY29uc3QgcGtnUGF0aCA9IHBhdGguam9pbihjb250ZXh0LCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBrZ1BhdGgsICd1dGYtOCcpKTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICAgIG5vcm1hbGl6ZWROYW1lOiBnZXROb3JtYWxpemVkUmVtb3RlTmFtZShwa2cubmFtZSksXG4gICAgZGVwZW5kZW5jaWVzOiBwa2cuZGVwZW5kZW5jaWVzIHx8IHt9LFxuICAgIHBlZXJEZXBlbmRlbmNpZXM6IHBrZy5wZWVyRGVwZW5kZW5jaWVzIHx8IHt9LFxuICB9O1xufVxuXG5jb25zdCBsb2FkZWRNb2R1bGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRGV2Q29uZmlnKGRldkNvbmZpZ1BhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKGRldkNvbmZpZ1BhdGgpO1xuICAgIFxuICAgIGlmIChsb2FkZWRNb2R1bGVzLmhhcyhmdWxsUGF0aCkpIHtcbiAgICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW2Z1bGxQYXRoXTtcbiAgICAgIGNvbnN0IGRpclBhdGggPSBwYXRoLmRpcm5hbWUoZnVsbFBhdGgpO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVxdWlyZS5jYWNoZSkpIHtcbiAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKGRpclBhdGgpICYmIGtleSAhPT0gZnVsbFBhdGgpIHtcbiAgICAgICAgICBkZWxldGUgcmVxdWlyZS5jYWNoZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IG1vZHVsZSA9IHJlcXVpcmUoZnVsbFBhdGgpLmRlZmF1bHQ7XG4gICAgbG9hZGVkTW9kdWxlcy5hZGQoZnVsbFBhdGgpO1xuICAgIHJldHVybiBtb2R1bGU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS53YXJuKGBDb3VsZCBub3QgbG9hZCBkZXYgY29uZmlnIGZyb20gJHtkZXZDb25maWdQYXRofTpgLCAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwRGV2Q29uZmlnKCkge1xuICBmb3IgKGNvbnN0IG1vZHVsZVBhdGggb2YgbG9hZGVkTW9kdWxlcykge1xuICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW21vZHVsZVBhdGhdO1xuICB9XG4gIGxvYWRlZE1vZHVsZXMuY2xlYXIoKTtcbn1cbiIsImltcG9ydCB0eXBlIHsgUGx1Z2luSW5mbyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTaGFyZWREZXBlbmRlbmNpZXMocGx1Z2luSW5mbzogUGx1Z2luSW5mbykge1xuICAvLyBHZXQgZXZlcnktcGx1Z2luIHBhY2thZ2UgaW5mbyBmb3IgdmVyc2lvbiBjb25zdHJhaW50c1xuICBjb25zdCBldmVyeVBsdWdpblBrZyA9IHJlcXVpcmUoJ2V2ZXJ5LXBsdWdpbi9wYWNrYWdlLmpzb24nKTtcblxuICByZXR1cm4ge1xuICAgICdldmVyeS1wbHVnaW4nOiB7XG4gICAgICB2ZXJzaW9uOiBldmVyeVBsdWdpblBrZy52ZXJzaW9uLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy52ZXJzaW9ufWAsXG4gICAgICBzdHJpY3RWZXJzaW9uOiBmYWxzZSxcbiAgICAgIGVhZ2VyOiBmYWxzZSxcbiAgICB9LFxuICAgIGVmZmVjdDoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdCxcbiAgICAgIHNpbmdsZXRvbjogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkVmVyc2lvbjogYCR7ZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdH1gLFxuICAgICAgc3RyaWN0VmVyc2lvbjogZmFsc2UsXG4gICAgICBlYWdlcjogZmFsc2UsXG4gICAgfSxcbiAgICB6b2Q6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2QsXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2R9YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL2NvbnRyYWN0Jzoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzWydAb3JwYy9jb250cmFjdCddLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXNbJ0BvcnBjL2NvbnRyYWN0J119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL3NlcnZlcic6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ10sXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gIH07XG59XG4iLCJpbXBvcnQgdHlwZSB7IFBsdWdpbkluZm8gfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgY29yc0hlYWRlcnMgPSB7XG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiAnKicsXG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnOiAnWC1SZXF1ZXN0ZWQtV2l0aCwgY29udGVudC10eXBlLCBBdXRob3JpemF0aW9uJ1xufTtcblxuY29uc3QgYXBwbHlDb3JzSGVhZGVycyA9IChyZXM6IGFueSkgPT4ge1xuICBPYmplY3QuZW50cmllcyhjb3JzSGVhZGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgfSk7XG59O1xuXG5jb25zdCBub3JtYWxpemVQcmVmaXggPSAocHJlZml4Pzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFwcmVmaXgpIHJldHVybiAnJztcbiAgY29uc3QgY2xlYW5lZCA9IHByZWZpeC5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCAnJyk7XG4gIHJldHVybiBjbGVhbmVkID8gYC8ke2NsZWFuZWR9YCA6ICcnO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXI6IGFueSwgcGx1Z2luSW5mbzogUGx1Z2luSW5mbywgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICBjb25zdCBycGNQcmVmaXggPSBub3JtYWxpemVQcmVmaXgoZGV2Q29uZmlnPy5wcmVmaXgpO1xuICBsZXQgaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0gPSB7IHJwYzogbnVsbCwgYXBpOiBudWxsIH07XG4gIGxldCBjbGVhbnVwOiAoKCkgPT4gUHJvbWlzZTx2b2lkPikgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBwZXJmb3JtQ2xlYW51cCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoY2xlYW51cCkge1xuICAgICAgYXdhaXQgY2xlYW51cCgpO1xuICAgICAgY2xlYW51cCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGNyZWF0ZVBsdWdpblJ1bnRpbWUgfSA9IGF3YWl0IGltcG9ydCgnZXZlcnktcGx1Z2luJyk7XG4gICAgICBjb25zdCB7IFJQQ0hhbmRsZXIgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyL2ZldGNoJyk7XG4gICAgICBjb25zdCB7IG9uRXJyb3IgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyJyk7XG4gICAgICBjb25zdCB7IE9wZW5BUElIYW5kbGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL29wZW5hcGkvZmV0Y2gnKTtcbiAgICAgIGNvbnN0IHsgT3BlbkFQSVJlZmVyZW5jZVBsdWdpbiB9ID0gYXdhaXQgaW1wb3J0KCdAb3JwYy9vcGVuYXBpL3BsdWdpbnMnKTtcbiAgICAgIGNvbnN0IHsgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL3pvZC96b2Q0Jyk7XG5cbiAgICAgIGNvbnN0IHBsdWdpbklkID0gZGV2Q29uZmlnPy5wbHVnaW5JZCB8fCBwbHVnaW5JbmZvLm5vcm1hbGl6ZWROYW1lO1xuXG4gICAgICBjb25zdCBydW50aW1lID0gY3JlYXRlUGx1Z2luUnVudGltZSh7XG4gICAgICAgIHJlZ2lzdHJ5OiB7XG4gICAgICAgICAgW3BsdWdpbklkXToge1xuICAgICAgICAgICAgcmVtb3RlVXJsOiBgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L3JlbW90ZUVudHJ5LmpzYFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGxvYWRlZCA9IGF3YWl0IHJ1bnRpbWUudXNlUGx1Z2luKHBsdWdpbklkLCBkZXZDb25maWc/LmNvbmZpZyk7XG5cbiAgICAgIGNsZWFudXAgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkZWQgJiYgdHlwZW9mIChsb2FkZWQgYXMgYW55KS5kaXNwb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKGxvYWRlZCBhcyBhbnkpLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocnVudGltZSAmJiB0eXBlb2YgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwKCk7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlcnMucnBjID0gbnVsbDtcbiAgICAgICAgaGFuZGxlcnMuYXBpID0gbnVsbDtcbiAgICAgICAgaWYgKGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmb3JtYXRFcnJvciA9IChlcnJvcjogYW55LCBjb250ZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW2BcXG7wn5S0ICR7Y29udGV4dH0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcid9YF07XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/Lmlzc3VlcyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmNhdXNlLmlzc3VlcykpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OLIFZhbGlkYXRpb24gSXNzdWVzOicpO1xuICAgICAgICAgIGVycm9yLmNhdXNlLmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGAgICR7aW5kZXggKyAxfS4gJHtpc3N1ZS5wYXRoPy5qb2luKCcuJykgfHwgJ3Jvb3QnfWApO1xuICAgICAgICAgICAgbGluZXMucHVzaChgICAgICDilJzilIAgQ29kZTogJHtpc3N1ZS5jb2RlIHx8ICd1bmtub3duJ31gKTtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgICAg4pSc4pSAIE1lc3NhZ2U6ICR7aXNzdWUubWVzc2FnZSB8fCAnTm8gbWVzc2FnZSd9YCk7XG4gICAgICAgICAgICBpZiAoaXNzdWUuZXhwZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUnOKUgCBFeHBlY3RlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5leHBlY3RlZCl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNzdWUucmVjZWl2ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCBSZWNlaXZlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5yZWNlaXZlZCl9YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCAoZW5kKWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuZGF0YSAmJiB0eXBlb2YgZXJyb3IuZGF0YSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoZXJyb3IuZGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goJ1xcbvCfk4ogRXJyb3IgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/LmRhdGEpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OmIFJlcXVlc3QgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmNhdXNlLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuY2F1c2UuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY29kZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYFxcbuKaoO+4jyAgRXJyb3IgQ29kZTogJHtlcnJvci5jb2RlfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICAgICAgbGluZXMucHVzaChg8J+TjSBTdGF0dXM6ICR7ZXJyb3Iuc3RhdHVzfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihsaW5lcy5qb2luKCdcXG4nKSk7XG4gICAgICB9O1xuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG5vIHR5cGVcbiAgICAgIGhhbmRsZXJzLnJwYyA9IG5ldyBSUENIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgaW50ZXJjZXB0b3JzOiBbXG4gICAgICAgICAgb25FcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgZm9ybWF0RXJyb3IoZXJyb3IsICdSUEMnKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igbm8gdHlwZVxuICAgICAgaGFuZGxlcnMuYXBpID0gbmV3IE9wZW5BUElIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgIG5ldyBPcGVuQVBJUmVmZXJlbmNlUGx1Z2luKHtcbiAgICAgICAgICAgIHNjaGVtYUNvbnZlcnRlcnM6IFtuZXcgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyKCldLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBpbnRlcmNlcHRvcnM6IFtcbiAgICAgICAgICBvbkVycm9yKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICBmb3JtYXRFcnJvcihlcnJvciwgJ09wZW5BUEknKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKGDila3ilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBgKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIOKchSBQbHVnaW4gZGV2IHNlcnZlciByZWFkeTogYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5OhIFJQQzogICAgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2FwaS9ycGMke3JwY1ByZWZpeH1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIPCfk5YgRG9jczogICBodHRwOi8vbG9jYWxob3N0OiR7cG9ydH0vYXBpYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5KaIEhlYWx0aDogaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2ApO1xuICAgICAgY29uc29sZS5sb2coYOKVsOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgGApO1xuXG4gICAgICBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycyA9IGhhbmRsZXJzO1xuXG4gICAgICBpZiAoZGV2U2VydmVyLnNlcnZlcikge1xuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLm9uY2UoJ2Nsb3NlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCfinYwgRmFpbGVkIHRvIGxvYWQgcGx1Z2luOicsIGVycm9yKTtcbiAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgfVxuICB9KSgpO1xuXG4gIHByb2Nlc3Mub25jZSgnU0lHSU5UJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gIH0pO1xuICBwcm9jZXNzLm9uY2UoJ1NJR1RFUk0nLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcbiAgfSk7XG5cbiAgZGV2U2VydmVyLmFwcC5vcHRpb25zKCcqJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuc3RhdHVzKDIwMCkuZW5kKCk7XG4gIH0pO1xuXG4gIGRldlNlcnZlci5hcHAuZ2V0KCcvJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBsdWdpbjogcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZSxcbiAgICAgIHZlcnNpb246IHBsdWdpbkluZm8udmVyc2lvbixcbiAgICAgIHN0YXR1czogZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnM/LnJwYyA/ICdyZWFkeScgOiAnbG9hZGluZycsXG4gICAgICBlbmRwb2ludHM6IHtcbiAgICAgICAgaGVhbHRoOiAnLycsXG4gICAgICAgIGRvY3M6ICcvYXBpJyxcbiAgICAgICAgcnBjOiBgL2FwaS9ycGMke3JwY1ByZWZpeH1gXG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBhbmQgUkVTVCBlbmRwb2ludHMgYXQgL2FwaSBhbmQgL2FwaS8qXG4gIGNvbnN0IGhhbmRsZUFwaVJlcXVlc3QgPSBhc3luYyAocmVxOiBhbnksIHJlczogYW55KSA9PiB7XG4gICAgYXBwbHlDb3JzSGVhZGVycyhyZXMpO1xuICAgIGNvbnN0IGFwaUhhbmRsZXIgPSBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycz8uYXBpO1xuICAgIGlmICghYXBpSGFuZGxlcikge1xuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAzKS5qc29uKHsgZXJyb3I6ICdQbHVnaW4gc3RpbGwgbG9hZGluZy4uLicgfSk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IGBodHRwOi8vJHtyZXEuaGVhZGVycy5ob3N0fSR7cmVxLnVybH1gO1xuICAgICAgY29uc3Qgd2ViUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwge1xuICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLFxuICAgICAgICBib2R5OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyByZXEgOiB1bmRlZmluZWQsXG4gICAgICAgIGR1cGxleDogcmVxLm1ldGhvZCAhPT0gJ0dFVCcgJiYgcmVxLm1ldGhvZCAhPT0gJ0hFQUQnID8gJ2hhbGYnIDogdW5kZWZpbmVkXG4gICAgICB9IGFzIFJlcXVlc3RJbml0KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBpSGFuZGxlci5oYW5kbGUod2ViUmVxdWVzdCwge1xuICAgICAgICBwcmVmaXg6ICcvYXBpJyxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignT3BlbkFQSSBlcnJvcjonLCBlcnJvcik7XG4gICAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7IGVycm9yOiAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UgfSk7XG4gICAgfVxuICB9O1xuXG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpJywgaGFuZGxlQXBpUmVxdWVzdCk7XG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpLyonLCBoYW5kbGVBcGlSZXF1ZXN0KTtcblxuICBkZXZTZXJ2ZXIuYXBwLmFsbChgL2FwaS9ycGMke3JwY1ByZWZpeH0vKmAsIGFzeW5jIChyZXE6IGFueSwgcmVzOiBhbnkpID0+IHtcbiAgICBhcHBseUNvcnNIZWFkZXJzKHJlcyk7XG4gICAgY29uc3QgcnBjSGFuZGxlciA9IGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzPy5ycGM7XG4gICAgaWYgKCFycGNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDMpLmpzb24oeyBlcnJvcjogJ1BsdWdpbiBzdGlsbCBsb2FkaW5nLi4uJyB9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9JHtyZXEudXJsfWA7XG4gICAgICBjb25zdCB3ZWJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6IHJlcS5tZXRob2QgIT09ICdHRVQnICYmIHJlcS5tZXRob2QgIT09ICdIRUFEJyA/IHJlcSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZHVwbGV4OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyAnaGFsZicgOiB1bmRlZmluZWRcbiAgICAgIH0gYXMgUmVxdWVzdEluaXQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGNIYW5kbGVyLmhhbmRsZSh3ZWJSZXF1ZXN0LCB7XG4gICAgICAgIHByZWZpeDogYC9hcGkvcnBjJHtycGNQcmVmaXh9YCxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignUlBDIGVycm9yOicsIGVycm9yKTtcbiAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHsgZXJyb3I6IChlcnJvciBhcyBFcnJvcikubWVzc2FnZSB9KTtcbiAgICB9XG4gIH0pO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBDb21waWxlciwgUnNwYWNrUGx1Z2luSW5zdGFuY2UgfSBmcm9tICdAcnNwYWNrL2NvcmUnO1xuaW1wb3J0IHsgcnNwYWNrIH0gZnJvbSAnQHJzcGFjay9jb3JlJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBnZXRQbHVnaW5JbmZvIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBsb2FkRGV2Q29uZmlnIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBidWlsZFNoYXJlZERlcGVuZGVuY2llcyB9IGZyb20gJy4vbW9kdWxlLWZlZGVyYXRpb24nO1xuaW1wb3J0IHsgc2V0dXBQbHVnaW5NaWRkbGV3YXJlIH0gZnJvbSAnLi9kZXYtc2VydmVyLW1pZGRsZXdhcmUnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlcnlQbHVnaW5PcHRpb25zIHtcbiAgZGV2Q29uZmlnUGF0aD86IHN0cmluZzsgIC8vIGRlZmF1bHRzIHRvICcuL3BsdWdpbi5kZXYudHMnXG4gIHBvcnQ/OiBudW1iZXI7ICAgICAgICAgICAvLyBvdmVycmlkZSBwbHVnaW4uZGV2LnRzIHBvcnRcbiAgcGx1Z2luSWQ/OiBzdHJpbmc7ICAgICAgIC8vIG92ZXJyaWRlIGF1dG8tZGV0ZWN0ZWRcbn1cblxuZXhwb3J0IGNsYXNzIEV2ZXJ5UGx1Z2luRGV2U2VydmVyIGltcGxlbWVudHMgUnNwYWNrUGx1Z2luSW5zdGFuY2Uge1xuICBuYW1lID0gJ0V2ZXJ5UGx1Z2luRGV2U2VydmVyJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM6IEV2ZXJ5UGx1Z2luT3B0aW9ucyA9IHt9KSB7fVxuXG4gIGFwcGx5KGNvbXBpbGVyOiBDb21waWxlcikge1xuICAgIC8vIExvYWQgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IHBsdWdpbkluZm8gPSBnZXRQbHVnaW5JbmZvKGNvbXBpbGVyLm9wdGlvbnMuY29udGV4dCB8fCBwcm9jZXNzLmN3ZCgpKTtcbiAgICBjb25zdCBkZXZDb25maWcgPSBsb2FkRGV2Q29uZmlnKHRoaXMub3B0aW9ucy5kZXZDb25maWdQYXRoIHx8ICcuL3BsdWdpbi5kZXYudHMnKTtcbiAgICBjb25zdCBwb3J0ID0gdGhpcy5vcHRpb25zLnBvcnQgfHwgZGV2Q29uZmlnPy5wb3J0IHx8IDM5OTk7XG5cbiAgICAvLyBDb25maWd1cmUgZGVmYXVsdHMgaW1tZWRpYXRlbHkgKG5vIGhvb2tzIG5lZWRlZClcbiAgICB0aGlzLmNvbmZpZ3VyZURlZmF1bHRzKGNvbXBpbGVyLCBwbHVnaW5JbmZvKTtcblxuICAgIC8vIEluaXRpYWxpemUgZGV2U2VydmVyIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlciA9IHt9O1xuICAgIH1cblxuICAgIC8vIENvbmZpZ3VyZSBkZXYgc2VydmVyXG4gICAgdGhpcy5jb25maWd1cmVEZXZTZXJ2ZXIoY29tcGlsZXIsIHBsdWdpbkluZm8sIGRldkNvbmZpZywgcG9ydCk7XG5cbiAgICAvLyBBcHBseSBNb2R1bGUgRmVkZXJhdGlvbiBwbHVnaW5cbiAgICBuZXcgcnNwYWNrLmNvbnRhaW5lci5Nb2R1bGVGZWRlcmF0aW9uUGx1Z2luKHtcbiAgICAgIG5hbWU6IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWUsXG4gICAgICBmaWxlbmFtZTogJ3JlbW90ZUVudHJ5LmpzJyxcbiAgICAgIHJ1bnRpbWVQbHVnaW5zOiBbXG4gICAgICAgIHJlcXVpcmUucmVzb2x2ZSgnQG1vZHVsZS1mZWRlcmF0aW9uL25vZGUvcnVudGltZVBsdWdpbicpLFxuICAgICAgXSxcbiAgICAgIGxpYnJhcnk6IHsgdHlwZTogJ2NvbW1vbmpzLW1vZHVsZScgfSxcbiAgICAgIGV4cG9zZXM6IHtcbiAgICAgICAgJy4vcGx1Z2luJzogJy4vc3JjL2luZGV4LnRzJyxcbiAgICAgIH0sXG4gICAgICBzaGFyZWQ6IGJ1aWxkU2hhcmVkRGVwZW5kZW5jaWVzKHBsdWdpbkluZm8pLFxuICAgIH0pLmFwcGx5KGNvbXBpbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRGVmYXVsdHMoY29tcGlsZXI6IENvbXBpbGVyLCBwbHVnaW5JbmZvOiBhbnkpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gY29tcGlsZXIub3B0aW9ucy5jb250ZXh0IHx8IHByb2Nlc3MuY3dkKCk7XG5cbiAgICAvLyBDb25maWd1cmUgb3V0cHV0IGRlZmF1bHRzXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm91dHB1dCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQgPSB7fTtcbiAgICB9XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQudW5pcXVlTmFtZSA9IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQucHVibGljUGF0aCA9ICdhdXRvJztcbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC5wYXRoID0gcGF0aC5yZXNvbHZlKGNvbnRleHQsICdkaXN0Jyk7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQuY2xlYW4gPSB0cnVlO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0LmxpYnJhcnkgPSB7IHR5cGU6ICdjb21tb25qcy1tb2R1bGUnIH07XG5cbiAgICAvLyBDb25maWd1cmUgdGFyZ2V0IGFuZCBtb2RlIGRlZmF1bHRzXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLnRhcmdldCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy50YXJnZXQgPSAnYXN5bmMtbm9kZSc7XG4gICAgfVxuXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm1vZGUpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnID8gJ2RldmVsb3BtZW50JyA6ICdwcm9kdWN0aW9uJztcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgZGV2dG9vbFxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5kZXZ0b29sKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmRldnRvb2wgPSAnc291cmNlLW1hcCc7XG4gICAgfVxuXG4gICAgLy8gU3VwcHJlc3MgdmVyYm9zZSBpbmZyYXN0cnVjdHVyZSBsb2dnaW5nXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmluZnJhc3RydWN0dXJlTG9nZ2luZykge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5pbmZyYXN0cnVjdHVyZUxvZ2dpbmcgPSB7XG4gICAgICAgIGxldmVsOiAnd2FybicsICAvLyBPbmx5IHNob3cgd2FybmluZ3MgYW5kIGVycm9yc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgbW9kdWxlIHJ1bGVzIC0gZW5zdXJlIFR5cGVTY3JpcHQgbG9hZGVyIGlzIHByZXNlbnRcbiAgICB0aGlzLmVuc3VyZVR5cGVTY3JpcHRMb2FkZXIoY29tcGlsZXIpO1xuXG4gICAgLy8gQ29uZmlndXJlIHJlc29sdmUgZXh0ZW5zaW9uc1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLnJlc29sdmUgPSB7fTtcbiAgICB9XG4gICAgY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlLmV4dGVuc2lvbnMgPSBbJy4uLicsICcudHN4JywgJy50cyddO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVUeXBlU2NyaXB0TG9hZGVyKGNvbXBpbGVyOiBDb21waWxlcikge1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2R1bGUpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlID0geyBydWxlczogW10gfSBhcyBhbnk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcykge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5tb2R1bGUucnVsZXMgPSBbXTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBUeXBlU2NyaXB0IGxvYWRlciBpcyBhbHJlYWR5IGNvbmZpZ3VyZWRcbiAgICBjb25zdCBoYXNUc0xvYWRlciA9IGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzLnNvbWUoKHJ1bGU6IGFueSkgPT5cbiAgICAgIHR5cGVvZiBydWxlID09PSAnb2JqZWN0JyAmJlxuICAgICAgcnVsZSAhPT0gbnVsbCAmJlxuICAgICAgJ3Rlc3QnIGluIHJ1bGUgJiZcbiAgICAgIHJ1bGUudGVzdCBpbnN0YW5jZW9mIFJlZ0V4cCAmJlxuICAgICAgcnVsZS50ZXN0LnRlc3QoJy50cycpXG4gICAgKTtcblxuICAgIC8vIEFkZCBUeXBlU2NyaXB0IGxvYWRlciBpZiBub3QgcHJlc2VudFxuICAgIGlmICghaGFzVHNMb2FkZXIpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzLnB1c2goe1xuICAgICAgICB0ZXN0OiAvXFwudHN4PyQvLFxuICAgICAgICB1c2U6ICdidWlsdGluOnN3Yy1sb2FkZXInLFxuICAgICAgICBleGNsdWRlOiAvbm9kZV9tb2R1bGVzLyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRGV2U2VydmVyKGNvbXBpbGVyOiBDb21waWxlciwgcGx1Z2luSW5mbzogYW55LCBkZXZDb25maWc6IGFueSwgcG9ydDogbnVtYmVyKSB7XG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmRldlNlcnZlcikge1xuICAgICAgcmV0dXJuOyAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuIGR1ZSB0byBjaGVjayBpbiBhcHBseSgpXG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IGNvbXBpbGVyLm9wdGlvbnMuY29udGV4dCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IG9yaWdpbmFsU2V0dXAgPSBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5zZXR1cE1pZGRsZXdhcmVzO1xuXG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIucG9ydCA9IHBvcnQ7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuc3RhdGljID0gcGF0aC5qb2luKGNvbnRleHQsICdkaXN0Jyk7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuaG90ID0gdHJ1ZTtcbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5kZXZNaWRkbGV3YXJlID0geyB3cml0ZVRvRGlzazogdHJ1ZSB9O1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmhlYWRlcnMgPSB7XG4gICAgICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogJyonLFxuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnOiAnR0VULCBQT1NULCBQVVQsIERFTEVURSwgUEFUQ0gsIE9QVElPTlMnLFxuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnOiAnWC1SZXF1ZXN0ZWQtV2l0aCwgY29udGVudC10eXBlLCBBdXRob3JpemF0aW9uJyxcbiAgICB9O1xuXG4gICAgLy8gU3VwcHJlc3MgdmVyYm9zZSBsb2dnaW5nXG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuY2xpZW50ID0ge1xuICAgICAgbG9nZ2luZzogJ3dhcm4nLCAgLy8gT25seSBzaG93IHdhcm5pbmdzIGFuZCBlcnJvcnNcbiAgICAgIG92ZXJsYXk6IHtcbiAgICAgICAgd2FybmluZ3M6IGZhbHNlLCAgLy8gRG9uJ3Qgc2hvdyB3YXJuaW5nIG92ZXJsYXlcbiAgICAgICAgZXJyb3JzOiB0cnVlLCAgICAgLy8gU3RpbGwgc2hvdyBlcnJvcnNcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnNldHVwTWlkZGxld2FyZXMgPSAobWlkZGxld2FyZXMsIGRldlNlcnZlcikgPT4ge1xuICAgICAgc2V0dXBQbHVnaW5NaWRkbGV3YXJlKGRldlNlcnZlciwgcGx1Z2luSW5mbywgZGV2Q29uZmlnLCBwb3J0KTtcbiAgICAgIHJldHVybiBvcmlnaW5hbFNldHVwID8gb3JpZ2luYWxTZXR1cChtaWRkbGV3YXJlcywgZGV2U2VydmVyKSA6IG1pZGRsZXdhcmVzO1xuICAgIH07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQVlBLFNBQWdCLGNBQWMsU0FBNkI7Q0FDekQsTUFBTSxVQUFVQSxrQkFBSyxLQUFLLFNBQVMsZUFBZTtDQUNsRCxNQUFNLE1BQU0sS0FBSyxNQUFNQyxnQkFBRyxhQUFhLFNBQVMsUUFBUSxDQUFDO0FBRXpELFFBQU87RUFDTCxNQUFNLElBQUk7RUFDVixTQUFTLElBQUk7RUFDYixnQkFBZ0JDLDBDQUF3QixJQUFJLEtBQUs7RUFDakQsY0FBYyxJQUFJLGdCQUFnQixFQUFFO0VBQ3BDLGtCQUFrQixJQUFJLG9CQUFvQixFQUFFO0VBQzdDOztBQUdILE1BQU0sZ0NBQWdCLElBQUksS0FBYTtBQUV2QyxTQUFnQixjQUFjLGVBQXVCO0FBQ25ELEtBQUk7RUFDRixNQUFNLFdBQVdGLGtCQUFLLFFBQVEsY0FBYztBQUU1QyxNQUFJLGNBQWMsSUFBSSxTQUFTLEVBQUU7QUFDL0IsVUFBTyxRQUFRLE1BQU07R0FDckIsTUFBTSxVQUFVQSxrQkFBSyxRQUFRLFNBQVM7QUFDdEMsUUFBSyxNQUFNLE9BQU8sT0FBTyxLQUFLLFFBQVEsTUFBTSxDQUMx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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as __require } from "../../chunk-QQAxy9l9.mjs";
|
|
2
2
|
import { t as getNormalizedRemoteName } from "../../normalize-D7nae0Hn.mjs";
|
|
3
|
-
import { t as require_package } from "../../package-
|
|
3
|
+
import { t as require_package } from "../../package-WZ0vKAyb.mjs";
|
|
4
4
|
import { rspack } from "@rspack/core";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import fs from "node:fs";
|
|
@@ -307,7 +307,6 @@ var EveryPluginDevServer = class {
|
|
|
307
307
|
compiler.options.output.path = path.resolve(context, "dist");
|
|
308
308
|
compiler.options.output.clean = true;
|
|
309
309
|
compiler.options.output.library = { type: "commonjs-module" };
|
|
310
|
-
if (!compiler.options.entry) compiler.options.entry = { main: { import: ["./src/index"] } };
|
|
311
310
|
if (!compiler.options.target) compiler.options.target = "async-node";
|
|
312
311
|
if (!compiler.options.mode) compiler.options.mode = process.env.NODE_ENV === "development" ? "development" : "production";
|
|
313
312
|
if (!compiler.options.devtool) compiler.options.devtool = "source-map";
|
|
@@ -358,4 +357,4 @@ var EveryPluginDevServer = class {
|
|
|
358
357
|
|
|
359
358
|
//#endregion
|
|
360
359
|
export { EveryPluginDevServer };
|
|
361
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwibmFtZXMiOlsiaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0iLCJjbGVhbnVwOiAoKCkgPT4gUHJvbWlzZTx2b2lkPikgfCBudWxsIiwibGluZXM6IHN0cmluZ1tdIiwib3B0aW9uczogRXZlcnlQbHVnaW5PcHRpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay91dGlscy50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svbW9kdWxlLWZlZGVyYXRpb24udHMiLCIuLi8uLi8uLi9zcmMvYnVpbGQvcnNwYWNrL2Rldi1zZXJ2ZXItbWlkZGxld2FyZS50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svcGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBnZXROb3JtYWxpemVkUmVtb3RlTmFtZSB9IGZyb20gJ2V2ZXJ5LXBsdWdpbi9ub3JtYWxpemUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgbm9ybWFsaXplZE5hbWU6IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBwZWVyRGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luSW5mbyhjb250ZXh0OiBzdHJpbmcpOiBQbHVnaW5JbmZvIHtcbiAgY29uc3QgcGtnUGF0aCA9IHBhdGguam9pbihjb250ZXh0LCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBrZ1BhdGgsICd1dGYtOCcpKTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICAgIG5vcm1hbGl6ZWROYW1lOiBnZXROb3JtYWxpemVkUmVtb3RlTmFtZShwa2cubmFtZSksXG4gICAgZGVwZW5kZW5jaWVzOiBwa2cuZGVwZW5kZW5jaWVzIHx8IHt9LFxuICAgIHBlZXJEZXBlbmRlbmNpZXM6IHBrZy5wZWVyRGVwZW5kZW5jaWVzIHx8IHt9LFxuICB9O1xufVxuXG5jb25zdCBsb2FkZWRNb2R1bGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRGV2Q29uZmlnKGRldkNvbmZpZ1BhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKGRldkNvbmZpZ1BhdGgpO1xuICAgIFxuICAgIGlmIChsb2FkZWRNb2R1bGVzLmhhcyhmdWxsUGF0aCkpIHtcbiAgICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW2Z1bGxQYXRoXTtcbiAgICAgIGNvbnN0IGRpclBhdGggPSBwYXRoLmRpcm5hbWUoZnVsbFBhdGgpO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVxdWlyZS5jYWNoZSkpIHtcbiAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKGRpclBhdGgpICYmIGtleSAhPT0gZnVsbFBhdGgpIHtcbiAgICAgICAgICBkZWxldGUgcmVxdWlyZS5jYWNoZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IG1vZHVsZSA9IHJlcXVpcmUoZnVsbFBhdGgpLmRlZmF1bHQ7XG4gICAgbG9hZGVkTW9kdWxlcy5hZGQoZnVsbFBhdGgpO1xuICAgIHJldHVybiBtb2R1bGU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS53YXJuKGBDb3VsZCBub3QgbG9hZCBkZXYgY29uZmlnIGZyb20gJHtkZXZDb25maWdQYXRofTpgLCAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwRGV2Q29uZmlnKCkge1xuICBmb3IgKGNvbnN0IG1vZHVsZVBhdGggb2YgbG9hZGVkTW9kdWxlcykge1xuICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW21vZHVsZVBhdGhdO1xuICB9XG4gIGxvYWRlZE1vZHVsZXMuY2xlYXIoKTtcbn1cbiIsImltcG9ydCB0eXBlIHsgUGx1Z2luSW5mbyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTaGFyZWREZXBlbmRlbmNpZXMocGx1Z2luSW5mbzogUGx1Z2luSW5mbykge1xuICAvLyBHZXQgZXZlcnktcGx1Z2luIHBhY2thZ2UgaW5mbyBmb3IgdmVyc2lvbiBjb25zdHJhaW50c1xuICBjb25zdCBldmVyeVBsdWdpblBrZyA9IHJlcXVpcmUoJ2V2ZXJ5LXBsdWdpbi9wYWNrYWdlLmpzb24nKTtcblxuICByZXR1cm4ge1xuICAgICdldmVyeS1wbHVnaW4nOiB7XG4gICAgICB2ZXJzaW9uOiBldmVyeVBsdWdpblBrZy52ZXJzaW9uLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy52ZXJzaW9ufWAsXG4gICAgICBzdHJpY3RWZXJzaW9uOiBmYWxzZSxcbiAgICAgIGVhZ2VyOiBmYWxzZSxcbiAgICB9LFxuICAgIGVmZmVjdDoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdCxcbiAgICAgIHNpbmdsZXRvbjogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkVmVyc2lvbjogYCR7ZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdH1gLFxuICAgICAgc3RyaWN0VmVyc2lvbjogZmFsc2UsXG4gICAgICBlYWdlcjogZmFsc2UsXG4gICAgfSxcbiAgICB6b2Q6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2QsXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2R9YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL2NvbnRyYWN0Jzoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzWydAb3JwYy9jb250cmFjdCddLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXNbJ0BvcnBjL2NvbnRyYWN0J119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL3NlcnZlcic6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ10sXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gIH07XG59XG4iLCJpbXBvcnQgdHlwZSB7IFBsdWdpbkluZm8gfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgY29yc0hlYWRlcnMgPSB7XG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiAnKicsXG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnOiAnWC1SZXF1ZXN0ZWQtV2l0aCwgY29udGVudC10eXBlLCBBdXRob3JpemF0aW9uJ1xufTtcblxuY29uc3QgYXBwbHlDb3JzSGVhZGVycyA9IChyZXM6IGFueSkgPT4ge1xuICBPYmplY3QuZW50cmllcyhjb3JzSGVhZGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgfSk7XG59O1xuXG5jb25zdCBub3JtYWxpemVQcmVmaXggPSAocHJlZml4Pzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFwcmVmaXgpIHJldHVybiAnJztcbiAgY29uc3QgY2xlYW5lZCA9IHByZWZpeC5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCAnJyk7XG4gIHJldHVybiBjbGVhbmVkID8gYC8ke2NsZWFuZWR9YCA6ICcnO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXI6IGFueSwgcGx1Z2luSW5mbzogUGx1Z2luSW5mbywgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICBjb25zdCBycGNQcmVmaXggPSBub3JtYWxpemVQcmVmaXgoZGV2Q29uZmlnPy5wcmVmaXgpO1xuICBsZXQgaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0gPSB7IHJwYzogbnVsbCwgYXBpOiBudWxsIH07XG4gIGxldCBjbGVhbnVwOiAoKCkgPT4gUHJvbWlzZTx2b2lkPikgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBwZXJmb3JtQ2xlYW51cCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoY2xlYW51cCkge1xuICAgICAgYXdhaXQgY2xlYW51cCgpO1xuICAgICAgY2xlYW51cCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGNyZWF0ZVBsdWdpblJ1bnRpbWUgfSA9IGF3YWl0IGltcG9ydCgnZXZlcnktcGx1Z2luJyk7XG4gICAgICBjb25zdCB7IFJQQ0hhbmRsZXIgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyL2ZldGNoJyk7XG4gICAgICBjb25zdCB7IG9uRXJyb3IgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyJyk7XG4gICAgICBjb25zdCB7IE9wZW5BUElIYW5kbGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL29wZW5hcGkvZmV0Y2gnKTtcbiAgICAgIGNvbnN0IHsgT3BlbkFQSVJlZmVyZW5jZVBsdWdpbiB9ID0gYXdhaXQgaW1wb3J0KCdAb3JwYy9vcGVuYXBpL3BsdWdpbnMnKTtcbiAgICAgIGNvbnN0IHsgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL3pvZC96b2Q0Jyk7XG5cbiAgICAgIGNvbnN0IHBsdWdpbklkID0gZGV2Q29uZmlnPy5wbHVnaW5JZCB8fCBwbHVnaW5JbmZvLm5vcm1hbGl6ZWROYW1lO1xuXG4gICAgICBjb25zdCBydW50aW1lID0gY3JlYXRlUGx1Z2luUnVudGltZSh7XG4gICAgICAgIHJlZ2lzdHJ5OiB7XG4gICAgICAgICAgW3BsdWdpbklkXToge1xuICAgICAgICAgICAgcmVtb3RlVXJsOiBgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L3JlbW90ZUVudHJ5LmpzYFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGxvYWRlZCA9IGF3YWl0IHJ1bnRpbWUudXNlUGx1Z2luKHBsdWdpbklkLCBkZXZDb25maWc/LmNvbmZpZyk7XG5cbiAgICAgIGNsZWFudXAgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkZWQgJiYgdHlwZW9mIChsb2FkZWQgYXMgYW55KS5kaXNwb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKGxvYWRlZCBhcyBhbnkpLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocnVudGltZSAmJiB0eXBlb2YgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwKCk7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlcnMucnBjID0gbnVsbDtcbiAgICAgICAgaGFuZGxlcnMuYXBpID0gbnVsbDtcbiAgICAgICAgaWYgKGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmb3JtYXRFcnJvciA9IChlcnJvcjogYW55LCBjb250ZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW2BcXG7wn5S0ICR7Y29udGV4dH0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcid9YF07XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/Lmlzc3VlcyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmNhdXNlLmlzc3VlcykpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OLIFZhbGlkYXRpb24gSXNzdWVzOicpO1xuICAgICAgICAgIGVycm9yLmNhdXNlLmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGAgICR7aW5kZXggKyAxfS4gJHtpc3N1ZS5wYXRoPy5qb2luKCcuJykgfHwgJ3Jvb3QnfWApO1xuICAgICAgICAgICAgbGluZXMucHVzaChgICAgICDilJzilIAgQ29kZTogJHtpc3N1ZS5jb2RlIHx8ICd1bmtub3duJ31gKTtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgICAg4pSc4pSAIE1lc3NhZ2U6ICR7aXNzdWUubWVzc2FnZSB8fCAnTm8gbWVzc2FnZSd9YCk7XG4gICAgICAgICAgICBpZiAoaXNzdWUuZXhwZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUnOKUgCBFeHBlY3RlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5leHBlY3RlZCl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNzdWUucmVjZWl2ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCBSZWNlaXZlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5yZWNlaXZlZCl9YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCAoZW5kKWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuZGF0YSAmJiB0eXBlb2YgZXJyb3IuZGF0YSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoZXJyb3IuZGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goJ1xcbvCfk4ogRXJyb3IgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/LmRhdGEpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OmIFJlcXVlc3QgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmNhdXNlLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuY2F1c2UuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY29kZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYFxcbuKaoO+4jyAgRXJyb3IgQ29kZTogJHtlcnJvci5jb2RlfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICAgICAgbGluZXMucHVzaChg8J+TjSBTdGF0dXM6ICR7ZXJyb3Iuc3RhdHVzfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihsaW5lcy5qb2luKCdcXG4nKSk7XG4gICAgICB9O1xuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG5vIHR5cGVcbiAgICAgIGhhbmRsZXJzLnJwYyA9IG5ldyBSUENIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgaW50ZXJjZXB0b3JzOiBbXG4gICAgICAgICAgb25FcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgZm9ybWF0RXJyb3IoZXJyb3IsICdSUEMnKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igbm8gdHlwZVxuICAgICAgaGFuZGxlcnMuYXBpID0gbmV3IE9wZW5BUElIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgIG5ldyBPcGVuQVBJUmVmZXJlbmNlUGx1Z2luKHtcbiAgICAgICAgICAgIHNjaGVtYUNvbnZlcnRlcnM6IFtuZXcgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyKCldLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBpbnRlcmNlcHRvcnM6IFtcbiAgICAgICAgICBvbkVycm9yKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICBmb3JtYXRFcnJvcihlcnJvciwgJ09wZW5BUEknKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKGDila3ilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBgKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIOKchSBQbHVnaW4gZGV2IHNlcnZlciByZWFkeTogYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5OhIFJQQzogICAgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2FwaS9ycGMke3JwY1ByZWZpeH1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIPCfk5YgRG9jczogICBodHRwOi8vbG9jYWxob3N0OiR7cG9ydH0vYXBpYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5KaIEhlYWx0aDogaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2ApO1xuICAgICAgY29uc29sZS5sb2coYOKVsOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgGApO1xuXG4gICAgICBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycyA9IGhhbmRsZXJzO1xuXG4gICAgICBpZiAoZGV2U2VydmVyLnNlcnZlcikge1xuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLm9uY2UoJ2Nsb3NlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCfinYwgRmFpbGVkIHRvIGxvYWQgcGx1Z2luOicsIGVycm9yKTtcbiAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgfVxuICB9KSgpO1xuXG4gIHByb2Nlc3Mub25jZSgnU0lHSU5UJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gIH0pO1xuICBwcm9jZXNzLm9uY2UoJ1NJR1RFUk0nLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcbiAgfSk7XG5cbiAgZGV2U2VydmVyLmFwcC5vcHRpb25zKCcqJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuc3RhdHVzKDIwMCkuZW5kKCk7XG4gIH0pO1xuXG4gIGRldlNlcnZlci5hcHAuZ2V0KCcvJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBsdWdpbjogcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZSxcbiAgICAgIHZlcnNpb246IHBsdWdpbkluZm8udmVyc2lvbixcbiAgICAgIHN0YXR1czogZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnM/LnJwYyA/ICdyZWFkeScgOiAnbG9hZGluZycsXG4gICAgICBlbmRwb2ludHM6IHtcbiAgICAgICAgaGVhbHRoOiAnLycsXG4gICAgICAgIGRvY3M6ICcvYXBpJyxcbiAgICAgICAgcnBjOiBgL2FwaS9ycGMke3JwY1ByZWZpeH1gXG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBhbmQgUkVTVCBlbmRwb2ludHMgYXQgL2FwaSBhbmQgL2FwaS8qXG4gIGNvbnN0IGhhbmRsZUFwaVJlcXVlc3QgPSBhc3luYyAocmVxOiBhbnksIHJlczogYW55KSA9PiB7XG4gICAgYXBwbHlDb3JzSGVhZGVycyhyZXMpO1xuICAgIGNvbnN0IGFwaUhhbmRsZXIgPSBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycz8uYXBpO1xuICAgIGlmICghYXBpSGFuZGxlcikge1xuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAzKS5qc29uKHsgZXJyb3I6ICdQbHVnaW4gc3RpbGwgbG9hZGluZy4uLicgfSk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IGBodHRwOi8vJHtyZXEuaGVhZGVycy5ob3N0fSR7cmVxLnVybH1gO1xuICAgICAgY29uc3Qgd2ViUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwge1xuICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLFxuICAgICAgICBib2R5OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyByZXEgOiB1bmRlZmluZWQsXG4gICAgICAgIGR1cGxleDogcmVxLm1ldGhvZCAhPT0gJ0dFVCcgJiYgcmVxLm1ldGhvZCAhPT0gJ0hFQUQnID8gJ2hhbGYnIDogdW5kZWZpbmVkXG4gICAgICB9IGFzIFJlcXVlc3RJbml0KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBpSGFuZGxlci5oYW5kbGUod2ViUmVxdWVzdCwge1xuICAgICAgICBwcmVmaXg6ICcvYXBpJyxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignT3BlbkFQSSBlcnJvcjonLCBlcnJvcik7XG4gICAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7IGVycm9yOiAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UgfSk7XG4gICAgfVxuICB9O1xuXG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpJywgaGFuZGxlQXBpUmVxdWVzdCk7XG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpLyonLCBoYW5kbGVBcGlSZXF1ZXN0KTtcblxuICBkZXZTZXJ2ZXIuYXBwLmFsbChgL2FwaS9ycGMke3JwY1ByZWZpeH0vKmAsIGFzeW5jIChyZXE6IGFueSwgcmVzOiBhbnkpID0+IHtcbiAgICBhcHBseUNvcnNIZWFkZXJzKHJlcyk7XG4gICAgY29uc3QgcnBjSGFuZGxlciA9IGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzPy5ycGM7XG4gICAgaWYgKCFycGNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDMpLmpzb24oeyBlcnJvcjogJ1BsdWdpbiBzdGlsbCBsb2FkaW5nLi4uJyB9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9JHtyZXEudXJsfWA7XG4gICAgICBjb25zdCB3ZWJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6IHJlcS5tZXRob2QgIT09ICdHRVQnICYmIHJlcS5tZXRob2QgIT09ICdIRUFEJyA/IHJlcSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZHVwbGV4OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyAnaGFsZicgOiB1bmRlZmluZWRcbiAgICAgIH0gYXMgUmVxdWVzdEluaXQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGNIYW5kbGVyLmhhbmRsZSh3ZWJSZXF1ZXN0LCB7XG4gICAgICAgIHByZWZpeDogYC9hcGkvcnBjJHtycGNQcmVmaXh9YCxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignUlBDIGVycm9yOicsIGVycm9yKTtcbiAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHsgZXJyb3I6IChlcnJvciBhcyBFcnJvcikubWVzc2FnZSB9KTtcbiAgICB9XG4gIH0pO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBDb21waWxlciwgUnNwYWNrUGx1Z2luSW5zdGFuY2UgfSBmcm9tICdAcnNwYWNrL2NvcmUnO1xuaW1wb3J0IHsgcnNwYWNrIH0gZnJvbSAnQHJzcGFjay9jb3JlJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBnZXRQbHVnaW5JbmZvIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBsb2FkRGV2Q29uZmlnIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBidWlsZFNoYXJlZERlcGVuZGVuY2llcyB9IGZyb20gJy4vbW9kdWxlLWZlZGVyYXRpb24nO1xuaW1wb3J0IHsgc2V0dXBQbHVnaW5NaWRkbGV3YXJlIH0gZnJvbSAnLi9kZXYtc2VydmVyLW1pZGRsZXdhcmUnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlcnlQbHVnaW5PcHRpb25zIHtcbiAgZGV2Q29uZmlnUGF0aD86IHN0cmluZzsgIC8vIGRlZmF1bHRzIHRvICcuL3BsdWdpbi5kZXYudHMnXG4gIHBvcnQ/OiBudW1iZXI7ICAgICAgICAgICAvLyBvdmVycmlkZSBwbHVnaW4uZGV2LnRzIHBvcnRcbiAgcGx1Z2luSWQ/OiBzdHJpbmc7ICAgICAgIC8vIG92ZXJyaWRlIGF1dG8tZGV0ZWN0ZWRcbn1cblxuZXhwb3J0IGNsYXNzIEV2ZXJ5UGx1Z2luRGV2U2VydmVyIGltcGxlbWVudHMgUnNwYWNrUGx1Z2luSW5zdGFuY2Uge1xuICBuYW1lID0gJ0V2ZXJ5UGx1Z2luRGV2U2VydmVyJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM6IEV2ZXJ5UGx1Z2luT3B0aW9ucyA9IHt9KSB7fVxuXG4gIGFwcGx5KGNvbXBpbGVyOiBDb21waWxlcikge1xuICAgIC8vIExvYWQgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IHBsdWdpbkluZm8gPSBnZXRQbHVnaW5JbmZvKGNvbXBpbGVyLm9wdGlvbnMuY29udGV4dCB8fCBwcm9jZXNzLmN3ZCgpKTtcbiAgICBjb25zdCBkZXZDb25maWcgPSBsb2FkRGV2Q29uZmlnKHRoaXMub3B0aW9ucy5kZXZDb25maWdQYXRoIHx8ICcuL3BsdWdpbi5kZXYudHMnKTtcbiAgICBjb25zdCBwb3J0ID0gdGhpcy5vcHRpb25zLnBvcnQgfHwgZGV2Q29uZmlnPy5wb3J0IHx8IDM5OTk7XG5cbiAgICAvLyBDb25maWd1cmUgZGVmYXVsdHMgaW1tZWRpYXRlbHkgKG5vIGhvb2tzIG5lZWRlZClcbiAgICB0aGlzLmNvbmZpZ3VyZURlZmF1bHRzKGNvbXBpbGVyLCBwbHVnaW5JbmZvKTtcblxuICAgIC8vIEluaXRpYWxpemUgZGV2U2VydmVyIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlciA9IHt9O1xuICAgIH1cblxuICAgIC8vIENvbmZpZ3VyZSBkZXYgc2VydmVyXG4gICAgdGhpcy5jb25maWd1cmVEZXZTZXJ2ZXIoY29tcGlsZXIsIHBsdWdpbkluZm8sIGRldkNvbmZpZywgcG9ydCk7XG5cbiAgICAvLyBBcHBseSBNb2R1bGUgRmVkZXJhdGlvbiBwbHVnaW5cbiAgICBuZXcgcnNwYWNrLmNvbnRhaW5lci5Nb2R1bGVGZWRlcmF0aW9uUGx1Z2luKHtcbiAgICAgIG5hbWU6IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWUsXG4gICAgICBmaWxlbmFtZTogJ3JlbW90ZUVudHJ5LmpzJyxcbiAgICAgIHJ1bnRpbWVQbHVnaW5zOiBbXG4gICAgICAgIHJlcXVpcmUucmVzb2x2ZSgnQG1vZHVsZS1mZWRlcmF0aW9uL25vZGUvcnVudGltZVBsdWdpbicpLFxuICAgICAgXSxcbiAgICAgIGxpYnJhcnk6IHsgdHlwZTogJ2NvbW1vbmpzLW1vZHVsZScgfSxcbiAgICAgIGV4cG9zZXM6IHtcbiAgICAgICAgJy4vcGx1Z2luJzogJy4vc3JjL2luZGV4LnRzJyxcbiAgICAgIH0sXG4gICAgICBzaGFyZWQ6IGJ1aWxkU2hhcmVkRGVwZW5kZW5jaWVzKHBsdWdpbkluZm8pLFxuICAgIH0pLmFwcGx5KGNvbXBpbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRGVmYXVsdHMoY29tcGlsZXI6IENvbXBpbGVyLCBwbHVnaW5JbmZvOiBhbnkpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gY29tcGlsZXIub3B0aW9ucy5jb250ZXh0IHx8IHByb2Nlc3MuY3dkKCk7XG5cbiAgICAvLyBDb25maWd1cmUgb3V0cHV0IGRlZmF1bHRzXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm91dHB1dCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQgPSB7fTtcbiAgICB9XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQudW5pcXVlTmFtZSA9IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQucHVibGljUGF0aCA9ICdhdXRvJztcbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC5wYXRoID0gcGF0aC5yZXNvbHZlKGNvbnRleHQsICdkaXN0Jyk7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQuY2xlYW4gPSB0cnVlO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0LmxpYnJhcnkgPSB7IHR5cGU6ICdjb21tb25qcy1tb2R1bGUnIH07XG5cbiAgICAvLyBDb25maWd1cmUgZW50cnkgaWYgbm90IHNldFxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5lbnRyeSkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5lbnRyeSA9IHtcbiAgICAgICAgbWFpbjoge1xuICAgICAgICAgIGltcG9ydDogWycuL3NyYy9pbmRleCddXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIHRhcmdldCBhbmQgbW9kZSBkZWZhdWx0c1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy50YXJnZXQpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMudGFyZ2V0ID0gJ2FzeW5jLW5vZGUnO1xuICAgIH1cblxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2RlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZGUgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyA/ICdkZXZlbG9wbWVudCcgOiAncHJvZHVjdGlvbic7XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIGRldnRvb2xcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMuZGV2dG9vbCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5kZXZ0b29sID0gJ3NvdXJjZS1tYXAnO1xuICAgIH1cblxuICAgIC8vIFN1cHByZXNzIHZlcmJvc2UgaW5mcmFzdHJ1Y3R1cmUgbG9nZ2luZ1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5pbmZyYXN0cnVjdHVyZUxvZ2dpbmcpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMuaW5mcmFzdHJ1Y3R1cmVMb2dnaW5nID0ge1xuICAgICAgICBsZXZlbDogJ3dhcm4nLCAgLy8gT25seSBzaG93IHdhcm5pbmdzIGFuZCBlcnJvcnNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIG1vZHVsZSBydWxlcyAtIGVuc3VyZSBUeXBlU2NyaXB0IGxvYWRlciBpcyBwcmVzZW50XG4gICAgdGhpcy5lbnN1cmVUeXBlU2NyaXB0TG9hZGVyKGNvbXBpbGVyKTtcblxuICAgIC8vIENvbmZpZ3VyZSByZXNvbHZlIGV4dGVuc2lvbnNcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMucmVzb2x2ZSkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlID0ge307XG4gICAgfVxuICAgIGNvbXBpbGVyLm9wdGlvbnMucmVzb2x2ZS5leHRlbnNpb25zID0gWycuLi4nLCAnLnRzeCcsICcudHMnXTtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlVHlwZVNjcmlwdExvYWRlcihjb21waWxlcjogQ29tcGlsZXIpIHtcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMubW9kdWxlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZHVsZSA9IHsgcnVsZXM6IFtdIH0gYXMgYW55O1xuICAgIH1cblxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2R1bGUucnVsZXMpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzID0gW107XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgVHlwZVNjcmlwdCBsb2FkZXIgaXMgYWxyZWFkeSBjb25maWd1cmVkXG4gICAgY29uc3QgaGFzVHNMb2FkZXIgPSBjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcy5zb21lKChydWxlOiBhbnkpID0+XG4gICAgICB0eXBlb2YgcnVsZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHJ1bGUgIT09IG51bGwgJiZcbiAgICAgICd0ZXN0JyBpbiBydWxlICYmXG4gICAgICBydWxlLnRlc3QgaW5zdGFuY2VvZiBSZWdFeHAgJiZcbiAgICAgIHJ1bGUudGVzdC50ZXN0KCcudHMnKVxuICAgICk7XG5cbiAgICAvLyBBZGQgVHlwZVNjcmlwdCBsb2FkZXIgaWYgbm90IHByZXNlbnRcbiAgICBpZiAoIWhhc1RzTG9hZGVyKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcy5wdXNoKHtcbiAgICAgICAgdGVzdDogL1xcLnRzeD8kLyxcbiAgICAgICAgdXNlOiAnYnVpbHRpbjpzd2MtbG9hZGVyJyxcbiAgICAgICAgZXhjbHVkZTogL25vZGVfbW9kdWxlcy8sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZURldlNlcnZlcihjb21waWxlcjogQ29tcGlsZXIsIHBsdWdpbkluZm86IGFueSwgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjsgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbiBkdWUgdG8gY2hlY2sgaW4gYXBwbHkoKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBvcmlnaW5hbFNldHVwID0gY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuc2V0dXBNaWRkbGV3YXJlcztcblxuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnBvcnQgPSBwb3J0O1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnN0YXRpYyA9IHBhdGguam9pbihjb250ZXh0LCAnZGlzdCcpO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmhvdCA9IHRydWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuZGV2TWlkZGxld2FyZSA9IHsgd3JpdGVUb0Rpc2s6IHRydWUgfTtcbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5oZWFkZXJzID0ge1xuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbic6ICcqJyxcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyxcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJzogJ1gtUmVxdWVzdGVkLVdpdGgsIGNvbnRlbnQtdHlwZSwgQXV0aG9yaXphdGlvbicsXG4gICAgfTtcblxuICAgIC8vIFN1cHByZXNzIHZlcmJvc2UgbG9nZ2luZ1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmNsaWVudCA9IHtcbiAgICAgIGxvZ2dpbmc6ICd3YXJuJywgIC8vIE9ubHkgc2hvdyB3YXJuaW5ncyBhbmQgZXJyb3JzXG4gICAgICBvdmVybGF5OiB7XG4gICAgICAgIHdhcm5pbmdzOiBmYWxzZSwgIC8vIERvbid0IHNob3cgd2FybmluZyBvdmVybGF5XG4gICAgICAgIGVycm9yczogdHJ1ZSwgICAgIC8vIFN0aWxsIHNob3cgZXJyb3JzXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBkZXZTZXJ2ZXIpID0+IHtcbiAgICAgIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXIsIHBsdWdpbkluZm8sIGRldkNvbmZpZywgcG9ydCk7XG4gICAgICByZXR1cm4gb3JpZ2luYWxTZXR1cCA/IG9yaWdpbmFsU2V0dXAobWlkZGxld2FyZXMsIGRldlNlcnZlcikgOiBtaWRkbGV3YXJlcztcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBWUEsU0FBZ0IsY0FBYyxTQUE2QjtDQUN6RCxNQUFNLFVBQVUsS0FBSyxLQUFLLFNBQVMsZUFBZTtDQUNsRCxNQUFNLE1BQU0sS0FBSyxNQUFNLEdBQUcsYUFBYSxTQUFTLFFBQVEsQ0FBQztBQUV6RCxRQUFPO0VBQ0wsTUFBTSxJQUFJO0VBQ1YsU0FBUyxJQUFJO0VBQ2IsZ0JBQWdCLHdCQUF3QixJQUFJLEtBQUs7RUFDakQsY0FBYyxJQUFJLGdCQUFnQixFQUFFO0VBQ3BDLGtCQUFrQixJQUFJLG9CQUFvQixFQUFFO0VBQzdDOztBQUdILE1BQU0sZ0NBQWdCLElBQUksS0FBYTtBQUV2QyxTQUFnQixjQUFjLGVBQXVCO0FBQ25ELEtBQUk7RUFDRixNQUFNLFdBQVcsS0FBSyxRQUFRLGNBQWM7QUFFNUMsTUFBSSxjQUFj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
|
|
360
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwibmFtZXMiOlsiaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0iLCJjbGVhbnVwOiAoKCkgPT4gUHJvbWlzZTx2b2lkPikgfCBudWxsIiwibGluZXM6IHN0cmluZ1tdIiwib3B0aW9uczogRXZlcnlQbHVnaW5PcHRpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay91dGlscy50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svbW9kdWxlLWZlZGVyYXRpb24udHMiLCIuLi8uLi8uLi9zcmMvYnVpbGQvcnNwYWNrL2Rldi1zZXJ2ZXItbWlkZGxld2FyZS50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svcGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBnZXROb3JtYWxpemVkUmVtb3RlTmFtZSB9IGZyb20gJ2V2ZXJ5LXBsdWdpbi9ub3JtYWxpemUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgbm9ybWFsaXplZE5hbWU6IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBwZWVyRGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luSW5mbyhjb250ZXh0OiBzdHJpbmcpOiBQbHVnaW5JbmZvIHtcbiAgY29uc3QgcGtnUGF0aCA9IHBhdGguam9pbihjb250ZXh0LCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBrZ1BhdGgsICd1dGYtOCcpKTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICAgIG5vcm1hbGl6ZWROYW1lOiBnZXROb3JtYWxpemVkUmVtb3RlTmFtZShwa2cubmFtZSksXG4gICAgZGVwZW5kZW5jaWVzOiBwa2cuZGVwZW5kZW5jaWVzIHx8IHt9LFxuICAgIHBlZXJEZXBlbmRlbmNpZXM6IHBrZy5wZWVyRGVwZW5kZW5jaWVzIHx8IHt9LFxuICB9O1xufVxuXG5jb25zdCBsb2FkZWRNb2R1bGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRGV2Q29uZmlnKGRldkNvbmZpZ1BhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKGRldkNvbmZpZ1BhdGgpO1xuICAgIFxuICAgIGlmIChsb2FkZWRNb2R1bGVzLmhhcyhmdWxsUGF0aCkpIHtcbiAgICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW2Z1bGxQYXRoXTtcbiAgICAgIGNvbnN0IGRpclBhdGggPSBwYXRoLmRpcm5hbWUoZnVsbFBhdGgpO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVxdWlyZS5jYWNoZSkpIHtcbiAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKGRpclBhdGgpICYmIGtleSAhPT0gZnVsbFBhdGgpIHtcbiAgICAgICAgICBkZWxldGUgcmVxdWlyZS5jYWNoZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IG1vZHVsZSA9IHJlcXVpcmUoZnVsbFBhdGgpLmRlZmF1bHQ7XG4gICAgbG9hZGVkTW9kdWxlcy5hZGQoZnVsbFBhdGgpO1xuICAgIHJldHVybiBtb2R1bGU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS53YXJuKGBDb3VsZCBub3QgbG9hZCBkZXYgY29uZmlnIGZyb20gJHtkZXZDb25maWdQYXRofTpgLCAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwRGV2Q29uZmlnKCkge1xuICBmb3IgKGNvbnN0IG1vZHVsZVBhdGggb2YgbG9hZGVkTW9kdWxlcykge1xuICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW21vZHVsZVBhdGhdO1xuICB9XG4gIGxvYWRlZE1vZHVsZXMuY2xlYXIoKTtcbn1cbiIsImltcG9ydCB0eXBlIHsgUGx1Z2luSW5mbyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTaGFyZWREZXBlbmRlbmNpZXMocGx1Z2luSW5mbzogUGx1Z2luSW5mbykge1xuICAvLyBHZXQgZXZlcnktcGx1Z2luIHBhY2thZ2UgaW5mbyBmb3IgdmVyc2lvbiBjb25zdHJhaW50c1xuICBjb25zdCBldmVyeVBsdWdpblBrZyA9IHJlcXVpcmUoJ2V2ZXJ5LXBsdWdpbi9wYWNrYWdlLmpzb24nKTtcblxuICByZXR1cm4ge1xuICAgICdldmVyeS1wbHVnaW4nOiB7XG4gICAgICB2ZXJzaW9uOiBldmVyeVBsdWdpblBrZy52ZXJzaW9uLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy52ZXJzaW9ufWAsXG4gICAgICBzdHJpY3RWZXJzaW9uOiBmYWxzZSxcbiAgICAgIGVhZ2VyOiBmYWxzZSxcbiAgICB9LFxuICAgIGVmZmVjdDoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdCxcbiAgICAgIHNpbmdsZXRvbjogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkVmVyc2lvbjogYCR7ZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdH1gLFxuICAgICAgc3RyaWN0VmVyc2lvbjogZmFsc2UsXG4gICAgICBlYWdlcjogZmFsc2UsXG4gICAgfSxcbiAgICB6b2Q6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2QsXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2R9YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL2NvbnRyYWN0Jzoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzWydAb3JwYy9jb250cmFjdCddLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXNbJ0BvcnBjL2NvbnRyYWN0J119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL3NlcnZlcic6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ10sXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gIH07XG59XG4iLCJpbXBvcnQgdHlwZSB7IFBsdWdpbkluZm8gfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgY29yc0hlYWRlcnMgPSB7XG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiAnKicsXG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnOiAnWC1SZXF1ZXN0ZWQtV2l0aCwgY29udGVudC10eXBlLCBBdXRob3JpemF0aW9uJ1xufTtcblxuY29uc3QgYXBwbHlDb3JzSGVhZGVycyA9IChyZXM6IGFueSkgPT4ge1xuICBPYmplY3QuZW50cmllcyhjb3JzSGVhZGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgfSk7XG59O1xuXG5jb25zdCBub3JtYWxpemVQcmVmaXggPSAocHJlZml4Pzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFwcmVmaXgpIHJldHVybiAnJztcbiAgY29uc3QgY2xlYW5lZCA9IHByZWZpeC5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCAnJyk7XG4gIHJldHVybiBjbGVhbmVkID8gYC8ke2NsZWFuZWR9YCA6ICcnO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXI6IGFueSwgcGx1Z2luSW5mbzogUGx1Z2luSW5mbywgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICBjb25zdCBycGNQcmVmaXggPSBub3JtYWxpemVQcmVmaXgoZGV2Q29uZmlnPy5wcmVmaXgpO1xuICBsZXQgaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0gPSB7IHJwYzogbnVsbCwgYXBpOiBudWxsIH07XG4gIGxldCBjbGVhbnVwOiAoKCkgPT4gUHJvbWlzZTx2b2lkPikgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBwZXJmb3JtQ2xlYW51cCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoY2xlYW51cCkge1xuICAgICAgYXdhaXQgY2xlYW51cCgpO1xuICAgICAgY2xlYW51cCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGNyZWF0ZVBsdWdpblJ1bnRpbWUgfSA9IGF3YWl0IGltcG9ydCgnZXZlcnktcGx1Z2luJyk7XG4gICAgICBjb25zdCB7IFJQQ0hhbmRsZXIgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyL2ZldGNoJyk7XG4gICAgICBjb25zdCB7IG9uRXJyb3IgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyJyk7XG4gICAgICBjb25zdCB7IE9wZW5BUElIYW5kbGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL29wZW5hcGkvZmV0Y2gnKTtcbiAgICAgIGNvbnN0IHsgT3BlbkFQSVJlZmVyZW5jZVBsdWdpbiB9ID0gYXdhaXQgaW1wb3J0KCdAb3JwYy9vcGVuYXBpL3BsdWdpbnMnKTtcbiAgICAgIGNvbnN0IHsgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL3pvZC96b2Q0Jyk7XG5cbiAgICAgIGNvbnN0IHBsdWdpbklkID0gZGV2Q29uZmlnPy5wbHVnaW5JZCB8fCBwbHVnaW5JbmZvLm5vcm1hbGl6ZWROYW1lO1xuXG4gICAgICBjb25zdCBydW50aW1lID0gY3JlYXRlUGx1Z2luUnVudGltZSh7XG4gICAgICAgIHJlZ2lzdHJ5OiB7XG4gICAgICAgICAgW3BsdWdpbklkXToge1xuICAgICAgICAgICAgcmVtb3RlVXJsOiBgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L3JlbW90ZUVudHJ5LmpzYFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGxvYWRlZCA9IGF3YWl0IHJ1bnRpbWUudXNlUGx1Z2luKHBsdWdpbklkLCBkZXZDb25maWc/LmNvbmZpZyk7XG5cbiAgICAgIGNsZWFudXAgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkZWQgJiYgdHlwZW9mIChsb2FkZWQgYXMgYW55KS5kaXNwb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKGxvYWRlZCBhcyBhbnkpLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocnVudGltZSAmJiB0eXBlb2YgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwKCk7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlcnMucnBjID0gbnVsbDtcbiAgICAgICAgaGFuZGxlcnMuYXBpID0gbnVsbDtcbiAgICAgICAgaWYgKGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmb3JtYXRFcnJvciA9IChlcnJvcjogYW55LCBjb250ZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW2BcXG7wn5S0ICR7Y29udGV4dH0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcid9YF07XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/Lmlzc3VlcyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmNhdXNlLmlzc3VlcykpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OLIFZhbGlkYXRpb24gSXNzdWVzOicpO1xuICAgICAgICAgIGVycm9yLmNhdXNlLmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGAgICR7aW5kZXggKyAxfS4gJHtpc3N1ZS5wYXRoPy5qb2luKCcuJykgfHwgJ3Jvb3QnfWApO1xuICAgICAgICAgICAgbGluZXMucHVzaChgICAgICDilJzilIAgQ29kZTogJHtpc3N1ZS5jb2RlIHx8ICd1bmtub3duJ31gKTtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgICAg4pSc4pSAIE1lc3NhZ2U6ICR7aXNzdWUubWVzc2FnZSB8fCAnTm8gbWVzc2FnZSd9YCk7XG4gICAgICAgICAgICBpZiAoaXNzdWUuZXhwZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUnOKUgCBFeHBlY3RlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5leHBlY3RlZCl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNzdWUucmVjZWl2ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCBSZWNlaXZlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5yZWNlaXZlZCl9YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCAoZW5kKWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuZGF0YSAmJiB0eXBlb2YgZXJyb3IuZGF0YSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoZXJyb3IuZGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goJ1xcbvCfk4ogRXJyb3IgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/LmRhdGEpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OmIFJlcXVlc3QgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmNhdXNlLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuY2F1c2UuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY29kZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYFxcbuKaoO+4jyAgRXJyb3IgQ29kZTogJHtlcnJvci5jb2RlfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICAgICAgbGluZXMucHVzaChg8J+TjSBTdGF0dXM6ICR7ZXJyb3Iuc3RhdHVzfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihsaW5lcy5qb2luKCdcXG4nKSk7XG4gICAgICB9O1xuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG5vIHR5cGVcbiAgICAgIGhhbmRsZXJzLnJwYyA9IG5ldyBSUENIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgaW50ZXJjZXB0b3JzOiBbXG4gICAgICAgICAgb25FcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgZm9ybWF0RXJyb3IoZXJyb3IsICdSUEMnKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igbm8gdHlwZVxuICAgICAgaGFuZGxlcnMuYXBpID0gbmV3IE9wZW5BUElIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgIG5ldyBPcGVuQVBJUmVmZXJlbmNlUGx1Z2luKHtcbiAgICAgICAgICAgIHNjaGVtYUNvbnZlcnRlcnM6IFtuZXcgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyKCldLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBpbnRlcmNlcHRvcnM6IFtcbiAgICAgICAgICBvbkVycm9yKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICBmb3JtYXRFcnJvcihlcnJvciwgJ09wZW5BUEknKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKGDila3ilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBgKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIOKchSBQbHVnaW4gZGV2IHNlcnZlciByZWFkeTogYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5OhIFJQQzogICAgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2FwaS9ycGMke3JwY1ByZWZpeH1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIPCfk5YgRG9jczogICBodHRwOi8vbG9jYWxob3N0OiR7cG9ydH0vYXBpYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5KaIEhlYWx0aDogaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2ApO1xuICAgICAgY29uc29sZS5sb2coYOKVsOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgGApO1xuXG4gICAgICBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycyA9IGhhbmRsZXJzO1xuXG4gICAgICBpZiAoZGV2U2VydmVyLnNlcnZlcikge1xuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLm9uY2UoJ2Nsb3NlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCfinYwgRmFpbGVkIHRvIGxvYWQgcGx1Z2luOicsIGVycm9yKTtcbiAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgfVxuICB9KSgpO1xuXG4gIHByb2Nlc3Mub25jZSgnU0lHSU5UJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gIH0pO1xuICBwcm9jZXNzLm9uY2UoJ1NJR1RFUk0nLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcbiAgfSk7XG5cbiAgZGV2U2VydmVyLmFwcC5vcHRpb25zKCcqJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuc3RhdHVzKDIwMCkuZW5kKCk7XG4gIH0pO1xuXG4gIGRldlNlcnZlci5hcHAuZ2V0KCcvJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBsdWdpbjogcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZSxcbiAgICAgIHZlcnNpb246IHBsdWdpbkluZm8udmVyc2lvbixcbiAgICAgIHN0YXR1czogZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnM/LnJwYyA/ICdyZWFkeScgOiAnbG9hZGluZycsXG4gICAgICBlbmRwb2ludHM6IHtcbiAgICAgICAgaGVhbHRoOiAnLycsXG4gICAgICAgIGRvY3M6ICcvYXBpJyxcbiAgICAgICAgcnBjOiBgL2FwaS9ycGMke3JwY1ByZWZpeH1gXG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBhbmQgUkVTVCBlbmRwb2ludHMgYXQgL2FwaSBhbmQgL2FwaS8qXG4gIGNvbnN0IGhhbmRsZUFwaVJlcXVlc3QgPSBhc3luYyAocmVxOiBhbnksIHJlczogYW55KSA9PiB7XG4gICAgYXBwbHlDb3JzSGVhZGVycyhyZXMpO1xuICAgIGNvbnN0IGFwaUhhbmRsZXIgPSBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycz8uYXBpO1xuICAgIGlmICghYXBpSGFuZGxlcikge1xuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAzKS5qc29uKHsgZXJyb3I6ICdQbHVnaW4gc3RpbGwgbG9hZGluZy4uLicgfSk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IGBodHRwOi8vJHtyZXEuaGVhZGVycy5ob3N0fSR7cmVxLnVybH1gO1xuICAgICAgY29uc3Qgd2ViUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwge1xuICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLFxuICAgICAgICBib2R5OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyByZXEgOiB1bmRlZmluZWQsXG4gICAgICAgIGR1cGxleDogcmVxLm1ldGhvZCAhPT0gJ0dFVCcgJiYgcmVxLm1ldGhvZCAhPT0gJ0hFQUQnID8gJ2hhbGYnIDogdW5kZWZpbmVkXG4gICAgICB9IGFzIFJlcXVlc3RJbml0KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBpSGFuZGxlci5oYW5kbGUod2ViUmVxdWVzdCwge1xuICAgICAgICBwcmVmaXg6ICcvYXBpJyxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignT3BlbkFQSSBlcnJvcjonLCBlcnJvcik7XG4gICAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7IGVycm9yOiAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UgfSk7XG4gICAgfVxuICB9O1xuXG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpJywgaGFuZGxlQXBpUmVxdWVzdCk7XG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpLyonLCBoYW5kbGVBcGlSZXF1ZXN0KTtcblxuICBkZXZTZXJ2ZXIuYXBwLmFsbChgL2FwaS9ycGMke3JwY1ByZWZpeH0vKmAsIGFzeW5jIChyZXE6IGFueSwgcmVzOiBhbnkpID0+IHtcbiAgICBhcHBseUNvcnNIZWFkZXJzKHJlcyk7XG4gICAgY29uc3QgcnBjSGFuZGxlciA9IGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzPy5ycGM7XG4gICAgaWYgKCFycGNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDMpLmpzb24oeyBlcnJvcjogJ1BsdWdpbiBzdGlsbCBsb2FkaW5nLi4uJyB9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9JHtyZXEudXJsfWA7XG4gICAgICBjb25zdCB3ZWJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6IHJlcS5tZXRob2QgIT09ICdHRVQnICYmIHJlcS5tZXRob2QgIT09ICdIRUFEJyA/IHJlcSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZHVwbGV4OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyAnaGFsZicgOiB1bmRlZmluZWRcbiAgICAgIH0gYXMgUmVxdWVzdEluaXQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGNIYW5kbGVyLmhhbmRsZSh3ZWJSZXF1ZXN0LCB7XG4gICAgICAgIHByZWZpeDogYC9hcGkvcnBjJHtycGNQcmVmaXh9YCxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignUlBDIGVycm9yOicsIGVycm9yKTtcbiAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHsgZXJyb3I6IChlcnJvciBhcyBFcnJvcikubWVzc2FnZSB9KTtcbiAgICB9XG4gIH0pO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBDb21waWxlciwgUnNwYWNrUGx1Z2luSW5zdGFuY2UgfSBmcm9tICdAcnNwYWNrL2NvcmUnO1xuaW1wb3J0IHsgcnNwYWNrIH0gZnJvbSAnQHJzcGFjay9jb3JlJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBnZXRQbHVnaW5JbmZvIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBsb2FkRGV2Q29uZmlnIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBidWlsZFNoYXJlZERlcGVuZGVuY2llcyB9IGZyb20gJy4vbW9kdWxlLWZlZGVyYXRpb24nO1xuaW1wb3J0IHsgc2V0dXBQbHVnaW5NaWRkbGV3YXJlIH0gZnJvbSAnLi9kZXYtc2VydmVyLW1pZGRsZXdhcmUnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlcnlQbHVnaW5PcHRpb25zIHtcbiAgZGV2Q29uZmlnUGF0aD86IHN0cmluZzsgIC8vIGRlZmF1bHRzIHRvICcuL3BsdWdpbi5kZXYudHMnXG4gIHBvcnQ/OiBudW1iZXI7ICAgICAgICAgICAvLyBvdmVycmlkZSBwbHVnaW4uZGV2LnRzIHBvcnRcbiAgcGx1Z2luSWQ/OiBzdHJpbmc7ICAgICAgIC8vIG92ZXJyaWRlIGF1dG8tZGV0ZWN0ZWRcbn1cblxuZXhwb3J0IGNsYXNzIEV2ZXJ5UGx1Z2luRGV2U2VydmVyIGltcGxlbWVudHMgUnNwYWNrUGx1Z2luSW5zdGFuY2Uge1xuICBuYW1lID0gJ0V2ZXJ5UGx1Z2luRGV2U2VydmVyJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM6IEV2ZXJ5UGx1Z2luT3B0aW9ucyA9IHt9KSB7fVxuXG4gIGFwcGx5KGNvbXBpbGVyOiBDb21waWxlcikge1xuICAgIC8vIExvYWQgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IHBsdWdpbkluZm8gPSBnZXRQbHVnaW5JbmZvKGNvbXBpbGVyLm9wdGlvbnMuY29udGV4dCB8fCBwcm9jZXNzLmN3ZCgpKTtcbiAgICBjb25zdCBkZXZDb25maWcgPSBsb2FkRGV2Q29uZmlnKHRoaXMub3B0aW9ucy5kZXZDb25maWdQYXRoIHx8ICcuL3BsdWdpbi5kZXYudHMnKTtcbiAgICBjb25zdCBwb3J0ID0gdGhpcy5vcHRpb25zLnBvcnQgfHwgZGV2Q29uZmlnPy5wb3J0IHx8IDM5OTk7XG5cbiAgICAvLyBDb25maWd1cmUgZGVmYXVsdHMgaW1tZWRpYXRlbHkgKG5vIGhvb2tzIG5lZWRlZClcbiAgICB0aGlzLmNvbmZpZ3VyZURlZmF1bHRzKGNvbXBpbGVyLCBwbHVnaW5JbmZvKTtcblxuICAgIC8vIEluaXRpYWxpemUgZGV2U2VydmVyIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlciA9IHt9O1xuICAgIH1cblxuICAgIC8vIENvbmZpZ3VyZSBkZXYgc2VydmVyXG4gICAgdGhpcy5jb25maWd1cmVEZXZTZXJ2ZXIoY29tcGlsZXIsIHBsdWdpbkluZm8sIGRldkNvbmZpZywgcG9ydCk7XG5cbiAgICAvLyBBcHBseSBNb2R1bGUgRmVkZXJhdGlvbiBwbHVnaW5cbiAgICBuZXcgcnNwYWNrLmNvbnRhaW5lci5Nb2R1bGVGZWRlcmF0aW9uUGx1Z2luKHtcbiAgICAgIG5hbWU6IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWUsXG4gICAgICBmaWxlbmFtZTogJ3JlbW90ZUVudHJ5LmpzJyxcbiAgICAgIHJ1bnRpbWVQbHVnaW5zOiBbXG4gICAgICAgIHJlcXVpcmUucmVzb2x2ZSgnQG1vZHVsZS1mZWRlcmF0aW9uL25vZGUvcnVudGltZVBsdWdpbicpLFxuICAgICAgXSxcbiAgICAgIGxpYnJhcnk6IHsgdHlwZTogJ2NvbW1vbmpzLW1vZHVsZScgfSxcbiAgICAgIGV4cG9zZXM6IHtcbiAgICAgICAgJy4vcGx1Z2luJzogJy4vc3JjL2luZGV4LnRzJyxcbiAgICAgIH0sXG4gICAgICBzaGFyZWQ6IGJ1aWxkU2hhcmVkRGVwZW5kZW5jaWVzKHBsdWdpbkluZm8pLFxuICAgIH0pLmFwcGx5KGNvbXBpbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRGVmYXVsdHMoY29tcGlsZXI6IENvbXBpbGVyLCBwbHVnaW5JbmZvOiBhbnkpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gY29tcGlsZXIub3B0aW9ucy5jb250ZXh0IHx8IHByb2Nlc3MuY3dkKCk7XG5cbiAgICAvLyBDb25maWd1cmUgb3V0cHV0IGRlZmF1bHRzXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm91dHB1dCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQgPSB7fTtcbiAgICB9XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQudW5pcXVlTmFtZSA9IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQucHVibGljUGF0aCA9ICdhdXRvJztcbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC5wYXRoID0gcGF0aC5yZXNvbHZlKGNvbnRleHQsICdkaXN0Jyk7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQuY2xlYW4gPSB0cnVlO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0LmxpYnJhcnkgPSB7IHR5cGU6ICdjb21tb25qcy1tb2R1bGUnIH07XG5cbiAgICAvLyBDb25maWd1cmUgdGFyZ2V0IGFuZCBtb2RlIGRlZmF1bHRzXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLnRhcmdldCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy50YXJnZXQgPSAnYXN5bmMtbm9kZSc7XG4gICAgfVxuXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm1vZGUpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnID8gJ2RldmVsb3BtZW50JyA6ICdwcm9kdWN0aW9uJztcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgZGV2dG9vbFxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5kZXZ0b29sKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmRldnRvb2wgPSAnc291cmNlLW1hcCc7XG4gICAgfVxuXG4gICAgLy8gU3VwcHJlc3MgdmVyYm9zZSBpbmZyYXN0cnVjdHVyZSBsb2dnaW5nXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmluZnJhc3RydWN0dXJlTG9nZ2luZykge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5pbmZyYXN0cnVjdHVyZUxvZ2dpbmcgPSB7XG4gICAgICAgIGxldmVsOiAnd2FybicsICAvLyBPbmx5IHNob3cgd2FybmluZ3MgYW5kIGVycm9yc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgbW9kdWxlIHJ1bGVzIC0gZW5zdXJlIFR5cGVTY3JpcHQgbG9hZGVyIGlzIHByZXNlbnRcbiAgICB0aGlzLmVuc3VyZVR5cGVTY3JpcHRMb2FkZXIoY29tcGlsZXIpO1xuXG4gICAgLy8gQ29uZmlndXJlIHJlc29sdmUgZXh0ZW5zaW9uc1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLnJlc29sdmUgPSB7fTtcbiAgICB9XG4gICAgY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlLmV4dGVuc2lvbnMgPSBbJy4uLicsICcudHN4JywgJy50cyddO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVUeXBlU2NyaXB0TG9hZGVyKGNvbXBpbGVyOiBDb21waWxlcikge1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2R1bGUpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlID0geyBydWxlczogW10gfSBhcyBhbnk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcykge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5tb2R1bGUucnVsZXMgPSBbXTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBUeXBlU2NyaXB0IGxvYWRlciBpcyBhbHJlYWR5IGNvbmZpZ3VyZWRcbiAgICBjb25zdCBoYXNUc0xvYWRlciA9IGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzLnNvbWUoKHJ1bGU6IGFueSkgPT5cbiAgICAgIHR5cGVvZiBydWxlID09PSAnb2JqZWN0JyAmJlxuICAgICAgcnVsZSAhPT0gbnVsbCAmJlxuICAgICAgJ3Rlc3QnIGluIHJ1bGUgJiZcbiAgICAgIHJ1bGUudGVzdCBpbnN0YW5jZW9mIFJlZ0V4cCAmJlxuICAgICAgcnVsZS50ZXN0LnRlc3QoJy50cycpXG4gICAgKTtcblxuICAgIC8vIEFkZCBUeXBlU2NyaXB0IGxvYWRlciBpZiBub3QgcHJlc2VudFxuICAgIGlmICghaGFzVHNMb2FkZXIpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzLnB1c2goe1xuICAgICAgICB0ZXN0OiAvXFwudHN4PyQvLFxuICAgICAgICB1c2U6ICdidWlsdGluOnN3Yy1sb2FkZXInLFxuICAgICAgICBleGNsdWRlOiAvbm9kZV9tb2R1bGVzLyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRGV2U2VydmVyKGNvbXBpbGVyOiBDb21waWxlciwgcGx1Z2luSW5mbzogYW55LCBkZXZDb25maWc6IGFueSwgcG9ydDogbnVtYmVyKSB7XG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmRldlNlcnZlcikge1xuICAgICAgcmV0dXJuOyAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuIGR1ZSB0byBjaGVjayBpbiBhcHBseSgpXG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IGNvbXBpbGVyLm9wdGlvbnMuY29udGV4dCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IG9yaWdpbmFsU2V0dXAgPSBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5zZXR1cE1pZGRsZXdhcmVzO1xuXG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIucG9ydCA9IHBvcnQ7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuc3RhdGljID0gcGF0aC5qb2luKGNvbnRleHQsICdkaXN0Jyk7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuaG90ID0gdHJ1ZTtcbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5kZXZNaWRkbGV3YXJlID0geyB3cml0ZVRvRGlzazogdHJ1ZSB9O1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmhlYWRlcnMgPSB7XG4gICAgICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogJyonLFxuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnOiAnR0VULCBQT1NULCBQVVQsIERFTEVURSwgUEFUQ0gsIE9QVElPTlMnLFxuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnOiAnWC1SZXF1ZXN0ZWQtV2l0aCwgY29udGVudC10eXBlLCBBdXRob3JpemF0aW9uJyxcbiAgICB9O1xuXG4gICAgLy8gU3VwcHJlc3MgdmVyYm9zZSBsb2dnaW5nXG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuY2xpZW50ID0ge1xuICAgICAgbG9nZ2luZzogJ3dhcm4nLCAgLy8gT25seSBzaG93IHdhcm5pbmdzIGFuZCBlcnJvcnNcbiAgICAgIG92ZXJsYXk6IHtcbiAgICAgICAgd2FybmluZ3M6IGZhbHNlLCAgLy8gRG9uJ3Qgc2hvdyB3YXJuaW5nIG92ZXJsYXlcbiAgICAgICAgZXJyb3JzOiB0cnVlLCAgICAgLy8gU3RpbGwgc2hvdyBlcnJvcnNcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnNldHVwTWlkZGxld2FyZXMgPSAobWlkZGxld2FyZXMsIGRldlNlcnZlcikgPT4ge1xuICAgICAgc2V0dXBQbHVnaW5NaWRkbGV3YXJlKGRldlNlcnZlciwgcGx1Z2luSW5mbywgZGV2Q29uZmlnLCBwb3J0KTtcbiAgICAgIHJldHVybiBvcmlnaW5hbFNldHVwID8gb3JpZ2luYWxTZXR1cChtaWRkbGV3YXJlcywgZGV2U2VydmVyKSA6IG1pZGRsZXdhcmVzO1xuICAgIH07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFZQSxTQUFnQixjQUFjLFNBQTZCO0NBQ3pELE1BQU0sVUFBVSxLQUFLLEtBQUssU0FBUyxlQUFlO0NBQ2xELE1BQU0sTUFBTSxLQUFLLE1BQU0sR0FBRyxhQUFhLFNBQVMsUUFBUSxDQUFDO0FBRXpELFFBQU87RUFDTCxNQUFNLElBQUk7RUFDVixTQUFTLElBQUk7RUFDYixnQkFBZ0Isd0JBQXdCLElBQUksS0FBSztFQUNqRCxjQUFjLElBQUksZ0JBQWdCLEVBQUU7RUFDcEMsa0JBQWtCLElBQUksb0JBQW9CLEVBQUU7RUFDN0M7O0FBR0gsTUFBTSxnQ0FBZ0IsSUFBSSxLQUFhO0FBRXZDLFNBQWdCLGNBQWMsZUFBdUI7QUFDbkQsS0FBSTtFQUNGLE1BQU0sV0FBVyxLQUFLLFFBQVEsY0FBYztBQUU1QyxNQUFJLGNBQWMsSUFBSSxTQUFTLEVBQUU7QUFDL0Isb0JBQWUsTUFBTTtHQUNyQixNQUFNLFVBQVUsS0FBSyxRQUFRLFNBQVM7QUFDdEMsUUFBSyxNQUFNLE9BQU8sT0FBTyxlQUFhLE1BQU0sQ0FDMUMsS0FBSSxJQUFJLFdBQVcsUUFBUSxJQUFJLFFBQVEsU0FDckMsa0JBQWUsTUFBTTs7RUFLM0IsTUFBTSxtQkFBaUIsU0FBUyxDQUFDO0FBQ2pD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
|
package/dist/index.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-zltIcp7o.cjs');
|
|
2
2
|
require('./zod-DYghWCz1.cjs');
|
|
3
3
|
const require_errors = require('./errors-CVnoPl9v.cjs');
|
|
4
|
-
const require_runtime = require('./runtime-
|
|
4
|
+
const require_runtime = require('./runtime-D5bSEcHa.cjs');
|
|
5
5
|
const require_normalize = require('./normalize-D4Qh0wVk.cjs');
|
|
6
|
-
require('./package-
|
|
6
|
+
require('./package-CMoV9xVN.cjs');
|
|
7
7
|
let effect = require("effect");
|
|
8
8
|
let __orpc_server = require("@orpc/server");
|
|
9
9
|
|
package/dist/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./zod-BVo51kgJ.mjs";
|
|
2
2
|
import { t as CommonPluginErrors } from "./errors-D7keKf7a.mjs";
|
|
3
|
-
import { n as createPluginRuntime, t as PluginRuntime } from "./runtime-
|
|
3
|
+
import { n as createPluginRuntime, t as PluginRuntime } from "./runtime-B4AItsDQ.mjs";
|
|
4
4
|
import { t as getNormalizedRemoteName } from "./normalize-D7nae0Hn.mjs";
|
|
5
|
-
import "./package-
|
|
5
|
+
import "./package-WZ0vKAyb.mjs";
|
|
6
6
|
import { Effect } from "effect";
|
|
7
7
|
import { implement } from "@orpc/server";
|
|
8
8
|
|
|
@@ -4,7 +4,7 @@ const require_chunk = require('./chunk-zltIcp7o.cjs');
|
|
|
4
4
|
var require_package = /* @__PURE__ */ require_chunk.__commonJS({ "package.json": ((exports, module) => {
|
|
5
5
|
module.exports = {
|
|
6
6
|
"name": "every-plugin",
|
|
7
|
-
"version": "0.4.
|
|
7
|
+
"version": "0.4.13",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"main": "./dist/index.cjs",
|
|
10
10
|
"module": "./dist/index.mjs",
|
|
@@ -152,4 +152,4 @@ Object.defineProperty(exports, 'require_package', {
|
|
|
152
152
|
return require_package;
|
|
153
153
|
}
|
|
154
154
|
});
|
|
155
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
155
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS1DTW9WOXhWTi5janMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vcGFja2FnZS5qc29uIl0sInNvdXJjZXNDb250ZW50IjpbIntcblx0XCJuYW1lXCI6IFwiZXZlcnktcGx1Z2luXCIsXG5cdFwidmVyc2lvblwiOiBcIjAuNC4xM1wiLFxuXHRcInR5cGVcIjogXCJtb2R1bGVcIixcblx0XCJtYWluXCI6IFwiLi9kaXN0L2luZGV4LmNqc1wiLFxuXHRcIm1vZHVsZVwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcblx0XCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLm10c1wiLFxuXHRcImV4cG9ydHNcIjoge1xuXHRcdFwiLlwiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvaW5kZXguZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L2luZGV4LmQuY3RzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9pbmRleC5janNcIlxuXHRcdH0sXG5cdFx0XCIuL3J1bnRpbWVcIjoge1xuXHRcdFx0XCJ0eXBlc1wiOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3J1bnRpbWUvaW5kZXguZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L3J1bnRpbWUvaW5kZXguZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3J1bnRpbWUvaW5kZXgubWpzXCIsXG5cdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3QvcnVudGltZS9pbmRleC5janNcIlxuXHRcdH0sXG5cdFx0XCIuL3Rlc3RpbmdcIjoge1xuXHRcdFx0XCJ0eXBlc1wiOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3Rlc3RpbmcvaW5kZXguZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L3Rlc3RpbmcvaW5kZXguZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3Rlc3RpbmcvaW5kZXgubWpzXCIsXG5cdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3QvdGVzdGluZy9pbmRleC5janNcIlxuXHRcdH0sXG5cdFx0XCIuL25vcm1hbGl6ZVwiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvcnVudGltZS9zZXJ2aWNlcy9ub3JtYWxpemUuZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L3J1bnRpbWUvc2VydmljZXMvbm9ybWFsaXplLmQuY3RzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9ydW50aW1lL3NlcnZpY2VzL25vcm1hbGl6ZS5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9ydW50aW1lL3NlcnZpY2VzL25vcm1hbGl6ZS5janNcIlxuXHRcdH0sXG5cdFx0XCIuL2VmZmVjdFwiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvZWZmZWN0LmQubXRzXCIsXG5cdFx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9lZmZlY3QuZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L2VmZmVjdC5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9lZmZlY3QuY2pzXCJcblx0XHR9LFxuXHRcdFwiLi96b2RcIjoge1xuXHRcdFx0XCJ0eXBlc1wiOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3pvZC5kLm10c1wiLFxuXHRcdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3Qvem9kLmQuY3RzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC96b2QubWpzXCIsXG5cdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3Qvem9kLmNqc1wiXG5cdFx0fSxcblx0XHRcIi4vb3JwY1wiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3Qvb3JwYy5kLm10c1wiLFxuXHRcdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3Qvb3JwYy5kLmN0c1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3Qvb3JwYy5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9vcnBjLmNqc1wiXG5cdFx0fSxcblx0XHRcIi4vZXJyb3JzXCI6IHtcblx0XHRcdFwidHlwZXNcIjoge1xuXHRcdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9lcnJvcnMuZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L2Vycm9ycy5kLmN0c1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvZXJyb3JzLm1qc1wiLFxuXHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L2Vycm9ycy5janNcIlxuXHRcdH0sXG5cdFx0XCIuL2J1aWxkL3JzcGFja1wiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvYnVpbGQvcnNwYWNrL2luZGV4LmQubXRzXCIsXG5cdFx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9idWlsZC9yc3BhY2svaW5kZXguZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L2J1aWxkL3JzcGFjay9pbmRleC5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9idWlsZC9yc3BhY2svaW5kZXguY2pzXCJcblx0XHR9LFxuXHRcdFwiLi9wYWNrYWdlLmpzb25cIjogXCIuL3BhY2thZ2UuanNvblwiXG5cdH0sXG5cdFwiZmlsZXNcIjogW1xuXHRcdFwiZGlzdFwiXG5cdF0sXG5cdFwic2NyaXB0c1wiOiB7XG5cdFx0XCJidWlsZFwiOiBcInRzZG93blwiLFxuXHRcdFwiYnVpbGQ6dGVzdFwiOiBcImNkIHRlc3RzL2ZpeHR1cmVzL3Rlc3QtcGx1Z2luICYmIGJ1biBydW4gYnVpbGRcIixcblx0XHRcInRlc3RcIjogXCJ2aXRlc3QgcnVuIC0tY29uZmlnIHZpdGVzdC5jb25maWcudHNcIixcblx0XHRcInRlc3Q6dW5pdFwiOiBcInZpdGVzdCBydW4gLS1jb25maWcgdml0ZXN0LmNvbmZpZy50c1wiLFxuXHRcdFwidGVzdDppbnRlZ3JhdGlvblwiOiBcImJ1biBydW4gYnVpbGQ6dGVzdCAmJiB2aXRlc3QgcnVuIC0tY29uZmlnIHZpdGVzdC5pbnRlZ3JhdGlvbi5jb25maWcudHNcIixcblx0XHRcInRlc3Q6YWxsXCI6IFwiYnVuIHJ1biB0ZXN0OnVuaXQgJiYgYnVuIHJ1biB0ZXN0OmludGVncmF0aW9uXCIsXG5cdFx0XCJ0ZXN0OndhdGNoXCI6IFwidml0ZXN0IC0tY29uZmlnIHZpdGVzdC5jb25maWcudHMgLS13YXRjaFwiLFxuXHRcdFwidHlwZWNoZWNrXCI6IFwidHNjIC0tbm9FbWl0XCJcblx0fSxcblx0XCJwZWVyRGVwZW5kZW5jaWVzXCI6IHtcblx0XHRcIkByc3BhY2svY29yZVwiOiBcIipcIixcblx0XHRcInR5cGVzY3JpcHRcIjogXCJeNS42LjBcIlxuXHR9LFxuXHRcImRldkRlcGVuZGVuY2llc1wiOiB7XG5cdFx0XCJAZWZmZWN0L2xhbmd1YWdlLXNlcnZpY2VcIjogXCJeMC4zOC40XCIsXG5cdFx0XCJAZWZmZWN0L3ZpdGVzdFwiOiBcIl4wLjI1LjFcIixcblx0XHRcIkBvcnBjL2NsaWVudFwiOiBcIl4xLjEwLjBcIixcblx0XHRcIkBvcnBjL29wZW5hcGlcIjogXCJeMS4xMC40XCIsXG5cdFx0XCJAcnNwYWNrL2NsaVwiOiBcIl4xLjUuOFwiLFxuXHRcdFwiQHR5cGVzL2J1blwiOiBcIl4xLjMuMFwiLFxuXHRcdFwiQHR5cGVzL25vZGVcIjogXCJeMjQuOS4wXCIsXG5cdFx0XCJAdml0ZXN0L3VpXCI6IFwiMy4yLjRcIixcblx0XHRcImJ1bi10eXBlc1wiOiBcIl4xLjMuMFwiLFxuXHRcdFwic2lydlwiOiBcIl4zLjAuMlwiLFxuXHRcdFwidHNkb3duXCI6IFwiXjAuMTYuMVwiLFxuXHRcdFwidml0ZS10c2NvbmZpZy1wYXRoc1wiOiBcIl41LjEuNFwiLFxuXHRcdFwidml0ZXN0XCI6IFwiXjMuMi40XCJcblx0fSxcblx0XCJkZXBlbmRlbmNpZXNcIjoge1xuXHRcdFwiQGJldHRlci1mZXRjaC9mZXRjaFwiOiBcIl4xLjEuMThcIixcblx0XHRcIkBtb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZFwiOiBcIl4wLjE5LjFcIixcblx0XHRcIkBtb2R1bGUtZmVkZXJhdGlvbi9ub2RlXCI6IFwiXjIuNy4xNVwiLFxuXHRcdFwiQG1vZHVsZS1mZWRlcmF0aW9uL3J1bnRpbWUtY29yZVwiOiBcIl4wLjE5LjFcIixcblx0XHRcIkBvcnBjL2NvbnRyYWN0XCI6IFwiXjEuMTAuMFwiLFxuXHRcdFwiQG9ycGMvZXhwZXJpbWVudGFsLXB1Ymxpc2hlclwiOiBcIl4xLjEwLjBcIixcblx0XHRcIkBvcnBjL3NlcnZlclwiOiBcIl4xLjEwLjBcIixcblx0XHRcIkBvcnBjL3pvZFwiOiBcIl4xLjEwLjBcIixcblx0XHRcImVmZmVjdFwiOiBcIjMuMTguMVwiLFxuXHRcdFwiem9kXCI6IFwiNC4xLjVcIlxuXHR9LFxuXHRcImtleXdvcmRzXCI6IFtcblx0XHRcInBsdWdpblwiLFxuXHRcdFwibW9kdWxlLWZlZGVyYXRpb25cIixcblx0XHRcIm9ycGNcIixcblx0XHRcInpvZFwiLFxuXHRcdFwidHlwZXNjcmlwdFwiXG5cdF0sXG5cdFwiYXV0aG9yXCI6IFwicGx1Z2luLmV2ZXJ5Lm5lYXJcIixcblx0XCJsaWNlbnNlXCI6IFwiTUlUXCIsXG5cdFwicmVwb3NpdG9yeVwiOiB7XG5cdFx0XCJ0eXBlXCI6IFwiZ2l0XCIsXG5cdFx0XCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vbmVhci1ldmVyeXRoaW5nL2V2ZXJ5LXBsdWdpbi5naXRcIlxuXHR9LFxuXHRcImJ1Z3NcIjoge1xuXHRcdFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL25lYXItZXZlcnl0aGluZy9ldmVyeS1wbHVnaW4vaXNzdWVzXCJcblx0fSxcblx0XCJob21lcGFnZVwiOiBcImh0dHBzOi8vcGx1Z2luLmV2ZXJ5dGhpbmcuZGV2XCIsXG5cdFwid29ya3NwYWNlc1wiOiBbXG5cdFx0XCJ0ZXN0cy9maXh0dXJlcy8qXCJcblx0XVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O2tCQUFBO0VBQ0MsUUFBUTtFQUNSLFdBQVc7RUFDWCxRQUFRO0VBQ1IsUUFBUTtFQUNSLFVBQVU7RUFDVixTQUFTO0VBQ1QsV0FBVztHQUNWLEtBQUs7SUFDSixTQUFTO0tBQ1IsVUFBVTtLQUNWLFdBQVc7S0FDWDtJQUNELFVBQVU7SUFDVixXQUFXO0lBQ1g7R0FDRCxhQUFhO0lBQ1osU0FBUztLQUNSLFVBQVU7S0FDVixXQUFXO0tBQ1g7SUFDRCxVQUFVO0lBQ1YsV0FBVztJQUNYO0dBQ0QsYUFBYTtJQUNaLFNBQVM7S0FDUixVQUFVO0tBQ1YsV0FBVztLQUNYO0lBQ0QsVUFBVTtJQUNWLFdBQVc7SUFDWDtHQUNELGVBQWU7SUFDZCxTQUFTO0tBQ1IsVUFBVTtLQUNWLFdBQVc7S0FDWDtJQUNELFVBQVU7SUFDVixXQUFXO0lBQ1g7R0FDRCxZQUFZO0lBQ1gsU0FBUztLQUNSLFVBQVU7S0FDVixXQUFXO0tBQ1g7SUFDRCxVQUFVO0lBQ1YsV0FBVztJQUNYO0dBQ0QsU0FBUztJQUNSLFNBQVM7S0FDUixVQUFVO0tBQ1YsV0FBVztLQUNYO0lBQ0QsVUFBVTtJQUNWLFdBQVc7SUFDWDtHQUNELFVBQVU7SUFDVCxTQUFTO0tBQ1IsVUFBVTtLQUNWLFdBQVc7S0FDWDtJQUNELFVBQVU7SUFDVixXQUFXO0lBQ1g7R0FDRCxZQUFZO0lBQ1gsU0FBUztLQUNSLFVBQVU7S0FDVixXQUFXO0tBQ1g7SUFDRCxVQUFVO0lBQ1YsV0FBVztJQUNYO0dBQ0Qsa0JBQWtCO0lBQ2pCLFNBQVM7S0FDUixVQUFVO0tBQ1YsV0FBVztLQUNYO0lBQ0QsVUFBVTtJQUNWLFdBQVc7SUFDWDtHQUNELGtCQUFrQjtHQUNsQjtFQUNELFNBQVMsQ0FDUixPQUNBO0VBQ0QsV0FBVztHQUNWLFNBQVM7R0FDVCxjQUFjO0dBQ2QsUUFBUTtHQUNSLGFBQWE7R0FDYixvQkFBb0I7R0FDcEIsWUFBWTtHQUNaLGNBQWM7R0FDZCxhQUFhO0dBQ2I7RUFDRCxvQkFBb0I7R0FDbkIsZ0JBQWdCO0dBQ2hCLGNBQWM7R0FDZDtFQUNELG1CQUFtQjtHQUNsQiw0QkFBNEI7R0FDNUIsa0JBQWtCO0dBQ2xCLGdCQUFnQjtHQUNoQixpQkFBaUI7R0FDakIsZUFBZTtHQUNmLGNBQWM7R0FDZCxlQUFlO0dBQ2YsY0FBYztHQUNkLGFBQWE7R0FDYixRQUFRO0dBQ1IsVUFBVTtHQUNWLHVCQUF1QjtHQUN2QixVQUFVO0dBQ1Y7RUFDRCxnQkFBZ0I7R0FDZix1QkFBdUI7R0FDdkIsK0JBQStCO0dBQy9CLDJCQUEyQjtHQUMzQixtQ0FBbUM7R0FDbkMsa0JBQWtCO0dBQ2xCLGdDQUFnQztHQUNoQyxnQkFBZ0I7R0FDaEIsYUFBYTtHQUNiLFVBQVU7R0FDVixPQUFPO0dBQ1A7RUFDRCxZQUFZO0dBQ1g7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0VBQ0QsVUFBVTtFQUNWLFdBQVc7RUFDWCxjQUFjO0dBQ2IsUUFBUTtHQUNSLE9BQU87R0FDUDtFQUNELFFBQVEsRUFDUCxPQUFPLDBEQUNQO0VBQ0QsWUFBWTtFQUNaLGNBQWMsQ0FDYixtQkFDQTtFQUNEIn0=
|
|
@@ -4,7 +4,7 @@ import { t as __commonJS } from "./chunk-QQAxy9l9.mjs";
|
|
|
4
4
|
var require_package = /* @__PURE__ */ __commonJS({ "package.json": ((exports, module) => {
|
|
5
5
|
module.exports = {
|
|
6
6
|
"name": "every-plugin",
|
|
7
|
-
"version": "0.4.
|
|
7
|
+
"version": "0.4.13",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"main": "./dist/index.cjs",
|
|
10
10
|
"module": "./dist/index.mjs",
|
|
@@ -147,4 +147,4 @@ var require_package = /* @__PURE__ */ __commonJS({ "package.json": ((exports, mo
|
|
|
147
147
|
|
|
148
148
|
//#endregion
|
|
149
149
|
export { require_package as t };
|
|
150
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
150
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS1XWjB2S0F5Yi5tanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vcGFja2FnZS5qc29uIl0sInNvdXJjZXNDb250ZW50IjpbIntcblx0XCJuYW1lXCI6IFwiZXZlcnktcGx1Z2luXCIsXG5cdFwidmVyc2lvblwiOiBcIjAuNC4xM1wiLFxuXHRcInR5cGVcIjogXCJtb2R1bGVcIixcblx0XCJtYWluXCI6IFwiLi9kaXN0L2luZGV4LmNqc1wiLFxuXHRcIm1vZHVsZVwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcblx0XCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLm10c1wiLFxuXHRcImV4cG9ydHNcIjoge1xuXHRcdFwiLlwiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvaW5kZXguZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L2luZGV4LmQuY3RzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9pbmRleC5janNcIlxuXHRcdH0sXG5cdFx0XCIuL3J1bnRpbWVcIjoge1xuXHRcdFx0XCJ0eXBlc1wiOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3J1bnRpbWUvaW5kZXguZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L3J1bnRpbWUvaW5kZXguZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3J1bnRpbWUvaW5kZXgubWpzXCIsXG5cdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3QvcnVudGltZS9pbmRleC5janNcIlxuXHRcdH0sXG5cdFx0XCIuL3Rlc3RpbmdcIjoge1xuXHRcdFx0XCJ0eXBlc1wiOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3Rlc3RpbmcvaW5kZXguZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L3Rlc3RpbmcvaW5kZXguZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3Rlc3RpbmcvaW5kZXgubWpzXCIsXG5cdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3QvdGVzdGluZy9pbmRleC5janNcIlxuXHRcdH0sXG5cdFx0XCIuL25vcm1hbGl6ZVwiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvcnVudGltZS9zZXJ2aWNlcy9ub3JtYWxpemUuZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L3J1bnRpbWUvc2VydmljZXMvbm9ybWFsaXplLmQuY3RzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9ydW50aW1lL3NlcnZpY2VzL25vcm1hbGl6ZS5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9ydW50aW1lL3NlcnZpY2VzL25vcm1hbGl6ZS5janNcIlxuXHRcdH0sXG5cdFx0XCIuL2VmZmVjdFwiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvZWZmZWN0LmQubXRzXCIsXG5cdFx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9lZmZlY3QuZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L2VmZmVjdC5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9lZmZlY3QuY2pzXCJcblx0XHR9LFxuXHRcdFwiLi96b2RcIjoge1xuXHRcdFx0XCJ0eXBlc1wiOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3pvZC5kLm10c1wiLFxuXHRcdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3Qvem9kLmQuY3RzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC96b2QubWpzXCIsXG5cdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3Qvem9kLmNqc1wiXG5cdFx0fSxcblx0XHRcIi4vb3JwY1wiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3Qvb3JwYy5kLm10c1wiLFxuXHRcdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3Qvb3JwYy5kLmN0c1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3Qvb3JwYy5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9vcnBjLmNqc1wiXG5cdFx0fSxcblx0XHRcIi4vZXJyb3JzXCI6IHtcblx0XHRcdFwidHlwZXNcIjoge1xuXHRcdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9lcnJvcnMuZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L2Vycm9ycy5kLmN0c1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvZXJyb3JzLm1qc1wiLFxuXHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L2Vycm9ycy5janNcIlxuXHRcdH0sXG5cdFx0XCIuL2J1aWxkL3JzcGFja1wiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvYnVpbGQvcnNwYWNrL2luZGV4LmQubXRzXCIsXG5cdFx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9idWlsZC9yc3BhY2svaW5kZXguZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L2J1aWxkL3JzcGFjay9pbmRleC5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9idWlsZC9yc3BhY2svaW5kZXguY2pzXCJcblx0XHR9LFxuXHRcdFwiLi9wYWNrYWdlLmpzb25cIjogXCIuL3BhY2thZ2UuanNvblwiXG5cdH0sXG5cdFwiZmlsZXNcIjogW1xuXHRcdFwiZGlzdFwiXG5cdF0sXG5cdFwic2NyaXB0c1wiOiB7XG5cdFx0XCJidWlsZFwiOiBcInRzZG93blwiLFxuXHRcdFwiYnVpbGQ6dGVzdFwiOiBcImNkIHRlc3RzL2ZpeHR1cmVzL3Rlc3QtcGx1Z2luICYmIGJ1biBydW4gYnVpbGRcIixcblx0XHRcInRlc3RcIjogXCJ2aXRlc3QgcnVuIC0tY29uZmlnIHZpdGVzdC5jb25maWcudHNcIixcblx0XHRcInRlc3Q6dW5pdFwiOiBcInZpdGVzdCBydW4gLS1jb25maWcgdml0ZXN0LmNvbmZpZy50c1wiLFxuXHRcdFwidGVzdDppbnRlZ3JhdGlvblwiOiBcImJ1biBydW4gYnVpbGQ6dGVzdCAmJiB2aXRlc3QgcnVuIC0tY29uZmlnIHZpdGVzdC5pbnRlZ3JhdGlvbi5jb25maWcudHNcIixcblx0XHRcInRlc3Q6YWxsXCI6IFwiYnVuIHJ1biB0ZXN0OnVuaXQgJiYgYnVuIHJ1biB0ZXN0OmludGVncmF0aW9uXCIsXG5cdFx0XCJ0ZXN0OndhdGNoXCI6IFwidml0ZXN0IC0tY29uZmlnIHZpdGVzdC5jb25maWcudHMgLS13YXRjaFwiLFxuXHRcdFwidHlwZWNoZWNrXCI6IFwidHNjIC0tbm9FbWl0XCJcblx0fSxcblx0XCJwZWVyRGVwZW5kZW5jaWVzXCI6IHtcblx0XHRcIkByc3BhY2svY29yZVwiOiBcIipcIixcblx0XHRcInR5cGVzY3JpcHRcIjogXCJeNS42LjBcIlxuXHR9LFxuXHRcImRldkRlcGVuZGVuY2llc1wiOiB7XG5cdFx0XCJAZWZmZWN0L2xhbmd1YWdlLXNlcnZpY2VcIjogXCJeMC4zOC40XCIsXG5cdFx0XCJAZWZmZWN0L3ZpdGVzdFwiOiBcIl4wLjI1LjFcIixcblx0XHRcIkBvcnBjL2NsaWVudFwiOiBcIl4xLjEwLjBcIixcblx0XHRcIkBvcnBjL29wZW5hcGlcIjogXCJeMS4xMC40XCIsXG5cdFx0XCJAcnNwYWNrL2NsaVwiOiBcIl4xLjUuOFwiLFxuXHRcdFwiQHR5cGVzL2J1blwiOiBcIl4xLjMuMFwiLFxuXHRcdFwiQHR5cGVzL25vZGVcIjogXCJeMjQuOS4wXCIsXG5cdFx0XCJAdml0ZXN0L3VpXCI6IFwiMy4yLjRcIixcblx0XHRcImJ1bi10eXBlc1wiOiBcIl4xLjMuMFwiLFxuXHRcdFwic2lydlwiOiBcIl4zLjAuMlwiLFxuXHRcdFwidHNkb3duXCI6IFwiXjAuMTYuMVwiLFxuXHRcdFwidml0ZS10c2NvbmZpZy1wYXRoc1wiOiBcIl41LjEuNFwiLFxuXHRcdFwidml0ZXN0XCI6IFwiXjMuMi40XCJcblx0fSxcblx0XCJkZXBlbmRlbmNpZXNcIjoge1xuXHRcdFwiQGJldHRlci1mZXRjaC9mZXRjaFwiOiBcIl4xLjEuMThcIixcblx0XHRcIkBtb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZFwiOiBcIl4wLjE5LjFcIixcblx0XHRcIkBtb2R1bGUtZmVkZXJhdGlvbi9ub2RlXCI6IFwiXjIuNy4xNVwiLFxuXHRcdFwiQG1vZHVsZS1mZWRlcmF0aW9uL3J1bnRpbWUtY29yZVwiOiBcIl4wLjE5LjFcIixcblx0XHRcIkBvcnBjL2NvbnRyYWN0XCI6IFwiXjEuMTAuMFwiLFxuXHRcdFwiQG9ycGMvZXhwZXJpbWVudGFsLXB1Ymxpc2hlclwiOiBcIl4xLjEwLjBcIixcblx0XHRcIkBvcnBjL3NlcnZlclwiOiBcIl4xLjEwLjBcIixcblx0XHRcIkBvcnBjL3pvZFwiOiBcIl4xLjEwLjBcIixcblx0XHRcImVmZmVjdFwiOiBcIjMuMTguMVwiLFxuXHRcdFwiem9kXCI6IFwiNC4xLjVcIlxuXHR9LFxuXHRcImtleXdvcmRzXCI6IFtcblx0XHRcInBsdWdpblwiLFxuXHRcdFwibW9kdWxlLWZlZGVyYXRpb25cIixcblx0XHRcIm9ycGNcIixcblx0XHRcInpvZFwiLFxuXHRcdFwidHlwZXNjcmlwdFwiXG5cdF0sXG5cdFwiYXV0aG9yXCI6IFwicGx1Z2luLmV2ZXJ5Lm5lYXJcIixcblx0XCJsaWNlbnNlXCI6IFwiTUlUXCIsXG5cdFwicmVwb3NpdG9yeVwiOiB7XG5cdFx0XCJ0eXBlXCI6IFwiZ2l0XCIsXG5cdFx0XCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vbmVhci1ldmVyeXRoaW5nL2V2ZXJ5LXBsdWdpbi5naXRcIlxuXHR9LFxuXHRcImJ1Z3NcIjoge1xuXHRcdFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL25lYXItZXZlcnl0aGluZy9ldmVyeS1wbHVnaW4vaXNzdWVzXCJcblx0fSxcblx0XCJob21lcGFnZVwiOiBcImh0dHBzOi8vcGx1Z2luLmV2ZXJ5dGhpbmcuZGV2XCIsXG5cdFwid29ya3NwYWNlc1wiOiBbXG5cdFx0XCJ0ZXN0cy9maXh0dXJlcy8qXCJcblx0XVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O2tCQUFBO0VBQ0MsUUFBUTtFQUNSLFdBQVc7RUFDWCxRQUFRO0VBQ1IsUUFBUTtFQUNSLFVBQVU7RUFDVixTQUFTO0VBQ1QsV0FBVztHQUNWLEtBQUs7SUFDSixTQUFTO0tBQ1IsVUFBVTtLQUNWLFdBQVc7S0FDWDtJQUNELFVBQVU7SUFDVixXQUFXO0lBQ1g7R0FDRCxhQUFhO0lBQ1osU0FBUztLQUNSLFVBQVU7S0FDVixXQUFXO0tBQ1g7SUFDRCxVQUFVO0lBQ1YsV0FBVztJQUNYO0dBQ0QsYUFBYTtJQUNaLFNBQVM7S0FDUixVQUFVO0tBQ1YsV0FBVztLQUNYO0lBQ0QsVUFBVTtJQUNWLFdBQVc7SUFDWDtHQUNELGVBQWU7SUFDZCxTQUFTO0tBQ1IsVUFBVTtLQUNWLFdBQVc7S0FDWDtJQUNELFVBQVU7SUFDVixXQUFXO0lBQ1g7R0FDRCxZQUFZO0lBQ1gsU0FBUztLQUNSLFVBQVU7S0FDVixXQUFXO0tBQ1g7SUFDRCxVQUFVO0lBQ1YsV0FBVztJQUNYO0dBQ0QsU0FBUztJQUNSLFNBQVM7S0FDUixVQUFVO0tBQ1YsV0FBVztLQUNYO0lBQ0QsVUFBVTtJQUNWLFdBQVc7SUFDWDtHQUNELFVBQVU7SUFDVCxTQUFTO0tBQ1IsVUFBVTtLQUNWLFdBQVc7S0FDWDtJQUNELFVBQVU7SUFDVixXQUFXO0lBQ1g7R0FDRCxZQUFZO0lBQ1gsU0FBUztLQUNSLFVBQVU7S0FDVixXQUFXO0tBQ1g7SUFDRCxVQUFVO0lBQ1YsV0FBVztJQUNYO0dBQ0Qsa0JBQWtCO0lBQ2pCLFNBQVM7S0FDUixVQUFVO0tBQ1YsV0FBVztLQUNYO0lBQ0QsVUFBVTtJQUNWLFdBQVc7SUFDWDtHQUNELGtCQUFrQjtHQUNsQjtFQUNELFNBQVMsQ0FDUixPQUNBO0VBQ0QsV0FBVztHQUNWLFNBQVM7R0FDVCxjQUFjO0dBQ2QsUUFBUTtHQUNSLGFBQWE7R0FDYixvQkFBb0I7R0FDcEIsWUFBWTtHQUNaLGNBQWM7R0FDZCxhQUFhO0dBQ2I7RUFDRCxvQkFBb0I7R0FDbkIsZ0JBQWdCO0dBQ2hCLGNBQWM7R0FDZDtFQUNELG1CQUFtQjtHQUNsQiw0QkFBNEI7R0FDNUIsa0JBQWtCO0dBQ2xCLGdCQUFnQjtHQUNoQixpQkFBaUI7R0FDakIsZUFBZTtHQUNmLGNBQWM7R0FDZCxlQUFlO0dBQ2YsY0FBYztHQUNkLGFBQWE7R0FDYixRQUFRO0dBQ1IsVUFBVTtHQUNWLHVCQUF1QjtHQUN2QixVQUFVO0dBQ1Y7RUFDRCxnQkFBZ0I7R0FDZix1QkFBdUI7R0FDdkIsK0JBQStCO0dBQy9CLDJCQUEyQjtHQUMzQixtQ0FBbUM7R0FDbkMsa0JBQWtCO0dBQ2xCLGdDQUFnQztHQUNoQyxnQkFBZ0I7R0FDaEIsYUFBYTtHQUNiLFVBQVU7R0FDVixPQUFPO0dBQ1A7RUFDRCxZQUFZO0dBQ1g7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0VBQ0QsVUFBVTtFQUNWLFdBQVc7RUFDWCxjQUFjO0dBQ2IsUUFBUTtHQUNSLE9BQU87R0FDUDtFQUNELFFBQVEsRUFDUCxPQUFPLDBEQUNQO0VBQ0QsWUFBWTtFQUNaLGNBQWMsQ0FDYixtQkFDQTtFQUNEIn0=
|
package/dist/runtime/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const require_runtime = require('../runtime-
|
|
1
|
+
const require_runtime = require('../runtime-D5bSEcHa.cjs');
|
|
2
2
|
require('../normalize-D4Qh0wVk.cjs');
|
|
3
|
-
require('../package-
|
|
3
|
+
require('../package-CMoV9xVN.cjs');
|
|
4
4
|
|
|
5
5
|
exports.PluginRuntime = require_runtime.PluginRuntime;
|
|
6
6
|
exports.createPluginRuntime = require_runtime.createPluginRuntime;
|
package/dist/runtime/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as createPluginRuntime, t as PluginRuntime } from "../runtime-
|
|
1
|
+
import { n as createPluginRuntime, t as PluginRuntime } from "../runtime-B4AItsDQ.mjs";
|
|
2
2
|
import "../normalize-D7nae0Hn.mjs";
|
|
3
|
-
import "../package-
|
|
3
|
+
import "../package-WZ0vKAyb.mjs";
|
|
4
4
|
|
|
5
5
|
export { PluginRuntime, createPluginRuntime };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as __toESM } from "./chunk-QQAxy9l9.mjs";
|
|
2
2
|
import { t as getNormalizedRemoteName } from "./normalize-D7nae0Hn.mjs";
|
|
3
|
-
import { t as require_package } from "./package-
|
|
3
|
+
import { t as require_package } from "./package-WZ0vKAyb.mjs";
|
|
4
4
|
import { Cause, Context, Data, Effect, Exit, Hash, Layer, ManagedRuntime, Option, Ref, Scope } from "effect";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { createRouterClient } from "@orpc/server";
|
|
@@ -455,4 +455,4 @@ function createPluginRuntime(config) {
|
|
|
455
455
|
|
|
456
456
|
//#endregion
|
|
457
457
|
export { PluginRegistryTag as a, SecretsService as c, ModuleFederationError as d, PluginLoaderService as i, PluginLifecycleService as l, createPluginRuntime as n, RegistryService as o, PluginService as r, SecretsConfigTag as s, PluginRuntime as t, ModuleFederationService as u };
|
|
458
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1CcjB3T2N1ay5tanMiLCJuYW1lcyI6WyJwa2ciLCJlcnJvciIsInJ1bnRpbWU6IE1hbmFnZWRSdW50aW1lLk1hbmFnZWRSdW50aW1lPFBsdWdpblNlcnZpY2UsIG5ldmVyPiIsInJlZ2lzdHJ5OiBQbHVnaW5SZWdpc3RyeSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lL2Vycm9ycy50cyIsIi4uL3NyYy9ydW50aW1lL3NlcnZpY2VzL21vZHVsZS1mZWRlcmF0aW9uLnNlcnZpY2UudHMiLCIuLi9zcmMvcnVudGltZS9zZXJ2aWNlcy9wbHVnaW4tbGlmZWN5Y2xlLnNlcnZpY2UudHMiLCIuLi9zcmMvcnVudGltZS92YWxpZGF0aW9uLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvc2VjcmV0cy5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvcGx1Z2luLWxvYWRlci5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvcGx1Z2luLnNlcnZpY2UudHMiLCIuLi9zcmMvcnVudGltZS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPUlBDRXJyb3IgfSBmcm9tIFwiQG9ycGMvY29udHJhY3RcIjtcbmltcG9ydCB7IERhdGEgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5SdW50aW1lRXJyb3IgZXh0ZW5kcyBEYXRhLlRhZ2dlZEVycm9yKFwiUGx1Z2luUnVudGltZUVycm9yXCIpPHtcblx0cmVhZG9ubHkgcGx1Z2luSWQ/OiBzdHJpbmc7XG5cdHJlYWRvbmx5IG9wZXJhdGlvbj86IHN0cmluZztcblx0cmVhZG9ubHkgcHJvY2VkdXJlTmFtZT86IHN0cmluZztcblx0cmVhZG9ubHkgY2F1c2U/OiBFcnJvcjtcblx0cmVhZG9ubHkgcmV0cnlhYmxlOiBib29sZWFuO1xufT4geyB9XG5cbmV4cG9ydCBjbGFzcyBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgZXh0ZW5kcyBEYXRhLlRhZ2dlZEVycm9yKFxuXHRcIk1vZHVsZUZlZGVyYXRpb25FcnJvclwiLFxuKTx7XG5cdHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHJlbW90ZVVybDogc3RyaW5nO1xuXHRyZWFkb25seSBjYXVzZT86IEVycm9yO1xufT4geyB9XG5cbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBEYXRhLlRhZ2dlZEVycm9yKFwiVmFsaWRhdGlvbkVycm9yXCIpPHtcblx0cmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblx0cmVhZG9ubHkgc3RhZ2U6IFwiY29uZmlnXCIgfCBcImlucHV0XCIgfCBcIm91dHB1dFwiIHwgXCJzdGF0ZVwiO1xuXHRyZWFkb25seSB6b2RFcnJvcjogei5ab2RFcnJvcjtcbn0+IHsgfVxuXG4vLyBIZWxwZXIgdG8gZGV0ZXJtaW5lIGlmIGFuIG9SUEMgZXJyb3IgY29kZSBpcyByZXRyeWFibGVcbmV4cG9ydCBjb25zdCBpc1JldHJ5YWJsZU9SUENDb2RlID0gKGNvZGU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuXHRzd2l0Y2ggKGNvZGUpIHtcblx0XHRjYXNlICdUT09fTUFOWV9SRVFVRVNUUyc6XG5cdFx0Y2FzZSAnU0VSVklDRV9VTkFWQUlMQUJMRSc6XG5cdFx0Y2FzZSAnQkFEX0dBVEVXQVknOlxuXHRcdGNhc2UgJ0dBVEVXQVlfVElNRU9VVCc6XG5cdFx0Y2FzZSAnVElNRU9VVCc6XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59O1xuXG4vLyBDb252ZXJ0IE9SUEMgZXJyb3JzIGZyb20gcGx1Z2luIHByb2NlZHVyZXMgdG8gUGx1Z2luUnVudGltZUVycm9yXG5leHBvcnQgY29uc3Qgd3JhcE9SUENFcnJvciA9IChcblx0b3JwY0Vycm9yOiBPUlBDRXJyb3I8c3RyaW5nLCB1bmtub3duPixcblx0cGx1Z2luSWQ/OiBzdHJpbmcsXG5cdHByb2NlZHVyZU5hbWU/OiBzdHJpbmcsXG5cdG9wZXJhdGlvbj86IHN0cmluZ1xuKTogUGx1Z2luUnVudGltZUVycm9yID0+IHtcblx0cmV0dXJuIG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdHBsdWdpbklkLFxuXHRcdG9wZXJhdGlvbixcblx0XHRwcm9jZWR1cmVOYW1lLFxuXHRcdHJldHJ5YWJsZTogaXNSZXRyeWFibGVPUlBDQ29kZShvcnBjRXJyb3IuY29kZSksXG5cdFx0Y2F1c2U6IG9ycGNFcnJvciBhcyBFcnJvclxuXHR9KTtcbn07XG5cbi8vIFVuaXZlcnNhbCBlcnJvciBjb252ZXJ0ZXIgZm9yIHRoZSBydW50aW1lXG5leHBvcnQgY29uc3QgdG9QbHVnaW5SdW50aW1lRXJyb3IgPSAoXG5cdGVycm9yOiB1bmtub3duLFxuXHRwbHVnaW5JZD86IHN0cmluZyxcblx0cHJvY2VkdXJlTmFtZT86IHN0cmluZyxcblx0b3BlcmF0aW9uPzogc3RyaW5nLFxuXHRkZWZhdWx0UmV0cnlhYmxlID0gZmFsc2Vcbik6IFBsdWdpblJ1bnRpbWVFcnJvciA9PiB7XG5cdGlmIChlcnJvciBpbnN0YW5jZW9mIE9SUENFcnJvcikge1xuXHRcdHJldHVybiB3cmFwT1JQQ0Vycm9yKGVycm9yLCBwbHVnaW5JZCwgcHJvY2VkdXJlTmFtZSwgb3BlcmF0aW9uKTtcblx0fVxuXG5cdGlmIChlcnJvciBpbnN0YW5jZW9mIFBsdWdpblJ1bnRpbWVFcnJvcikge1xuXHRcdHJldHVybiBlcnJvcjsgLy8gQWxyZWFkeSBjb252ZXJ0ZWRcblx0fVxuXG5cdHJldHVybiBuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRwbHVnaW5JZCxcblx0XHRvcGVyYXRpb24sXG5cdFx0cHJvY2VkdXJlTmFtZSxcblx0XHRyZXRyeWFibGU6IGRlZmF1bHRSZXRyeWFibGUsXG5cdFx0Y2F1c2U6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKVxuXHR9KTtcbn07XG4iLCJpbXBvcnQgeyBiZXR0ZXJGZXRjaCB9IGZyb20gXCJAYmV0dGVyLWZldGNoL2ZldGNoXCI7XG5pbXBvcnQge1xuXHRjcmVhdGVJbnN0YW5jZSxcblx0Z2V0SW5zdGFuY2UsXG59IGZyb20gXCJAbW9kdWxlLWZlZGVyYXRpb24vZW5oYW5jZWQvcnVudGltZVwiO1xuaW1wb3J0IHsgc2V0R2xvYmFsRmVkZXJhdGlvbkluc3RhbmNlIH0gZnJvbSBcIkBtb2R1bGUtZmVkZXJhdGlvbi9ydW50aW1lLWNvcmVcIjtcbmltcG9ydCB7IEVmZmVjdCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHsgQW55UGx1Z2luIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBnZXROb3JtYWxpemVkUmVtb3RlTmFtZSB9IGZyb20gXCIuL25vcm1hbGl6ZVwiO1xuXG50eXBlIFJlbW90ZU1vZHVsZSA9IFxuICB8IChuZXcgKCkgPT4gQW55UGx1Z2luKVxuICB8IHsgZGVmYXVsdDogbmV3ICgpID0+IEFueVBsdWdpbiB9O1xuXG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi8uLi9wYWNrYWdlLmpzb25cIjtcblxuY29uc3QgY3JlYXRlTW9kdWxlRmVkZXJhdGlvbkluc3RhbmNlID0gRWZmZWN0LmNhY2hlZChcblx0RWZmZWN0LnN5bmMoKCkgPT4ge1xuXHRcdHRyeSB7XG5cdFx0XHRsZXQgaW5zdGFuY2UgPSBnZXRJbnN0YW5jZSgpO1xuXG5cdFx0XHRpZiAoIWluc3RhbmNlKSB7XG5cdFx0XHRcdGluc3RhbmNlID0gY3JlYXRlSW5zdGFuY2Uoe1xuXHRcdFx0XHRcdG5hbWU6IFwiaG9zdFwiLFxuXHRcdFx0XHRcdHJlbW90ZXM6IFtdLFxuXHRcdFx0XHRcdHNoYXJlZDoge1xuXHRcdFx0XHRcdFx0XCJldmVyeS1wbHVnaW5cIjoge1xuXHRcdFx0XHRcdFx0XHR2ZXJzaW9uOiBwa2cudmVyc2lvbixcblx0XHRcdFx0XHRcdFx0c2hhcmVDb25maWc6IHtcblx0XHRcdFx0XHRcdFx0XHRzaW5nbGV0b246IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWRWZXJzaW9uOiBgXiR7cGtnLnZlcnNpb259YCxcblx0XHRcdFx0XHRcdFx0XHRlYWdlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRzdHJpY3RWZXJzaW9uOiBmYWxzZSwgLy8gQWxsb3cgYmlkaXJlY3Rpb25hbCB2ZXJzaW9uIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRlZmZlY3Q6IHtcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjogcGtnLmRlcGVuZGVuY2llcy5lZmZlY3QsXG5cdFx0XHRcdFx0XHRcdHNoYXJlQ29uZmlnOiB7XG5cdFx0XHRcdFx0XHRcdFx0c2luZ2xldG9uOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkVmVyc2lvbjogXCJeMy4xOC4wXCIsIC8vIEFsbG93IGFueSAzLjE4LnggcGF0Y2ggdmVyc2lvblxuXHRcdFx0XHRcdFx0XHRcdGVhZ2VyOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHN0cmljdFZlcnNpb246IGZhbHNlLCAvLyBBbGxvdyB2ZXJzaW9uIGZsZXhpYmlsaXR5IGZvciBjb21wYXRpYmlsaXR5XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0em9kOiB7XG5cdFx0XHRcdFx0XHRcdHZlcnNpb246IHBrZy5kZXBlbmRlbmNpZXMuem9kLFxuXHRcdFx0XHRcdFx0XHRzaGFyZUNvbmZpZzoge1xuXHRcdFx0XHRcdFx0XHRcdHNpbmdsZXRvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFZlcnNpb246IFwiXjQuMS4wXCIsIC8vIEFsbG93IGFueSA0LjEueCBwYXRjaCB2ZXJzaW9uXG5cdFx0XHRcdFx0XHRcdFx0ZWFnZXI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RyaWN0VmVyc2lvbjogZmFsc2UsIC8vIEFsbG93IHZlcnNpb24gZmxleGliaWxpdHkgZm9yIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcIkBvcnBjL2NvbnRyYWN0XCI6IHtcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjogcGtnLmRlcGVuZGVuY2llc1tcIkBvcnBjL2NvbnRyYWN0XCJdLFxuXHRcdFx0XHRcdFx0XHRzaGFyZUNvbmZpZzoge1xuXHRcdFx0XHRcdFx0XHRcdHNpbmdsZXRvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFZlcnNpb246IFwiXjEuOC4wXCIsIC8vIEFsbG93IGFueSAxLjgueCBwYXRjaCB2ZXJzaW9uXG5cdFx0XHRcdFx0XHRcdFx0ZWFnZXI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RyaWN0VmVyc2lvbjogZmFsc2UsIC8vIEFsbG93IHZlcnNpb24gZmxleGliaWxpdHkgZm9yIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcIkBvcnBjL3NlcnZlclwiOiB7XG5cdFx0XHRcdFx0XHRcdHZlcnNpb246IHBrZy5kZXBlbmRlbmNpZXNbXCJAb3JwYy9zZXJ2ZXJcIl0sXG5cdFx0XHRcdFx0XHRcdHNoYXJlQ29uZmlnOiB7XG5cdFx0XHRcdFx0XHRcdFx0c2luZ2xldG9uOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkVmVyc2lvbjogXCJeMS44LjBcIiwgLy8gQWxsb3cgYW55IDEuOC54IHBhdGNoIHZlcnNpb25cblx0XHRcdFx0XHRcdFx0XHRlYWdlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRzdHJpY3RWZXJzaW9uOiBmYWxzZSwgLy8gQWxsb3cgdmVyc2lvbiBmbGV4aWJpbGl0eSBmb3IgY29tcGF0aWJpbGl0eVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHNldEdsb2JhbEZlZGVyYXRpb25JbnN0YW5jZShpbnN0YW5jZSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBpbnN0YW5jZTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBNb2R1bGUgRmVkZXJhdGlvbjogJHtlcnJvcn1gKTtcblx0XHR9XG5cdH0pLFxuKTtcblxuZXhwb3J0IGNsYXNzIE1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8TW9kdWxlRmVkZXJhdGlvblNlcnZpY2U+KCkoXCJNb2R1bGVGZWRlcmF0aW9uU2VydmljZVwiLCB7XG5cdGVmZmVjdDogRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdGNvbnN0IG1mID0geWllbGQqIEVmZmVjdC5mbGF0dGVuKGNyZWF0ZU1vZHVsZUZlZGVyYXRpb25JbnN0YW5jZSk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0cmVnaXN0ZXJSZW1vdGU6IChwbHVnaW5JZDogc3RyaW5nLCB1cmw6IHN0cmluZykgPT5cblx0XHRcdFx0RWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbTUZdIFJlZ2lzdGVyaW5nICR7cGx1Z2luSWR9YCk7XG5cblx0XHRcdFx0XHQvLyBDaGVjayBpZiByZW1vdGUgaXMgYXZhaWxhYmxlXG5cdFx0XHRcdFx0Y29uc3QgeyBlcnJvciB9ID0geWllbGQqIEVmZmVjdC50cnlQcm9taXNlKHtcblx0XHRcdFx0XHRcdHRyeTogKCkgPT4gYmV0dGVyRmV0Y2godXJsLCB7IG1ldGhvZDogXCJIRUFEXCIgfSksXG5cdFx0XHRcdFx0XHRjYXRjaDogKGVycm9yKTogTW9kdWxlRmVkZXJhdGlvbkVycm9yID0+XG5cdFx0XHRcdFx0XHRcdG5ldyBNb2R1bGVGZWRlcmF0aW9uRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkLFxuXHRcdFx0XHRcdFx0XHRcdHJlbW90ZVVybDogdXJsLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOlxuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGlmIChlcnJvcikge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYFtNRl0g4p2MIFJlbW90ZSBub3QgYXZhaWxhYmxlIGZvciAke3BsdWdpbklkfWApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHlpZWxkKiBFZmZlY3QuZmFpbChcblx0XHRcdFx0XHRcdFx0bmV3IE1vZHVsZUZlZGVyYXRpb25FcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdFx0XHRcdFx0cmVtb3RlVXJsOiB1cmwsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6IG5ldyBFcnJvcihgUmVtb3RlIG5vdCBhdmFpbGFibGUgKCR7dXJsfSk6ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfWApLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgcmVtb3RlTmFtZSA9IGdldE5vcm1hbGl6ZWRSZW1vdGVOYW1lKHBsdWdpbklkKTtcblxuXHRcdFx0XHRcdHlpZWxkKiBFZmZlY3QudHJ5KHtcblx0XHRcdFx0XHRcdHRyeTogKCkgPT4gbWYucmVnaXN0ZXJSZW1vdGVzKFt7IG5hbWU6IHJlbW90ZU5hbWUsIGVudHJ5OiB1cmwgfV0pLFxuXHRcdFx0XHRcdFx0Y2F0Y2g6IChlcnJvcik6IE1vZHVsZUZlZGVyYXRpb25FcnJvciA9PlxuXHRcdFx0XHRcdFx0XHRuZXcgTW9kdWxlRmVkZXJhdGlvbkVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0XHRcdFx0XHRyZW1vdGVVcmw6IHVybCxcblx0XHRcdFx0XHRcdFx0XHRjYXVzZTpcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRjb25zb2xlLmxvZyhgW01GXSDinIUgUmVnaXN0ZXJlZCAke3BsdWdpbklkfWApO1xuXHRcdFx0XHR9KSxcblxuXHRcdFx0bG9hZFJlbW90ZUNvbnN0cnVjdG9yOiAocGx1Z2luSWQ6IHN0cmluZywgdXJsOiBzdHJpbmcpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zdCByZW1vdGVOYW1lID0gZ2V0Tm9ybWFsaXplZFJlbW90ZU5hbWUocGx1Z2luSWQpO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbTUZdIExvYWRpbmcgcmVtb3RlICR7cmVtb3RlTmFtZX1gKTtcblx0XHRcdFx0XHRjb25zdCBtb2R1bGVQYXRoID0gYCR7cmVtb3RlTmFtZX0vcGx1Z2luYDtcblxuXHRcdFx0XHRcdHJldHVybiB5aWVsZCogRWZmZWN0LnRyeVByb21pc2Uoe1xuXHRcdFx0XHRcdFx0dHJ5OiBhc3luYyAoKSA9PiB7XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgY29udGFpbmVyID0gYXdhaXQgbWYubG9hZFJlbW90ZTxSZW1vdGVNb2R1bGU+KG1vZHVsZVBhdGgpO1xuXHRcdFx0XHRcdFx0XHRpZiAoIWNvbnRhaW5lcikge1xuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgTm8gY29udGFpbmVyIHJldHVybmVkIGZvciAke21vZHVsZVBhdGh9YCk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0IG11bHRpcGxlIGV4cG9ydCBwYXR0ZXJuczogZGlyZWN0IGZ1bmN0aW9uLCBkZWZhdWx0IGV4cG9ydCwgbmFtZWQgZXhwb3J0c1xuXHRcdFx0XHRcdFx0XHRjb25zdCBDb25zdHJ1Y3RvciA9XG5cdFx0XHRcdFx0XHRcdFx0dHlwZW9mIGNvbnRhaW5lciA9PT0gXCJmdW5jdGlvblwiXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGNvbnRhaW5lciAgLy8gRGlyZWN0IGZ1bmN0aW9uIGV4cG9ydFxuXHRcdFx0XHRcdFx0XHRcdFx0OiBjb250YWluZXIuZGVmYXVsdFxuXHRcdFx0XHRcdFx0XHRcdFx0PyBjb250YWluZXIuZGVmYXVsdCAgLy8gRGVmYXVsdCBleHBvcnRcblx0XHRcdFx0XHRcdFx0XHRcdDogT2JqZWN0LnZhbHVlcyhjb250YWluZXIpLmZpbmQoICAvLyBOYW1lZCBleHBvcnQgZmFsbGJhY2tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZXhwKSA9PiB0eXBlb2YgZXhwID09PSBcImZ1bmN0aW9uXCIgJiYgZXhwLnByb3RvdHlwZT8uY29uc3RydWN0b3IgPT09IGV4cFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRcdGlmICghQ29uc3RydWN0b3IgfHwgdHlwZW9mIENvbnN0cnVjdG9yICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBjb250YWluZXJJbmZvID0gdHlwZW9mIGNvbnRhaW5lciA9PT0gXCJvYmplY3RcIlxuXHRcdFx0XHRcdFx0XHRcdFx0PyBgQXZhaWxhYmxlIGV4cG9ydHM6ICR7T2JqZWN0LmtleXMoY29udGFpbmVyKS5qb2luKCcsICcpfWBcblx0XHRcdFx0XHRcdFx0XHRcdDogYENvbnRhaW5lciB0eXBlOiAke3R5cGVvZiBjb250YWluZXJ9YDtcblxuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0XHRcdFx0XHRcdGBObyB2YWxpZCBwbHVnaW4gY29uc3RydWN0b3IgZm91bmQgZm9yICcke3BsdWdpbklkfScuXFxuYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgU3VwcG9ydGVkIHBhdHRlcm5zOlxcbmAgK1xuXHRcdFx0XHRcdFx0XHRcdFx0YCAgLSBleHBvcnQgY29uc3QgWW91clBsdWdpbiA9IGNyZWF0ZVBsdWdpbih7Li4ufSlcXG5gICtcblx0XHRcdFx0XHRcdFx0XHRcdGAgIC0gZXhwb3J0IGRlZmF1bHQgY3JlYXRlUGx1Z2luKHsuLi59KVxcbmAgK1xuXHRcdFx0XHRcdFx0XHRcdFx0YCR7Y29udGFpbmVySW5mb31gLFxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyBWYWxpZGF0ZSBpdCBsb29rcyBsaWtlIGEgcGx1Z2luIGNvbnN0cnVjdG9yIChoYXMgYmluZGluZyBwcm9wZXJ0eSlcblx0XHRcdFx0XHRcdFx0aWYgKCEoQ29uc3RydWN0b3IgYXMgYW55KS5iaW5kaW5nKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgY29udGFpbmVySW5mbyA9IHR5cGVvZiBjb250YWluZXIgPT09IFwib2JqZWN0XCJcblx0XHRcdFx0XHRcdFx0XHRcdD8gYEZvdW5kIGV4cG9ydHM6ICR7T2JqZWN0LmtleXMoY29udGFpbmVyKS5qb2luKCcsICcpfWBcblx0XHRcdFx0XHRcdFx0XHRcdDogYENvbnRhaW5lciB0eXBlOiAke3R5cGVvZiBjb250YWluZXJ9YDtcblxuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0XHRcdFx0XHRcdGBJbnZhbGlkIHBsdWdpbiBjb25zdHJ1Y3RvciBmb3IgJyR7cGx1Z2luSWR9Jy4gYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgVGhlIGV4cG9ydGVkIHZhbHVlIG11c3QgYmUgY3JlYXRlZCB3aXRoIGNyZWF0ZVBsdWdpbigpLiBgICtcblx0XHRcdFx0XHRcdFx0XHRcdGBGb3VuZCBhIGZ1bmN0aW9uIGJ1dCBpdCdzIG1pc3NpbmcgdGhlIHJlcXVpcmVkICdiaW5kaW5nJyBwcm9wZXJ0eS5cXG5gICtcblx0XHRcdFx0XHRcdFx0XHRcdGAke2NvbnRhaW5lckluZm99YCxcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYFtNRl0g4pyFIExvYWRlZCBjb25zdHJ1Y3RvciBmb3IgJHtwbHVnaW5JZH1gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIENvbnN0cnVjdG9yO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNhdGNoOiAoZXJyb3IpOiBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgPT5cblx0XHRcdFx0XHRcdFx0bmV3IE1vZHVsZUZlZGVyYXRpb25FcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdFx0XHRcdFx0cmVtb3RlVXJsOiB1cmwsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6XG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSksXG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KSxcblx0XHR9O1xuXHR9KSxcbn0pIHt9XG4iLCJpbXBvcnQgeyBFZmZlY3QsIFJlZiB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHsgQW55UGx1Z2luLCBJbml0aWFsaXplZFBsdWdpbiB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgdG9QbHVnaW5SdW50aW1lRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5MaWZlY3ljbGVTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UGx1Z2luTGlmZWN5Y2xlU2VydmljZT4oKShcIlBsdWdpbkxpZmVjeWNsZVNlcnZpY2VcIiwge1xuICBlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICBjb25zdCBhY3RpdmVQbHVnaW5zID0geWllbGQqIFJlZi5tYWtlKG5ldyBTZXQ8SW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPj4oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVnaXN0ZXI6IDxUIGV4dGVuZHMgQW55UGx1Z2luPihwbHVnaW46IEluaXRpYWxpemVkUGx1Z2luPFQ+KSA9PlxuICAgICAgICBSZWYudXBkYXRlKGFjdGl2ZVBsdWdpbnMsIHBsdWdpbnMgPT5cbiAgICAgICAgICBuZXcgU2V0KHBsdWdpbnMpLmFkZChwbHVnaW4gYXMgSW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPilcbiAgICAgICAgKSxcblxuICAgICAgdW5yZWdpc3RlcjogKHBsdWdpbjogSW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPikgPT5cbiAgICAgICAgUmVmLnVwZGF0ZShhY3RpdmVQbHVnaW5zLCBwbHVnaW5zID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdTZXQgPSBuZXcgU2V0KHBsdWdpbnMpO1xuICAgICAgICAgIG5ld1NldC5kZWxldGUocGx1Z2luKTtcbiAgICAgICAgICByZXR1cm4gbmV3U2V0O1xuICAgICAgICB9KSxcblxuICAgICAgc2h1dGRvd246IChwbHVnaW46IEluaXRpYWxpemVkUGx1Z2luPEFueVBsdWdpbj4pID0+XG4gICAgICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgZnJvbSBhY3RpdmUgcGx1Z2luc1xuICAgICAgICAgIHlpZWxkKiBSZWYudXBkYXRlKGFjdGl2ZVBsdWdpbnMsIHBsdWdpbnMgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3U2V0ID0gbmV3IFNldChwbHVnaW5zKTtcbiAgICAgICAgICAgIG5ld1NldC5kZWxldGUocGx1Z2luKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdTZXQ7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBTaHV0ZG93biB0aGUgcGx1Z2luXG4gICAgICAgICAgeWllbGQqIHBsdWdpbi5wbHVnaW4uc2h1dGRvd24oKS5waXBlKFxuICAgICAgICAgICAgRWZmZWN0Lm1hcEVycm9yKGVycm9yID0+XG4gICAgICAgICAgICAgIHRvUGx1Z2luUnVudGltZUVycm9yKGVycm9yLCBwbHVnaW4ucGx1Z2luLmlkLCB1bmRlZmluZWQsIFwic2h1dGRvd24tcGx1Z2luXCIsIGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuXG4gICAgICBjbGVhbnVwOiAoKSA9PlxuICAgICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgY29uc3QgcGx1Z2lucyA9IHlpZWxkKiBSZWYuZ2V0KGFjdGl2ZVBsdWdpbnMpO1xuXG4gICAgICAgICAgLy8gU2h1dGRvd24gYWxsIGFjdGl2ZSBwbHVnaW5zIGNvbmN1cnJlbnRseVxuICAgICAgICAgIHlpZWxkKiBFZmZlY3QuZm9yRWFjaChcbiAgICAgICAgICAgIHBsdWdpbnMsXG4gICAgICAgICAgICBwbHVnaW4gPT5cbiAgICAgICAgICAgICAgcGx1Z2luLnBsdWdpbi5zaHV0ZG93bigpLnBpcGUoXG4gICAgICAgICAgICAgICAgRWZmZWN0Lm1hcEVycm9yKGVycm9yID0+XG4gICAgICAgICAgICAgICAgICB0b1BsdWdpblJ1bnRpbWVFcnJvcihlcnJvciwgcGx1Z2luLnBsdWdpbi5pZCwgdW5kZWZpbmVkLCBcImNsZWFudXAtc2h1dGRvd25cIiwgZmFsc2UpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBFZmZlY3QuY2F0Y2hBbGwoZXJyb3IgPT5cbiAgICAgICAgICAgICAgICAgIEVmZmVjdC5sb2dFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEZhaWxlZCB0byBzaHV0ZG93biBwbHVnaW4gJHtwbHVnaW4ucGx1Z2luLmlkfSBkdXJpbmcgY2xlYW51cGAsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICB7IHBsdWdpbklkOiBwbHVnaW4ucGx1Z2luLmlkIH1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB7IGNvbmN1cnJlbmN5OiBcInVuYm91bmRlZFwiIH1cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gQ2xlYXIgdGhlIGFjdGl2ZSBwbHVnaW5zIHNldFxuICAgICAgICAgIHlpZWxkKiBSZWYuc2V0KGFjdGl2ZVBsdWdpbnMsIG5ldyBTZXQoKSk7XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgRWZmZWN0LmNhdGNoQWxsKCgpID0+IEVmZmVjdC52b2lkKSAvLyBDb252ZXJ0IGVycm9ycyB0byB2b2lkIGZvciBjbGVhbnVwXG4gICAgICAgICksXG4gICAgfTtcbiAgfSksXG59KSB7IH1cbiIsImltcG9ydCB7IEVmZmVjdCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGUgPSA8VD4oXG5cdHNjaGVtYTogei5ab2RTY2hlbWE8VD4sXG5cdGRhdGE6IHVua25vd24sXG5cdHBsdWdpbklkOiBzdHJpbmcsXG5cdHN0YWdlOiBcImNvbmZpZ1wiIHwgXCJpbnB1dFwiIHwgXCJvdXRwdXRcIiB8IFwic3RhdGVcIixcbik6IEVmZmVjdC5FZmZlY3Q8VCwgVmFsaWRhdGlvbkVycm9yPiA9PlxuXHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gc2NoZW1hLnNhZmVQYXJzZShkYXRhKTtcblx0XHRpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcblx0XHRcdHJldHVybiByZXN1bHQuZGF0YTtcblx0XHR9XG5cdFx0cmV0dXJuIHlpZWxkKiBFZmZlY3QuZmFpbChcblx0XHRcdG5ldyBWYWxpZGF0aW9uRXJyb3Ioe1xuXHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0c3RhZ2UsXG5cdFx0XHRcdHpvZEVycm9yOiByZXN1bHQuZXJyb3IsXG5cdFx0XHR9KSxcblx0XHQpO1xuXHR9KTtcbiIsImltcG9ydCB7IENvbnRleHQsIEVmZmVjdCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3JldHNDb25maWcgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IFBsdWdpblJ1bnRpbWVFcnJvciB9IGZyb20gXCIuLi9lcnJvcnNcIjtcblxuY29uc3QgY29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuXHRzZWNyZXRzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSlcbn0pLmxvb3NlKCk7XG5cbmV4cG9ydCBjbGFzcyBTZWNyZXRzQ29uZmlnVGFnIGV4dGVuZHMgQ29udGV4dC5UYWcoXCJTZWNyZXRzQ29uZmlnXCIpPFxuXHRTZWNyZXRzQ29uZmlnVGFnLFxuXHRTZWNyZXRzQ29uZmlnXG4+KCkgeyB9XG5cbmV4cG9ydCBjbGFzcyBTZWNyZXRzU2VydmljZSBleHRlbmRzIEVmZmVjdC5TZXJ2aWNlPFNlY3JldHNTZXJ2aWNlPigpKFwiU2VjcmV0c1NlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBzZWNyZXRzID0geWllbGQqIFNlY3JldHNDb25maWdUYWc7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0aHlkcmF0ZVNlY3JldHM6IDxUPihjb25maWc6IFQpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zdCBwYXJzZVJlc3VsdCA9IGNvbmZpZ1NjaGVtYS5wYXJzZShjb25maWcpO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjb25maWdTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShwYXJzZVJlc3VsdCk7XG5cdFx0XHRcdFx0XHRsZXQgaHlkcmF0ZWRTdHJpbmcgPSBjb25maWdTdHJpbmc7XG5cblx0XHRcdFx0XHRcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNlY3JldHMpKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKGB7eyR7a2V5fX19YCwgXCJnXCIpO1xuXHRcdFx0XHRcdFx0XHRoeWRyYXRlZFN0cmluZyA9IGh5ZHJhdGVkU3RyaW5nLnJlcGxhY2UocGF0dGVybiwgU3RyaW5nKHZhbHVlKSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHJldHVybiBKU09OLnBhcnNlKGh5ZHJhdGVkU3RyaW5nKSBhcyBUO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4geWllbGQqIEVmZmVjdC5mYWlsKFxuXHRcdFx0XHRcdFx0XHRuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRvcGVyYXRpb246IFwiaHlkcmF0ZS1zZWNyZXRzXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6XG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSksXG5cdFx0XHRcdFx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0fTtcblx0fSksXG59KSB7IH1cbiIsImltcG9ydCB0eXBlIHsgSW5mZXJTY2hlbWFJbnB1dCwgSW5mZXJTY2hlbWFPdXRwdXQgfSBmcm9tIFwiQG9ycGMvY29udHJhY3RcIjtcbmltcG9ydCB7IENvbnRleHQsIEVmZmVjdCwgU2NvcGUgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFueVBsdWdpbixcblx0SW5pdGlhbGl6ZWRQbHVnaW4sXG5cdExvYWRlZFBsdWdpbixcblx0UGx1Z2luSW5zdGFuY2UsXG5cdFBsdWdpblJlZ2lzdHJ5XG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgUGx1Z2luUnVudGltZUVycm9yLCB0b1BsdWdpblJ1bnRpbWVFcnJvciB9IGZyb20gXCIuLi9lcnJvcnNcIjtcbmltcG9ydCB7IHZhbGlkYXRlIH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IE1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vbW9kdWxlLWZlZGVyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHsgU2VjcmV0c1NlcnZpY2UgfSBmcm9tIFwiLi9zZWNyZXRzLnNlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIFBsdWdpblJlZ2lzdHJ5VGFnIGV4dGVuZHMgQ29udGV4dC5UYWcoXCJQbHVnaW5SZWdpc3RyeVwiKTxcblx0UGx1Z2luUmVnaXN0cnlUYWcsXG5cdFBsdWdpblJlZ2lzdHJ5XG4+KCkgeyB9XG5cbmV4cG9ydCBjbGFzcyBSZWdpc3RyeVNlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuU2VydmljZTxSZWdpc3RyeVNlcnZpY2U+KCkoXCJSZWdpc3RyeVNlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCByZWdpc3RyeSA9IHlpZWxkKiBQbHVnaW5SZWdpc3RyeVRhZztcblxuXHRcdHJldHVybiB7XG5cdFx0XHRnZXQ6IChwbHVnaW5JZDogc3RyaW5nKSA9PlxuXHRcdFx0XHRFZmZlY3QuZnJvbU51bGxhYmxlKHJlZ2lzdHJ5W3BsdWdpbklkXSkucGlwZShcblx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKCkgPT5cblx0XHRcdFx0XHRcdG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLXBsdWdpbi1pZFwiLFxuXHRcdFx0XHRcdFx0XHRjYXVzZTogbmV3IEVycm9yKGBQbHVnaW4gJHtwbHVnaW5JZH0gbm90IGZvdW5kIGluIHJlZ2lzdHJ5YCksXG5cdFx0XHRcdFx0XHRcdHJldHJ5YWJsZTogZmFsc2UsXG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpLFxuXHRcdH07XG5cdH0pLFxufSkgeyB9XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5Mb2FkZXJTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UGx1Z2luTG9hZGVyU2VydmljZT4oKShcIlBsdWdpbkxvYWRlclNlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBtb2R1bGVGZWRlcmF0aW9uU2VydmljZSA9IHlpZWxkKiBNb2R1bGVGZWRlcmF0aW9uU2VydmljZTtcblx0XHRjb25zdCBzZWNyZXRzU2VydmljZSA9IHlpZWxkKiBTZWNyZXRzU2VydmljZTtcblx0XHRjb25zdCByZWdpc3RyeVNlcnZpY2UgPSB5aWVsZCogUmVnaXN0cnlTZXJ2aWNlO1xuXG5cdFx0Y29uc3QgcmVzb2x2ZVVybCA9IChiYXNlVXJsOiBzdHJpbmcsIHZlcnNpb24/OiBzdHJpbmcpOiBzdHJpbmcgPT5cblx0XHRcdHZlcnNpb24gJiYgdmVyc2lvbiAhPT0gXCJsYXRlc3RcIlxuXHRcdFx0XHQ/IGJhc2VVcmwucmVwbGFjZShcIkBsYXRlc3RcIiwgYEAke3ZlcnNpb259YClcblx0XHRcdFx0OiBiYXNlVXJsO1xuXG5cdFx0Y29uc3QgZ2V0TWV0YWRhdGEgPSAocGx1Z2luSWQ6IHN0cmluZykgPT4gcmVnaXN0cnlTZXJ2aWNlLmdldChwbHVnaW5JZCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bG9hZFBsdWdpbjogKHBsdWdpbklkOiBzdHJpbmcpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zdCBtZXRhZGF0YSA9IHlpZWxkKiBnZXRNZXRhZGF0YShwbHVnaW5JZCk7XG5cdFx0XHRcdFx0Y29uc3QgdXJsID0gcmVzb2x2ZVVybChtZXRhZGF0YS5yZW1vdGVVcmwpO1xuXG5cdFx0XHRcdFx0eWllbGQqIG1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlLnJlZ2lzdGVyUmVtb3RlKHBsdWdpbklkLCB1cmwpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKGVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHR0b1BsdWdpblJ1bnRpbWVFcnJvcihlcnJvci5jYXVzZSwgcGx1Z2luSWQsIHVuZGVmaW5lZCwgXCJyZWdpc3Rlci1yZW1vdGVcIiwgdHJ1ZSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHR5aWVsZCogRWZmZWN0LmxvZ0RlYnVnKFwiTG9hZGluZyBwbHVnaW5cIiwgeyBwbHVnaW5JZCwgdXJsIH0pO1xuXG5cdFx0XHRcdFx0Y29uc3QgY3RvciA9IHlpZWxkKiBtb2R1bGVGZWRlcmF0aW9uU2VydmljZS5sb2FkUmVtb3RlQ29uc3RydWN0b3IocGx1Z2luSWQsIHVybCkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigoZXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdHRvUGx1Z2luUnVudGltZUVycm9yKGVycm9yLmNhdXNlLCBwbHVnaW5JZCwgdW5kZWZpbmVkLCBcImxvYWQtcmVtb3RlXCIsIGZhbHNlKSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRjdG9yLFxuXHRcdFx0XHRcdFx0bWV0YWRhdGE6IG1ldGFkYXRhLFxuXHRcdFx0XHRcdH0gc2F0aXNmaWVzIExvYWRlZFBsdWdpbjtcblx0XHRcdFx0fSksXG5cblx0XHRcdGluc3RhbnRpYXRlUGx1Z2luOiA8VCBleHRlbmRzIEFueVBsdWdpbj4oXG5cdFx0XHRcdHBsdWdpbklkOiBzdHJpbmcsXG5cdFx0XHRcdGxvYWRlZFBsdWdpbjogTG9hZGVkUGx1Z2luPFQ+LFxuXHRcdFx0KSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW5zdGFuY2UgPSB5aWVsZCogRWZmZWN0LnRyeSgoKSA9PiBuZXcgbG9hZGVkUGx1Z2luLmN0b3IoKSkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigoZXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdHRvUGx1Z2luUnVudGltZUVycm9yKFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yLFxuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkLFxuXHRcdFx0XHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdFx0XHRcImluc3RhbnRpYXRlLXBsdWdpblwiLFxuXHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0KGluc3RhbmNlLmlkIGFzIHN0cmluZykgPSBwbHVnaW5JZDtcblxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRwbHVnaW46IGluc3RhbmNlLFxuXHRcdFx0XHRcdFx0bWV0YWRhdGE6IGxvYWRlZFBsdWdpbi5tZXRhZGF0YSxcblx0XHRcdFx0XHR9IHNhdGlzZmllcyBQbHVnaW5JbnN0YW5jZTxUPjtcblx0XHRcdFx0fSksXG5cblx0XHRcdGluaXRpYWxpemVQbHVnaW46IDxUIGV4dGVuZHMgQW55UGx1Z2luPihcblx0XHRcdFx0cGx1Z2luSW5zdGFuY2U6IFBsdWdpbkluc3RhbmNlPFQ+LFxuXHRcdFx0XHRjb25maWc6IHsgdmFyaWFibGVzOiBJbmZlclNjaGVtYUlucHV0PFRbXCJjb25maWdTY2hlbWFcIl1bXCJ2YXJpYWJsZXNcIl0+OyBzZWNyZXRzOiBJbmZlclNjaGVtYUlucHV0PFRbXCJjb25maWdTY2hlbWFcIl1bXCJzZWNyZXRzXCJdPiB9LFxuXHRcdFx0KSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgeyBwbHVnaW4gfSA9IHBsdWdpbkluc3RhbmNlO1xuXG5cdFx0XHRcdFx0Ly8gVmFsaWRhdGUgYW5kIGh5ZHJhdGUgY29uZmlnXG5cdFx0XHRcdFx0Y29uc3QgdmFsaWRhdGVkVmFyaWFibGVzID0geWllbGQqIHZhbGlkYXRlKFxuXHRcdFx0XHRcdFx0cGx1Z2luLmNvbmZpZ1NjaGVtYS52YXJpYWJsZXMgYXMgei5ab2RTY2hlbWE8SW5mZXJTY2hlbWFPdXRwdXQ8VFtcImNvbmZpZ1NjaGVtYVwiXVtcInZhcmlhYmxlc1wiXT4+LFxuXHRcdFx0XHRcdFx0Y29uZmlnLnZhcmlhYmxlcyxcblx0XHRcdFx0XHRcdHBsdWdpbi5pZCxcblx0XHRcdFx0XHRcdFwiY29uZmlnXCIsXG5cdFx0XHRcdFx0KS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKCh2YWxpZGF0aW9uRXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkOiBwbHVnaW4uaWQsXG5cdFx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLWNvbmZpZ1wiLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOiB2YWxpZGF0aW9uRXJyb3Iuem9kRXJyb3IsXG5cdFx0XHRcdFx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHQvLyBWYWxpZGF0ZSBzZWNyZXRzXG5cdFx0XHRcdFx0Y29uc3QgdmFsaWRhdGVkU2VjcmV0cyA9IHlpZWxkKiB2YWxpZGF0ZShcblx0XHRcdFx0XHRcdHBsdWdpbi5jb25maWdTY2hlbWEuc2VjcmV0cyBhcyB6LlpvZFNjaGVtYTxJbmZlclNjaGVtYU91dHB1dDxUW1wiY29uZmlnU2NoZW1hXCJdW1wic2VjcmV0c1wiXT4+LFxuXHRcdFx0XHRcdFx0Y29uZmlnLnNlY3JldHMsXG5cdFx0XHRcdFx0XHRwbHVnaW4uaWQsXG5cdFx0XHRcdFx0XHRcImNvbmZpZ1wiLFxuXHRcdFx0XHRcdCkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigodmFsaWRhdGlvbkVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHRuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZDogcGx1Z2luLmlkLFxuXHRcdFx0XHRcdFx0XHRcdG9wZXJhdGlvbjogXCJ2YWxpZGF0ZS1zZWNyZXRzXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6IHZhbGlkYXRpb25FcnJvci56b2RFcnJvcixcblx0XHRcdFx0XHRcdFx0XHRyZXRyeWFibGU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIEh5ZHJhdGUgc2VjcmV0cyBpbiB2YXJpYWJsZXNcblx0XHRcdFx0XHRjb25zdCBoeWRyYXRlZENvbmZpZyA9IHlpZWxkKiBzZWNyZXRzU2VydmljZS5oeWRyYXRlU2VjcmV0cyh7XG5cdFx0XHRcdFx0XHR2YXJpYWJsZXM6IHZhbGlkYXRlZFZhcmlhYmxlcyxcblx0XHRcdFx0XHRcdHNlY3JldHM6IHZhbGlkYXRlZFNlY3JldHMsXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRjb25zdCBfdmFyaWFibGVzID0geWllbGQqIHZhbGlkYXRlKFxuXHRcdFx0XHRcdFx0cGx1Z2luLmNvbmZpZ1NjaGVtYS52YXJpYWJsZXMgYXMgei5ab2RTY2hlbWE8SW5mZXJTY2hlbWFPdXRwdXQ8VFtcImNvbmZpZ1NjaGVtYVwiXVtcInZhcmlhYmxlc1wiXT4+LFxuXHRcdFx0XHRcdFx0aHlkcmF0ZWRDb25maWcudmFyaWFibGVzLFxuXHRcdFx0XHRcdFx0cGx1Z2luLmlkLFxuXHRcdFx0XHRcdFx0XCJjb25maWdcIixcblx0XHRcdFx0XHQpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKHZhbGlkYXRpb25FcnJvcikgPT5cblx0XHRcdFx0XHRcdFx0bmV3IFBsdWdpblJ1bnRpbWVFcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQ6IHBsdWdpbi5pZCxcblx0XHRcdFx0XHRcdFx0XHRvcGVyYXRpb246IFwidmFsaWRhdGUtaHlkcmF0ZWQtY29uZmlnXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6IHZhbGlkYXRpb25FcnJvci56b2RFcnJvcixcblx0XHRcdFx0XHRcdFx0XHRyZXRyeWFibGU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhIGxvbmctbGl2ZWQgc2NvcGUgZm9yIHRoaXMgcGx1Z2luIGluc3RhbmNlXG5cdFx0XHRcdFx0Y29uc3Qgc2NvcGUgPSB5aWVsZCogU2NvcGUubWFrZSgpO1xuXG5cdFx0XHRcdFx0Ly8gSW5pdGlhbGl6ZSBwbHVnaW4gd2l0aGluIHRoZSBzY29wZVxuXHRcdFx0XHRcdGNvbnN0IGNvbnRleHQgPSB5aWVsZCogcGx1Z2luLmluaXRpYWxpemUoeyB2YXJpYWJsZXM6IF92YXJpYWJsZXMsIHNlY3JldHM6IGh5ZHJhdGVkQ29uZmlnLnNlY3JldHMgfSkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5wcm92aWRlU2VydmljZShTY29wZS5TY29wZSwgc2NvcGUpLFxuXHRcdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKChlcnJvcikgPT5cblx0XHRcdFx0XHRcdFx0dG9QbHVnaW5SdW50aW1lRXJyb3IoZXJyb3IsIHBsdWdpbi5pZCwgdW5kZWZpbmVkLCBcImluaXRpYWxpemUtcGx1Z2luXCIsIGZhbHNlKSxcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdHBsdWdpbixcblx0XHRcdFx0XHRcdG1ldGFkYXRhOiBwbHVnaW5JbnN0YW5jZS5tZXRhZGF0YSxcblx0XHRcdFx0XHRcdGNvbmZpZzogeyB2YXJpYWJsZXM6IF92YXJpYWJsZXMsIHNlY3JldHM6IGh5ZHJhdGVkQ29uZmlnLnNlY3JldHMgfSxcblx0XHRcdFx0XHRcdGNvbnRleHQsXG5cdFx0XHRcdFx0XHRzY29wZSxcblx0XHRcdFx0XHR9IHNhdGlzZmllcyBJbml0aWFsaXplZFBsdWdpbjxUPjtcblx0XHRcdFx0fSksXG5cdFx0fTtcblx0fSksXG59KSB7XG59XG4iLCJpbXBvcnQgeyBFZmZlY3QsIEV4aXQsIExheWVyLCBTY29wZSB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHtcblx0QW55UGx1Z2luLFxuXHRJbml0aWFsaXplZFBsdWdpbixcblx0UGx1Z2luUmVnaXN0cnksXG5cdFNlY3JldHNDb25maWdcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBNb2R1bGVGZWRlcmF0aW9uU2VydmljZSB9IGZyb20gXCIuL21vZHVsZS1mZWRlcmF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IFBsdWdpbkxpZmVjeWNsZVNlcnZpY2UgfSBmcm9tIFwiLi9wbHVnaW4tbGlmZWN5Y2xlLnNlcnZpY2VcIjtcbmltcG9ydCB7IFBsdWdpbkxvYWRlclNlcnZpY2UsIFBsdWdpblJlZ2lzdHJ5VGFnLCBSZWdpc3RyeVNlcnZpY2UgfSBmcm9tIFwiLi9wbHVnaW4tbG9hZGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IFNlY3JldHNDb25maWdUYWcsIFNlY3JldHNTZXJ2aWNlIH0gZnJvbSBcIi4vc2VjcmV0cy5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5TZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UGx1Z2luU2VydmljZT4oKShcIlBsdWdpblNlcnZpY2VcIiwge1xuXHRzY29wZWQ6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBsb2FkZXIgPSB5aWVsZCogUGx1Z2luTG9hZGVyU2VydmljZTtcblx0XHRjb25zdCBsaWZlY3ljbGUgPSB5aWVsZCogUGx1Z2luTGlmZWN5Y2xlU2VydmljZTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRsb2FkUGx1Z2luOiBsb2FkZXIubG9hZFBsdWdpbixcblx0XHRcdGluc3RhbnRpYXRlUGx1Z2luOiBsb2FkZXIuaW5zdGFudGlhdGVQbHVnaW4sXG5cdFx0XHRpbml0aWFsaXplUGx1Z2luOiBsb2FkZXIuaW5pdGlhbGl6ZVBsdWdpbixcblx0XHRcdHNodXRkb3duUGx1Z2luOiAocGx1Z2luOiBJbml0aWFsaXplZFBsdWdpbjxBbnlQbHVnaW4+KSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Ly8gU2h1dGRvd24gdGhlIHBsdWdpbiBmaXJzdCAoZ3JhY2VmdWwgY2xlYW51cClcblx0XHRcdFx0XHR5aWVsZCogcGx1Z2luLnBsdWdpbi5zaHV0ZG93bigpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QuY2F0Y2hBbGwoKCkgPT4gRWZmZWN0LnZvaWQpXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIENsb3NlIHRoZSBwbHVnaW4gc2NvcGUgdG8gaW50ZXJydXB0IGZpYmVycyBhbmQgcmVsZWFzZSByZXNvdXJjZXNcblx0XHRcdFx0XHR5aWVsZCogU2NvcGUuY2xvc2UocGx1Z2luLnNjb3BlLCBFeGl0LnN1Y2NlZWQodW5kZWZpbmVkKSk7XG5cblx0XHRcdFx0XHQvLyBVbnJlZ2lzdGVyIGZyb20gbGlmZWN5Y2xlIHRyYWNraW5nXG5cdFx0XHRcdFx0eWllbGQqIGxpZmVjeWNsZS51bnJlZ2lzdGVyKHBsdWdpbik7XG5cdFx0XHRcdH0pLFxuXHRcdFx0Y2xlYW51cDogbGlmZWN5Y2xlLmNsZWFudXAsXG5cdFx0fTtcblx0fSksXG59KSB7XG5cdHN0YXRpYyBMaXZlID0gKHJlZ2lzdHJ5OiBQbHVnaW5SZWdpc3RyeSwgc2VjcmV0czogU2VjcmV0c0NvbmZpZykgPT4ge1xuXHRcdGNvbnN0IGNvbnRleHRMYXllciA9IExheWVyLm1lcmdlQWxsKFxuXHRcdFx0TGF5ZXIuc3VjY2VlZChQbHVnaW5SZWdpc3RyeVRhZywgcmVnaXN0cnkpLFxuXHRcdFx0TGF5ZXIuc3VjY2VlZChTZWNyZXRzQ29uZmlnVGFnLCBzZWNyZXRzKSxcblx0XHQpO1xuXG5cdFx0Y29uc3Qgc2VydmljZXNMYXllciA9IExheWVyLm1lcmdlQWxsKFxuXHRcdFx0TW9kdWxlRmVkZXJhdGlvblNlcnZpY2UuRGVmYXVsdCxcblx0XHRcdFNlY3JldHNTZXJ2aWNlLkRlZmF1bHQsXG5cdFx0XHRSZWdpc3RyeVNlcnZpY2UuRGVmYXVsdCxcblx0XHRcdFBsdWdpbkxpZmVjeWNsZVNlcnZpY2UuRGVmYXVsdCxcblx0XHQpLnBpcGUoXG5cdFx0XHRMYXllci5wcm92aWRlKGNvbnRleHRMYXllcilcblx0XHQpO1xuXG5cdFx0cmV0dXJuIFBsdWdpblNlcnZpY2UuRGVmYXVsdC5waXBlKFxuXHRcdFx0TGF5ZXIucHJvdmlkZShQbHVnaW5Mb2FkZXJTZXJ2aWNlLkRlZmF1bHQpLFxuXHRcdFx0TGF5ZXIucHJvdmlkZShzZXJ2aWNlc0xheWVyKVxuXHRcdCk7XG5cdH1cbn1cbiIsImltcG9ydCB7IGNyZWF0ZVJvdXRlckNsaWVudCB9IGZyb20gXCJAb3JwYy9zZXJ2ZXJcIjtcbmltcG9ydCB7IENhdXNlLCBFZmZlY3QsIEV4aXQsIEhhc2gsIE1hbmFnZWRSdW50aW1lLCBPcHRpb24gfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFueVBsdWdpbixcblx0SW5pdGlhbGl6ZWRQbHVnaW4sXG5cdExvYWRlZFBsdWdpbixcblx0UGx1Z2luQ2xpZW50VHlwZSxcblx0UGx1Z2luQ29uZmlnSW5wdXQsXG5cdFBsdWdpbkluc3RhbmNlLFxuXHRQbHVnaW5SZWdpc3RyeSxcblx0UGx1Z2luUm91dGVyVHlwZSxcblx0UGx1Z2luUnVudGltZUNvbmZpZyxcblx0UmVnaXN0ZXJlZFBsdWdpbixcblx0UmVnaXN0ZXJlZFBsdWdpbnMsXG5cdFVzZVBsdWdpblJlc3VsdFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IFBsdWdpblJ1bnRpbWVFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgUGx1Z2luU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL3BsdWdpbi5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5SdW50aW1lPFIgZXh0ZW5kcyBSZWdpc3RlcmVkUGx1Z2lucyA9IFJlZ2lzdGVyZWRQbHVnaW5zPiB7XG5cdHByaXZhdGUgcGx1Z2luQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgRWZmZWN0LkVmZmVjdDxJbml0aWFsaXplZFBsdWdpbjxBbnlQbHVnaW4+LCBQbHVnaW5SdW50aW1lRXJyb3I+PigpO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgcnVudGltZTogTWFuYWdlZFJ1bnRpbWUuTWFuYWdlZFJ1bnRpbWU8UGx1Z2luU2VydmljZSwgbmV2ZXI+LFxuXHRcdHByaXZhdGUgcmVnaXN0cnk6IFBsdWdpblJlZ2lzdHJ5XG5cdCkgeyB9XG5cblx0cHJpdmF0ZSBnZW5lcmF0ZUNhY2hlS2V5KHBsdWdpbklkOiBzdHJpbmcsIGNvbmZpZzogdW5rbm93bik6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29uZmlnSGFzaCA9IEhhc2guc3RydWN0dXJlKGNvbmZpZyBhcyBvYmplY3QpLnRvU3RyaW5nKCk7XG5cdFx0cmV0dXJuIGAke3BsdWdpbklkfToke2NvbmZpZ0hhc2h9YDtcblx0fVxuXG5cdHByaXZhdGUgdmFsaWRhdGVQbHVnaW5JZChcblx0XHRwbHVnaW5JZDogc3RyaW5nXG5cdCk6IEVmZmVjdC5FZmZlY3Q8c3RyaW5nLCBQbHVnaW5SdW50aW1lRXJyb3I+IHtcblx0XHRpZiAoIShwbHVnaW5JZCBpbiB0aGlzLnJlZ2lzdHJ5KSkge1xuXHRcdFx0cmV0dXJuIEVmZmVjdC5mYWlsKG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRwbHVnaW5JZDogU3RyaW5nKHBsdWdpbklkKSxcblx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLXBsdWdpbi1pZFwiLFxuXHRcdFx0XHRjYXVzZTogbmV3IEVycm9yKGBQbHVnaW4gSUQgJyR7U3RyaW5nKHBsdWdpbklkKX0nIG5vdCBmb3VuZCBpbiByZWdpc3RyeS5gKSxcblx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdH0pKTtcblx0XHR9XG5cdFx0cmV0dXJuIEVmZmVjdC5zdWNjZWVkKFN0cmluZyhwbHVnaW5JZCkpO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBydW5Qcm9taXNlPEEsIEU+KFxuXHRcdGVmZmVjdDogRWZmZWN0LkVmZmVjdDxBLCBFLCBQbHVnaW5TZXJ2aWNlPlxuXHQpOiBQcm9taXNlPEE+IHtcblx0XHRjb25zdCBleGl0ID0gYXdhaXQgdGhpcy5ydW50aW1lLnJ1blByb21pc2VFeGl0KGVmZmVjdCk7XG5cblx0XHRpZiAoRXhpdC5pc0ZhaWx1cmUoZXhpdCkpIHtcblx0XHRcdGNvbnN0IGVycm9yID0gQ2F1c2UuZmFpbHVyZU9wdGlvbihleGl0LmNhdXNlKTtcblx0XHRcdGlmIChPcHRpb24uaXNTb21lKGVycm9yKSkge1xuXHRcdFx0XHR0aHJvdyBlcnJvci52YWx1ZTtcblx0XHRcdH1cblx0XHRcdHRocm93IENhdXNlLnNxdWFzaChleGl0LmNhdXNlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXhpdC52YWx1ZTtcblx0fVxuXG5cdGFzeW5jIHVzZVBsdWdpbjxLIGV4dGVuZHMga2V5b2YgUmVnaXN0ZXJlZFBsdWdpbnMgJiBzdHJpbmc+KFxuXHRcdHBsdWdpbklkOiBLLFxuXHRcdGNvbmZpZzogUGx1Z2luQ29uZmlnSW5wdXQ8UltLXT5cblx0KTogUHJvbWlzZTxVc2VQbHVnaW5SZXN1bHQ8Sz4+IHtcblx0XHRjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShwbHVnaW5JZCwgY29uZmlnKTtcblxuXHRcdGxldCBjYWNoZWRQbHVnaW4gPSB0aGlzLnBsdWdpbkNhY2hlLmdldChjYWNoZUtleSk7XG5cdFx0aWYgKCFjYWNoZWRQbHVnaW4pIHtcblx0XHRcdGNvbnN0IG9wZXJhdGlvbiA9IEVmZmVjdC5nZW4odGhpcywgZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0Y29uc3QgcGx1Z2luU2VydmljZSA9IHlpZWxkKiBQbHVnaW5TZXJ2aWNlO1xuXHRcdFx0XHRjb25zdCB2YWxpZGF0ZWRJZCA9IHlpZWxkKiB0aGlzLnZhbGlkYXRlUGx1Z2luSWQocGx1Z2luSWQpO1xuXG5cdFx0XHRcdC8vIExvYWQg4oaSIEluc3RhbnRpYXRlIOKGkiBJbml0aWFsaXplXG5cdFx0XHRcdGNvbnN0IGN0b3IgPSB5aWVsZCogcGx1Z2luU2VydmljZS5sb2FkUGx1Z2luKHZhbGlkYXRlZElkKTtcblx0XHRcdFx0Y29uc3QgaW5zdGFuY2UgPSB5aWVsZCogcGx1Z2luU2VydmljZS5pbnN0YW50aWF0ZVBsdWdpbihwbHVnaW5JZCwgY3Rvcik7XG5cdFx0XHRcdGNvbnN0IGluaXRpYWxpemVkID0geWllbGQqIHBsdWdpblNlcnZpY2UuaW5pdGlhbGl6ZVBsdWdpbihpbnN0YW5jZSwgY29uZmlnKTtcblxuXHRcdFx0XHRyZXR1cm4gaW5pdGlhbGl6ZWQ7XG5cdFx0XHR9KS5waXBlKEVmZmVjdC5wcm92aWRlKHRoaXMucnVudGltZSkpO1xuXG5cdFx0XHRjYWNoZWRQbHVnaW4gPSBFZmZlY3QuY2FjaGVkKG9wZXJhdGlvbikucGlwZShFZmZlY3QuZmxhdHRlbik7XG5cdFx0XHR0aGlzLnBsdWdpbkNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVkUGx1Z2luKTtcblx0XHR9XG5cblx0XHRjb25zdCBpbml0aWFsaXplZCA9IGF3YWl0IHRoaXMucnVuUHJvbWlzZShjYWNoZWRQbHVnaW4pO1xuXHRcdGNvbnN0IHJvdXRlciA9IGluaXRpYWxpemVkLnBsdWdpbi5jcmVhdGVSb3V0ZXIoaW5pdGlhbGl6ZWQuY29udGV4dCk7XG5cdFx0Y29uc3QgY2xpZW50ID0gY3JlYXRlUm91dGVyQ2xpZW50KHJvdXRlcik7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0cm91dGVyOiByb3V0ZXIgYXMgUGx1Z2luUm91dGVyVHlwZTxSW0tdPixcblx0XHRcdGNsaWVudDogY2xpZW50IGFzIFBsdWdpbkNsaWVudFR5cGU8UltLXT4sXG5cdFx0XHRtZXRhZGF0YTogaW5pdGlhbGl6ZWQubWV0YWRhdGEsXG5cdFx0XHRpbml0aWFsaXplZDogaW5pdGlhbGl6ZWQgYXMgSW5pdGlhbGl6ZWRQbHVnaW48UmVnaXN0ZXJlZFBsdWdpbjxLPj5cblx0XHR9IGFzIFVzZVBsdWdpblJlc3VsdDxLPjtcblx0fVxuXG5cdGFzeW5jIGxvYWRQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogS1xuXHQpOiBQcm9taXNlPExvYWRlZFBsdWdpbjxSZWdpc3RlcmVkUGx1Z2luPEs+Pj4ge1xuXHRcdGNvbnN0IGVmZmVjdCA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdGNvbnN0IHBsdWdpblNlcnZpY2UgPSB5aWVsZCogUGx1Z2luU2VydmljZTtcblx0XHRcdHJldHVybiB5aWVsZCogcGx1Z2luU2VydmljZS5sb2FkUGx1Z2luKHBsdWdpbklkKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gdGhpcy5ydW5Qcm9taXNlKGVmZmVjdCkgYXMgUHJvbWlzZTxMb2FkZWRQbHVnaW48UmVnaXN0ZXJlZFBsdWdpbjxLPj4+O1xuXHR9XG5cblx0YXN5bmMgaW5zdGFudGlhdGVQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogSyxcblx0XHRsb2FkZWRQbHVnaW46IExvYWRlZFBsdWdpbjxSZWdpc3RlcmVkUGx1Z2luPEs+PlxuXHQpOiBQcm9taXNlPFBsdWdpbkluc3RhbmNlPFJlZ2lzdGVyZWRQbHVnaW48Sz4+PiB7XG5cdFx0Y29uc3QgZWZmZWN0ID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0Y29uc3QgcGx1Z2luU2VydmljZSA9IHlpZWxkKiBQbHVnaW5TZXJ2aWNlO1xuXHRcdFx0cmV0dXJuIHlpZWxkKiBwbHVnaW5TZXJ2aWNlLmluc3RhbnRpYXRlUGx1Z2luKHBsdWdpbklkLCBsb2FkZWRQbHVnaW4pO1xuXHRcdH0pO1xuXHRcdHJldHVybiB0aGlzLnJ1blByb21pc2UoZWZmZWN0KSBhcyBQcm9taXNlPFBsdWdpbkluc3RhbmNlPFJlZ2lzdGVyZWRQbHVnaW48Sz4+Pjtcblx0fVxuXG5cdGFzeW5jIGluaXRpYWxpemVQbHVnaW48VCBleHRlbmRzIEFueVBsdWdpbj4oXG5cdFx0aW5zdGFuY2U6IFBsdWdpbkluc3RhbmNlPFQ+LFxuXHRcdGNvbmZpZzogYW55XG5cdCk6IFByb21pc2U8SW5pdGlhbGl6ZWRQbHVnaW48VD4+IHtcblx0XHRjb25zdCBlZmZlY3QgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRjb25zdCBwbHVnaW5TZXJ2aWNlID0geWllbGQqIFBsdWdpblNlcnZpY2U7XG5cdFx0XHRyZXR1cm4geWllbGQqIHBsdWdpblNlcnZpY2UuaW5pdGlhbGl6ZVBsdWdpbihpbnN0YW5jZSwgY29uZmlnKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gdGhpcy5ydW5Qcm9taXNlKGVmZmVjdCk7XG5cdH1cblxuXHRhc3luYyBzaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBlZmZlY3QgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRjb25zdCBwbHVnaW5TZXJ2aWNlID0geWllbGQqIFBsdWdpblNlcnZpY2U7XG5cdFx0XHR5aWVsZCogcGx1Z2luU2VydmljZS5jbGVhbnVwKCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMucnVuUHJvbWlzZShlZmZlY3QpO1xuXHR9XG5cblx0YXN5bmMgZXZpY3RQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogSyxcblx0XHRjb25maWc6IFBsdWdpbkNvbmZpZ0lucHV0PFJlZ2lzdGVyZWRQbHVnaW5zW0tdPlxuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShwbHVnaW5JZCwgY29uZmlnKTtcblxuXHRcdGNvbnN0IGVmZmVjdCA9IEVmZmVjdC5nZW4odGhpcywgZnVuY3Rpb24qICgpIHtcblx0XHRcdGNvbnN0IHBsdWdpblNlcnZpY2UgPSB5aWVsZCogUGx1Z2luU2VydmljZTtcblx0XHRcdGNvbnN0IGNhY2hlZFBsdWdpbiA9IHRoaXMucGx1Z2luQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcblxuXHRcdFx0aWYgKGNhY2hlZFBsdWdpbikge1xuXHRcdFx0XHR0aGlzLnBsdWdpbkNhY2hlLmRlbGV0ZShjYWNoZUtleSk7XG5cblx0XHRcdFx0Y29uc3QgcGx1Z2luUmVzdWx0ID0geWllbGQqIGNhY2hlZFBsdWdpbi5waXBlKFxuXHRcdFx0XHRcdEVmZmVjdC5jYXRjaEFsbCgoKSA9PiBFZmZlY3Quc3VjY2VlZChudWxsKSlcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRpZiAocGx1Z2luUmVzdWx0KSB7XG5cdFx0XHRcdFx0eWllbGQqIHBsdWdpblNlcnZpY2Uuc2h1dGRvd25QbHVnaW4ocGx1Z2luUmVzdWx0KS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0LmNhdGNoQWxsKCgpID0+IEVmZmVjdC52b2lkKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KS5waXBlKEVmZmVjdC5jYXRjaEFsbCgoKSA9PiBFZmZlY3Qudm9pZCkpO1xuXG5cdFx0cmV0dXJuIHRoaXMucnVuUHJvbWlzZShlZmZlY3QpO1xuXHR9XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHJlbW90ZSBVUkwgdG8gZW5zdXJlIGl0IHBvaW50cyB0byByZW1vdGVFbnRyeS5qc1xuICogSWYgdGhlIFVSTCBkb2Vzbid0IGVuZCB3aXRoIGEgZmlsZSBleHRlbnNpb24sIGFwcGVuZHMgL3JlbW90ZUVudHJ5LmpzXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlbW90ZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG5cdGlmICh1cmwuZW5kc1dpdGgoJy5qcycpKSByZXR1cm4gdXJsOyAvLyBBbHJlYWR5IGEgZmlsZVxuXHRyZXR1cm4gYCR7dXJsLmVuZHNXaXRoKCcvJykgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsfS9yZW1vdGVFbnRyeS5qc2A7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQbHVnaW5SdW50aW1lKFxuXHRjb25maWc6IFBsdWdpblJ1bnRpbWVDb25maWdcbik6IFBsdWdpblJ1bnRpbWUge1xuXHRjb25zdCBzZWNyZXRzID0gY29uZmlnLnNlY3JldHMgfHwge307XG5cblx0Ly8gTm9ybWFsaXplIGFsbCByZW1vdGUgVVJMcyBpbiB0aGUgcmVnaXN0cnlcblx0Y29uc3Qgbm9ybWFsaXplZFJlZ2lzdHJ5ID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuXHRcdE9iamVjdC5lbnRyaWVzKGNvbmZpZy5yZWdpc3RyeSkubWFwKChbcGx1Z2luSWQsIGVudHJ5XSkgPT4gW1xuXHRcdFx0cGx1Z2luSWQsXG5cdFx0XHR7XG5cdFx0XHRcdC4uLmVudHJ5LFxuXHRcdFx0XHRyZW1vdGVVcmw6IG5vcm1hbGl6ZVJlbW90ZVVybChlbnRyeS5yZW1vdGVVcmwpXG5cdFx0XHR9XG5cdFx0XSlcblx0KSBhcyBQbHVnaW5SZWdpc3RyeTtcblxuXHRjb25zdCBsYXllciA9IFBsdWdpblNlcnZpY2UuTGl2ZShub3JtYWxpemVkUmVnaXN0cnksIHNlY3JldHMpO1xuXHRjb25zdCBydW50aW1lID0gTWFuYWdlZFJ1bnRpbWUubWFrZShsYXllcik7XG5cblx0cmV0dXJuIG5ldyBQbHVnaW5SdW50aW1lKHJ1bnRpbWUsIG5vcm1hbGl6ZWRSZWdpc3RyeSk7XG59Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFJQSxJQUFhLHFCQUFiLGNBQXdDLEtBQUssWUFBWSxxQkFBcUIsQ0FNM0U7QUFFSCxJQUFhLHdCQUFiLGNBQTJDLEtBQUssWUFDL0Msd0JBQ0EsQ0FJRTtBQUVILElBQWEsa0JBQWIsY0FBcUMsS0FBSyxZQUFZLGtCQUFrQixDQUlyRTtBQUdILE1BQWEsdUJBQXVCLFNBQTBCO0FBQzdELFNBQVEsTUFBUjtFQUNDLEtBQUs7RUFDTCxLQUFLO0VBQ0wsS0FBSztFQUNMLEtBQUs7RUFDTCxLQUFLLFVBQ0osUUFBTztFQUNSLFFBQ0MsUUFBTzs7O0FBS1YsTUFBYSxpQkFDWixXQUNBLFVBQ0EsZUFDQSxjQUN3QjtBQUN4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
|
|
458
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1CNEFJdHNEUS5tanMiLCJuYW1lcyI6WyJwa2ciLCJlcnJvciIsInJ1bnRpbWU6IE1hbmFnZWRSdW50aW1lLk1hbmFnZWRSdW50aW1lPFBsdWdpblNlcnZpY2UsIG5ldmVyPiIsInJlZ2lzdHJ5OiBQbHVnaW5SZWdpc3RyeSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lL2Vycm9ycy50cyIsIi4uL3NyYy9ydW50aW1lL3NlcnZpY2VzL21vZHVsZS1mZWRlcmF0aW9uLnNlcnZpY2UudHMiLCIuLi9zcmMvcnVudGltZS9zZXJ2aWNlcy9wbHVnaW4tbGlmZWN5Y2xlLnNlcnZpY2UudHMiLCIuLi9zcmMvcnVudGltZS92YWxpZGF0aW9uLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvc2VjcmV0cy5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvcGx1Z2luLWxvYWRlci5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvcGx1Z2luLnNlcnZpY2UudHMiLCIuLi9zcmMvcnVudGltZS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPUlBDRXJyb3IgfSBmcm9tIFwiQG9ycGMvY29udHJhY3RcIjtcbmltcG9ydCB7IERhdGEgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5SdW50aW1lRXJyb3IgZXh0ZW5kcyBEYXRhLlRhZ2dlZEVycm9yKFwiUGx1Z2luUnVudGltZUVycm9yXCIpPHtcblx0cmVhZG9ubHkgcGx1Z2luSWQ/OiBzdHJpbmc7XG5cdHJlYWRvbmx5IG9wZXJhdGlvbj86IHN0cmluZztcblx0cmVhZG9ubHkgcHJvY2VkdXJlTmFtZT86IHN0cmluZztcblx0cmVhZG9ubHkgY2F1c2U/OiBFcnJvcjtcblx0cmVhZG9ubHkgcmV0cnlhYmxlOiBib29sZWFuO1xufT4geyB9XG5cbmV4cG9ydCBjbGFzcyBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgZXh0ZW5kcyBEYXRhLlRhZ2dlZEVycm9yKFxuXHRcIk1vZHVsZUZlZGVyYXRpb25FcnJvclwiLFxuKTx7XG5cdHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHJlbW90ZVVybDogc3RyaW5nO1xuXHRyZWFkb25seSBjYXVzZT86IEVycm9yO1xufT4geyB9XG5cbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBEYXRhLlRhZ2dlZEVycm9yKFwiVmFsaWRhdGlvbkVycm9yXCIpPHtcblx0cmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblx0cmVhZG9ubHkgc3RhZ2U6IFwiY29uZmlnXCIgfCBcImlucHV0XCIgfCBcIm91dHB1dFwiIHwgXCJzdGF0ZVwiO1xuXHRyZWFkb25seSB6b2RFcnJvcjogei5ab2RFcnJvcjtcbn0+IHsgfVxuXG4vLyBIZWxwZXIgdG8gZGV0ZXJtaW5lIGlmIGFuIG9SUEMgZXJyb3IgY29kZSBpcyByZXRyeWFibGVcbmV4cG9ydCBjb25zdCBpc1JldHJ5YWJsZU9SUENDb2RlID0gKGNvZGU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuXHRzd2l0Y2ggKGNvZGUpIHtcblx0XHRjYXNlICdUT09fTUFOWV9SRVFVRVNUUyc6XG5cdFx0Y2FzZSAnU0VSVklDRV9VTkFWQUlMQUJMRSc6XG5cdFx0Y2FzZSAnQkFEX0dBVEVXQVknOlxuXHRcdGNhc2UgJ0dBVEVXQVlfVElNRU9VVCc6XG5cdFx0Y2FzZSAnVElNRU9VVCc6XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59O1xuXG4vLyBDb252ZXJ0IE9SUEMgZXJyb3JzIGZyb20gcGx1Z2luIHByb2NlZHVyZXMgdG8gUGx1Z2luUnVudGltZUVycm9yXG5leHBvcnQgY29uc3Qgd3JhcE9SUENFcnJvciA9IChcblx0b3JwY0Vycm9yOiBPUlBDRXJyb3I8c3RyaW5nLCB1bmtub3duPixcblx0cGx1Z2luSWQ/OiBzdHJpbmcsXG5cdHByb2NlZHVyZU5hbWU/OiBzdHJpbmcsXG5cdG9wZXJhdGlvbj86IHN0cmluZ1xuKTogUGx1Z2luUnVudGltZUVycm9yID0+IHtcblx0cmV0dXJuIG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdHBsdWdpbklkLFxuXHRcdG9wZXJhdGlvbixcblx0XHRwcm9jZWR1cmVOYW1lLFxuXHRcdHJldHJ5YWJsZTogaXNSZXRyeWFibGVPUlBDQ29kZShvcnBjRXJyb3IuY29kZSksXG5cdFx0Y2F1c2U6IG9ycGNFcnJvciBhcyBFcnJvclxuXHR9KTtcbn07XG5cbi8vIFVuaXZlcnNhbCBlcnJvciBjb252ZXJ0ZXIgZm9yIHRoZSBydW50aW1lXG5leHBvcnQgY29uc3QgdG9QbHVnaW5SdW50aW1lRXJyb3IgPSAoXG5cdGVycm9yOiB1bmtub3duLFxuXHRwbHVnaW5JZD86IHN0cmluZyxcblx0cHJvY2VkdXJlTmFtZT86IHN0cmluZyxcblx0b3BlcmF0aW9uPzogc3RyaW5nLFxuXHRkZWZhdWx0UmV0cnlhYmxlID0gZmFsc2Vcbik6IFBsdWdpblJ1bnRpbWVFcnJvciA9PiB7XG5cdGlmIChlcnJvciBpbnN0YW5jZW9mIE9SUENFcnJvcikge1xuXHRcdHJldHVybiB3cmFwT1JQQ0Vycm9yKGVycm9yLCBwbHVnaW5JZCwgcHJvY2VkdXJlTmFtZSwgb3BlcmF0aW9uKTtcblx0fVxuXG5cdGlmIChlcnJvciBpbnN0YW5jZW9mIFBsdWdpblJ1bnRpbWVFcnJvcikge1xuXHRcdHJldHVybiBlcnJvcjsgLy8gQWxyZWFkeSBjb252ZXJ0ZWRcblx0fVxuXG5cdHJldHVybiBuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRwbHVnaW5JZCxcblx0XHRvcGVyYXRpb24sXG5cdFx0cHJvY2VkdXJlTmFtZSxcblx0XHRyZXRyeWFibGU6IGRlZmF1bHRSZXRyeWFibGUsXG5cdFx0Y2F1c2U6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKVxuXHR9KTtcbn07XG4iLCJpbXBvcnQgeyBiZXR0ZXJGZXRjaCB9IGZyb20gXCJAYmV0dGVyLWZldGNoL2ZldGNoXCI7XG5pbXBvcnQge1xuXHRjcmVhdGVJbnN0YW5jZSxcblx0Z2V0SW5zdGFuY2UsXG59IGZyb20gXCJAbW9kdWxlLWZlZGVyYXRpb24vZW5oYW5jZWQvcnVudGltZVwiO1xuaW1wb3J0IHsgc2V0R2xvYmFsRmVkZXJhdGlvbkluc3RhbmNlIH0gZnJvbSBcIkBtb2R1bGUtZmVkZXJhdGlvbi9ydW50aW1lLWNvcmVcIjtcbmltcG9ydCB7IEVmZmVjdCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHsgQW55UGx1Z2luIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBnZXROb3JtYWxpemVkUmVtb3RlTmFtZSB9IGZyb20gXCIuL25vcm1hbGl6ZVwiO1xuXG50eXBlIFJlbW90ZU1vZHVsZSA9IFxuICB8IChuZXcgKCkgPT4gQW55UGx1Z2luKVxuICB8IHsgZGVmYXVsdDogbmV3ICgpID0+IEFueVBsdWdpbiB9O1xuXG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi8uLi9wYWNrYWdlLmpzb25cIjtcblxuY29uc3QgY3JlYXRlTW9kdWxlRmVkZXJhdGlvbkluc3RhbmNlID0gRWZmZWN0LmNhY2hlZChcblx0RWZmZWN0LnN5bmMoKCkgPT4ge1xuXHRcdHRyeSB7XG5cdFx0XHRsZXQgaW5zdGFuY2UgPSBnZXRJbnN0YW5jZSgpO1xuXG5cdFx0XHRpZiAoIWluc3RhbmNlKSB7XG5cdFx0XHRcdGluc3RhbmNlID0gY3JlYXRlSW5zdGFuY2Uoe1xuXHRcdFx0XHRcdG5hbWU6IFwiaG9zdFwiLFxuXHRcdFx0XHRcdHJlbW90ZXM6IFtdLFxuXHRcdFx0XHRcdHNoYXJlZDoge1xuXHRcdFx0XHRcdFx0XCJldmVyeS1wbHVnaW5cIjoge1xuXHRcdFx0XHRcdFx0XHR2ZXJzaW9uOiBwa2cudmVyc2lvbixcblx0XHRcdFx0XHRcdFx0c2hhcmVDb25maWc6IHtcblx0XHRcdFx0XHRcdFx0XHRzaW5nbGV0b246IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWRWZXJzaW9uOiBgXiR7cGtnLnZlcnNpb259YCxcblx0XHRcdFx0XHRcdFx0XHRlYWdlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRzdHJpY3RWZXJzaW9uOiBmYWxzZSwgLy8gQWxsb3cgYmlkaXJlY3Rpb25hbCB2ZXJzaW9uIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRlZmZlY3Q6IHtcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjogcGtnLmRlcGVuZGVuY2llcy5lZmZlY3QsXG5cdFx0XHRcdFx0XHRcdHNoYXJlQ29uZmlnOiB7XG5cdFx0XHRcdFx0XHRcdFx0c2luZ2xldG9uOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkVmVyc2lvbjogXCJeMy4xOC4wXCIsIC8vIEFsbG93IGFueSAzLjE4LnggcGF0Y2ggdmVyc2lvblxuXHRcdFx0XHRcdFx0XHRcdGVhZ2VyOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHN0cmljdFZlcnNpb246IGZhbHNlLCAvLyBBbGxvdyB2ZXJzaW9uIGZsZXhpYmlsaXR5IGZvciBjb21wYXRpYmlsaXR5XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0em9kOiB7XG5cdFx0XHRcdFx0XHRcdHZlcnNpb246IHBrZy5kZXBlbmRlbmNpZXMuem9kLFxuXHRcdFx0XHRcdFx0XHRzaGFyZUNvbmZpZzoge1xuXHRcdFx0XHRcdFx0XHRcdHNpbmdsZXRvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFZlcnNpb246IFwiXjQuMS4wXCIsIC8vIEFsbG93IGFueSA0LjEueCBwYXRjaCB2ZXJzaW9uXG5cdFx0XHRcdFx0XHRcdFx0ZWFnZXI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RyaWN0VmVyc2lvbjogZmFsc2UsIC8vIEFsbG93IHZlcnNpb24gZmxleGliaWxpdHkgZm9yIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcIkBvcnBjL2NvbnRyYWN0XCI6IHtcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjogcGtnLmRlcGVuZGVuY2llc1tcIkBvcnBjL2NvbnRyYWN0XCJdLFxuXHRcdFx0XHRcdFx0XHRzaGFyZUNvbmZpZzoge1xuXHRcdFx0XHRcdFx0XHRcdHNpbmdsZXRvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFZlcnNpb246IFwiXjEuOC4wXCIsIC8vIEFsbG93IGFueSAxLjgueCBwYXRjaCB2ZXJzaW9uXG5cdFx0XHRcdFx0XHRcdFx0ZWFnZXI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RyaWN0VmVyc2lvbjogZmFsc2UsIC8vIEFsbG93IHZlcnNpb24gZmxleGliaWxpdHkgZm9yIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcIkBvcnBjL3NlcnZlclwiOiB7XG5cdFx0XHRcdFx0XHRcdHZlcnNpb246IHBrZy5kZXBlbmRlbmNpZXNbXCJAb3JwYy9zZXJ2ZXJcIl0sXG5cdFx0XHRcdFx0XHRcdHNoYXJlQ29uZmlnOiB7XG5cdFx0XHRcdFx0XHRcdFx0c2luZ2xldG9uOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkVmVyc2lvbjogXCJeMS44LjBcIiwgLy8gQWxsb3cgYW55IDEuOC54IHBhdGNoIHZlcnNpb25cblx0XHRcdFx0XHRcdFx0XHRlYWdlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRzdHJpY3RWZXJzaW9uOiBmYWxzZSwgLy8gQWxsb3cgdmVyc2lvbiBmbGV4aWJpbGl0eSBmb3IgY29tcGF0aWJpbGl0eVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHNldEdsb2JhbEZlZGVyYXRpb25JbnN0YW5jZShpbnN0YW5jZSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBpbnN0YW5jZTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBNb2R1bGUgRmVkZXJhdGlvbjogJHtlcnJvcn1gKTtcblx0XHR9XG5cdH0pLFxuKTtcblxuZXhwb3J0IGNsYXNzIE1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8TW9kdWxlRmVkZXJhdGlvblNlcnZpY2U+KCkoXCJNb2R1bGVGZWRlcmF0aW9uU2VydmljZVwiLCB7XG5cdGVmZmVjdDogRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdGNvbnN0IG1mID0geWllbGQqIEVmZmVjdC5mbGF0dGVuKGNyZWF0ZU1vZHVsZUZlZGVyYXRpb25JbnN0YW5jZSk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0cmVnaXN0ZXJSZW1vdGU6IChwbHVnaW5JZDogc3RyaW5nLCB1cmw6IHN0cmluZykgPT5cblx0XHRcdFx0RWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbTUZdIFJlZ2lzdGVyaW5nICR7cGx1Z2luSWR9YCk7XG5cblx0XHRcdFx0XHQvLyBDaGVjayBpZiByZW1vdGUgaXMgYXZhaWxhYmxlXG5cdFx0XHRcdFx0Y29uc3QgeyBlcnJvciB9ID0geWllbGQqIEVmZmVjdC50cnlQcm9taXNlKHtcblx0XHRcdFx0XHRcdHRyeTogKCkgPT4gYmV0dGVyRmV0Y2godXJsLCB7IG1ldGhvZDogXCJIRUFEXCIgfSksXG5cdFx0XHRcdFx0XHRjYXRjaDogKGVycm9yKTogTW9kdWxlRmVkZXJhdGlvbkVycm9yID0+XG5cdFx0XHRcdFx0XHRcdG5ldyBNb2R1bGVGZWRlcmF0aW9uRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkLFxuXHRcdFx0XHRcdFx0XHRcdHJlbW90ZVVybDogdXJsLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOlxuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGlmIChlcnJvcikge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYFtNRl0g4p2MIFJlbW90ZSBub3QgYXZhaWxhYmxlIGZvciAke3BsdWdpbklkfWApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHlpZWxkKiBFZmZlY3QuZmFpbChcblx0XHRcdFx0XHRcdFx0bmV3IE1vZHVsZUZlZGVyYXRpb25FcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdFx0XHRcdFx0cmVtb3RlVXJsOiB1cmwsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6IG5ldyBFcnJvcihgUmVtb3RlIG5vdCBhdmFpbGFibGUgKCR7dXJsfSk6ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfWApLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgcmVtb3RlTmFtZSA9IGdldE5vcm1hbGl6ZWRSZW1vdGVOYW1lKHBsdWdpbklkKTtcblxuXHRcdFx0XHRcdHlpZWxkKiBFZmZlY3QudHJ5KHtcblx0XHRcdFx0XHRcdHRyeTogKCkgPT4gbWYucmVnaXN0ZXJSZW1vdGVzKFt7IG5hbWU6IHJlbW90ZU5hbWUsIGVudHJ5OiB1cmwgfV0pLFxuXHRcdFx0XHRcdFx0Y2F0Y2g6IChlcnJvcik6IE1vZHVsZUZlZGVyYXRpb25FcnJvciA9PlxuXHRcdFx0XHRcdFx0XHRuZXcgTW9kdWxlRmVkZXJhdGlvbkVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0XHRcdFx0XHRyZW1vdGVVcmw6IHVybCxcblx0XHRcdFx0XHRcdFx0XHRjYXVzZTpcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRjb25zb2xlLmxvZyhgW01GXSDinIUgUmVnaXN0ZXJlZCAke3BsdWdpbklkfWApO1xuXHRcdFx0XHR9KSxcblxuXHRcdFx0bG9hZFJlbW90ZUNvbnN0cnVjdG9yOiAocGx1Z2luSWQ6IHN0cmluZywgdXJsOiBzdHJpbmcpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zdCByZW1vdGVOYW1lID0gZ2V0Tm9ybWFsaXplZFJlbW90ZU5hbWUocGx1Z2luSWQpO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbTUZdIExvYWRpbmcgcmVtb3RlICR7cmVtb3RlTmFtZX1gKTtcblx0XHRcdFx0XHRjb25zdCBtb2R1bGVQYXRoID0gYCR7cmVtb3RlTmFtZX0vcGx1Z2luYDtcblxuXHRcdFx0XHRcdHJldHVybiB5aWVsZCogRWZmZWN0LnRyeVByb21pc2Uoe1xuXHRcdFx0XHRcdFx0dHJ5OiBhc3luYyAoKSA9PiB7XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgY29udGFpbmVyID0gYXdhaXQgbWYubG9hZFJlbW90ZTxSZW1vdGVNb2R1bGU+KG1vZHVsZVBhdGgpO1xuXHRcdFx0XHRcdFx0XHRpZiAoIWNvbnRhaW5lcikge1xuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgTm8gY29udGFpbmVyIHJldHVybmVkIGZvciAke21vZHVsZVBhdGh9YCk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0IG11bHRpcGxlIGV4cG9ydCBwYXR0ZXJuczogZGlyZWN0IGZ1bmN0aW9uLCBkZWZhdWx0IGV4cG9ydCwgbmFtZWQgZXhwb3J0c1xuXHRcdFx0XHRcdFx0XHRjb25zdCBDb25zdHJ1Y3RvciA9XG5cdFx0XHRcdFx0XHRcdFx0dHlwZW9mIGNvbnRhaW5lciA9PT0gXCJmdW5jdGlvblwiXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGNvbnRhaW5lciAgLy8gRGlyZWN0IGZ1bmN0aW9uIGV4cG9ydFxuXHRcdFx0XHRcdFx0XHRcdFx0OiBjb250YWluZXIuZGVmYXVsdFxuXHRcdFx0XHRcdFx0XHRcdFx0PyBjb250YWluZXIuZGVmYXVsdCAgLy8gRGVmYXVsdCBleHBvcnRcblx0XHRcdFx0XHRcdFx0XHRcdDogT2JqZWN0LnZhbHVlcyhjb250YWluZXIpLmZpbmQoICAvLyBOYW1lZCBleHBvcnQgZmFsbGJhY2tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZXhwKSA9PiB0eXBlb2YgZXhwID09PSBcImZ1bmN0aW9uXCIgJiYgZXhwLnByb3RvdHlwZT8uY29uc3RydWN0b3IgPT09IGV4cFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRcdGlmICghQ29uc3RydWN0b3IgfHwgdHlwZW9mIENvbnN0cnVjdG9yICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBjb250YWluZXJJbmZvID0gdHlwZW9mIGNvbnRhaW5lciA9PT0gXCJvYmplY3RcIlxuXHRcdFx0XHRcdFx0XHRcdFx0PyBgQXZhaWxhYmxlIGV4cG9ydHM6ICR7T2JqZWN0LmtleXMoY29udGFpbmVyKS5qb2luKCcsICcpfWBcblx0XHRcdFx0XHRcdFx0XHRcdDogYENvbnRhaW5lciB0eXBlOiAke3R5cGVvZiBjb250YWluZXJ9YDtcblxuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0XHRcdFx0XHRcdGBObyB2YWxpZCBwbHVnaW4gY29uc3RydWN0b3IgZm91bmQgZm9yICcke3BsdWdpbklkfScuXFxuYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgU3VwcG9ydGVkIHBhdHRlcm5zOlxcbmAgK1xuXHRcdFx0XHRcdFx0XHRcdFx0YCAgLSBleHBvcnQgY29uc3QgWW91clBsdWdpbiA9IGNyZWF0ZVBsdWdpbih7Li4ufSlcXG5gICtcblx0XHRcdFx0XHRcdFx0XHRcdGAgIC0gZXhwb3J0IGRlZmF1bHQgY3JlYXRlUGx1Z2luKHsuLi59KVxcbmAgK1xuXHRcdFx0XHRcdFx0XHRcdFx0YCR7Y29udGFpbmVySW5mb31gLFxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyBWYWxpZGF0ZSBpdCBsb29rcyBsaWtlIGEgcGx1Z2luIGNvbnN0cnVjdG9yIChoYXMgYmluZGluZyBwcm9wZXJ0eSlcblx0XHRcdFx0XHRcdFx0aWYgKCEoQ29uc3RydWN0b3IgYXMgYW55KS5iaW5kaW5nKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgY29udGFpbmVySW5mbyA9IHR5cGVvZiBjb250YWluZXIgPT09IFwib2JqZWN0XCJcblx0XHRcdFx0XHRcdFx0XHRcdD8gYEZvdW5kIGV4cG9ydHM6ICR7T2JqZWN0LmtleXMoY29udGFpbmVyKS5qb2luKCcsICcpfWBcblx0XHRcdFx0XHRcdFx0XHRcdDogYENvbnRhaW5lciB0eXBlOiAke3R5cGVvZiBjb250YWluZXJ9YDtcblxuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0XHRcdFx0XHRcdGBJbnZhbGlkIHBsdWdpbiBjb25zdHJ1Y3RvciBmb3IgJyR7cGx1Z2luSWR9Jy4gYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgVGhlIGV4cG9ydGVkIHZhbHVlIG11c3QgYmUgY3JlYXRlZCB3aXRoIGNyZWF0ZVBsdWdpbigpLiBgICtcblx0XHRcdFx0XHRcdFx0XHRcdGBGb3VuZCBhIGZ1bmN0aW9uIGJ1dCBpdCdzIG1pc3NpbmcgdGhlIHJlcXVpcmVkICdiaW5kaW5nJyBwcm9wZXJ0eS5cXG5gICtcblx0XHRcdFx0XHRcdFx0XHRcdGAke2NvbnRhaW5lckluZm99YCxcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYFtNRl0g4pyFIExvYWRlZCBjb25zdHJ1Y3RvciBmb3IgJHtwbHVnaW5JZH1gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIENvbnN0cnVjdG9yO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNhdGNoOiAoZXJyb3IpOiBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgPT5cblx0XHRcdFx0XHRcdFx0bmV3IE1vZHVsZUZlZGVyYXRpb25FcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdFx0XHRcdFx0cmVtb3RlVXJsOiB1cmwsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6XG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSksXG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KSxcblx0XHR9O1xuXHR9KSxcbn0pIHt9XG4iLCJpbXBvcnQgeyBFZmZlY3QsIFJlZiB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHsgQW55UGx1Z2luLCBJbml0aWFsaXplZFBsdWdpbiB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgdG9QbHVnaW5SdW50aW1lRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5MaWZlY3ljbGVTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UGx1Z2luTGlmZWN5Y2xlU2VydmljZT4oKShcIlBsdWdpbkxpZmVjeWNsZVNlcnZpY2VcIiwge1xuICBlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICBjb25zdCBhY3RpdmVQbHVnaW5zID0geWllbGQqIFJlZi5tYWtlKG5ldyBTZXQ8SW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPj4oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVnaXN0ZXI6IDxUIGV4dGVuZHMgQW55UGx1Z2luPihwbHVnaW46IEluaXRpYWxpemVkUGx1Z2luPFQ+KSA9PlxuICAgICAgICBSZWYudXBkYXRlKGFjdGl2ZVBsdWdpbnMsIHBsdWdpbnMgPT5cbiAgICAgICAgICBuZXcgU2V0KHBsdWdpbnMpLmFkZChwbHVnaW4gYXMgSW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPilcbiAgICAgICAgKSxcblxuICAgICAgdW5yZWdpc3RlcjogKHBsdWdpbjogSW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPikgPT5cbiAgICAgICAgUmVmLnVwZGF0ZShhY3RpdmVQbHVnaW5zLCBwbHVnaW5zID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdTZXQgPSBuZXcgU2V0KHBsdWdpbnMpO1xuICAgICAgICAgIG5ld1NldC5kZWxldGUocGx1Z2luKTtcbiAgICAgICAgICByZXR1cm4gbmV3U2V0O1xuICAgICAgICB9KSxcblxuICAgICAgc2h1dGRvd246IChwbHVnaW46IEluaXRpYWxpemVkUGx1Z2luPEFueVBsdWdpbj4pID0+XG4gICAgICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgZnJvbSBhY3RpdmUgcGx1Z2luc1xuICAgICAgICAgIHlpZWxkKiBSZWYudXBkYXRlKGFjdGl2ZVBsdWdpbnMsIHBsdWdpbnMgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3U2V0ID0gbmV3IFNldChwbHVnaW5zKTtcbiAgICAgICAgICAgIG5ld1NldC5kZWxldGUocGx1Z2luKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdTZXQ7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBTaHV0ZG93biB0aGUgcGx1Z2luXG4gICAgICAgICAgeWllbGQqIHBsdWdpbi5wbHVnaW4uc2h1dGRvd24oKS5waXBlKFxuICAgICAgICAgICAgRWZmZWN0Lm1hcEVycm9yKGVycm9yID0+XG4gICAgICAgICAgICAgIHRvUGx1Z2luUnVudGltZUVycm9yKGVycm9yLCBwbHVnaW4ucGx1Z2luLmlkLCB1bmRlZmluZWQsIFwic2h1dGRvd24tcGx1Z2luXCIsIGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuXG4gICAgICBjbGVhbnVwOiAoKSA9PlxuICAgICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgY29uc3QgcGx1Z2lucyA9IHlpZWxkKiBSZWYuZ2V0KGFjdGl2ZVBsdWdpbnMpO1xuXG4gICAgICAgICAgLy8gU2h1dGRvd24gYWxsIGFjdGl2ZSBwbHVnaW5zIGNvbmN1cnJlbnRseVxuICAgICAgICAgIHlpZWxkKiBFZmZlY3QuZm9yRWFjaChcbiAgICAgICAgICAgIHBsdWdpbnMsXG4gICAgICAgICAgICBwbHVnaW4gPT5cbiAgICAgICAgICAgICAgcGx1Z2luLnBsdWdpbi5zaHV0ZG93bigpLnBpcGUoXG4gICAgICAgICAgICAgICAgRWZmZWN0Lm1hcEVycm9yKGVycm9yID0+XG4gICAgICAgICAgICAgICAgICB0b1BsdWdpblJ1bnRpbWVFcnJvcihlcnJvciwgcGx1Z2luLnBsdWdpbi5pZCwgdW5kZWZpbmVkLCBcImNsZWFudXAtc2h1dGRvd25cIiwgZmFsc2UpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBFZmZlY3QuY2F0Y2hBbGwoZXJyb3IgPT5cbiAgICAgICAgICAgICAgICAgIEVmZmVjdC5sb2dFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEZhaWxlZCB0byBzaHV0ZG93biBwbHVnaW4gJHtwbHVnaW4ucGx1Z2luLmlkfSBkdXJpbmcgY2xlYW51cGAsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICB7IHBsdWdpbklkOiBwbHVnaW4ucGx1Z2luLmlkIH1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB7IGNvbmN1cnJlbmN5OiBcInVuYm91bmRlZFwiIH1cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gQ2xlYXIgdGhlIGFjdGl2ZSBwbHVnaW5zIHNldFxuICAgICAgICAgIHlpZWxkKiBSZWYuc2V0KGFjdGl2ZVBsdWdpbnMsIG5ldyBTZXQoKSk7XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgRWZmZWN0LmNhdGNoQWxsKCgpID0+IEVmZmVjdC52b2lkKSAvLyBDb252ZXJ0IGVycm9ycyB0byB2b2lkIGZvciBjbGVhbnVwXG4gICAgICAgICksXG4gICAgfTtcbiAgfSksXG59KSB7IH1cbiIsImltcG9ydCB7IEVmZmVjdCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGUgPSA8VD4oXG5cdHNjaGVtYTogei5ab2RTY2hlbWE8VD4sXG5cdGRhdGE6IHVua25vd24sXG5cdHBsdWdpbklkOiBzdHJpbmcsXG5cdHN0YWdlOiBcImNvbmZpZ1wiIHwgXCJpbnB1dFwiIHwgXCJvdXRwdXRcIiB8IFwic3RhdGVcIixcbik6IEVmZmVjdC5FZmZlY3Q8VCwgVmFsaWRhdGlvbkVycm9yPiA9PlxuXHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gc2NoZW1hLnNhZmVQYXJzZShkYXRhKTtcblx0XHRpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcblx0XHRcdHJldHVybiByZXN1bHQuZGF0YTtcblx0XHR9XG5cdFx0cmV0dXJuIHlpZWxkKiBFZmZlY3QuZmFpbChcblx0XHRcdG5ldyBWYWxpZGF0aW9uRXJyb3Ioe1xuXHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0c3RhZ2UsXG5cdFx0XHRcdHpvZEVycm9yOiByZXN1bHQuZXJyb3IsXG5cdFx0XHR9KSxcblx0XHQpO1xuXHR9KTtcbiIsImltcG9ydCB7IENvbnRleHQsIEVmZmVjdCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3JldHNDb25maWcgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IFBsdWdpblJ1bnRpbWVFcnJvciB9IGZyb20gXCIuLi9lcnJvcnNcIjtcblxuY29uc3QgY29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuXHRzZWNyZXRzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSlcbn0pLmxvb3NlKCk7XG5cbmV4cG9ydCBjbGFzcyBTZWNyZXRzQ29uZmlnVGFnIGV4dGVuZHMgQ29udGV4dC5UYWcoXCJTZWNyZXRzQ29uZmlnXCIpPFxuXHRTZWNyZXRzQ29uZmlnVGFnLFxuXHRTZWNyZXRzQ29uZmlnXG4+KCkgeyB9XG5cbmV4cG9ydCBjbGFzcyBTZWNyZXRzU2VydmljZSBleHRlbmRzIEVmZmVjdC5TZXJ2aWNlPFNlY3JldHNTZXJ2aWNlPigpKFwiU2VjcmV0c1NlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBzZWNyZXRzID0geWllbGQqIFNlY3JldHNDb25maWdUYWc7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0aHlkcmF0ZVNlY3JldHM6IDxUPihjb25maWc6IFQpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zdCBwYXJzZVJlc3VsdCA9IGNvbmZpZ1NjaGVtYS5wYXJzZShjb25maWcpO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjb25maWdTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShwYXJzZVJlc3VsdCk7XG5cdFx0XHRcdFx0XHRsZXQgaHlkcmF0ZWRTdHJpbmcgPSBjb25maWdTdHJpbmc7XG5cblx0XHRcdFx0XHRcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNlY3JldHMpKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKGB7eyR7a2V5fX19YCwgXCJnXCIpO1xuXHRcdFx0XHRcdFx0XHRoeWRyYXRlZFN0cmluZyA9IGh5ZHJhdGVkU3RyaW5nLnJlcGxhY2UocGF0dGVybiwgU3RyaW5nKHZhbHVlKSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHJldHVybiBKU09OLnBhcnNlKGh5ZHJhdGVkU3RyaW5nKSBhcyBUO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4geWllbGQqIEVmZmVjdC5mYWlsKFxuXHRcdFx0XHRcdFx0XHRuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRvcGVyYXRpb246IFwiaHlkcmF0ZS1zZWNyZXRzXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6XG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSksXG5cdFx0XHRcdFx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0fTtcblx0fSksXG59KSB7IH1cbiIsImltcG9ydCB0eXBlIHsgSW5mZXJTY2hlbWFJbnB1dCwgSW5mZXJTY2hlbWFPdXRwdXQgfSBmcm9tIFwiQG9ycGMvY29udHJhY3RcIjtcbmltcG9ydCB7IENvbnRleHQsIEVmZmVjdCwgU2NvcGUgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFueVBsdWdpbixcblx0SW5pdGlhbGl6ZWRQbHVnaW4sXG5cdExvYWRlZFBsdWdpbixcblx0UGx1Z2luSW5zdGFuY2UsXG5cdFBsdWdpblJlZ2lzdHJ5XG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgUGx1Z2luUnVudGltZUVycm9yLCB0b1BsdWdpblJ1bnRpbWVFcnJvciB9IGZyb20gXCIuLi9lcnJvcnNcIjtcbmltcG9ydCB7IHZhbGlkYXRlIH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IE1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vbW9kdWxlLWZlZGVyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHsgU2VjcmV0c1NlcnZpY2UgfSBmcm9tIFwiLi9zZWNyZXRzLnNlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIFBsdWdpblJlZ2lzdHJ5VGFnIGV4dGVuZHMgQ29udGV4dC5UYWcoXCJQbHVnaW5SZWdpc3RyeVwiKTxcblx0UGx1Z2luUmVnaXN0cnlUYWcsXG5cdFBsdWdpblJlZ2lzdHJ5XG4+KCkgeyB9XG5cbmV4cG9ydCBjbGFzcyBSZWdpc3RyeVNlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuU2VydmljZTxSZWdpc3RyeVNlcnZpY2U+KCkoXCJSZWdpc3RyeVNlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCByZWdpc3RyeSA9IHlpZWxkKiBQbHVnaW5SZWdpc3RyeVRhZztcblxuXHRcdHJldHVybiB7XG5cdFx0XHRnZXQ6IChwbHVnaW5JZDogc3RyaW5nKSA9PlxuXHRcdFx0XHRFZmZlY3QuZnJvbU51bGxhYmxlKHJlZ2lzdHJ5W3BsdWdpbklkXSkucGlwZShcblx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKCkgPT5cblx0XHRcdFx0XHRcdG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLXBsdWdpbi1pZFwiLFxuXHRcdFx0XHRcdFx0XHRjYXVzZTogbmV3IEVycm9yKGBQbHVnaW4gJHtwbHVnaW5JZH0gbm90IGZvdW5kIGluIHJlZ2lzdHJ5YCksXG5cdFx0XHRcdFx0XHRcdHJldHJ5YWJsZTogZmFsc2UsXG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpLFxuXHRcdH07XG5cdH0pLFxufSkgeyB9XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5Mb2FkZXJTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UGx1Z2luTG9hZGVyU2VydmljZT4oKShcIlBsdWdpbkxvYWRlclNlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBtb2R1bGVGZWRlcmF0aW9uU2VydmljZSA9IHlpZWxkKiBNb2R1bGVGZWRlcmF0aW9uU2VydmljZTtcblx0XHRjb25zdCBzZWNyZXRzU2VydmljZSA9IHlpZWxkKiBTZWNyZXRzU2VydmljZTtcblx0XHRjb25zdCByZWdpc3RyeVNlcnZpY2UgPSB5aWVsZCogUmVnaXN0cnlTZXJ2aWNlO1xuXG5cdFx0Y29uc3QgcmVzb2x2ZVVybCA9IChiYXNlVXJsOiBzdHJpbmcsIHZlcnNpb24/OiBzdHJpbmcpOiBzdHJpbmcgPT5cblx0XHRcdHZlcnNpb24gJiYgdmVyc2lvbiAhPT0gXCJsYXRlc3RcIlxuXHRcdFx0XHQ/IGJhc2VVcmwucmVwbGFjZShcIkBsYXRlc3RcIiwgYEAke3ZlcnNpb259YClcblx0XHRcdFx0OiBiYXNlVXJsO1xuXG5cdFx0Y29uc3QgZ2V0TWV0YWRhdGEgPSAocGx1Z2luSWQ6IHN0cmluZykgPT4gcmVnaXN0cnlTZXJ2aWNlLmdldChwbHVnaW5JZCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bG9hZFBsdWdpbjogKHBsdWdpbklkOiBzdHJpbmcpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zdCBtZXRhZGF0YSA9IHlpZWxkKiBnZXRNZXRhZGF0YShwbHVnaW5JZCk7XG5cdFx0XHRcdFx0Y29uc3QgdXJsID0gcmVzb2x2ZVVybChtZXRhZGF0YS5yZW1vdGVVcmwpO1xuXG5cdFx0XHRcdFx0eWllbGQqIG1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlLnJlZ2lzdGVyUmVtb3RlKHBsdWdpbklkLCB1cmwpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKGVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHR0b1BsdWdpblJ1bnRpbWVFcnJvcihlcnJvci5jYXVzZSwgcGx1Z2luSWQsIHVuZGVmaW5lZCwgXCJyZWdpc3Rlci1yZW1vdGVcIiwgdHJ1ZSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHR5aWVsZCogRWZmZWN0LmxvZ0RlYnVnKFwiTG9hZGluZyBwbHVnaW5cIiwgeyBwbHVnaW5JZCwgdXJsIH0pO1xuXG5cdFx0XHRcdFx0Y29uc3QgY3RvciA9IHlpZWxkKiBtb2R1bGVGZWRlcmF0aW9uU2VydmljZS5sb2FkUmVtb3RlQ29uc3RydWN0b3IocGx1Z2luSWQsIHVybCkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigoZXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdHRvUGx1Z2luUnVudGltZUVycm9yKGVycm9yLmNhdXNlLCBwbHVnaW5JZCwgdW5kZWZpbmVkLCBcImxvYWQtcmVtb3RlXCIsIGZhbHNlKSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRjdG9yLFxuXHRcdFx0XHRcdFx0bWV0YWRhdGE6IG1ldGFkYXRhLFxuXHRcdFx0XHRcdH0gc2F0aXNmaWVzIExvYWRlZFBsdWdpbjtcblx0XHRcdFx0fSksXG5cblx0XHRcdGluc3RhbnRpYXRlUGx1Z2luOiA8VCBleHRlbmRzIEFueVBsdWdpbj4oXG5cdFx0XHRcdHBsdWdpbklkOiBzdHJpbmcsXG5cdFx0XHRcdGxvYWRlZFBsdWdpbjogTG9hZGVkUGx1Z2luPFQ+LFxuXHRcdFx0KSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW5zdGFuY2UgPSB5aWVsZCogRWZmZWN0LnRyeSgoKSA9PiBuZXcgbG9hZGVkUGx1Z2luLmN0b3IoKSkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigoZXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdHRvUGx1Z2luUnVudGltZUVycm9yKFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yLFxuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkLFxuXHRcdFx0XHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdFx0XHRcImluc3RhbnRpYXRlLXBsdWdpblwiLFxuXHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0KGluc3RhbmNlLmlkIGFzIHN0cmluZykgPSBwbHVnaW5JZDtcblxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRwbHVnaW46IGluc3RhbmNlLFxuXHRcdFx0XHRcdFx0bWV0YWRhdGE6IGxvYWRlZFBsdWdpbi5tZXRhZGF0YSxcblx0XHRcdFx0XHR9IHNhdGlzZmllcyBQbHVnaW5JbnN0YW5jZTxUPjtcblx0XHRcdFx0fSksXG5cblx0XHRcdGluaXRpYWxpemVQbHVnaW46IDxUIGV4dGVuZHMgQW55UGx1Z2luPihcblx0XHRcdFx0cGx1Z2luSW5zdGFuY2U6IFBsdWdpbkluc3RhbmNlPFQ+LFxuXHRcdFx0XHRjb25maWc6IHsgdmFyaWFibGVzOiBJbmZlclNjaGVtYUlucHV0PFRbXCJjb25maWdTY2hlbWFcIl1bXCJ2YXJpYWJsZXNcIl0+OyBzZWNyZXRzOiBJbmZlclNjaGVtYUlucHV0PFRbXCJjb25maWdTY2hlbWFcIl1bXCJzZWNyZXRzXCJdPiB9LFxuXHRcdFx0KSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgeyBwbHVnaW4gfSA9IHBsdWdpbkluc3RhbmNlO1xuXG5cdFx0XHRcdFx0Ly8gVmFsaWRhdGUgYW5kIGh5ZHJhdGUgY29uZmlnXG5cdFx0XHRcdFx0Y29uc3QgdmFsaWRhdGVkVmFyaWFibGVzID0geWllbGQqIHZhbGlkYXRlKFxuXHRcdFx0XHRcdFx0cGx1Z2luLmNvbmZpZ1NjaGVtYS52YXJpYWJsZXMgYXMgei5ab2RTY2hlbWE8SW5mZXJTY2hlbWFPdXRwdXQ8VFtcImNvbmZpZ1NjaGVtYVwiXVtcInZhcmlhYmxlc1wiXT4+LFxuXHRcdFx0XHRcdFx0Y29uZmlnLnZhcmlhYmxlcyxcblx0XHRcdFx0XHRcdHBsdWdpbi5pZCxcblx0XHRcdFx0XHRcdFwiY29uZmlnXCIsXG5cdFx0XHRcdFx0KS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKCh2YWxpZGF0aW9uRXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkOiBwbHVnaW4uaWQsXG5cdFx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLWNvbmZpZ1wiLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOiB2YWxpZGF0aW9uRXJyb3Iuem9kRXJyb3IsXG5cdFx0XHRcdFx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHQvLyBWYWxpZGF0ZSBzZWNyZXRzXG5cdFx0XHRcdFx0Y29uc3QgdmFsaWRhdGVkU2VjcmV0cyA9IHlpZWxkKiB2YWxpZGF0ZShcblx0XHRcdFx0XHRcdHBsdWdpbi5jb25maWdTY2hlbWEuc2VjcmV0cyBhcyB6LlpvZFNjaGVtYTxJbmZlclNjaGVtYU91dHB1dDxUW1wiY29uZmlnU2NoZW1hXCJdW1wic2VjcmV0c1wiXT4+LFxuXHRcdFx0XHRcdFx0Y29uZmlnLnNlY3JldHMsXG5cdFx0XHRcdFx0XHRwbHVnaW4uaWQsXG5cdFx0XHRcdFx0XHRcImNvbmZpZ1wiLFxuXHRcdFx0XHRcdCkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigodmFsaWRhdGlvbkVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHRuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZDogcGx1Z2luLmlkLFxuXHRcdFx0XHRcdFx0XHRcdG9wZXJhdGlvbjogXCJ2YWxpZGF0ZS1zZWNyZXRzXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6IHZhbGlkYXRpb25FcnJvci56b2RFcnJvcixcblx0XHRcdFx0XHRcdFx0XHRyZXRyeWFibGU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIEh5ZHJhdGUgc2VjcmV0cyBpbiB2YXJpYWJsZXNcblx0XHRcdFx0XHRjb25zdCBoeWRyYXRlZENvbmZpZyA9IHlpZWxkKiBzZWNyZXRzU2VydmljZS5oeWRyYXRlU2VjcmV0cyh7XG5cdFx0XHRcdFx0XHR2YXJpYWJsZXM6IHZhbGlkYXRlZFZhcmlhYmxlcyxcblx0XHRcdFx0XHRcdHNlY3JldHM6IHZhbGlkYXRlZFNlY3JldHMsXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRjb25zdCBfdmFyaWFibGVzID0geWllbGQqIHZhbGlkYXRlKFxuXHRcdFx0XHRcdFx0cGx1Z2luLmNvbmZpZ1NjaGVtYS52YXJpYWJsZXMgYXMgei5ab2RTY2hlbWE8SW5mZXJTY2hlbWFPdXRwdXQ8VFtcImNvbmZpZ1NjaGVtYVwiXVtcInZhcmlhYmxlc1wiXT4+LFxuXHRcdFx0XHRcdFx0aHlkcmF0ZWRDb25maWcudmFyaWFibGVzLFxuXHRcdFx0XHRcdFx0cGx1Z2luLmlkLFxuXHRcdFx0XHRcdFx0XCJjb25maWdcIixcblx0XHRcdFx0XHQpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKHZhbGlkYXRpb25FcnJvcikgPT5cblx0XHRcdFx0XHRcdFx0bmV3IFBsdWdpblJ1bnRpbWVFcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQ6IHBsdWdpbi5pZCxcblx0XHRcdFx0XHRcdFx0XHRvcGVyYXRpb246IFwidmFsaWRhdGUtaHlkcmF0ZWQtY29uZmlnXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6IHZhbGlkYXRpb25FcnJvci56b2RFcnJvcixcblx0XHRcdFx0XHRcdFx0XHRyZXRyeWFibGU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhIGxvbmctbGl2ZWQgc2NvcGUgZm9yIHRoaXMgcGx1Z2luIGluc3RhbmNlXG5cdFx0XHRcdFx0Y29uc3Qgc2NvcGUgPSB5aWVsZCogU2NvcGUubWFrZSgpO1xuXG5cdFx0XHRcdFx0Ly8gSW5pdGlhbGl6ZSBwbHVnaW4gd2l0aGluIHRoZSBzY29wZVxuXHRcdFx0XHRcdGNvbnN0IGNvbnRleHQgPSB5aWVsZCogcGx1Z2luLmluaXRpYWxpemUoeyB2YXJpYWJsZXM6IF92YXJpYWJsZXMsIHNlY3JldHM6IGh5ZHJhdGVkQ29uZmlnLnNlY3JldHMgfSkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5wcm92aWRlU2VydmljZShTY29wZS5TY29wZSwgc2NvcGUpLFxuXHRcdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKChlcnJvcikgPT5cblx0XHRcdFx0XHRcdFx0dG9QbHVnaW5SdW50aW1lRXJyb3IoZXJyb3IsIHBsdWdpbi5pZCwgdW5kZWZpbmVkLCBcImluaXRpYWxpemUtcGx1Z2luXCIsIGZhbHNlKSxcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdHBsdWdpbixcblx0XHRcdFx0XHRcdG1ldGFkYXRhOiBwbHVnaW5JbnN0YW5jZS5tZXRhZGF0YSxcblx0XHRcdFx0XHRcdGNvbmZpZzogeyB2YXJpYWJsZXM6IF92YXJpYWJsZXMsIHNlY3JldHM6IGh5ZHJhdGVkQ29uZmlnLnNlY3JldHMgfSxcblx0XHRcdFx0XHRcdGNvbnRleHQsXG5cdFx0XHRcdFx0XHRzY29wZSxcblx0XHRcdFx0XHR9IHNhdGlzZmllcyBJbml0aWFsaXplZFBsdWdpbjxUPjtcblx0XHRcdFx0fSksXG5cdFx0fTtcblx0fSksXG59KSB7XG59XG4iLCJpbXBvcnQgeyBFZmZlY3QsIEV4aXQsIExheWVyLCBTY29wZSB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHtcblx0QW55UGx1Z2luLFxuXHRJbml0aWFsaXplZFBsdWdpbixcblx0UGx1Z2luUmVnaXN0cnksXG5cdFNlY3JldHNDb25maWdcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBNb2R1bGVGZWRlcmF0aW9uU2VydmljZSB9IGZyb20gXCIuL21vZHVsZS1mZWRlcmF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IFBsdWdpbkxpZmVjeWNsZVNlcnZpY2UgfSBmcm9tIFwiLi9wbHVnaW4tbGlmZWN5Y2xlLnNlcnZpY2VcIjtcbmltcG9ydCB7IFBsdWdpbkxvYWRlclNlcnZpY2UsIFBsdWdpblJlZ2lzdHJ5VGFnLCBSZWdpc3RyeVNlcnZpY2UgfSBmcm9tIFwiLi9wbHVnaW4tbG9hZGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IFNlY3JldHNDb25maWdUYWcsIFNlY3JldHNTZXJ2aWNlIH0gZnJvbSBcIi4vc2VjcmV0cy5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5TZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UGx1Z2luU2VydmljZT4oKShcIlBsdWdpblNlcnZpY2VcIiwge1xuXHRzY29wZWQ6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBsb2FkZXIgPSB5aWVsZCogUGx1Z2luTG9hZGVyU2VydmljZTtcblx0XHRjb25zdCBsaWZlY3ljbGUgPSB5aWVsZCogUGx1Z2luTGlmZWN5Y2xlU2VydmljZTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRsb2FkUGx1Z2luOiBsb2FkZXIubG9hZFBsdWdpbixcblx0XHRcdGluc3RhbnRpYXRlUGx1Z2luOiBsb2FkZXIuaW5zdGFudGlhdGVQbHVnaW4sXG5cdFx0XHRpbml0aWFsaXplUGx1Z2luOiBsb2FkZXIuaW5pdGlhbGl6ZVBsdWdpbixcblx0XHRcdHNodXRkb3duUGx1Z2luOiAocGx1Z2luOiBJbml0aWFsaXplZFBsdWdpbjxBbnlQbHVnaW4+KSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Ly8gU2h1dGRvd24gdGhlIHBsdWdpbiBmaXJzdCAoZ3JhY2VmdWwgY2xlYW51cClcblx0XHRcdFx0XHR5aWVsZCogcGx1Z2luLnBsdWdpbi5zaHV0ZG93bigpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QuY2F0Y2hBbGwoKCkgPT4gRWZmZWN0LnZvaWQpXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIENsb3NlIHRoZSBwbHVnaW4gc2NvcGUgdG8gaW50ZXJydXB0IGZpYmVycyBhbmQgcmVsZWFzZSByZXNvdXJjZXNcblx0XHRcdFx0XHR5aWVsZCogU2NvcGUuY2xvc2UocGx1Z2luLnNjb3BlLCBFeGl0LnN1Y2NlZWQodW5kZWZpbmVkKSk7XG5cblx0XHRcdFx0XHQvLyBVbnJlZ2lzdGVyIGZyb20gbGlmZWN5Y2xlIHRyYWNraW5nXG5cdFx0XHRcdFx0eWllbGQqIGxpZmVjeWNsZS51bnJlZ2lzdGVyKHBsdWdpbik7XG5cdFx0XHRcdH0pLFxuXHRcdFx0Y2xlYW51cDogbGlmZWN5Y2xlLmNsZWFudXAsXG5cdFx0fTtcblx0fSksXG59KSB7XG5cdHN0YXRpYyBMaXZlID0gKHJlZ2lzdHJ5OiBQbHVnaW5SZWdpc3RyeSwgc2VjcmV0czogU2VjcmV0c0NvbmZpZykgPT4ge1xuXHRcdGNvbnN0IGNvbnRleHRMYXllciA9IExheWVyLm1lcmdlQWxsKFxuXHRcdFx0TGF5ZXIuc3VjY2VlZChQbHVnaW5SZWdpc3RyeVRhZywgcmVnaXN0cnkpLFxuXHRcdFx0TGF5ZXIuc3VjY2VlZChTZWNyZXRzQ29uZmlnVGFnLCBzZWNyZXRzKSxcblx0XHQpO1xuXG5cdFx0Y29uc3Qgc2VydmljZXNMYXllciA9IExheWVyLm1lcmdlQWxsKFxuXHRcdFx0TW9kdWxlRmVkZXJhdGlvblNlcnZpY2UuRGVmYXVsdCxcblx0XHRcdFNlY3JldHNTZXJ2aWNlLkRlZmF1bHQsXG5cdFx0XHRSZWdpc3RyeVNlcnZpY2UuRGVmYXVsdCxcblx0XHRcdFBsdWdpbkxpZmVjeWNsZVNlcnZpY2UuRGVmYXVsdCxcblx0XHQpLnBpcGUoXG5cdFx0XHRMYXllci5wcm92aWRlKGNvbnRleHRMYXllcilcblx0XHQpO1xuXG5cdFx0cmV0dXJuIFBsdWdpblNlcnZpY2UuRGVmYXVsdC5waXBlKFxuXHRcdFx0TGF5ZXIucHJvdmlkZShQbHVnaW5Mb2FkZXJTZXJ2aWNlLkRlZmF1bHQpLFxuXHRcdFx0TGF5ZXIucHJvdmlkZShzZXJ2aWNlc0xheWVyKVxuXHRcdCk7XG5cdH1cbn1cbiIsImltcG9ydCB7IGNyZWF0ZVJvdXRlckNsaWVudCB9IGZyb20gXCJAb3JwYy9zZXJ2ZXJcIjtcbmltcG9ydCB7IENhdXNlLCBFZmZlY3QsIEV4aXQsIEhhc2gsIE1hbmFnZWRSdW50aW1lLCBPcHRpb24gfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFueVBsdWdpbixcblx0SW5pdGlhbGl6ZWRQbHVnaW4sXG5cdExvYWRlZFBsdWdpbixcblx0UGx1Z2luQ2xpZW50VHlwZSxcblx0UGx1Z2luQ29uZmlnSW5wdXQsXG5cdFBsdWdpbkluc3RhbmNlLFxuXHRQbHVnaW5SZWdpc3RyeSxcblx0UGx1Z2luUm91dGVyVHlwZSxcblx0UGx1Z2luUnVudGltZUNvbmZpZyxcblx0UmVnaXN0ZXJlZFBsdWdpbixcblx0UmVnaXN0ZXJlZFBsdWdpbnMsXG5cdFVzZVBsdWdpblJlc3VsdFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IFBsdWdpblJ1bnRpbWVFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgUGx1Z2luU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL3BsdWdpbi5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5SdW50aW1lPFIgZXh0ZW5kcyBSZWdpc3RlcmVkUGx1Z2lucyA9IFJlZ2lzdGVyZWRQbHVnaW5zPiB7XG5cdHByaXZhdGUgcGx1Z2luQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgRWZmZWN0LkVmZmVjdDxJbml0aWFsaXplZFBsdWdpbjxBbnlQbHVnaW4+LCBQbHVnaW5SdW50aW1lRXJyb3I+PigpO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgcnVudGltZTogTWFuYWdlZFJ1bnRpbWUuTWFuYWdlZFJ1bnRpbWU8UGx1Z2luU2VydmljZSwgbmV2ZXI+LFxuXHRcdHByaXZhdGUgcmVnaXN0cnk6IFBsdWdpblJlZ2lzdHJ5XG5cdCkgeyB9XG5cblx0cHJpdmF0ZSBnZW5lcmF0ZUNhY2hlS2V5KHBsdWdpbklkOiBzdHJpbmcsIGNvbmZpZzogdW5rbm93bik6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29uZmlnSGFzaCA9IEhhc2guc3RydWN0dXJlKGNvbmZpZyBhcyBvYmplY3QpLnRvU3RyaW5nKCk7XG5cdFx0cmV0dXJuIGAke3BsdWdpbklkfToke2NvbmZpZ0hhc2h9YDtcblx0fVxuXG5cdHByaXZhdGUgdmFsaWRhdGVQbHVnaW5JZChcblx0XHRwbHVnaW5JZDogc3RyaW5nXG5cdCk6IEVmZmVjdC5FZmZlY3Q8c3RyaW5nLCBQbHVnaW5SdW50aW1lRXJyb3I+IHtcblx0XHRpZiAoIShwbHVnaW5JZCBpbiB0aGlzLnJlZ2lzdHJ5KSkge1xuXHRcdFx0cmV0dXJuIEVmZmVjdC5mYWlsKG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRwbHVnaW5JZDogU3RyaW5nKHBsdWdpbklkKSxcblx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLXBsdWdpbi1pZFwiLFxuXHRcdFx0XHRjYXVzZTogbmV3IEVycm9yKGBQbHVnaW4gSUQgJyR7U3RyaW5nKHBsdWdpbklkKX0nIG5vdCBmb3VuZCBpbiByZWdpc3RyeS5gKSxcblx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdH0pKTtcblx0XHR9XG5cdFx0cmV0dXJuIEVmZmVjdC5zdWNjZWVkKFN0cmluZyhwbHVnaW5JZCkpO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBydW5Qcm9taXNlPEEsIEU+KFxuXHRcdGVmZmVjdDogRWZmZWN0LkVmZmVjdDxBLCBFLCBQbHVnaW5TZXJ2aWNlPlxuXHQpOiBQcm9taXNlPEE+IHtcblx0XHRjb25zdCBleGl0ID0gYXdhaXQgdGhpcy5ydW50aW1lLnJ1blByb21pc2VFeGl0KGVmZmVjdCk7XG5cblx0XHRpZiAoRXhpdC5pc0ZhaWx1cmUoZXhpdCkpIHtcblx0XHRcdGNvbnN0IGVycm9yID0gQ2F1c2UuZmFpbHVyZU9wdGlvbihleGl0LmNhdXNlKTtcblx0XHRcdGlmIChPcHRpb24uaXNTb21lKGVycm9yKSkge1xuXHRcdFx0XHR0aHJvdyBlcnJvci52YWx1ZTtcblx0XHRcdH1cblx0XHRcdHRocm93IENhdXNlLnNxdWFzaChleGl0LmNhdXNlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXhpdC52YWx1ZTtcblx0fVxuXG5cdGFzeW5jIHVzZVBsdWdpbjxLIGV4dGVuZHMga2V5b2YgUmVnaXN0ZXJlZFBsdWdpbnMgJiBzdHJpbmc+KFxuXHRcdHBsdWdpbklkOiBLLFxuXHRcdGNvbmZpZzogUGx1Z2luQ29uZmlnSW5wdXQ8UltLXT5cblx0KTogUHJvbWlzZTxVc2VQbHVnaW5SZXN1bHQ8Sz4+IHtcblx0XHRjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShwbHVnaW5JZCwgY29uZmlnKTtcblxuXHRcdGxldCBjYWNoZWRQbHVnaW4gPSB0aGlzLnBsdWdpbkNhY2hlLmdldChjYWNoZUtleSk7XG5cdFx0aWYgKCFjYWNoZWRQbHVnaW4pIHtcblx0XHRcdGNvbnN0IG9wZXJhdGlvbiA9IEVmZmVjdC5nZW4odGhpcywgZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0Y29uc3QgcGx1Z2luU2VydmljZSA9IHlpZWxkKiBQbHVnaW5TZXJ2aWNlO1xuXHRcdFx0XHRjb25zdCB2YWxpZGF0ZWRJZCA9IHlpZWxkKiB0aGlzLnZhbGlkYXRlUGx1Z2luSWQocGx1Z2luSWQpO1xuXG5cdFx0XHRcdC8vIExvYWQg4oaSIEluc3RhbnRpYXRlIOKGkiBJbml0aWFsaXplXG5cdFx0XHRcdGNvbnN0IGN0b3IgPSB5aWVsZCogcGx1Z2luU2VydmljZS5sb2FkUGx1Z2luKHZhbGlkYXRlZElkKTtcblx0XHRcdFx0Y29uc3QgaW5zdGFuY2UgPSB5aWVsZCogcGx1Z2luU2VydmljZS5pbnN0YW50aWF0ZVBsdWdpbihwbHVnaW5JZCwgY3Rvcik7XG5cdFx0XHRcdGNvbnN0IGluaXRpYWxpemVkID0geWllbGQqIHBsdWdpblNlcnZpY2UuaW5pdGlhbGl6ZVBsdWdpbihpbnN0YW5jZSwgY29uZmlnKTtcblxuXHRcdFx0XHRyZXR1cm4gaW5pdGlhbGl6ZWQ7XG5cdFx0XHR9KS5waXBlKEVmZmVjdC5wcm92aWRlKHRoaXMucnVudGltZSkpO1xuXG5cdFx0XHRjYWNoZWRQbHVnaW4gPSBFZmZlY3QuY2FjaGVkKG9wZXJhdGlvbikucGlwZShFZmZlY3QuZmxhdHRlbik7XG5cdFx0XHR0aGlzLnBsdWdpbkNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVkUGx1Z2luKTtcblx0XHR9XG5cblx0XHRjb25zdCBpbml0aWFsaXplZCA9IGF3YWl0IHRoaXMucnVuUHJvbWlzZShjYWNoZWRQbHVnaW4pO1xuXHRcdGNvbnN0IHJvdXRlciA9IGluaXRpYWxpemVkLnBsdWdpbi5jcmVhdGVSb3V0ZXIoaW5pdGlhbGl6ZWQuY29udGV4dCk7XG5cdFx0Y29uc3QgY2xpZW50ID0gY3JlYXRlUm91dGVyQ2xpZW50KHJvdXRlcik7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0cm91dGVyOiByb3V0ZXIgYXMgUGx1Z2luUm91dGVyVHlwZTxSW0tdPixcblx0XHRcdGNsaWVudDogY2xpZW50IGFzIFBsdWdpbkNsaWVudFR5cGU8UltLXT4sXG5cdFx0XHRtZXRhZGF0YTogaW5pdGlhbGl6ZWQubWV0YWRhdGEsXG5cdFx0XHRpbml0aWFsaXplZDogaW5pdGlhbGl6ZWQgYXMgSW5pdGlhbGl6ZWRQbHVnaW48UmVnaXN0ZXJlZFBsdWdpbjxLPj5cblx0XHR9IGFzIFVzZVBsdWdpblJlc3VsdDxLPjtcblx0fVxuXG5cdGFzeW5jIGxvYWRQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogS1xuXHQpOiBQcm9taXNlPExvYWRlZFBsdWdpbjxSZWdpc3RlcmVkUGx1Z2luPEs+Pj4ge1xuXHRcdGNvbnN0IGVmZmVjdCA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdGNvbnN0IHBsdWdpblNlcnZpY2UgPSB5aWVsZCogUGx1Z2luU2VydmljZTtcblx0XHRcdHJldHVybiB5aWVsZCogcGx1Z2luU2VydmljZS5sb2FkUGx1Z2luKHBsdWdpbklkKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gdGhpcy5ydW5Qcm9taXNlKGVmZmVjdCkgYXMgUHJvbWlzZTxMb2FkZWRQbHVnaW48UmVnaXN0ZXJlZFBsdWdpbjxLPj4+O1xuXHR9XG5cblx0YXN5bmMgaW5zdGFudGlhdGVQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogSyxcblx0XHRsb2FkZWRQbHVnaW46IExvYWRlZFBsdWdpbjxSZWdpc3RlcmVkUGx1Z2luPEs+PlxuXHQpOiBQcm9taXNlPFBsdWdpbkluc3RhbmNlPFJlZ2lzdGVyZWRQbHVnaW48Sz4+PiB7XG5cdFx0Y29uc3QgZWZmZWN0ID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0Y29uc3QgcGx1Z2luU2VydmljZSA9IHlpZWxkKiBQbHVnaW5TZXJ2aWNlO1xuXHRcdFx0cmV0dXJuIHlpZWxkKiBwbHVnaW5TZXJ2aWNlLmluc3RhbnRpYXRlUGx1Z2luKHBsdWdpbklkLCBsb2FkZWRQbHVnaW4pO1xuXHRcdH0pO1xuXHRcdHJldHVybiB0aGlzLnJ1blByb21pc2UoZWZmZWN0KSBhcyBQcm9taXNlPFBsdWdpbkluc3RhbmNlPFJlZ2lzdGVyZWRQbHVnaW48Sz4+Pjtcblx0fVxuXG5cdGFzeW5jIGluaXRpYWxpemVQbHVnaW48VCBleHRlbmRzIEFueVBsdWdpbj4oXG5cdFx0aW5zdGFuY2U6IFBsdWdpbkluc3RhbmNlPFQ+LFxuXHRcdGNvbmZpZzogYW55XG5cdCk6IFByb21pc2U8SW5pdGlhbGl6ZWRQbHVnaW48VD4+IHtcblx0XHRjb25zdCBlZmZlY3QgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRjb25zdCBwbHVnaW5TZXJ2aWNlID0geWllbGQqIFBsdWdpblNlcnZpY2U7XG5cdFx0XHRyZXR1cm4geWllbGQqIHBsdWdpblNlcnZpY2UuaW5pdGlhbGl6ZVBsdWdpbihpbnN0YW5jZSwgY29uZmlnKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gdGhpcy5ydW5Qcm9taXNlKGVmZmVjdCk7XG5cdH1cblxuXHRhc3luYyBzaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBlZmZlY3QgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRjb25zdCBwbHVnaW5TZXJ2aWNlID0geWllbGQqIFBsdWdpblNlcnZpY2U7XG5cdFx0XHR5aWVsZCogcGx1Z2luU2VydmljZS5jbGVhbnVwKCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMucnVuUHJvbWlzZShlZmZlY3QpO1xuXHR9XG5cblx0YXN5bmMgZXZpY3RQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogSyxcblx0XHRjb25maWc6IFBsdWdpbkNvbmZpZ0lucHV0PFJlZ2lzdGVyZWRQbHVnaW5zW0tdPlxuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShwbHVnaW5JZCwgY29uZmlnKTtcblxuXHRcdGNvbnN0IGVmZmVjdCA9IEVmZmVjdC5nZW4odGhpcywgZnVuY3Rpb24qICgpIHtcblx0XHRcdGNvbnN0IHBsdWdpblNlcnZpY2UgPSB5aWVsZCogUGx1Z2luU2VydmljZTtcblx0XHRcdGNvbnN0IGNhY2hlZFBsdWdpbiA9IHRoaXMucGx1Z2luQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcblxuXHRcdFx0aWYgKGNhY2hlZFBsdWdpbikge1xuXHRcdFx0XHR0aGlzLnBsdWdpbkNhY2hlLmRlbGV0ZShjYWNoZUtleSk7XG5cblx0XHRcdFx0Y29uc3QgcGx1Z2luUmVzdWx0ID0geWllbGQqIGNhY2hlZFBsdWdpbi5waXBlKFxuXHRcdFx0XHRcdEVmZmVjdC5jYXRjaEFsbCgoKSA9PiBFZmZlY3Quc3VjY2VlZChudWxsKSlcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRpZiAocGx1Z2luUmVzdWx0KSB7XG5cdFx0XHRcdFx0eWllbGQqIHBsdWdpblNlcnZpY2Uuc2h1dGRvd25QbHVnaW4ocGx1Z2luUmVzdWx0KS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0LmNhdGNoQWxsKCgpID0+IEVmZmVjdC52b2lkKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KS5waXBlKEVmZmVjdC5jYXRjaEFsbCgoKSA9PiBFZmZlY3Qudm9pZCkpO1xuXG5cdFx0cmV0dXJuIHRoaXMucnVuUHJvbWlzZShlZmZlY3QpO1xuXHR9XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHJlbW90ZSBVUkwgdG8gZW5zdXJlIGl0IHBvaW50cyB0byByZW1vdGVFbnRyeS5qc1xuICogSWYgdGhlIFVSTCBkb2Vzbid0IGVuZCB3aXRoIGEgZmlsZSBleHRlbnNpb24sIGFwcGVuZHMgL3JlbW90ZUVudHJ5LmpzXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlbW90ZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG5cdGlmICh1cmwuZW5kc1dpdGgoJy5qcycpKSByZXR1cm4gdXJsOyAvLyBBbHJlYWR5IGEgZmlsZVxuXHRyZXR1cm4gYCR7dXJsLmVuZHNXaXRoKCcvJykgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsfS9yZW1vdGVFbnRyeS5qc2A7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQbHVnaW5SdW50aW1lKFxuXHRjb25maWc6IFBsdWdpblJ1bnRpbWVDb25maWdcbik6IFBsdWdpblJ1bnRpbWUge1xuXHRjb25zdCBzZWNyZXRzID0gY29uZmlnLnNlY3JldHMgfHwge307XG5cblx0Ly8gTm9ybWFsaXplIGFsbCByZW1vdGUgVVJMcyBpbiB0aGUgcmVnaXN0cnlcblx0Y29uc3Qgbm9ybWFsaXplZFJlZ2lzdHJ5ID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuXHRcdE9iamVjdC5lbnRyaWVzKGNvbmZpZy5yZWdpc3RyeSkubWFwKChbcGx1Z2luSWQsIGVudHJ5XSkgPT4gW1xuXHRcdFx0cGx1Z2luSWQsXG5cdFx0XHR7XG5cdFx0XHRcdC4uLmVudHJ5LFxuXHRcdFx0XHRyZW1vdGVVcmw6IG5vcm1hbGl6ZVJlbW90ZVVybChlbnRyeS5yZW1vdGVVcmwpXG5cdFx0XHR9XG5cdFx0XSlcblx0KSBhcyBQbHVnaW5SZWdpc3RyeTtcblxuXHRjb25zdCBsYXllciA9IFBsdWdpblNlcnZpY2UuTGl2ZShub3JtYWxpemVkUmVnaXN0cnksIHNlY3JldHMpO1xuXHRjb25zdCBydW50aW1lID0gTWFuYWdlZFJ1bnRpbWUubWFrZShsYXllcik7XG5cblx0cmV0dXJuIG5ldyBQbHVnaW5SdW50aW1lKHJ1bnRpbWUsIG5vcm1hbGl6ZWRSZWdpc3RyeSk7XG59Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFJQSxJQUFhLHFCQUFiLGNBQXdDLEtBQUssWUFBWSxxQkFBcUIsQ0FNM0U7QUFFSCxJQUFhLHdCQUFiLGNBQTJDLEtBQUssWUFDL0Msd0JBQ0EsQ0FJRTtBQUVILElBQWEsa0JBQWIsY0FBcUMsS0FBSyxZQUFZLGtCQUFrQixDQUlyRTtBQUdILE1BQWEsdUJBQXVCLFNBQTBCO0FBQzdELFNBQVEsTUFBUjtFQUNDLEtBQUs7RUFDTCxLQUFLO0VBQ0wsS0FBSztFQUNMLEtBQUs7RUFDTCxLQUFLLFVBQ0osUUFBTztFQUNSLFFBQ0MsUUFBTzs7O0FBS1YsTUFBYSxpQkFDWixXQUNBLFVBQ0EsZUFDQSxjQUN3QjtBQUN4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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-zltIcp7o.cjs');
|
|
2
2
|
const require_normalize = require('./normalize-D4Qh0wVk.cjs');
|
|
3
|
-
const require_package$1 = require('./package-
|
|
3
|
+
const require_package$1 = require('./package-CMoV9xVN.cjs');
|
|
4
4
|
let effect = require("effect");
|
|
5
5
|
let zod = require("zod");
|
|
6
6
|
let __orpc_server = require("@orpc/server");
|
|
@@ -520,4 +520,4 @@ Object.defineProperty(exports, 'createPluginRuntime', {
|
|
|
520
520
|
return createPluginRuntime;
|
|
521
521
|
}
|
|
522
522
|
});
|
|
523
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1Da3B3MHlBYy5janMiLCJuYW1lcyI6WyJEYXRhIiwiT1JQQ0Vycm9yIiwiRWZmZWN0IiwicGtnIiwiZXJyb3IiLCJnZXROb3JtYWxpemVkUmVtb3RlTmFtZSIsIkVmZmVjdCIsIlJlZiIsIkVmZmVjdCIsInoiLCJDb250ZXh0IiwiRWZmZWN0IiwiQ29udGV4dCIsIkVmZmVjdCIsIlNjb3BlIiwiRWZmZWN0IiwiU2NvcGUiLCJFeGl0IiwiTGF5ZXIiLCJydW50aW1lOiBNYW5hZ2VkUnVudGltZS5NYW5hZ2VkUnVudGltZTxQbHVnaW5TZXJ2aWNlLCBuZXZlcj4iLCJyZWdpc3RyeTogUGx1Z2luUmVnaXN0cnkiLCJIYXNoIiwiRWZmZWN0IiwiZWZmZWN0IiwiRXhpdCIsIkNhdXNlIiwiT3B0aW9uIiwiTWFuYWdlZFJ1bnRpbWUiXSwic291cmNlcyI6WyIuLi9zcmMvcnVudGltZS9lcnJvcnMudHMiLCIuLi9zcmMvcnVudGltZS9zZXJ2aWNlcy9tb2R1bGUtZmVkZXJhdGlvbi5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvcGx1Z2luLWxpZmVjeWNsZS5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9ydW50aW1lL3NlcnZpY2VzL3NlY3JldHMuc2VydmljZS50cyIsIi4uL3NyYy9ydW50aW1lL3NlcnZpY2VzL3BsdWdpbi1sb2FkZXIuc2VydmljZS50cyIsIi4uL3NyYy9ydW50aW1lL3NlcnZpY2VzL3BsdWdpbi5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT1JQQ0Vycm9yIH0gZnJvbSBcIkBvcnBjL2NvbnRyYWN0XCI7XG5pbXBvcnQgeyBEYXRhIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5leHBvcnQgY2xhc3MgUGx1Z2luUnVudGltZUVycm9yIGV4dGVuZHMgRGF0YS5UYWdnZWRFcnJvcihcIlBsdWdpblJ1bnRpbWVFcnJvclwiKTx7XG5cdHJlYWRvbmx5IHBsdWdpbklkPzogc3RyaW5nO1xuXHRyZWFkb25seSBvcGVyYXRpb24/OiBzdHJpbmc7XG5cdHJlYWRvbmx5IHByb2NlZHVyZU5hbWU/OiBzdHJpbmc7XG5cdHJlYWRvbmx5IGNhdXNlPzogRXJyb3I7XG5cdHJlYWRvbmx5IHJldHJ5YWJsZTogYm9vbGVhbjtcbn0+IHsgfVxuXG5leHBvcnQgY2xhc3MgTW9kdWxlRmVkZXJhdGlvbkVycm9yIGV4dGVuZHMgRGF0YS5UYWdnZWRFcnJvcihcblx0XCJNb2R1bGVGZWRlcmF0aW9uRXJyb3JcIixcbik8e1xuXHRyZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xuXHRyZWFkb25seSByZW1vdGVVcmw6IHN0cmluZztcblx0cmVhZG9ubHkgY2F1c2U/OiBFcnJvcjtcbn0+IHsgfVxuXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRGF0YS5UYWdnZWRFcnJvcihcIlZhbGlkYXRpb25FcnJvclwiKTx7XG5cdHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHN0YWdlOiBcImNvbmZpZ1wiIHwgXCJpbnB1dFwiIHwgXCJvdXRwdXRcIiB8IFwic3RhdGVcIjtcblx0cmVhZG9ubHkgem9kRXJyb3I6IHouWm9kRXJyb3I7XG59PiB7IH1cblxuLy8gSGVscGVyIHRvIGRldGVybWluZSBpZiBhbiBvUlBDIGVycm9yIGNvZGUgaXMgcmV0cnlhYmxlXG5leHBvcnQgY29uc3QgaXNSZXRyeWFibGVPUlBDQ29kZSA9IChjb2RlOiBzdHJpbmcpOiBib29sZWFuID0+IHtcblx0c3dpdGNoIChjb2RlKSB7XG5cdFx0Y2FzZSAnVE9PX01BTllfUkVRVUVTVFMnOlxuXHRcdGNhc2UgJ1NFUlZJQ0VfVU5BVkFJTEFCTEUnOlxuXHRcdGNhc2UgJ0JBRF9HQVRFV0FZJzpcblx0XHRjYXNlICdHQVRFV0FZX1RJTUVPVVQnOlxuXHRcdGNhc2UgJ1RJTUVPVVQnOlxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBmYWxzZTtcblx0fVxufTtcblxuLy8gQ29udmVydCBPUlBDIGVycm9ycyBmcm9tIHBsdWdpbiBwcm9jZWR1cmVzIHRvIFBsdWdpblJ1bnRpbWVFcnJvclxuZXhwb3J0IGNvbnN0IHdyYXBPUlBDRXJyb3IgPSAoXG5cdG9ycGNFcnJvcjogT1JQQ0Vycm9yPHN0cmluZywgdW5rbm93bj4sXG5cdHBsdWdpbklkPzogc3RyaW5nLFxuXHRwcm9jZWR1cmVOYW1lPzogc3RyaW5nLFxuXHRvcGVyYXRpb24/OiBzdHJpbmdcbik6IFBsdWdpblJ1bnRpbWVFcnJvciA9PiB7XG5cdHJldHVybiBuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRwbHVnaW5JZCxcblx0XHRvcGVyYXRpb24sXG5cdFx0cHJvY2VkdXJlTmFtZSxcblx0XHRyZXRyeWFibGU6IGlzUmV0cnlhYmxlT1JQQ0NvZGUob3JwY0Vycm9yLmNvZGUpLFxuXHRcdGNhdXNlOiBvcnBjRXJyb3IgYXMgRXJyb3Jcblx0fSk7XG59O1xuXG4vLyBVbml2ZXJzYWwgZXJyb3IgY29udmVydGVyIGZvciB0aGUgcnVudGltZVxuZXhwb3J0IGNvbnN0IHRvUGx1Z2luUnVudGltZUVycm9yID0gKFxuXHRlcnJvcjogdW5rbm93bixcblx0cGx1Z2luSWQ/OiBzdHJpbmcsXG5cdHByb2NlZHVyZU5hbWU/OiBzdHJpbmcsXG5cdG9wZXJhdGlvbj86IHN0cmluZyxcblx0ZGVmYXVsdFJldHJ5YWJsZSA9IGZhbHNlXG4pOiBQbHVnaW5SdW50aW1lRXJyb3IgPT4ge1xuXHRpZiAoZXJyb3IgaW5zdGFuY2VvZiBPUlBDRXJyb3IpIHtcblx0XHRyZXR1cm4gd3JhcE9SUENFcnJvcihlcnJvciwgcGx1Z2luSWQsIHByb2NlZHVyZU5hbWUsIG9wZXJhdGlvbik7XG5cdH1cblxuXHRpZiAoZXJyb3IgaW5zdGFuY2VvZiBQbHVnaW5SdW50aW1lRXJyb3IpIHtcblx0XHRyZXR1cm4gZXJyb3I7IC8vIEFscmVhZHkgY29udmVydGVkXG5cdH1cblxuXHRyZXR1cm4gbmV3IFBsdWdpblJ1bnRpbWVFcnJvcih7XG5cdFx0cGx1Z2luSWQsXG5cdFx0b3BlcmF0aW9uLFxuXHRcdHByb2NlZHVyZU5hbWUsXG5cdFx0cmV0cnlhYmxlOiBkZWZhdWx0UmV0cnlhYmxlLFxuXHRcdGNhdXNlOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSlcblx0fSk7XG59O1xuIiwiaW1wb3J0IHsgYmV0dGVyRmV0Y2ggfSBmcm9tIFwiQGJldHRlci1mZXRjaC9mZXRjaFwiO1xuaW1wb3J0IHtcblx0Y3JlYXRlSW5zdGFuY2UsXG5cdGdldEluc3RhbmNlLFxufSBmcm9tIFwiQG1vZHVsZS1mZWRlcmF0aW9uL2VuaGFuY2VkL3J1bnRpbWVcIjtcbmltcG9ydCB7IHNldEdsb2JhbEZlZGVyYXRpb25JbnN0YW5jZSB9IGZyb20gXCJAbW9kdWxlLWZlZGVyYXRpb24vcnVudGltZS1jb3JlXCI7XG5pbXBvcnQgeyBFZmZlY3QgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IEFueVBsdWdpbiB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgTW9kdWxlRmVkZXJhdGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuaW1wb3J0IHsgZ2V0Tm9ybWFsaXplZFJlbW90ZU5hbWUgfSBmcm9tIFwiLi9ub3JtYWxpemVcIjtcblxudHlwZSBSZW1vdGVNb2R1bGUgPSBcbiAgfCAobmV3ICgpID0+IEFueVBsdWdpbilcbiAgfCB7IGRlZmF1bHQ6IG5ldyAoKSA9PiBBbnlQbHVnaW4gfTtcblxuaW1wb3J0IHBrZyBmcm9tIFwiLi4vLi4vLi4vcGFja2FnZS5qc29uXCI7XG5cbmNvbnN0IGNyZWF0ZU1vZHVsZUZlZGVyYXRpb25JbnN0YW5jZSA9IEVmZmVjdC5jYWNoZWQoXG5cdEVmZmVjdC5zeW5jKCgpID0+IHtcblx0XHR0cnkge1xuXHRcdFx0bGV0IGluc3RhbmNlID0gZ2V0SW5zdGFuY2UoKTtcblxuXHRcdFx0aWYgKCFpbnN0YW5jZSkge1xuXHRcdFx0XHRpbnN0YW5jZSA9IGNyZWF0ZUluc3RhbmNlKHtcblx0XHRcdFx0XHRuYW1lOiBcImhvc3RcIixcblx0XHRcdFx0XHRyZW1vdGVzOiBbXSxcblx0XHRcdFx0XHRzaGFyZWQ6IHtcblx0XHRcdFx0XHRcdFwiZXZlcnktcGx1Z2luXCI6IHtcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjogcGtnLnZlcnNpb24sXG5cdFx0XHRcdFx0XHRcdHNoYXJlQ29uZmlnOiB7XG5cdFx0XHRcdFx0XHRcdFx0c2luZ2xldG9uOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkVmVyc2lvbjogYF4ke3BrZy52ZXJzaW9ufWAsXG5cdFx0XHRcdFx0XHRcdFx0ZWFnZXI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RyaWN0VmVyc2lvbjogZmFsc2UsIC8vIEFsbG93IGJpZGlyZWN0aW9uYWwgdmVyc2lvbiBjb21wYXRpYmlsaXR5XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZWZmZWN0OiB7XG5cdFx0XHRcdFx0XHRcdHZlcnNpb246IHBrZy5kZXBlbmRlbmNpZXMuZWZmZWN0LFxuXHRcdFx0XHRcdFx0XHRzaGFyZUNvbmZpZzoge1xuXHRcdFx0XHRcdFx0XHRcdHNpbmdsZXRvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFZlcnNpb246IFwiXjMuMTguMFwiLCAvLyBBbGxvdyBhbnkgMy4xOC54IHBhdGNoIHZlcnNpb25cblx0XHRcdFx0XHRcdFx0XHRlYWdlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRzdHJpY3RWZXJzaW9uOiBmYWxzZSwgLy8gQWxsb3cgdmVyc2lvbiBmbGV4aWJpbGl0eSBmb3IgY29tcGF0aWJpbGl0eVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHpvZDoge1xuXHRcdFx0XHRcdFx0XHR2ZXJzaW9uOiBwa2cuZGVwZW5kZW5jaWVzLnpvZCxcblx0XHRcdFx0XHRcdFx0c2hhcmVDb25maWc6IHtcblx0XHRcdFx0XHRcdFx0XHRzaW5nbGV0b246IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWRWZXJzaW9uOiBcIl40LjEuMFwiLCAvLyBBbGxvdyBhbnkgNC4xLnggcGF0Y2ggdmVyc2lvblxuXHRcdFx0XHRcdFx0XHRcdGVhZ2VyOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHN0cmljdFZlcnNpb246IGZhbHNlLCAvLyBBbGxvdyB2ZXJzaW9uIGZsZXhpYmlsaXR5IGZvciBjb21wYXRpYmlsaXR5XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XCJAb3JwYy9jb250cmFjdFwiOiB7XG5cdFx0XHRcdFx0XHRcdHZlcnNpb246IHBrZy5kZXBlbmRlbmNpZXNbXCJAb3JwYy9jb250cmFjdFwiXSxcblx0XHRcdFx0XHRcdFx0c2hhcmVDb25maWc6IHtcblx0XHRcdFx0XHRcdFx0XHRzaW5nbGV0b246IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWRWZXJzaW9uOiBcIl4xLjguMFwiLCAvLyBBbGxvdyBhbnkgMS44LnggcGF0Y2ggdmVyc2lvblxuXHRcdFx0XHRcdFx0XHRcdGVhZ2VyOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHN0cmljdFZlcnNpb246IGZhbHNlLCAvLyBBbGxvdyB2ZXJzaW9uIGZsZXhpYmlsaXR5IGZvciBjb21wYXRpYmlsaXR5XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XCJAb3JwYy9zZXJ2ZXJcIjoge1xuXHRcdFx0XHRcdFx0XHR2ZXJzaW9uOiBwa2cuZGVwZW5kZW5jaWVzW1wiQG9ycGMvc2VydmVyXCJdLFxuXHRcdFx0XHRcdFx0XHRzaGFyZUNvbmZpZzoge1xuXHRcdFx0XHRcdFx0XHRcdHNpbmdsZXRvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFZlcnNpb246IFwiXjEuOC4wXCIsIC8vIEFsbG93IGFueSAxLjgueCBwYXRjaCB2ZXJzaW9uXG5cdFx0XHRcdFx0XHRcdFx0ZWFnZXI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RyaWN0VmVyc2lvbjogZmFsc2UsIC8vIEFsbG93IHZlcnNpb24gZmxleGliaWxpdHkgZm9yIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRzZXRHbG9iYWxGZWRlcmF0aW9uSW5zdGFuY2UoaW5zdGFuY2UpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gaW5zdGFuY2U7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGluaXRpYWxpemUgTW9kdWxlIEZlZGVyYXRpb246ICR7ZXJyb3J9YCk7XG5cdFx0fVxuXHR9KSxcbik7XG5cbmV4cG9ydCBjbGFzcyBNb2R1bGVGZWRlcmF0aW9uU2VydmljZSBleHRlbmRzIEVmZmVjdC5TZXJ2aWNlPE1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlPigpKFwiTW9kdWxlRmVkZXJhdGlvblNlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBtZiA9IHlpZWxkKiBFZmZlY3QuZmxhdHRlbihjcmVhdGVNb2R1bGVGZWRlcmF0aW9uSW5zdGFuY2UpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHJlZ2lzdGVyUmVtb3RlOiAocGx1Z2luSWQ6IHN0cmluZywgdXJsOiBzdHJpbmcpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhgW01GXSBSZWdpc3RlcmluZyAke3BsdWdpbklkfWApO1xuXG5cdFx0XHRcdFx0Ly8gQ2hlY2sgaWYgcmVtb3RlIGlzIGF2YWlsYWJsZVxuXHRcdFx0XHRcdGNvbnN0IHsgZXJyb3IgfSA9IHlpZWxkKiBFZmZlY3QudHJ5UHJvbWlzZSh7XG5cdFx0XHRcdFx0XHR0cnk6ICgpID0+IGJldHRlckZldGNoKHVybCwgeyBtZXRob2Q6IFwiSEVBRFwiIH0pLFxuXHRcdFx0XHRcdFx0Y2F0Y2g6IChlcnJvcik6IE1vZHVsZUZlZGVyYXRpb25FcnJvciA9PlxuXHRcdFx0XHRcdFx0XHRuZXcgTW9kdWxlRmVkZXJhdGlvbkVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0XHRcdFx0XHRyZW1vdGVVcmw6IHVybCxcblx0XHRcdFx0XHRcdFx0XHRjYXVzZTpcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRpZiAoZXJyb3IpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbTUZdIOKdjCBSZW1vdGUgbm90IGF2YWlsYWJsZSBmb3IgJHtwbHVnaW5JZH1gKTtcblx0XHRcdFx0XHRcdHJldHVybiB5aWVsZCogRWZmZWN0LmZhaWwoXG5cdFx0XHRcdFx0XHRcdG5ldyBNb2R1bGVGZWRlcmF0aW9uRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkLFxuXHRcdFx0XHRcdFx0XHRcdHJlbW90ZVVybDogdXJsLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOiBuZXcgRXJyb3IoYFJlbW90ZSBub3QgYXZhaWxhYmxlICgke3VybH0pOiAke0pTT04uc3RyaW5naWZ5KGVycm9yKX1gKSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IHJlbW90ZU5hbWUgPSBnZXROb3JtYWxpemVkUmVtb3RlTmFtZShwbHVnaW5JZCk7XG5cblx0XHRcdFx0XHR5aWVsZCogRWZmZWN0LnRyeSh7XG5cdFx0XHRcdFx0XHR0cnk6ICgpID0+IG1mLnJlZ2lzdGVyUmVtb3RlcyhbeyBuYW1lOiByZW1vdGVOYW1lLCBlbnRyeTogdXJsIH1dKSxcblx0XHRcdFx0XHRcdGNhdGNoOiAoZXJyb3IpOiBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgPT5cblx0XHRcdFx0XHRcdFx0bmV3IE1vZHVsZUZlZGVyYXRpb25FcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdFx0XHRcdFx0cmVtb3RlVXJsOiB1cmwsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6XG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSksXG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coYFtNRl0g4pyFIFJlZ2lzdGVyZWQgJHtwbHVnaW5JZH1gKTtcblx0XHRcdFx0fSksXG5cblx0XHRcdGxvYWRSZW1vdGVDb25zdHJ1Y3RvcjogKHBsdWdpbklkOiBzdHJpbmcsIHVybDogc3RyaW5nKSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgcmVtb3RlTmFtZSA9IGdldE5vcm1hbGl6ZWRSZW1vdGVOYW1lKHBsdWdpbklkKTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhgW01GXSBMb2FkaW5nIHJlbW90ZSAke3JlbW90ZU5hbWV9YCk7XG5cdFx0XHRcdFx0Y29uc3QgbW9kdWxlUGF0aCA9IGAke3JlbW90ZU5hbWV9L3BsdWdpbmA7XG5cblx0XHRcdFx0XHRyZXR1cm4geWllbGQqIEVmZmVjdC50cnlQcm9taXNlKHtcblx0XHRcdFx0XHRcdHRyeTogYXN5bmMgKCkgPT4ge1xuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNvbnRhaW5lciA9IGF3YWl0IG1mLmxvYWRSZW1vdGU8UmVtb3RlTW9kdWxlPihtb2R1bGVQYXRoKTtcblx0XHRcdFx0XHRcdFx0aWYgKCFjb250YWluZXIpIHtcblx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYE5vIGNvbnRhaW5lciByZXR1cm5lZCBmb3IgJHttb2R1bGVQYXRofWApO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydCBtdWx0aXBsZSBleHBvcnQgcGF0dGVybnM6IGRpcmVjdCBmdW5jdGlvbiwgZGVmYXVsdCBleHBvcnQsIG5hbWVkIGV4cG9ydHNcblx0XHRcdFx0XHRcdFx0Y29uc3QgQ29uc3RydWN0b3IgPVxuXHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBjb250YWluZXIgPT09IFwiZnVuY3Rpb25cIlxuXHRcdFx0XHRcdFx0XHRcdFx0PyBjb250YWluZXIgIC8vIERpcmVjdCBmdW5jdGlvbiBleHBvcnRcblx0XHRcdFx0XHRcdFx0XHRcdDogY29udGFpbmVyLmRlZmF1bHRcblx0XHRcdFx0XHRcdFx0XHRcdD8gY29udGFpbmVyLmRlZmF1bHQgIC8vIERlZmF1bHQgZXhwb3J0XG5cdFx0XHRcdFx0XHRcdFx0XHQ6IE9iamVjdC52YWx1ZXMoY29udGFpbmVyKS5maW5kKCAgLy8gTmFtZWQgZXhwb3J0IGZhbGxiYWNrXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGV4cCkgPT4gdHlwZW9mIGV4cCA9PT0gXCJmdW5jdGlvblwiICYmIGV4cC5wcm90b3R5cGU/LmNvbnN0cnVjdG9yID09PSBleHBcblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIUNvbnN0cnVjdG9yIHx8IHR5cGVvZiBDb25zdHJ1Y3RvciAhPT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgY29udGFpbmVySW5mbyA9IHR5cGVvZiBjb250YWluZXIgPT09IFwib2JqZWN0XCJcblx0XHRcdFx0XHRcdFx0XHRcdD8gYEF2YWlsYWJsZSBleHBvcnRzOiAke09iamVjdC5rZXlzKGNvbnRhaW5lcikuam9pbignLCAnKX1gXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IGBDb250YWluZXIgdHlwZTogJHt0eXBlb2YgY29udGFpbmVyfWA7XG5cblx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFx0XHRcdFx0XHRgTm8gdmFsaWQgcGx1Z2luIGNvbnN0cnVjdG9yIGZvdW5kIGZvciAnJHtwbHVnaW5JZH0nLlxcbmAgK1xuXHRcdFx0XHRcdFx0XHRcdFx0YFN1cHBvcnRlZCBwYXR0ZXJuczpcXG5gICtcblx0XHRcdFx0XHRcdFx0XHRcdGAgIC0gZXhwb3J0IGNvbnN0IFlvdXJQbHVnaW4gPSBjcmVhdGVQbHVnaW4oey4uLn0pXFxuYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgICAtIGV4cG9ydCBkZWZhdWx0IGNyZWF0ZVBsdWdpbih7Li4ufSlcXG5gICtcblx0XHRcdFx0XHRcdFx0XHRcdGAke2NvbnRhaW5lckluZm99YCxcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Ly8gVmFsaWRhdGUgaXQgbG9va3MgbGlrZSBhIHBsdWdpbiBjb25zdHJ1Y3RvciAoaGFzIGJpbmRpbmcgcHJvcGVydHkpXG5cdFx0XHRcdFx0XHRcdGlmICghKENvbnN0cnVjdG9yIGFzIGFueSkuYmluZGluZykge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGNvbnRhaW5lckluZm8gPSB0eXBlb2YgY29udGFpbmVyID09PSBcIm9iamVjdFwiXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGBGb3VuZCBleHBvcnRzOiAke09iamVjdC5rZXlzKGNvbnRhaW5lcikuam9pbignLCAnKX1gXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IGBDb250YWluZXIgdHlwZTogJHt0eXBlb2YgY29udGFpbmVyfWA7XG5cblx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFx0XHRcdFx0XHRgSW52YWxpZCBwbHVnaW4gY29uc3RydWN0b3IgZm9yICcke3BsdWdpbklkfScuIGAgK1xuXHRcdFx0XHRcdFx0XHRcdFx0YFRoZSBleHBvcnRlZCB2YWx1ZSBtdXN0IGJlIGNyZWF0ZWQgd2l0aCBjcmVhdGVQbHVnaW4oKS4gYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgRm91bmQgYSBmdW5jdGlvbiBidXQgaXQncyBtaXNzaW5nIHRoZSByZXF1aXJlZCAnYmluZGluZycgcHJvcGVydHkuXFxuYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgJHtjb250YWluZXJJbmZvfWAsXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbTUZdIOKchSBMb2FkZWQgY29uc3RydWN0b3IgZm9yICR7cGx1Z2luSWR9YCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBDb25zdHJ1Y3Rvcjtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRjYXRjaDogKGVycm9yKTogTW9kdWxlRmVkZXJhdGlvbkVycm9yID0+XG5cdFx0XHRcdFx0XHRcdG5ldyBNb2R1bGVGZWRlcmF0aW9uRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkLFxuXHRcdFx0XHRcdFx0XHRcdHJlbW90ZVVybDogdXJsLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOlxuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSksXG5cdFx0fTtcblx0fSksXG59KSB7fVxuIiwiaW1wb3J0IHsgRWZmZWN0LCBSZWYgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IEFueVBsdWdpbiwgSW5pdGlhbGl6ZWRQbHVnaW4gfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IHRvUGx1Z2luUnVudGltZUVycm9yIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuXG5leHBvcnQgY2xhc3MgUGx1Z2luTGlmZWN5Y2xlU2VydmljZSBleHRlbmRzIEVmZmVjdC5TZXJ2aWNlPFBsdWdpbkxpZmVjeWNsZVNlcnZpY2U+KCkoXCJQbHVnaW5MaWZlY3ljbGVTZXJ2aWNlXCIsIHtcbiAgZWZmZWN0OiBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgY29uc3QgYWN0aXZlUGx1Z2lucyA9IHlpZWxkKiBSZWYubWFrZShuZXcgU2V0PEluaXRpYWxpemVkUGx1Z2luPEFueVBsdWdpbj4+KCkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZ2lzdGVyOiA8VCBleHRlbmRzIEFueVBsdWdpbj4ocGx1Z2luOiBJbml0aWFsaXplZFBsdWdpbjxUPikgPT5cbiAgICAgICAgUmVmLnVwZGF0ZShhY3RpdmVQbHVnaW5zLCBwbHVnaW5zID0+XG4gICAgICAgICAgbmV3IFNldChwbHVnaW5zKS5hZGQocGx1Z2luIGFzIEluaXRpYWxpemVkUGx1Z2luPEFueVBsdWdpbj4pXG4gICAgICAgICksXG5cbiAgICAgIHVucmVnaXN0ZXI6IChwbHVnaW46IEluaXRpYWxpemVkUGx1Z2luPEFueVBsdWdpbj4pID0+XG4gICAgICAgIFJlZi51cGRhdGUoYWN0aXZlUGx1Z2lucywgcGx1Z2lucyA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3U2V0ID0gbmV3IFNldChwbHVnaW5zKTtcbiAgICAgICAgICBuZXdTZXQuZGVsZXRlKHBsdWdpbik7XG4gICAgICAgICAgcmV0dXJuIG5ld1NldDtcbiAgICAgICAgfSksXG5cbiAgICAgIHNodXRkb3duOiAocGx1Z2luOiBJbml0aWFsaXplZFBsdWdpbjxBbnlQbHVnaW4+KSA9PlxuICAgICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIGZyb20gYWN0aXZlIHBsdWdpbnNcbiAgICAgICAgICB5aWVsZCogUmVmLnVwZGF0ZShhY3RpdmVQbHVnaW5zLCBwbHVnaW5zID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NldCA9IG5ldyBTZXQocGx1Z2lucyk7XG4gICAgICAgICAgICBuZXdTZXQuZGVsZXRlKHBsdWdpbik7XG4gICAgICAgICAgICByZXR1cm4gbmV3U2V0O1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gU2h1dGRvd24gdGhlIHBsdWdpblxuICAgICAgICAgIHlpZWxkKiBwbHVnaW4ucGx1Z2luLnNodXRkb3duKCkucGlwZShcbiAgICAgICAgICAgIEVmZmVjdC5tYXBFcnJvcihlcnJvciA9PlxuICAgICAgICAgICAgICB0b1BsdWdpblJ1bnRpbWVFcnJvcihlcnJvciwgcGx1Z2luLnBsdWdpbi5pZCwgdW5kZWZpbmVkLCBcInNodXRkb3duLXBsdWdpblwiLCBmYWxzZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcblxuICAgICAgY2xlYW51cDogKCkgPT5cbiAgICAgICAgRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgICAgICAgIGNvbnN0IHBsdWdpbnMgPSB5aWVsZCogUmVmLmdldChhY3RpdmVQbHVnaW5zKTtcblxuICAgICAgICAgIC8vIFNodXRkb3duIGFsbCBhY3RpdmUgcGx1Z2lucyBjb25jdXJyZW50bHlcbiAgICAgICAgICB5aWVsZCogRWZmZWN0LmZvckVhY2goXG4gICAgICAgICAgICBwbHVnaW5zLFxuICAgICAgICAgICAgcGx1Z2luID0+XG4gICAgICAgICAgICAgIHBsdWdpbi5wbHVnaW4uc2h1dGRvd24oKS5waXBlKFxuICAgICAgICAgICAgICAgIEVmZmVjdC5tYXBFcnJvcihlcnJvciA9PlxuICAgICAgICAgICAgICAgICAgdG9QbHVnaW5SdW50aW1lRXJyb3IoZXJyb3IsIHBsdWdpbi5wbHVnaW4uaWQsIHVuZGVmaW5lZCwgXCJjbGVhbnVwLXNodXRkb3duXCIsIGZhbHNlKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgRWZmZWN0LmNhdGNoQWxsKGVycm9yID0+XG4gICAgICAgICAgICAgICAgICBFZmZlY3QubG9nRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBGYWlsZWQgdG8gc2h1dGRvd24gcGx1Z2luICR7cGx1Z2luLnBsdWdpbi5pZH0gZHVyaW5nIGNsZWFudXBgLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgeyBwbHVnaW5JZDogcGx1Z2luLnBsdWdpbi5pZCB9XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgeyBjb25jdXJyZW5jeTogXCJ1bmJvdW5kZWRcIiB9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIENsZWFyIHRoZSBhY3RpdmUgcGx1Z2lucyBzZXRcbiAgICAgICAgICB5aWVsZCogUmVmLnNldChhY3RpdmVQbHVnaW5zLCBuZXcgU2V0KCkpO1xuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgIEVmZmVjdC5jYXRjaEFsbCgoKSA9PiBFZmZlY3Qudm9pZCkgLy8gQ29udmVydCBlcnJvcnMgdG8gdm9pZCBmb3IgY2xlYW51cFxuICAgICAgICApLFxuICAgIH07XG4gIH0pLFxufSkgeyB9XG4iLCJpbXBvcnQgeyBFZmZlY3QgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlID0gPFQ+KFxuXHRzY2hlbWE6IHouWm9kU2NoZW1hPFQ+LFxuXHRkYXRhOiB1bmtub3duLFxuXHRwbHVnaW5JZDogc3RyaW5nLFxuXHRzdGFnZTogXCJjb25maWdcIiB8IFwiaW5wdXRcIiB8IFwib3V0cHV0XCIgfCBcInN0YXRlXCIsXG4pOiBFZmZlY3QuRWZmZWN0PFQsIFZhbGlkYXRpb25FcnJvcj4gPT5cblx0RWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdGNvbnN0IHJlc3VsdCA9IHNjaGVtYS5zYWZlUGFyc2UoZGF0YSk7XG5cdFx0aWYgKHJlc3VsdC5zdWNjZXNzKSB7XG5cdFx0XHRyZXR1cm4gcmVzdWx0LmRhdGE7XG5cdFx0fVxuXHRcdHJldHVybiB5aWVsZCogRWZmZWN0LmZhaWwoXG5cdFx0XHRuZXcgVmFsaWRhdGlvbkVycm9yKHtcblx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdHN0YWdlLFxuXHRcdFx0XHR6b2RFcnJvcjogcmVzdWx0LmVycm9yLFxuXHRcdFx0fSksXG5cdFx0KTtcblx0fSk7XG4iLCJpbXBvcnQgeyBDb250ZXh0LCBFZmZlY3QgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHR5cGUgeyBTZWNyZXRzQ29uZmlnIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBQbHVnaW5SdW50aW1lRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5cbmNvbnN0IGNvbmZpZ1NjaGVtYSA9IHoub2JqZWN0KHtcblx0c2VjcmV0czogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpXG59KS5sb29zZSgpO1xuXG5leHBvcnQgY2xhc3MgU2VjcmV0c0NvbmZpZ1RhZyBleHRlbmRzIENvbnRleHQuVGFnKFwiU2VjcmV0c0NvbmZpZ1wiKTxcblx0U2VjcmV0c0NvbmZpZ1RhZyxcblx0U2VjcmV0c0NvbmZpZ1xuPigpIHsgfVxuXG5leHBvcnQgY2xhc3MgU2VjcmV0c1NlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuU2VydmljZTxTZWNyZXRzU2VydmljZT4oKShcIlNlY3JldHNTZXJ2aWNlXCIsIHtcblx0ZWZmZWN0OiBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0Y29uc3Qgc2VjcmV0cyA9IHlpZWxkKiBTZWNyZXRzQ29uZmlnVGFnO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGh5ZHJhdGVTZWNyZXRzOiA8VD4oY29uZmlnOiBUKSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgcGFyc2VSZXN1bHQgPSBjb25maWdTY2hlbWEucGFyc2UoY29uZmlnKTtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0Y29uc3QgY29uZmlnU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocGFyc2VSZXN1bHQpO1xuXHRcdFx0XHRcdFx0bGV0IGh5ZHJhdGVkU3RyaW5nID0gY29uZmlnU3RyaW5nO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzZWNyZXRzKSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChge3ske2tleX19fWAsIFwiZ1wiKTtcblx0XHRcdFx0XHRcdFx0aHlkcmF0ZWRTdHJpbmcgPSBoeWRyYXRlZFN0cmluZy5yZXBsYWNlKHBhdHRlcm4sIFN0cmluZyh2YWx1ZSkpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRyZXR1cm4gSlNPTi5wYXJzZShoeWRyYXRlZFN0cmluZykgYXMgVDtcblx0XHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHlpZWxkKiBFZmZlY3QuZmFpbChcblx0XHRcdFx0XHRcdFx0bmV3IFBsdWdpblJ1bnRpbWVFcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcImh5ZHJhdGUtc2VjcmV0c1wiLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOlxuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpLFxuXHRcdFx0XHRcdFx0XHRcdHJldHJ5YWJsZTogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdH07XG5cdH0pLFxufSkgeyB9XG4iLCJpbXBvcnQgdHlwZSB7IEluZmVyU2NoZW1hSW5wdXQsIEluZmVyU2NoZW1hT3V0cHV0IH0gZnJvbSBcIkBvcnBjL2NvbnRyYWN0XCI7XG5pbXBvcnQgeyBDb250ZXh0LCBFZmZlY3QsIFNjb3BlIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHR5cGUge1xuXHRBbnlQbHVnaW4sXG5cdEluaXRpYWxpemVkUGx1Z2luLFxuXHRMb2FkZWRQbHVnaW4sXG5cdFBsdWdpbkluc3RhbmNlLFxuXHRQbHVnaW5SZWdpc3RyeVxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IFBsdWdpblJ1bnRpbWVFcnJvciwgdG9QbHVnaW5SdW50aW1lRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyB2YWxpZGF0ZSB9IGZyb20gXCIuLi92YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBNb2R1bGVGZWRlcmF0aW9uU2VydmljZSB9IGZyb20gXCIuL21vZHVsZS1mZWRlcmF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IFNlY3JldHNTZXJ2aWNlIH0gZnJvbSBcIi4vc2VjcmV0cy5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5SZWdpc3RyeVRhZyBleHRlbmRzIENvbnRleHQuVGFnKFwiUGx1Z2luUmVnaXN0cnlcIik8XG5cdFBsdWdpblJlZ2lzdHJ5VGFnLFxuXHRQbHVnaW5SZWdpc3RyeVxuPigpIHsgfVxuXG5leHBvcnQgY2xhc3MgUmVnaXN0cnlTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UmVnaXN0cnlTZXJ2aWNlPigpKFwiUmVnaXN0cnlTZXJ2aWNlXCIsIHtcblx0ZWZmZWN0OiBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0Y29uc3QgcmVnaXN0cnkgPSB5aWVsZCogUGx1Z2luUmVnaXN0cnlUYWc7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0Z2V0OiAocGx1Z2luSWQ6IHN0cmluZykgPT5cblx0XHRcdFx0RWZmZWN0LmZyb21OdWxsYWJsZShyZWdpc3RyeVtwbHVnaW5JZF0pLnBpcGUoXG5cdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKCgpID0+XG5cdFx0XHRcdFx0XHRuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdFx0XHRcdG9wZXJhdGlvbjogXCJ2YWxpZGF0ZS1wbHVnaW4taWRcIixcblx0XHRcdFx0XHRcdFx0Y2F1c2U6IG5ldyBFcnJvcihgUGx1Z2luICR7cGx1Z2luSWR9IG5vdCBmb3VuZCBpbiByZWdpc3RyeWApLFxuXHRcdFx0XHRcdFx0XHRyZXRyeWFibGU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KSxcblx0XHR9O1xuXHR9KSxcbn0pIHsgfVxuXG5leHBvcnQgY2xhc3MgUGx1Z2luTG9hZGVyU2VydmljZSBleHRlbmRzIEVmZmVjdC5TZXJ2aWNlPFBsdWdpbkxvYWRlclNlcnZpY2U+KCkoXCJQbHVnaW5Mb2FkZXJTZXJ2aWNlXCIsIHtcblx0ZWZmZWN0OiBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0Y29uc3QgbW9kdWxlRmVkZXJhdGlvblNlcnZpY2UgPSB5aWVsZCogTW9kdWxlRmVkZXJhdGlvblNlcnZpY2U7XG5cdFx0Y29uc3Qgc2VjcmV0c1NlcnZpY2UgPSB5aWVsZCogU2VjcmV0c1NlcnZpY2U7XG5cdFx0Y29uc3QgcmVnaXN0cnlTZXJ2aWNlID0geWllbGQqIFJlZ2lzdHJ5U2VydmljZTtcblxuXHRcdGNvbnN0IHJlc29sdmVVcmwgPSAoYmFzZVVybDogc3RyaW5nLCB2ZXJzaW9uPzogc3RyaW5nKTogc3RyaW5nID0+XG5cdFx0XHR2ZXJzaW9uICYmIHZlcnNpb24gIT09IFwibGF0ZXN0XCJcblx0XHRcdFx0PyBiYXNlVXJsLnJlcGxhY2UoXCJAbGF0ZXN0XCIsIGBAJHt2ZXJzaW9ufWApXG5cdFx0XHRcdDogYmFzZVVybDtcblxuXHRcdGNvbnN0IGdldE1ldGFkYXRhID0gKHBsdWdpbklkOiBzdHJpbmcpID0+IHJlZ2lzdHJ5U2VydmljZS5nZXQocGx1Z2luSWQpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGxvYWRQbHVnaW46IChwbHVnaW5JZDogc3RyaW5nKSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgbWV0YWRhdGEgPSB5aWVsZCogZ2V0TWV0YWRhdGEocGx1Z2luSWQpO1xuXHRcdFx0XHRcdGNvbnN0IHVybCA9IHJlc29sdmVVcmwobWV0YWRhdGEucmVtb3RlVXJsKTtcblxuXHRcdFx0XHRcdHlpZWxkKiBtb2R1bGVGZWRlcmF0aW9uU2VydmljZS5yZWdpc3RlclJlbW90ZShwbHVnaW5JZCwgdXJsKS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKChlcnJvcikgPT5cblx0XHRcdFx0XHRcdFx0dG9QbHVnaW5SdW50aW1lRXJyb3IoZXJyb3IuY2F1c2UsIHBsdWdpbklkLCB1bmRlZmluZWQsIFwicmVnaXN0ZXItcmVtb3RlXCIsIHRydWUpLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0eWllbGQqIEVmZmVjdC5sb2dEZWJ1ZyhcIkxvYWRpbmcgcGx1Z2luXCIsIHsgcGx1Z2luSWQsIHVybCB9KTtcblxuXHRcdFx0XHRcdGNvbnN0IGN0b3IgPSB5aWVsZCogbW9kdWxlRmVkZXJhdGlvblNlcnZpY2UubG9hZFJlbW90ZUNvbnN0cnVjdG9yKHBsdWdpbklkLCB1cmwpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKGVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHR0b1BsdWdpblJ1bnRpbWVFcnJvcihlcnJvci5jYXVzZSwgcGx1Z2luSWQsIHVuZGVmaW5lZCwgXCJsb2FkLXJlbW90ZVwiLCBmYWxzZSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0Y3Rvcixcblx0XHRcdFx0XHRcdG1ldGFkYXRhOiBtZXRhZGF0YSxcblx0XHRcdFx0XHR9IHNhdGlzZmllcyBMb2FkZWRQbHVnaW47XG5cdFx0XHRcdH0pLFxuXG5cdFx0XHRpbnN0YW50aWF0ZVBsdWdpbjogPFQgZXh0ZW5kcyBBbnlQbHVnaW4+KFxuXHRcdFx0XHRwbHVnaW5JZDogc3RyaW5nLFxuXHRcdFx0XHRsb2FkZWRQbHVnaW46IExvYWRlZFBsdWdpbjxUPixcblx0XHRcdCkgPT5cblx0XHRcdFx0RWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0XHRcdGNvbnN0IGluc3RhbmNlID0geWllbGQqIEVmZmVjdC50cnkoKCkgPT4gbmV3IGxvYWRlZFBsdWdpbi5jdG9yKCkpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKGVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHR0b1BsdWdpblJ1bnRpbWVFcnJvcihcblx0XHRcdFx0XHRcdFx0XHRlcnJvcixcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0XHRcdFx0XCJpbnN0YW50aWF0ZS1wbHVnaW5cIixcblx0XHRcdFx0XHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdChpbnN0YW5jZS5pZCBhcyBzdHJpbmcpID0gcGx1Z2luSWQ7XG5cblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0cGx1Z2luOiBpbnN0YW5jZSxcblx0XHRcdFx0XHRcdG1ldGFkYXRhOiBsb2FkZWRQbHVnaW4ubWV0YWRhdGEsXG5cdFx0XHRcdFx0fSBzYXRpc2ZpZXMgUGx1Z2luSW5zdGFuY2U8VD47XG5cdFx0XHRcdH0pLFxuXG5cdFx0XHRpbml0aWFsaXplUGx1Z2luOiA8VCBleHRlbmRzIEFueVBsdWdpbj4oXG5cdFx0XHRcdHBsdWdpbkluc3RhbmNlOiBQbHVnaW5JbnN0YW5jZTxUPixcblx0XHRcdFx0Y29uZmlnOiB7IHZhcmlhYmxlczogSW5mZXJTY2hlbWFJbnB1dDxUW1wiY29uZmlnU2NoZW1hXCJdW1widmFyaWFibGVzXCJdPjsgc2VjcmV0czogSW5mZXJTY2hlbWFJbnB1dDxUW1wiY29uZmlnU2NoZW1hXCJdW1wic2VjcmV0c1wiXT4gfSxcblx0XHRcdCkgPT5cblx0XHRcdFx0RWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0XHRcdGNvbnN0IHsgcGx1Z2luIH0gPSBwbHVnaW5JbnN0YW5jZTtcblxuXHRcdFx0XHRcdC8vIFZhbGlkYXRlIGFuZCBoeWRyYXRlIGNvbmZpZ1xuXHRcdFx0XHRcdGNvbnN0IHZhbGlkYXRlZFZhcmlhYmxlcyA9IHlpZWxkKiB2YWxpZGF0ZShcblx0XHRcdFx0XHRcdHBsdWdpbi5jb25maWdTY2hlbWEudmFyaWFibGVzIGFzIHouWm9kU2NoZW1hPEluZmVyU2NoZW1hT3V0cHV0PFRbXCJjb25maWdTY2hlbWFcIl1bXCJ2YXJpYWJsZXNcIl0+Pixcblx0XHRcdFx0XHRcdGNvbmZpZy52YXJpYWJsZXMsXG5cdFx0XHRcdFx0XHRwbHVnaW4uaWQsXG5cdFx0XHRcdFx0XHRcImNvbmZpZ1wiLFxuXHRcdFx0XHRcdCkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigodmFsaWRhdGlvbkVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHRuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZDogcGx1Z2luLmlkLFxuXHRcdFx0XHRcdFx0XHRcdG9wZXJhdGlvbjogXCJ2YWxpZGF0ZS1jb25maWdcIixcblx0XHRcdFx0XHRcdFx0XHRjYXVzZTogdmFsaWRhdGlvbkVycm9yLnpvZEVycm9yLFxuXHRcdFx0XHRcdFx0XHRcdHJldHJ5YWJsZTogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0Ly8gVmFsaWRhdGUgc2VjcmV0c1xuXHRcdFx0XHRcdGNvbnN0IHZhbGlkYXRlZFNlY3JldHMgPSB5aWVsZCogdmFsaWRhdGUoXG5cdFx0XHRcdFx0XHRwbHVnaW4uY29uZmlnU2NoZW1hLnNlY3JldHMgYXMgei5ab2RTY2hlbWE8SW5mZXJTY2hlbWFPdXRwdXQ8VFtcImNvbmZpZ1NjaGVtYVwiXVtcInNlY3JldHNcIl0+Pixcblx0XHRcdFx0XHRcdGNvbmZpZy5zZWNyZXRzLFxuXHRcdFx0XHRcdFx0cGx1Z2luLmlkLFxuXHRcdFx0XHRcdFx0XCJjb25maWdcIixcblx0XHRcdFx0XHQpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKHZhbGlkYXRpb25FcnJvcikgPT5cblx0XHRcdFx0XHRcdFx0bmV3IFBsdWdpblJ1bnRpbWVFcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQ6IHBsdWdpbi5pZCxcblx0XHRcdFx0XHRcdFx0XHRvcGVyYXRpb246IFwidmFsaWRhdGUtc2VjcmV0c1wiLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOiB2YWxpZGF0aW9uRXJyb3Iuem9kRXJyb3IsXG5cdFx0XHRcdFx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHQvLyBIeWRyYXRlIHNlY3JldHMgaW4gdmFyaWFibGVzXG5cdFx0XHRcdFx0Y29uc3QgaHlkcmF0ZWRDb25maWcgPSB5aWVsZCogc2VjcmV0c1NlcnZpY2UuaHlkcmF0ZVNlY3JldHMoe1xuXHRcdFx0XHRcdFx0dmFyaWFibGVzOiB2YWxpZGF0ZWRWYXJpYWJsZXMsXG5cdFx0XHRcdFx0XHRzZWNyZXRzOiB2YWxpZGF0ZWRTZWNyZXRzLFxuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0Y29uc3QgX3ZhcmlhYmxlcyA9IHlpZWxkKiB2YWxpZGF0ZShcblx0XHRcdFx0XHRcdHBsdWdpbi5jb25maWdTY2hlbWEudmFyaWFibGVzIGFzIHouWm9kU2NoZW1hPEluZmVyU2NoZW1hT3V0cHV0PFRbXCJjb25maWdTY2hlbWFcIl1bXCJ2YXJpYWJsZXNcIl0+Pixcblx0XHRcdFx0XHRcdGh5ZHJhdGVkQ29uZmlnLnZhcmlhYmxlcyxcblx0XHRcdFx0XHRcdHBsdWdpbi5pZCxcblx0XHRcdFx0XHRcdFwiY29uZmlnXCIsXG5cdFx0XHRcdFx0KS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKCh2YWxpZGF0aW9uRXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkOiBwbHVnaW4uaWQsXG5cdFx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLWh5ZHJhdGVkLWNvbmZpZ1wiLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOiB2YWxpZGF0aW9uRXJyb3Iuem9kRXJyb3IsXG5cdFx0XHRcdFx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHQvLyBDcmVhdGUgYSBsb25nLWxpdmVkIHNjb3BlIGZvciB0aGlzIHBsdWdpbiBpbnN0YW5jZVxuXHRcdFx0XHRcdGNvbnN0IHNjb3BlID0geWllbGQqIFNjb3BlLm1ha2UoKTtcblxuXHRcdFx0XHRcdC8vIEluaXRpYWxpemUgcGx1Z2luIHdpdGhpbiB0aGUgc2NvcGVcblx0XHRcdFx0XHRjb25zdCBjb250ZXh0ID0geWllbGQqIHBsdWdpbi5pbml0aWFsaXplKHsgdmFyaWFibGVzOiBfdmFyaWFibGVzLCBzZWNyZXRzOiBoeWRyYXRlZENvbmZpZy5zZWNyZXRzIH0pLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QucHJvdmlkZVNlcnZpY2UoU2NvcGUuU2NvcGUsIHNjb3BlKSxcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigoZXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdHRvUGx1Z2luUnVudGltZUVycm9yKGVycm9yLCBwbHVnaW4uaWQsIHVuZGVmaW5lZCwgXCJpbml0aWFsaXplLXBsdWdpblwiLCBmYWxzZSksXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRwbHVnaW4sXG5cdFx0XHRcdFx0XHRtZXRhZGF0YTogcGx1Z2luSW5zdGFuY2UubWV0YWRhdGEsXG5cdFx0XHRcdFx0XHRjb25maWc6IHsgdmFyaWFibGVzOiBfdmFyaWFibGVzLCBzZWNyZXRzOiBoeWRyYXRlZENvbmZpZy5zZWNyZXRzIH0sXG5cdFx0XHRcdFx0XHRjb250ZXh0LFxuXHRcdFx0XHRcdFx0c2NvcGUsXG5cdFx0XHRcdFx0fSBzYXRpc2ZpZXMgSW5pdGlhbGl6ZWRQbHVnaW48VD47XG5cdFx0XHRcdH0pLFxuXHRcdH07XG5cdH0pLFxufSkge1xufVxuIiwiaW1wb3J0IHsgRWZmZWN0LCBFeGl0LCBMYXllciwgU2NvcGUgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFueVBsdWdpbixcblx0SW5pdGlhbGl6ZWRQbHVnaW4sXG5cdFBsdWdpblJlZ2lzdHJ5LFxuXHRTZWNyZXRzQ29uZmlnXG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgTW9kdWxlRmVkZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9tb2R1bGUtZmVkZXJhdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQbHVnaW5MaWZlY3ljbGVTZXJ2aWNlIH0gZnJvbSBcIi4vcGx1Z2luLWxpZmVjeWNsZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQbHVnaW5Mb2FkZXJTZXJ2aWNlLCBQbHVnaW5SZWdpc3RyeVRhZywgUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSBcIi4vcGx1Z2luLWxvYWRlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTZWNyZXRzQ29uZmlnVGFnLCBTZWNyZXRzU2VydmljZSB9IGZyb20gXCIuL3NlY3JldHMuc2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgUGx1Z2luU2VydmljZSBleHRlbmRzIEVmZmVjdC5TZXJ2aWNlPFBsdWdpblNlcnZpY2U+KCkoXCJQbHVnaW5TZXJ2aWNlXCIsIHtcblx0c2NvcGVkOiBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0Y29uc3QgbG9hZGVyID0geWllbGQqIFBsdWdpbkxvYWRlclNlcnZpY2U7XG5cdFx0Y29uc3QgbGlmZWN5Y2xlID0geWllbGQqIFBsdWdpbkxpZmVjeWNsZVNlcnZpY2U7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bG9hZFBsdWdpbjogbG9hZGVyLmxvYWRQbHVnaW4sXG5cdFx0XHRpbnN0YW50aWF0ZVBsdWdpbjogbG9hZGVyLmluc3RhbnRpYXRlUGx1Z2luLFxuXHRcdFx0aW5pdGlhbGl6ZVBsdWdpbjogbG9hZGVyLmluaXRpYWxpemVQbHVnaW4sXG5cdFx0XHRzaHV0ZG93blBsdWdpbjogKHBsdWdpbjogSW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPikgPT5cblx0XHRcdFx0RWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0XHRcdC8vIFNodXRkb3duIHRoZSBwbHVnaW4gZmlyc3QgKGdyYWNlZnVsIGNsZWFudXApXG5cdFx0XHRcdFx0eWllbGQqIHBsdWdpbi5wbHVnaW4uc2h1dGRvd24oKS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0LmNhdGNoQWxsKCgpID0+IEVmZmVjdC52b2lkKVxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHQvLyBDbG9zZSB0aGUgcGx1Z2luIHNjb3BlIHRvIGludGVycnVwdCBmaWJlcnMgYW5kIHJlbGVhc2UgcmVzb3VyY2VzXG5cdFx0XHRcdFx0eWllbGQqIFNjb3BlLmNsb3NlKHBsdWdpbi5zY29wZSwgRXhpdC5zdWNjZWVkKHVuZGVmaW5lZCkpO1xuXG5cdFx0XHRcdFx0Ly8gVW5yZWdpc3RlciBmcm9tIGxpZmVjeWNsZSB0cmFja2luZ1xuXHRcdFx0XHRcdHlpZWxkKiBsaWZlY3ljbGUudW5yZWdpc3RlcihwbHVnaW4pO1xuXHRcdFx0XHR9KSxcblx0XHRcdGNsZWFudXA6IGxpZmVjeWNsZS5jbGVhbnVwLFxuXHRcdH07XG5cdH0pLFxufSkge1xuXHRzdGF0aWMgTGl2ZSA9IChyZWdpc3RyeTogUGx1Z2luUmVnaXN0cnksIHNlY3JldHM6IFNlY3JldHNDb25maWcpID0+IHtcblx0XHRjb25zdCBjb250ZXh0TGF5ZXIgPSBMYXllci5tZXJnZUFsbChcblx0XHRcdExheWVyLnN1Y2NlZWQoUGx1Z2luUmVnaXN0cnlUYWcsIHJlZ2lzdHJ5KSxcblx0XHRcdExheWVyLnN1Y2NlZWQoU2VjcmV0c0NvbmZpZ1RhZywgc2VjcmV0cyksXG5cdFx0KTtcblxuXHRcdGNvbnN0IHNlcnZpY2VzTGF5ZXIgPSBMYXllci5tZXJnZUFsbChcblx0XHRcdE1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlLkRlZmF1bHQsXG5cdFx0XHRTZWNyZXRzU2VydmljZS5EZWZhdWx0LFxuXHRcdFx0UmVnaXN0cnlTZXJ2aWNlLkRlZmF1bHQsXG5cdFx0XHRQbHVnaW5MaWZlY3ljbGVTZXJ2aWNlLkRlZmF1bHQsXG5cdFx0KS5waXBlKFxuXHRcdFx0TGF5ZXIucHJvdmlkZShjb250ZXh0TGF5ZXIpXG5cdFx0KTtcblxuXHRcdHJldHVybiBQbHVnaW5TZXJ2aWNlLkRlZmF1bHQucGlwZShcblx0XHRcdExheWVyLnByb3ZpZGUoUGx1Z2luTG9hZGVyU2VydmljZS5EZWZhdWx0KSxcblx0XHRcdExheWVyLnByb3ZpZGUoc2VydmljZXNMYXllcilcblx0XHQpO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBjcmVhdGVSb3V0ZXJDbGllbnQgfSBmcm9tIFwiQG9ycGMvc2VydmVyXCI7XG5pbXBvcnQgeyBDYXVzZSwgRWZmZWN0LCBFeGl0LCBIYXNoLCBNYW5hZ2VkUnVudGltZSwgT3B0aW9uIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHR5cGUge1xuXHRBbnlQbHVnaW4sXG5cdEluaXRpYWxpemVkUGx1Z2luLFxuXHRMb2FkZWRQbHVnaW4sXG5cdFBsdWdpbkNsaWVudFR5cGUsXG5cdFBsdWdpbkNvbmZpZ0lucHV0LFxuXHRQbHVnaW5JbnN0YW5jZSxcblx0UGx1Z2luUmVnaXN0cnksXG5cdFBsdWdpblJvdXRlclR5cGUsXG5cdFBsdWdpblJ1bnRpbWVDb25maWcsXG5cdFJlZ2lzdGVyZWRQbHVnaW4sXG5cdFJlZ2lzdGVyZWRQbHVnaW5zLFxuXHRVc2VQbHVnaW5SZXN1bHRcbn0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBQbHVnaW5SdW50aW1lRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7IFBsdWdpblNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9wbHVnaW4uc2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgUGx1Z2luUnVudGltZTxSIGV4dGVuZHMgUmVnaXN0ZXJlZFBsdWdpbnMgPSBSZWdpc3RlcmVkUGx1Z2lucz4ge1xuXHRwcml2YXRlIHBsdWdpbkNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIEVmZmVjdC5FZmZlY3Q8SW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPiwgUGx1Z2luUnVudGltZUVycm9yPj4oKTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHJ1bnRpbWU6IE1hbmFnZWRSdW50aW1lLk1hbmFnZWRSdW50aW1lPFBsdWdpblNlcnZpY2UsIG5ldmVyPixcblx0XHRwcml2YXRlIHJlZ2lzdHJ5OiBQbHVnaW5SZWdpc3RyeVxuXHQpIHsgfVxuXG5cdHByaXZhdGUgZ2VuZXJhdGVDYWNoZUtleShwbHVnaW5JZDogc3RyaW5nLCBjb25maWc6IHVua25vd24pOiBzdHJpbmcge1xuXHRcdGNvbnN0IGNvbmZpZ0hhc2ggPSBIYXNoLnN0cnVjdHVyZShjb25maWcgYXMgb2JqZWN0KS50b1N0cmluZygpO1xuXHRcdHJldHVybiBgJHtwbHVnaW5JZH06JHtjb25maWdIYXNofWA7XG5cdH1cblxuXHRwcml2YXRlIHZhbGlkYXRlUGx1Z2luSWQoXG5cdFx0cGx1Z2luSWQ6IHN0cmluZ1xuXHQpOiBFZmZlY3QuRWZmZWN0PHN0cmluZywgUGx1Z2luUnVudGltZUVycm9yPiB7XG5cdFx0aWYgKCEocGx1Z2luSWQgaW4gdGhpcy5yZWdpc3RyeSkpIHtcblx0XHRcdHJldHVybiBFZmZlY3QuZmFpbChuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0cGx1Z2luSWQ6IFN0cmluZyhwbHVnaW5JZCksXG5cdFx0XHRcdG9wZXJhdGlvbjogXCJ2YWxpZGF0ZS1wbHVnaW4taWRcIixcblx0XHRcdFx0Y2F1c2U6IG5ldyBFcnJvcihgUGx1Z2luIElEICcke1N0cmluZyhwbHVnaW5JZCl9JyBub3QgZm91bmQgaW4gcmVnaXN0cnkuYCksXG5cdFx0XHRcdHJldHJ5YWJsZTogZmFsc2UsXG5cdFx0XHR9KSk7XG5cdFx0fVxuXHRcdHJldHVybiBFZmZlY3Quc3VjY2VlZChTdHJpbmcocGx1Z2luSWQpKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgcnVuUHJvbWlzZTxBLCBFPihcblx0XHRlZmZlY3Q6IEVmZmVjdC5FZmZlY3Q8QSwgRSwgUGx1Z2luU2VydmljZT5cblx0KTogUHJvbWlzZTxBPiB7XG5cdFx0Y29uc3QgZXhpdCA9IGF3YWl0IHRoaXMucnVudGltZS5ydW5Qcm9taXNlRXhpdChlZmZlY3QpO1xuXG5cdFx0aWYgKEV4aXQuaXNGYWlsdXJlKGV4aXQpKSB7XG5cdFx0XHRjb25zdCBlcnJvciA9IENhdXNlLmZhaWx1cmVPcHRpb24oZXhpdC5jYXVzZSk7XG5cdFx0XHRpZiAoT3B0aW9uLmlzU29tZShlcnJvcikpIHtcblx0XHRcdFx0dGhyb3cgZXJyb3IudmFsdWU7XG5cdFx0XHR9XG5cdFx0XHR0aHJvdyBDYXVzZS5zcXVhc2goZXhpdC5jYXVzZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV4aXQudmFsdWU7XG5cdH1cblxuXHRhc3luYyB1c2VQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogSyxcblx0XHRjb25maWc6IFBsdWdpbkNvbmZpZ0lucHV0PFJbS10+XG5cdCk6IFByb21pc2U8VXNlUGx1Z2luUmVzdWx0PEs+PiB7XG5cdFx0Y29uc3QgY2FjaGVLZXkgPSB0aGlzLmdlbmVyYXRlQ2FjaGVLZXkocGx1Z2luSWQsIGNvbmZpZyk7XG5cblx0XHRsZXQgY2FjaGVkUGx1Z2luID0gdGhpcy5wbHVnaW5DYWNoZS5nZXQoY2FjaGVLZXkpO1xuXHRcdGlmICghY2FjaGVkUGx1Z2luKSB7XG5cdFx0XHRjb25zdCBvcGVyYXRpb24gPSBFZmZlY3QuZ2VuKHRoaXMsIGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdGNvbnN0IHBsdWdpblNlcnZpY2UgPSB5aWVsZCogUGx1Z2luU2VydmljZTtcblx0XHRcdFx0Y29uc3QgdmFsaWRhdGVkSWQgPSB5aWVsZCogdGhpcy52YWxpZGF0ZVBsdWdpbklkKHBsdWdpbklkKTtcblxuXHRcdFx0XHQvLyBMb2FkIOKGkiBJbnN0YW50aWF0ZSDihpIgSW5pdGlhbGl6ZVxuXHRcdFx0XHRjb25zdCBjdG9yID0geWllbGQqIHBsdWdpblNlcnZpY2UubG9hZFBsdWdpbih2YWxpZGF0ZWRJZCk7XG5cdFx0XHRcdGNvbnN0IGluc3RhbmNlID0geWllbGQqIHBsdWdpblNlcnZpY2UuaW5zdGFudGlhdGVQbHVnaW4ocGx1Z2luSWQsIGN0b3IpO1xuXHRcdFx0XHRjb25zdCBpbml0aWFsaXplZCA9IHlpZWxkKiBwbHVnaW5TZXJ2aWNlLmluaXRpYWxpemVQbHVnaW4oaW5zdGFuY2UsIGNvbmZpZyk7XG5cblx0XHRcdFx0cmV0dXJuIGluaXRpYWxpemVkO1xuXHRcdFx0fSkucGlwZShFZmZlY3QucHJvdmlkZSh0aGlzLnJ1bnRpbWUpKTtcblxuXHRcdFx0Y2FjaGVkUGx1Z2luID0gRWZmZWN0LmNhY2hlZChvcGVyYXRpb24pLnBpcGUoRWZmZWN0LmZsYXR0ZW4pO1xuXHRcdFx0dGhpcy5wbHVnaW5DYWNoZS5zZXQoY2FjaGVLZXksIGNhY2hlZFBsdWdpbik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgaW5pdGlhbGl6ZWQgPSBhd2FpdCB0aGlzLnJ1blByb21pc2UoY2FjaGVkUGx1Z2luKTtcblx0XHRjb25zdCByb3V0ZXIgPSBpbml0aWFsaXplZC5wbHVnaW4uY3JlYXRlUm91dGVyKGluaXRpYWxpemVkLmNvbnRleHQpO1xuXHRcdGNvbnN0IGNsaWVudCA9IGNyZWF0ZVJvdXRlckNsaWVudChyb3V0ZXIpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHJvdXRlcjogcm91dGVyIGFzIFBsdWdpblJvdXRlclR5cGU8UltLXT4sXG5cdFx0XHRjbGllbnQ6IGNsaWVudCBhcyBQbHVnaW5DbGllbnRUeXBlPFJbS10+LFxuXHRcdFx0bWV0YWRhdGE6IGluaXRpYWxpemVkLm1ldGFkYXRhLFxuXHRcdFx0aW5pdGlhbGl6ZWQ6IGluaXRpYWxpemVkIGFzIEluaXRpYWxpemVkUGx1Z2luPFJlZ2lzdGVyZWRQbHVnaW48Sz4+XG5cdFx0fSBhcyBVc2VQbHVnaW5SZXN1bHQ8Sz47XG5cdH1cblxuXHRhc3luYyBsb2FkUGx1Z2luPEsgZXh0ZW5kcyBrZXlvZiBSZWdpc3RlcmVkUGx1Z2lucyAmIHN0cmluZz4oXG5cdFx0cGx1Z2luSWQ6IEtcblx0KTogUHJvbWlzZTxMb2FkZWRQbHVnaW48UmVnaXN0ZXJlZFBsdWdpbjxLPj4+IHtcblx0XHRjb25zdCBlZmZlY3QgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRjb25zdCBwbHVnaW5TZXJ2aWNlID0geWllbGQqIFBsdWdpblNlcnZpY2U7XG5cdFx0XHRyZXR1cm4geWllbGQqIHBsdWdpblNlcnZpY2UubG9hZFBsdWdpbihwbHVnaW5JZCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMucnVuUHJvbWlzZShlZmZlY3QpIGFzIFByb21pc2U8TG9hZGVkUGx1Z2luPFJlZ2lzdGVyZWRQbHVnaW48Sz4+Pjtcblx0fVxuXG5cdGFzeW5jIGluc3RhbnRpYXRlUGx1Z2luPEsgZXh0ZW5kcyBrZXlvZiBSZWdpc3RlcmVkUGx1Z2lucyAmIHN0cmluZz4oXG5cdFx0cGx1Z2luSWQ6IEssXG5cdFx0bG9hZGVkUGx1Z2luOiBMb2FkZWRQbHVnaW48UmVnaXN0ZXJlZFBsdWdpbjxLPj5cblx0KTogUHJvbWlzZTxQbHVnaW5JbnN0YW5jZTxSZWdpc3RlcmVkUGx1Z2luPEs+Pj4ge1xuXHRcdGNvbnN0IGVmZmVjdCA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdGNvbnN0IHBsdWdpblNlcnZpY2UgPSB5aWVsZCogUGx1Z2luU2VydmljZTtcblx0XHRcdHJldHVybiB5aWVsZCogcGx1Z2luU2VydmljZS5pbnN0YW50aWF0ZVBsdWdpbihwbHVnaW5JZCwgbG9hZGVkUGx1Z2luKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gdGhpcy5ydW5Qcm9taXNlKGVmZmVjdCkgYXMgUHJvbWlzZTxQbHVnaW5JbnN0YW5jZTxSZWdpc3RlcmVkUGx1Z2luPEs+Pj47XG5cdH1cblxuXHRhc3luYyBpbml0aWFsaXplUGx1Z2luPFQgZXh0ZW5kcyBBbnlQbHVnaW4+KFxuXHRcdGluc3RhbmNlOiBQbHVnaW5JbnN0YW5jZTxUPixcblx0XHRjb25maWc6IGFueVxuXHQpOiBQcm9taXNlPEluaXRpYWxpemVkUGx1Z2luPFQ+PiB7XG5cdFx0Y29uc3QgZWZmZWN0ID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0Y29uc3QgcGx1Z2luU2VydmljZSA9IHlpZWxkKiBQbHVnaW5TZXJ2aWNlO1xuXHRcdFx0cmV0dXJuIHlpZWxkKiBwbHVnaW5TZXJ2aWNlLmluaXRpYWxpemVQbHVnaW4oaW5zdGFuY2UsIGNvbmZpZyk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMucnVuUHJvbWlzZShlZmZlY3QpO1xuXHR9XG5cblx0YXN5bmMgc2h1dGRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgZWZmZWN0ID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0Y29uc3QgcGx1Z2luU2VydmljZSA9IHlpZWxkKiBQbHVnaW5TZXJ2aWNlO1xuXHRcdFx0eWllbGQqIHBsdWdpblNlcnZpY2UuY2xlYW51cCgpO1xuXHRcdH0pO1xuXHRcdHJldHVybiB0aGlzLnJ1blByb21pc2UoZWZmZWN0KTtcblx0fVxuXG5cdGFzeW5jIGV2aWN0UGx1Z2luPEsgZXh0ZW5kcyBrZXlvZiBSZWdpc3RlcmVkUGx1Z2lucyAmIHN0cmluZz4oXG5cdFx0cGx1Z2luSWQ6IEssXG5cdFx0Y29uZmlnOiBQbHVnaW5Db25maWdJbnB1dDxSZWdpc3RlcmVkUGx1Z2luc1tLXT5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgY2FjaGVLZXkgPSB0aGlzLmdlbmVyYXRlQ2FjaGVLZXkocGx1Z2luSWQsIGNvbmZpZyk7XG5cblx0XHRjb25zdCBlZmZlY3QgPSBFZmZlY3QuZ2VuKHRoaXMsIGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRjb25zdCBwbHVnaW5TZXJ2aWNlID0geWllbGQqIFBsdWdpblNlcnZpY2U7XG5cdFx0XHRjb25zdCBjYWNoZWRQbHVnaW4gPSB0aGlzLnBsdWdpbkNhY2hlLmdldChjYWNoZUtleSk7XG5cblx0XHRcdGlmIChjYWNoZWRQbHVnaW4pIHtcblx0XHRcdFx0dGhpcy5wbHVnaW5DYWNoZS5kZWxldGUoY2FjaGVLZXkpO1xuXG5cdFx0XHRcdGNvbnN0IHBsdWdpblJlc3VsdCA9IHlpZWxkKiBjYWNoZWRQbHVnaW4ucGlwZShcblx0XHRcdFx0XHRFZmZlY3QuY2F0Y2hBbGwoKCkgPT4gRWZmZWN0LnN1Y2NlZWQobnVsbCkpXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKHBsdWdpblJlc3VsdCkge1xuXHRcdFx0XHRcdHlpZWxkKiBwbHVnaW5TZXJ2aWNlLnNodXRkb3duUGx1Z2luKHBsdWdpblJlc3VsdCkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5jYXRjaEFsbCgoKSA9PiBFZmZlY3Qudm9pZClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSkucGlwZShFZmZlY3QuY2F0Y2hBbGwoKCkgPT4gRWZmZWN0LnZvaWQpKTtcblxuXHRcdHJldHVybiB0aGlzLnJ1blByb21pc2UoZWZmZWN0KTtcblx0fVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSByZW1vdGUgVVJMIHRvIGVuc3VyZSBpdCBwb2ludHMgdG8gcmVtb3RlRW50cnkuanNcbiAqIElmIHRoZSBVUkwgZG9lc24ndCBlbmQgd2l0aCBhIGZpbGUgZXh0ZW5zaW9uLCBhcHBlbmRzIC9yZW1vdGVFbnRyeS5qc1xuICovXG5mdW5jdGlvbiBub3JtYWxpemVSZW1vdGVVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRpZiAodXJsLmVuZHNXaXRoKCcuanMnKSkgcmV0dXJuIHVybDsgLy8gQWxyZWFkeSBhIGZpbGVcblx0cmV0dXJuIGAke3VybC5lbmRzV2l0aCgnLycpID8gdXJsLnNsaWNlKDAsIC0xKSA6IHVybH0vcmVtb3RlRW50cnkuanNgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGx1Z2luUnVudGltZShcblx0Y29uZmlnOiBQbHVnaW5SdW50aW1lQ29uZmlnXG4pOiBQbHVnaW5SdW50aW1lIHtcblx0Y29uc3Qgc2VjcmV0cyA9IGNvbmZpZy5zZWNyZXRzIHx8IHt9O1xuXG5cdC8vIE5vcm1hbGl6ZSBhbGwgcmVtb3RlIFVSTHMgaW4gdGhlIHJlZ2lzdHJ5XG5cdGNvbnN0IG5vcm1hbGl6ZWRSZWdpc3RyeSA9IE9iamVjdC5mcm9tRW50cmllcyhcblx0XHRPYmplY3QuZW50cmllcyhjb25maWcucmVnaXN0cnkpLm1hcCgoW3BsdWdpbklkLCBlbnRyeV0pID0+IFtcblx0XHRcdHBsdWdpbklkLFxuXHRcdFx0e1xuXHRcdFx0XHQuLi5lbnRyeSxcblx0XHRcdFx0cmVtb3RlVXJsOiBub3JtYWxpemVSZW1vdGVVcmwoZW50cnkucmVtb3RlVXJsKVxuXHRcdFx0fVxuXHRcdF0pXG5cdCkgYXMgUGx1Z2luUmVnaXN0cnk7XG5cblx0Y29uc3QgbGF5ZXIgPSBQbHVnaW5TZXJ2aWNlLkxpdmUobm9ybWFsaXplZFJlZ2lzdHJ5LCBzZWNyZXRzKTtcblx0Y29uc3QgcnVudGltZSA9IE1hbmFnZWRSdW50aW1lLm1ha2UobGF5ZXIpO1xuXG5cdHJldHVybiBuZXcgUGx1Z2luUnVudGltZShydW50aW1lLCBub3JtYWxpemVkUmVnaXN0cnkpO1xufSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBSUEsSUFBYSxxQkFBYixjQUF3Q0EsWUFBSyxZQUFZLHFCQUFxQixDQU0zRTtBQUVILElBQWEsd0JBQWIsY0FB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
|
|
523
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1ENWJTRWNIYS5janMiLCJuYW1lcyI6WyJEYXRhIiwiT1JQQ0Vycm9yIiwiRWZmZWN0IiwicGtnIiwiZXJyb3IiLCJnZXROb3JtYWxpemVkUmVtb3RlTmFtZSIsIkVmZmVjdCIsIlJlZiIsIkVmZmVjdCIsInoiLCJDb250ZXh0IiwiRWZmZWN0IiwiQ29udGV4dCIsIkVmZmVjdCIsIlNjb3BlIiwiRWZmZWN0IiwiU2NvcGUiLCJFeGl0IiwiTGF5ZXIiLCJydW50aW1lOiBNYW5hZ2VkUnVudGltZS5NYW5hZ2VkUnVudGltZTxQbHVnaW5TZXJ2aWNlLCBuZXZlcj4iLCJyZWdpc3RyeTogUGx1Z2luUmVnaXN0cnkiLCJIYXNoIiwiRWZmZWN0IiwiZWZmZWN0IiwiRXhpdCIsIkNhdXNlIiwiT3B0aW9uIiwiTWFuYWdlZFJ1bnRpbWUiXSwic291cmNlcyI6WyIuLi9zcmMvcnVudGltZS9lcnJvcnMudHMiLCIuLi9zcmMvcnVudGltZS9zZXJ2aWNlcy9tb2R1bGUtZmVkZXJhdGlvbi5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvcGx1Z2luLWxpZmVjeWNsZS5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9ydW50aW1lL3NlcnZpY2VzL3NlY3JldHMuc2VydmljZS50cyIsIi4uL3NyYy9ydW50aW1lL3NlcnZpY2VzL3BsdWdpbi1sb2FkZXIuc2VydmljZS50cyIsIi4uL3NyYy9ydW50aW1lL3NlcnZpY2VzL3BsdWdpbi5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT1JQQ0Vycm9yIH0gZnJvbSBcIkBvcnBjL2NvbnRyYWN0XCI7XG5pbXBvcnQgeyBEYXRhIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5leHBvcnQgY2xhc3MgUGx1Z2luUnVudGltZUVycm9yIGV4dGVuZHMgRGF0YS5UYWdnZWRFcnJvcihcIlBsdWdpblJ1bnRpbWVFcnJvclwiKTx7XG5cdHJlYWRvbmx5IHBsdWdpbklkPzogc3RyaW5nO1xuXHRyZWFkb25seSBvcGVyYXRpb24/OiBzdHJpbmc7XG5cdHJlYWRvbmx5IHByb2NlZHVyZU5hbWU/OiBzdHJpbmc7XG5cdHJlYWRvbmx5IGNhdXNlPzogRXJyb3I7XG5cdHJlYWRvbmx5IHJldHJ5YWJsZTogYm9vbGVhbjtcbn0+IHsgfVxuXG5leHBvcnQgY2xhc3MgTW9kdWxlRmVkZXJhdGlvbkVycm9yIGV4dGVuZHMgRGF0YS5UYWdnZWRFcnJvcihcblx0XCJNb2R1bGVGZWRlcmF0aW9uRXJyb3JcIixcbik8e1xuXHRyZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xuXHRyZWFkb25seSByZW1vdGVVcmw6IHN0cmluZztcblx0cmVhZG9ubHkgY2F1c2U/OiBFcnJvcjtcbn0+IHsgfVxuXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRGF0YS5UYWdnZWRFcnJvcihcIlZhbGlkYXRpb25FcnJvclwiKTx7XG5cdHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHN0YWdlOiBcImNvbmZpZ1wiIHwgXCJpbnB1dFwiIHwgXCJvdXRwdXRcIiB8IFwic3RhdGVcIjtcblx0cmVhZG9ubHkgem9kRXJyb3I6IHouWm9kRXJyb3I7XG59PiB7IH1cblxuLy8gSGVscGVyIHRvIGRldGVybWluZSBpZiBhbiBvUlBDIGVycm9yIGNvZGUgaXMgcmV0cnlhYmxlXG5leHBvcnQgY29uc3QgaXNSZXRyeWFibGVPUlBDQ29kZSA9IChjb2RlOiBzdHJpbmcpOiBib29sZWFuID0+IHtcblx0c3dpdGNoIChjb2RlKSB7XG5cdFx0Y2FzZSAnVE9PX01BTllfUkVRVUVTVFMnOlxuXHRcdGNhc2UgJ1NFUlZJQ0VfVU5BVkFJTEFCTEUnOlxuXHRcdGNhc2UgJ0JBRF9HQVRFV0FZJzpcblx0XHRjYXNlICdHQVRFV0FZX1RJTUVPVVQnOlxuXHRcdGNhc2UgJ1RJTUVPVVQnOlxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBmYWxzZTtcblx0fVxufTtcblxuLy8gQ29udmVydCBPUlBDIGVycm9ycyBmcm9tIHBsdWdpbiBwcm9jZWR1cmVzIHRvIFBsdWdpblJ1bnRpbWVFcnJvclxuZXhwb3J0IGNvbnN0IHdyYXBPUlBDRXJyb3IgPSAoXG5cdG9ycGNFcnJvcjogT1JQQ0Vycm9yPHN0cmluZywgdW5rbm93bj4sXG5cdHBsdWdpbklkPzogc3RyaW5nLFxuXHRwcm9jZWR1cmVOYW1lPzogc3RyaW5nLFxuXHRvcGVyYXRpb24/OiBzdHJpbmdcbik6IFBsdWdpblJ1bnRpbWVFcnJvciA9PiB7XG5cdHJldHVybiBuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRwbHVnaW5JZCxcblx0XHRvcGVyYXRpb24sXG5cdFx0cHJvY2VkdXJlTmFtZSxcblx0XHRyZXRyeWFibGU6IGlzUmV0cnlhYmxlT1JQQ0NvZGUob3JwY0Vycm9yLmNvZGUpLFxuXHRcdGNhdXNlOiBvcnBjRXJyb3IgYXMgRXJyb3Jcblx0fSk7XG59O1xuXG4vLyBVbml2ZXJzYWwgZXJyb3IgY29udmVydGVyIGZvciB0aGUgcnVudGltZVxuZXhwb3J0IGNvbnN0IHRvUGx1Z2luUnVudGltZUVycm9yID0gKFxuXHRlcnJvcjogdW5rbm93bixcblx0cGx1Z2luSWQ/OiBzdHJpbmcsXG5cdHByb2NlZHVyZU5hbWU/OiBzdHJpbmcsXG5cdG9wZXJhdGlvbj86IHN0cmluZyxcblx0ZGVmYXVsdFJldHJ5YWJsZSA9IGZhbHNlXG4pOiBQbHVnaW5SdW50aW1lRXJyb3IgPT4ge1xuXHRpZiAoZXJyb3IgaW5zdGFuY2VvZiBPUlBDRXJyb3IpIHtcblx0XHRyZXR1cm4gd3JhcE9SUENFcnJvcihlcnJvciwgcGx1Z2luSWQsIHByb2NlZHVyZU5hbWUsIG9wZXJhdGlvbik7XG5cdH1cblxuXHRpZiAoZXJyb3IgaW5zdGFuY2VvZiBQbHVnaW5SdW50aW1lRXJyb3IpIHtcblx0XHRyZXR1cm4gZXJyb3I7IC8vIEFscmVhZHkgY29udmVydGVkXG5cdH1cblxuXHRyZXR1cm4gbmV3IFBsdWdpblJ1bnRpbWVFcnJvcih7XG5cdFx0cGx1Z2luSWQsXG5cdFx0b3BlcmF0aW9uLFxuXHRcdHByb2NlZHVyZU5hbWUsXG5cdFx0cmV0cnlhYmxlOiBkZWZhdWx0UmV0cnlhYmxlLFxuXHRcdGNhdXNlOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSlcblx0fSk7XG59O1xuIiwiaW1wb3J0IHsgYmV0dGVyRmV0Y2ggfSBmcm9tIFwiQGJldHRlci1mZXRjaC9mZXRjaFwiO1xuaW1wb3J0IHtcblx0Y3JlYXRlSW5zdGFuY2UsXG5cdGdldEluc3RhbmNlLFxufSBmcm9tIFwiQG1vZHVsZS1mZWRlcmF0aW9uL2VuaGFuY2VkL3J1bnRpbWVcIjtcbmltcG9ydCB7IHNldEdsb2JhbEZlZGVyYXRpb25JbnN0YW5jZSB9IGZyb20gXCJAbW9kdWxlLWZlZGVyYXRpb24vcnVudGltZS1jb3JlXCI7XG5pbXBvcnQgeyBFZmZlY3QgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IEFueVBsdWdpbiB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgTW9kdWxlRmVkZXJhdGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuaW1wb3J0IHsgZ2V0Tm9ybWFsaXplZFJlbW90ZU5hbWUgfSBmcm9tIFwiLi9ub3JtYWxpemVcIjtcblxudHlwZSBSZW1vdGVNb2R1bGUgPSBcbiAgfCAobmV3ICgpID0+IEFueVBsdWdpbilcbiAgfCB7IGRlZmF1bHQ6IG5ldyAoKSA9PiBBbnlQbHVnaW4gfTtcblxuaW1wb3J0IHBrZyBmcm9tIFwiLi4vLi4vLi4vcGFja2FnZS5qc29uXCI7XG5cbmNvbnN0IGNyZWF0ZU1vZHVsZUZlZGVyYXRpb25JbnN0YW5jZSA9IEVmZmVjdC5jYWNoZWQoXG5cdEVmZmVjdC5zeW5jKCgpID0+IHtcblx0XHR0cnkge1xuXHRcdFx0bGV0IGluc3RhbmNlID0gZ2V0SW5zdGFuY2UoKTtcblxuXHRcdFx0aWYgKCFpbnN0YW5jZSkge1xuXHRcdFx0XHRpbnN0YW5jZSA9IGNyZWF0ZUluc3RhbmNlKHtcblx0XHRcdFx0XHRuYW1lOiBcImhvc3RcIixcblx0XHRcdFx0XHRyZW1vdGVzOiBbXSxcblx0XHRcdFx0XHRzaGFyZWQ6IHtcblx0XHRcdFx0XHRcdFwiZXZlcnktcGx1Z2luXCI6IHtcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjogcGtnLnZlcnNpb24sXG5cdFx0XHRcdFx0XHRcdHNoYXJlQ29uZmlnOiB7XG5cdFx0XHRcdFx0XHRcdFx0c2luZ2xldG9uOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkVmVyc2lvbjogYF4ke3BrZy52ZXJzaW9ufWAsXG5cdFx0XHRcdFx0XHRcdFx0ZWFnZXI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RyaWN0VmVyc2lvbjogZmFsc2UsIC8vIEFsbG93IGJpZGlyZWN0aW9uYWwgdmVyc2lvbiBjb21wYXRpYmlsaXR5XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZWZmZWN0OiB7XG5cdFx0XHRcdFx0XHRcdHZlcnNpb246IHBrZy5kZXBlbmRlbmNpZXMuZWZmZWN0LFxuXHRcdFx0XHRcdFx0XHRzaGFyZUNvbmZpZzoge1xuXHRcdFx0XHRcdFx0XHRcdHNpbmdsZXRvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFZlcnNpb246IFwiXjMuMTguMFwiLCAvLyBBbGxvdyBhbnkgMy4xOC54IHBhdGNoIHZlcnNpb25cblx0XHRcdFx0XHRcdFx0XHRlYWdlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRzdHJpY3RWZXJzaW9uOiBmYWxzZSwgLy8gQWxsb3cgdmVyc2lvbiBmbGV4aWJpbGl0eSBmb3IgY29tcGF0aWJpbGl0eVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHpvZDoge1xuXHRcdFx0XHRcdFx0XHR2ZXJzaW9uOiBwa2cuZGVwZW5kZW5jaWVzLnpvZCxcblx0XHRcdFx0XHRcdFx0c2hhcmVDb25maWc6IHtcblx0XHRcdFx0XHRcdFx0XHRzaW5nbGV0b246IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWRWZXJzaW9uOiBcIl40LjEuMFwiLCAvLyBBbGxvdyBhbnkgNC4xLnggcGF0Y2ggdmVyc2lvblxuXHRcdFx0XHRcdFx0XHRcdGVhZ2VyOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHN0cmljdFZlcnNpb246IGZhbHNlLCAvLyBBbGxvdyB2ZXJzaW9uIGZsZXhpYmlsaXR5IGZvciBjb21wYXRpYmlsaXR5XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XCJAb3JwYy9jb250cmFjdFwiOiB7XG5cdFx0XHRcdFx0XHRcdHZlcnNpb246IHBrZy5kZXBlbmRlbmNpZXNbXCJAb3JwYy9jb250cmFjdFwiXSxcblx0XHRcdFx0XHRcdFx0c2hhcmVDb25maWc6IHtcblx0XHRcdFx0XHRcdFx0XHRzaW5nbGV0b246IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWRWZXJzaW9uOiBcIl4xLjguMFwiLCAvLyBBbGxvdyBhbnkgMS44LnggcGF0Y2ggdmVyc2lvblxuXHRcdFx0XHRcdFx0XHRcdGVhZ2VyOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHN0cmljdFZlcnNpb246IGZhbHNlLCAvLyBBbGxvdyB2ZXJzaW9uIGZsZXhpYmlsaXR5IGZvciBjb21wYXRpYmlsaXR5XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XCJAb3JwYy9zZXJ2ZXJcIjoge1xuXHRcdFx0XHRcdFx0XHR2ZXJzaW9uOiBwa2cuZGVwZW5kZW5jaWVzW1wiQG9ycGMvc2VydmVyXCJdLFxuXHRcdFx0XHRcdFx0XHRzaGFyZUNvbmZpZzoge1xuXHRcdFx0XHRcdFx0XHRcdHNpbmdsZXRvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFZlcnNpb246IFwiXjEuOC4wXCIsIC8vIEFsbG93IGFueSAxLjgueCBwYXRjaCB2ZXJzaW9uXG5cdFx0XHRcdFx0XHRcdFx0ZWFnZXI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RyaWN0VmVyc2lvbjogZmFsc2UsIC8vIEFsbG93IHZlcnNpb24gZmxleGliaWxpdHkgZm9yIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRzZXRHbG9iYWxGZWRlcmF0aW9uSW5zdGFuY2UoaW5zdGFuY2UpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gaW5zdGFuY2U7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGluaXRpYWxpemUgTW9kdWxlIEZlZGVyYXRpb246ICR7ZXJyb3J9YCk7XG5cdFx0fVxuXHR9KSxcbik7XG5cbmV4cG9ydCBjbGFzcyBNb2R1bGVGZWRlcmF0aW9uU2VydmljZSBleHRlbmRzIEVmZmVjdC5TZXJ2aWNlPE1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlPigpKFwiTW9kdWxlRmVkZXJhdGlvblNlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBtZiA9IHlpZWxkKiBFZmZlY3QuZmxhdHRlbihjcmVhdGVNb2R1bGVGZWRlcmF0aW9uSW5zdGFuY2UpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHJlZ2lzdGVyUmVtb3RlOiAocGx1Z2luSWQ6IHN0cmluZywgdXJsOiBzdHJpbmcpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhgW01GXSBSZWdpc3RlcmluZyAke3BsdWdpbklkfWApO1xuXG5cdFx0XHRcdFx0Ly8gQ2hlY2sgaWYgcmVtb3RlIGlzIGF2YWlsYWJsZVxuXHRcdFx0XHRcdGNvbnN0IHsgZXJyb3IgfSA9IHlpZWxkKiBFZmZlY3QudHJ5UHJvbWlzZSh7XG5cdFx0XHRcdFx0XHR0cnk6ICgpID0+IGJldHRlckZldGNoKHVybCwgeyBtZXRob2Q6IFwiSEVBRFwiIH0pLFxuXHRcdFx0XHRcdFx0Y2F0Y2g6IChlcnJvcik6IE1vZHVsZUZlZGVyYXRpb25FcnJvciA9PlxuXHRcdFx0XHRcdFx0XHRuZXcgTW9kdWxlRmVkZXJhdGlvbkVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0XHRcdFx0XHRyZW1vdGVVcmw6IHVybCxcblx0XHRcdFx0XHRcdFx0XHRjYXVzZTpcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRpZiAoZXJyb3IpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbTUZdIOKdjCBSZW1vdGUgbm90IGF2YWlsYWJsZSBmb3IgJHtwbHVnaW5JZH1gKTtcblx0XHRcdFx0XHRcdHJldHVybiB5aWVsZCogRWZmZWN0LmZhaWwoXG5cdFx0XHRcdFx0XHRcdG5ldyBNb2R1bGVGZWRlcmF0aW9uRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkLFxuXHRcdFx0XHRcdFx0XHRcdHJlbW90ZVVybDogdXJsLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOiBuZXcgRXJyb3IoYFJlbW90ZSBub3QgYXZhaWxhYmxlICgke3VybH0pOiAke0pTT04uc3RyaW5naWZ5KGVycm9yKX1gKSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IHJlbW90ZU5hbWUgPSBnZXROb3JtYWxpemVkUmVtb3RlTmFtZShwbHVnaW5JZCk7XG5cblx0XHRcdFx0XHR5aWVsZCogRWZmZWN0LnRyeSh7XG5cdFx0XHRcdFx0XHR0cnk6ICgpID0+IG1mLnJlZ2lzdGVyUmVtb3RlcyhbeyBuYW1lOiByZW1vdGVOYW1lLCBlbnRyeTogdXJsIH1dKSxcblx0XHRcdFx0XHRcdGNhdGNoOiAoZXJyb3IpOiBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgPT5cblx0XHRcdFx0XHRcdFx0bmV3IE1vZHVsZUZlZGVyYXRpb25FcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdFx0XHRcdFx0cmVtb3RlVXJsOiB1cmwsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6XG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSksXG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coYFtNRl0g4pyFIFJlZ2lzdGVyZWQgJHtwbHVnaW5JZH1gKTtcblx0XHRcdFx0fSksXG5cblx0XHRcdGxvYWRSZW1vdGVDb25zdHJ1Y3RvcjogKHBsdWdpbklkOiBzdHJpbmcsIHVybDogc3RyaW5nKSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgcmVtb3RlTmFtZSA9IGdldE5vcm1hbGl6ZWRSZW1vdGVOYW1lKHBsdWdpbklkKTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhgW01GXSBMb2FkaW5nIHJlbW90ZSAke3JlbW90ZU5hbWV9YCk7XG5cdFx0XHRcdFx0Y29uc3QgbW9kdWxlUGF0aCA9IGAke3JlbW90ZU5hbWV9L3BsdWdpbmA7XG5cblx0XHRcdFx0XHRyZXR1cm4geWllbGQqIEVmZmVjdC50cnlQcm9taXNlKHtcblx0XHRcdFx0XHRcdHRyeTogYXN5bmMgKCkgPT4ge1xuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNvbnRhaW5lciA9IGF3YWl0IG1mLmxvYWRSZW1vdGU8UmVtb3RlTW9kdWxlPihtb2R1bGVQYXRoKTtcblx0XHRcdFx0XHRcdFx0aWYgKCFjb250YWluZXIpIHtcblx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYE5vIGNvbnRhaW5lciByZXR1cm5lZCBmb3IgJHttb2R1bGVQYXRofWApO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydCBtdWx0aXBsZSBleHBvcnQgcGF0dGVybnM6IGRpcmVjdCBmdW5jdGlvbiwgZGVmYXVsdCBleHBvcnQsIG5hbWVkIGV4cG9ydHNcblx0XHRcdFx0XHRcdFx0Y29uc3QgQ29uc3RydWN0b3IgPVxuXHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBjb250YWluZXIgPT09IFwiZnVuY3Rpb25cIlxuXHRcdFx0XHRcdFx0XHRcdFx0PyBjb250YWluZXIgIC8vIERpcmVjdCBmdW5jdGlvbiBleHBvcnRcblx0XHRcdFx0XHRcdFx0XHRcdDogY29udGFpbmVyLmRlZmF1bHRcblx0XHRcdFx0XHRcdFx0XHRcdD8gY29udGFpbmVyLmRlZmF1bHQgIC8vIERlZmF1bHQgZXhwb3J0XG5cdFx0XHRcdFx0XHRcdFx0XHQ6IE9iamVjdC52YWx1ZXMoY29udGFpbmVyKS5maW5kKCAgLy8gTmFtZWQgZXhwb3J0IGZhbGxiYWNrXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGV4cCkgPT4gdHlwZW9mIGV4cCA9PT0gXCJmdW5jdGlvblwiICYmIGV4cC5wcm90b3R5cGU/LmNvbnN0cnVjdG9yID09PSBleHBcblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIUNvbnN0cnVjdG9yIHx8IHR5cGVvZiBDb25zdHJ1Y3RvciAhPT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgY29udGFpbmVySW5mbyA9IHR5cGVvZiBjb250YWluZXIgPT09IFwib2JqZWN0XCJcblx0XHRcdFx0XHRcdFx0XHRcdD8gYEF2YWlsYWJsZSBleHBvcnRzOiAke09iamVjdC5rZXlzKGNvbnRhaW5lcikuam9pbignLCAnKX1gXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IGBDb250YWluZXIgdHlwZTogJHt0eXBlb2YgY29udGFpbmVyfWA7XG5cblx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFx0XHRcdFx0XHRgTm8gdmFsaWQgcGx1Z2luIGNvbnN0cnVjdG9yIGZvdW5kIGZvciAnJHtwbHVnaW5JZH0nLlxcbmAgK1xuXHRcdFx0XHRcdFx0XHRcdFx0YFN1cHBvcnRlZCBwYXR0ZXJuczpcXG5gICtcblx0XHRcdFx0XHRcdFx0XHRcdGAgIC0gZXhwb3J0IGNvbnN0IFlvdXJQbHVnaW4gPSBjcmVhdGVQbHVnaW4oey4uLn0pXFxuYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgICAtIGV4cG9ydCBkZWZhdWx0IGNyZWF0ZVBsdWdpbih7Li4ufSlcXG5gICtcblx0XHRcdFx0XHRcdFx0XHRcdGAke2NvbnRhaW5lckluZm99YCxcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Ly8gVmFsaWRhdGUgaXQgbG9va3MgbGlrZSBhIHBsdWdpbiBjb25zdHJ1Y3RvciAoaGFzIGJpbmRpbmcgcHJvcGVydHkpXG5cdFx0XHRcdFx0XHRcdGlmICghKENvbnN0cnVjdG9yIGFzIGFueSkuYmluZGluZykge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGNvbnRhaW5lckluZm8gPSB0eXBlb2YgY29udGFpbmVyID09PSBcIm9iamVjdFwiXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGBGb3VuZCBleHBvcnRzOiAke09iamVjdC5rZXlzKGNvbnRhaW5lcikuam9pbignLCAnKX1gXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IGBDb250YWluZXIgdHlwZTogJHt0eXBlb2YgY29udGFpbmVyfWA7XG5cblx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFx0XHRcdFx0XHRgSW52YWxpZCBwbHVnaW4gY29uc3RydWN0b3IgZm9yICcke3BsdWdpbklkfScuIGAgK1xuXHRcdFx0XHRcdFx0XHRcdFx0YFRoZSBleHBvcnRlZCB2YWx1ZSBtdXN0IGJlIGNyZWF0ZWQgd2l0aCBjcmVhdGVQbHVnaW4oKS4gYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgRm91bmQgYSBmdW5jdGlvbiBidXQgaXQncyBtaXNzaW5nIHRoZSByZXF1aXJlZCAnYmluZGluZycgcHJvcGVydHkuXFxuYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgJHtjb250YWluZXJJbmZvfWAsXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbTUZdIOKchSBMb2FkZWQgY29uc3RydWN0b3IgZm9yICR7cGx1Z2luSWR9YCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBDb25zdHJ1Y3Rvcjtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRjYXRjaDogKGVycm9yKTogTW9kdWxlRmVkZXJhdGlvbkVycm9yID0+XG5cdFx0XHRcdFx0XHRcdG5ldyBNb2R1bGVGZWRlcmF0aW9uRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkLFxuXHRcdFx0XHRcdFx0XHRcdHJlbW90ZVVybDogdXJsLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOlxuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSksXG5cdFx0fTtcblx0fSksXG59KSB7fVxuIiwiaW1wb3J0IHsgRWZmZWN0LCBSZWYgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IEFueVBsdWdpbiwgSW5pdGlhbGl6ZWRQbHVnaW4gfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IHRvUGx1Z2luUnVudGltZUVycm9yIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuXG5leHBvcnQgY2xhc3MgUGx1Z2luTGlmZWN5Y2xlU2VydmljZSBleHRlbmRzIEVmZmVjdC5TZXJ2aWNlPFBsdWdpbkxpZmVjeWNsZVNlcnZpY2U+KCkoXCJQbHVnaW5MaWZlY3ljbGVTZXJ2aWNlXCIsIHtcbiAgZWZmZWN0OiBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgY29uc3QgYWN0aXZlUGx1Z2lucyA9IHlpZWxkKiBSZWYubWFrZShuZXcgU2V0PEluaXRpYWxpemVkUGx1Z2luPEFueVBsdWdpbj4+KCkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZ2lzdGVyOiA8VCBleHRlbmRzIEFueVBsdWdpbj4ocGx1Z2luOiBJbml0aWFsaXplZFBsdWdpbjxUPikgPT5cbiAgICAgICAgUmVmLnVwZGF0ZShhY3RpdmVQbHVnaW5zLCBwbHVnaW5zID0+XG4gICAgICAgICAgbmV3IFNldChwbHVnaW5zKS5hZGQocGx1Z2luIGFzIEluaXRpYWxpemVkUGx1Z2luPEFueVBsdWdpbj4pXG4gICAgICAgICksXG5cbiAgICAgIHVucmVnaXN0ZXI6IChwbHVnaW46IEluaXRpYWxpemVkUGx1Z2luPEFueVBsdWdpbj4pID0+XG4gICAgICAgIFJlZi51cGRhdGUoYWN0aXZlUGx1Z2lucywgcGx1Z2lucyA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3U2V0ID0gbmV3IFNldChwbHVnaW5zKTtcbiAgICAgICAgICBuZXdTZXQuZGVsZXRlKHBsdWdpbik7XG4gICAgICAgICAgcmV0dXJuIG5ld1NldDtcbiAgICAgICAgfSksXG5cbiAgICAgIHNodXRkb3duOiAocGx1Z2luOiBJbml0aWFsaXplZFBsdWdpbjxBbnlQbHVnaW4+KSA9PlxuICAgICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIGZyb20gYWN0aXZlIHBsdWdpbnNcbiAgICAgICAgICB5aWVsZCogUmVmLnVwZGF0ZShhY3RpdmVQbHVnaW5zLCBwbHVnaW5zID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NldCA9IG5ldyBTZXQocGx1Z2lucyk7XG4gICAgICAgICAgICBuZXdTZXQuZGVsZXRlKHBsdWdpbik7XG4gICAgICAgICAgICByZXR1cm4gbmV3U2V0O1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gU2h1dGRvd24gdGhlIHBsdWdpblxuICAgICAgICAgIHlpZWxkKiBwbHVnaW4ucGx1Z2luLnNodXRkb3duKCkucGlwZShcbiAgICAgICAgICAgIEVmZmVjdC5tYXBFcnJvcihlcnJvciA9PlxuICAgICAgICAgICAgICB0b1BsdWdpblJ1bnRpbWVFcnJvcihlcnJvciwgcGx1Z2luLnBsdWdpbi5pZCwgdW5kZWZpbmVkLCBcInNodXRkb3duLXBsdWdpblwiLCBmYWxzZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcblxuICAgICAgY2xlYW51cDogKCkgPT5cbiAgICAgICAgRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgICAgICAgIGNvbnN0IHBsdWdpbnMgPSB5aWVsZCogUmVmLmdldChhY3RpdmVQbHVnaW5zKTtcblxuICAgICAgICAgIC8vIFNodXRkb3duIGFsbCBhY3RpdmUgcGx1Z2lucyBjb25jdXJyZW50bHlcbiAgICAgICAgICB5aWVsZCogRWZmZWN0LmZvckVhY2goXG4gICAgICAgICAgICBwbHVnaW5zLFxuICAgICAgICAgICAgcGx1Z2luID0+XG4gICAgICAgICAgICAgIHBsdWdpbi5wbHVnaW4uc2h1dGRvd24oKS5waXBlKFxuICAgICAgICAgICAgICAgIEVmZmVjdC5tYXBFcnJvcihlcnJvciA9PlxuICAgICAgICAgICAgICAgICAgdG9QbHVnaW5SdW50aW1lRXJyb3IoZXJyb3IsIHBsdWdpbi5wbHVnaW4uaWQsIHVuZGVmaW5lZCwgXCJjbGVhbnVwLXNodXRkb3duXCIsIGZhbHNlKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgRWZmZWN0LmNhdGNoQWxsKGVycm9yID0+XG4gICAgICAgICAgICAgICAgICBFZmZlY3QubG9nRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBGYWlsZWQgdG8gc2h1dGRvd24gcGx1Z2luICR7cGx1Z2luLnBsdWdpbi5pZH0gZHVyaW5nIGNsZWFudXBgLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgeyBwbHVnaW5JZDogcGx1Z2luLnBsdWdpbi5pZCB9XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgeyBjb25jdXJyZW5jeTogXCJ1bmJvdW5kZWRcIiB9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIENsZWFyIHRoZSBhY3RpdmUgcGx1Z2lucyBzZXRcbiAgICAgICAgICB5aWVsZCogUmVmLnNldChhY3RpdmVQbHVnaW5zLCBuZXcgU2V0KCkpO1xuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgIEVmZmVjdC5jYXRjaEFsbCgoKSA9PiBFZmZlY3Qudm9pZCkgLy8gQ29udmVydCBlcnJvcnMgdG8gdm9pZCBmb3IgY2xlYW51cFxuICAgICAgICApLFxuICAgIH07XG4gIH0pLFxufSkgeyB9XG4iLCJpbXBvcnQgeyBFZmZlY3QgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlID0gPFQ+KFxuXHRzY2hlbWE6IHouWm9kU2NoZW1hPFQ+LFxuXHRkYXRhOiB1bmtub3duLFxuXHRwbHVnaW5JZDogc3RyaW5nLFxuXHRzdGFnZTogXCJjb25maWdcIiB8IFwiaW5wdXRcIiB8IFwib3V0cHV0XCIgfCBcInN0YXRlXCIsXG4pOiBFZmZlY3QuRWZmZWN0PFQsIFZhbGlkYXRpb25FcnJvcj4gPT5cblx0RWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdGNvbnN0IHJlc3VsdCA9IHNjaGVtYS5zYWZlUGFyc2UoZGF0YSk7XG5cdFx0aWYgKHJlc3VsdC5zdWNjZXNzKSB7XG5cdFx0XHRyZXR1cm4gcmVzdWx0LmRhdGE7XG5cdFx0fVxuXHRcdHJldHVybiB5aWVsZCogRWZmZWN0LmZhaWwoXG5cdFx0XHRuZXcgVmFsaWRhdGlvbkVycm9yKHtcblx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdHN0YWdlLFxuXHRcdFx0XHR6b2RFcnJvcjogcmVzdWx0LmVycm9yLFxuXHRcdFx0fSksXG5cdFx0KTtcblx0fSk7XG4iLCJpbXBvcnQgeyBDb250ZXh0LCBFZmZlY3QgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHR5cGUgeyBTZWNyZXRzQ29uZmlnIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBQbHVnaW5SdW50aW1lRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5cbmNvbnN0IGNvbmZpZ1NjaGVtYSA9IHoub2JqZWN0KHtcblx0c2VjcmV0czogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpXG59KS5sb29zZSgpO1xuXG5leHBvcnQgY2xhc3MgU2VjcmV0c0NvbmZpZ1RhZyBleHRlbmRzIENvbnRleHQuVGFnKFwiU2VjcmV0c0NvbmZpZ1wiKTxcblx0U2VjcmV0c0NvbmZpZ1RhZyxcblx0U2VjcmV0c0NvbmZpZ1xuPigpIHsgfVxuXG5leHBvcnQgY2xhc3MgU2VjcmV0c1NlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuU2VydmljZTxTZWNyZXRzU2VydmljZT4oKShcIlNlY3JldHNTZXJ2aWNlXCIsIHtcblx0ZWZmZWN0OiBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0Y29uc3Qgc2VjcmV0cyA9IHlpZWxkKiBTZWNyZXRzQ29uZmlnVGFnO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGh5ZHJhdGVTZWNyZXRzOiA8VD4oY29uZmlnOiBUKSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgcGFyc2VSZXN1bHQgPSBjb25maWdTY2hlbWEucGFyc2UoY29uZmlnKTtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0Y29uc3QgY29uZmlnU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocGFyc2VSZXN1bHQpO1xuXHRcdFx0XHRcdFx0bGV0IGh5ZHJhdGVkU3RyaW5nID0gY29uZmlnU3RyaW5nO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzZWNyZXRzKSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChge3ske2tleX19fWAsIFwiZ1wiKTtcblx0XHRcdFx0XHRcdFx0aHlkcmF0ZWRTdHJpbmcgPSBoeWRyYXRlZFN0cmluZy5yZXBsYWNlKHBhdHRlcm4sIFN0cmluZyh2YWx1ZSkpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRyZXR1cm4gSlNPTi5wYXJzZShoeWRyYXRlZFN0cmluZykgYXMgVDtcblx0XHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHlpZWxkKiBFZmZlY3QuZmFpbChcblx0XHRcdFx0XHRcdFx0bmV3IFBsdWdpblJ1bnRpbWVFcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcImh5ZHJhdGUtc2VjcmV0c1wiLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOlxuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpLFxuXHRcdFx0XHRcdFx0XHRcdHJldHJ5YWJsZTogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdH07XG5cdH0pLFxufSkgeyB9XG4iLCJpbXBvcnQgdHlwZSB7IEluZmVyU2NoZW1hSW5wdXQsIEluZmVyU2NoZW1hT3V0cHV0IH0gZnJvbSBcIkBvcnBjL2NvbnRyYWN0XCI7XG5pbXBvcnQgeyBDb250ZXh0LCBFZmZlY3QsIFNjb3BlIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHR5cGUge1xuXHRBbnlQbHVnaW4sXG5cdEluaXRpYWxpemVkUGx1Z2luLFxuXHRMb2FkZWRQbHVnaW4sXG5cdFBsdWdpbkluc3RhbmNlLFxuXHRQbHVnaW5SZWdpc3RyeVxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IFBsdWdpblJ1bnRpbWVFcnJvciwgdG9QbHVnaW5SdW50aW1lRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyB2YWxpZGF0ZSB9IGZyb20gXCIuLi92YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBNb2R1bGVGZWRlcmF0aW9uU2VydmljZSB9IGZyb20gXCIuL21vZHVsZS1mZWRlcmF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IFNlY3JldHNTZXJ2aWNlIH0gZnJvbSBcIi4vc2VjcmV0cy5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5SZWdpc3RyeVRhZyBleHRlbmRzIENvbnRleHQuVGFnKFwiUGx1Z2luUmVnaXN0cnlcIik8XG5cdFBsdWdpblJlZ2lzdHJ5VGFnLFxuXHRQbHVnaW5SZWdpc3RyeVxuPigpIHsgfVxuXG5leHBvcnQgY2xhc3MgUmVnaXN0cnlTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UmVnaXN0cnlTZXJ2aWNlPigpKFwiUmVnaXN0cnlTZXJ2aWNlXCIsIHtcblx0ZWZmZWN0OiBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0Y29uc3QgcmVnaXN0cnkgPSB5aWVsZCogUGx1Z2luUmVnaXN0cnlUYWc7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0Z2V0OiAocGx1Z2luSWQ6IHN0cmluZykgPT5cblx0XHRcdFx0RWZmZWN0LmZyb21OdWxsYWJsZShyZWdpc3RyeVtwbHVnaW5JZF0pLnBpcGUoXG5cdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKCgpID0+XG5cdFx0XHRcdFx0XHRuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdFx0XHRcdG9wZXJhdGlvbjogXCJ2YWxpZGF0ZS1wbHVnaW4taWRcIixcblx0XHRcdFx0XHRcdFx0Y2F1c2U6IG5ldyBFcnJvcihgUGx1Z2luICR7cGx1Z2luSWR9IG5vdCBmb3VuZCBpbiByZWdpc3RyeWApLFxuXHRcdFx0XHRcdFx0XHRyZXRyeWFibGU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KSxcblx0XHR9O1xuXHR9KSxcbn0pIHsgfVxuXG5leHBvcnQgY2xhc3MgUGx1Z2luTG9hZGVyU2VydmljZSBleHRlbmRzIEVmZmVjdC5TZXJ2aWNlPFBsdWdpbkxvYWRlclNlcnZpY2U+KCkoXCJQbHVnaW5Mb2FkZXJTZXJ2aWNlXCIsIHtcblx0ZWZmZWN0OiBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0Y29uc3QgbW9kdWxlRmVkZXJhdGlvblNlcnZpY2UgPSB5aWVsZCogTW9kdWxlRmVkZXJhdGlvblNlcnZpY2U7XG5cdFx0Y29uc3Qgc2VjcmV0c1NlcnZpY2UgPSB5aWVsZCogU2VjcmV0c1NlcnZpY2U7XG5cdFx0Y29uc3QgcmVnaXN0cnlTZXJ2aWNlID0geWllbGQqIFJlZ2lzdHJ5U2VydmljZTtcblxuXHRcdGNvbnN0IHJlc29sdmVVcmwgPSAoYmFzZVVybDogc3RyaW5nLCB2ZXJzaW9uPzogc3RyaW5nKTogc3RyaW5nID0+XG5cdFx0XHR2ZXJzaW9uICYmIHZlcnNpb24gIT09IFwibGF0ZXN0XCJcblx0XHRcdFx0PyBiYXNlVXJsLnJlcGxhY2UoXCJAbGF0ZXN0XCIsIGBAJHt2ZXJzaW9ufWApXG5cdFx0XHRcdDogYmFzZVVybDtcblxuXHRcdGNvbnN0IGdldE1ldGFkYXRhID0gKHBsdWdpbklkOiBzdHJpbmcpID0+IHJlZ2lzdHJ5U2VydmljZS5nZXQocGx1Z2luSWQpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGxvYWRQbHVnaW46IChwbHVnaW5JZDogc3RyaW5nKSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgbWV0YWRhdGEgPSB5aWVsZCogZ2V0TWV0YWRhdGEocGx1Z2luSWQpO1xuXHRcdFx0XHRcdGNvbnN0IHVybCA9IHJlc29sdmVVcmwobWV0YWRhdGEucmVtb3RlVXJsKTtcblxuXHRcdFx0XHRcdHlpZWxkKiBtb2R1bGVGZWRlcmF0aW9uU2VydmljZS5yZWdpc3RlclJlbW90ZShwbHVnaW5JZCwgdXJsKS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKChlcnJvcikgPT5cblx0XHRcdFx0XHRcdFx0dG9QbHVnaW5SdW50aW1lRXJyb3IoZXJyb3IuY2F1c2UsIHBsdWdpbklkLCB1bmRlZmluZWQsIFwicmVnaXN0ZXItcmVtb3RlXCIsIHRydWUpLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0eWllbGQqIEVmZmVjdC5sb2dEZWJ1ZyhcIkxvYWRpbmcgcGx1Z2luXCIsIHsgcGx1Z2luSWQsIHVybCB9KTtcblxuXHRcdFx0XHRcdGNvbnN0IGN0b3IgPSB5aWVsZCogbW9kdWxlRmVkZXJhdGlvblNlcnZpY2UubG9hZFJlbW90ZUNvbnN0cnVjdG9yKHBsdWdpbklkLCB1cmwpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKGVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHR0b1BsdWdpblJ1bnRpbWVFcnJvcihlcnJvci5jYXVzZSwgcGx1Z2luSWQsIHVuZGVmaW5lZCwgXCJsb2FkLXJlbW90ZVwiLCBmYWxzZSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0Y3Rvcixcblx0XHRcdFx0XHRcdG1ldGFkYXRhOiBtZXRhZGF0YSxcblx0XHRcdFx0XHR9IHNhdGlzZmllcyBMb2FkZWRQbHVnaW47XG5cdFx0XHRcdH0pLFxuXG5cdFx0XHRpbnN0YW50aWF0ZVBsdWdpbjogPFQgZXh0ZW5kcyBBbnlQbHVnaW4+KFxuXHRcdFx0XHRwbHVnaW5JZDogc3RyaW5nLFxuXHRcdFx0XHRsb2FkZWRQbHVnaW46IExvYWRlZFBsdWdpbjxUPixcblx0XHRcdCkgPT5cblx0XHRcdFx0RWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0XHRcdGNvbnN0IGluc3RhbmNlID0geWllbGQqIEVmZmVjdC50cnkoKCkgPT4gbmV3IGxvYWRlZFBsdWdpbi5jdG9yKCkpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKGVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHR0b1BsdWdpblJ1bnRpbWVFcnJvcihcblx0XHRcdFx0XHRcdFx0XHRlcnJvcixcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0XHRcdFx0XCJpbnN0YW50aWF0ZS1wbHVnaW5cIixcblx0XHRcdFx0XHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdChpbnN0YW5jZS5pZCBhcyBzdHJpbmcpID0gcGx1Z2luSWQ7XG5cblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0cGx1Z2luOiBpbnN0YW5jZSxcblx0XHRcdFx0XHRcdG1ldGFkYXRhOiBsb2FkZWRQbHVnaW4ubWV0YWRhdGEsXG5cdFx0XHRcdFx0fSBzYXRpc2ZpZXMgUGx1Z2luSW5zdGFuY2U8VD47XG5cdFx0XHRcdH0pLFxuXG5cdFx0XHRpbml0aWFsaXplUGx1Z2luOiA8VCBleHRlbmRzIEFueVBsdWdpbj4oXG5cdFx0XHRcdHBsdWdpbkluc3RhbmNlOiBQbHVnaW5JbnN0YW5jZTxUPixcblx0XHRcdFx0Y29uZmlnOiB7IHZhcmlhYmxlczogSW5mZXJTY2hlbWFJbnB1dDxUW1wiY29uZmlnU2NoZW1hXCJdW1widmFyaWFibGVzXCJdPjsgc2VjcmV0czogSW5mZXJTY2hlbWFJbnB1dDxUW1wiY29uZmlnU2NoZW1hXCJdW1wic2VjcmV0c1wiXT4gfSxcblx0XHRcdCkgPT5cblx0XHRcdFx0RWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0XHRcdGNvbnN0IHsgcGx1Z2luIH0gPSBwbHVnaW5JbnN0YW5jZTtcblxuXHRcdFx0XHRcdC8vIFZhbGlkYXRlIGFuZCBoeWRyYXRlIGNvbmZpZ1xuXHRcdFx0XHRcdGNvbnN0IHZhbGlkYXRlZFZhcmlhYmxlcyA9IHlpZWxkKiB2YWxpZGF0ZShcblx0XHRcdFx0XHRcdHBsdWdpbi5jb25maWdTY2hlbWEudmFyaWFibGVzIGFzIHouWm9kU2NoZW1hPEluZmVyU2NoZW1hT3V0cHV0PFRbXCJjb25maWdTY2hlbWFcIl1bXCJ2YXJpYWJsZXNcIl0+Pixcblx0XHRcdFx0XHRcdGNvbmZpZy52YXJpYWJsZXMsXG5cdFx0XHRcdFx0XHRwbHVnaW4uaWQsXG5cdFx0XHRcdFx0XHRcImNvbmZpZ1wiLFxuXHRcdFx0XHRcdCkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigodmFsaWRhdGlvbkVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHRuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZDogcGx1Z2luLmlkLFxuXHRcdFx0XHRcdFx0XHRcdG9wZXJhdGlvbjogXCJ2YWxpZGF0ZS1jb25maWdcIixcblx0XHRcdFx0XHRcdFx0XHRjYXVzZTogdmFsaWRhdGlvbkVycm9yLnpvZEVycm9yLFxuXHRcdFx0XHRcdFx0XHRcdHJldHJ5YWJsZTogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0Ly8gVmFsaWRhdGUgc2VjcmV0c1xuXHRcdFx0XHRcdGNvbnN0IHZhbGlkYXRlZFNlY3JldHMgPSB5aWVsZCogdmFsaWRhdGUoXG5cdFx0XHRcdFx0XHRwbHVnaW4uY29uZmlnU2NoZW1hLnNlY3JldHMgYXMgei5ab2RTY2hlbWE8SW5mZXJTY2hlbWFPdXRwdXQ8VFtcImNvbmZpZ1NjaGVtYVwiXVtcInNlY3JldHNcIl0+Pixcblx0XHRcdFx0XHRcdGNvbmZpZy5zZWNyZXRzLFxuXHRcdFx0XHRcdFx0cGx1Z2luLmlkLFxuXHRcdFx0XHRcdFx0XCJjb25maWdcIixcblx0XHRcdFx0XHQpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKHZhbGlkYXRpb25FcnJvcikgPT5cblx0XHRcdFx0XHRcdFx0bmV3IFBsdWdpblJ1bnRpbWVFcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQ6IHBsdWdpbi5pZCxcblx0XHRcdFx0XHRcdFx0XHRvcGVyYXRpb246IFwidmFsaWRhdGUtc2VjcmV0c1wiLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOiB2YWxpZGF0aW9uRXJyb3Iuem9kRXJyb3IsXG5cdFx0XHRcdFx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHQvLyBIeWRyYXRlIHNlY3JldHMgaW4gdmFyaWFibGVzXG5cdFx0XHRcdFx0Y29uc3QgaHlkcmF0ZWRDb25maWcgPSB5aWVsZCogc2VjcmV0c1NlcnZpY2UuaHlkcmF0ZVNlY3JldHMoe1xuXHRcdFx0XHRcdFx0dmFyaWFibGVzOiB2YWxpZGF0ZWRWYXJpYWJsZXMsXG5cdFx0XHRcdFx0XHRzZWNyZXRzOiB2YWxpZGF0ZWRTZWNyZXRzLFxuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0Y29uc3QgX3ZhcmlhYmxlcyA9IHlpZWxkKiB2YWxpZGF0ZShcblx0XHRcdFx0XHRcdHBsdWdpbi5jb25maWdTY2hlbWEudmFyaWFibGVzIGFzIHouWm9kU2NoZW1hPEluZmVyU2NoZW1hT3V0cHV0PFRbXCJjb25maWdTY2hlbWFcIl1bXCJ2YXJpYWJsZXNcIl0+Pixcblx0XHRcdFx0XHRcdGh5ZHJhdGVkQ29uZmlnLnZhcmlhYmxlcyxcblx0XHRcdFx0XHRcdHBsdWdpbi5pZCxcblx0XHRcdFx0XHRcdFwiY29uZmlnXCIsXG5cdFx0XHRcdFx0KS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKCh2YWxpZGF0aW9uRXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkOiBwbHVnaW4uaWQsXG5cdFx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLWh5ZHJhdGVkLWNvbmZpZ1wiLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOiB2YWxpZGF0aW9uRXJyb3Iuem9kRXJyb3IsXG5cdFx0XHRcdFx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHQvLyBDcmVhdGUgYSBsb25nLWxpdmVkIHNjb3BlIGZvciB0aGlzIHBsdWdpbiBpbnN0YW5jZVxuXHRcdFx0XHRcdGNvbnN0IHNjb3BlID0geWllbGQqIFNjb3BlLm1ha2UoKTtcblxuXHRcdFx0XHRcdC8vIEluaXRpYWxpemUgcGx1Z2luIHdpdGhpbiB0aGUgc2NvcGVcblx0XHRcdFx0XHRjb25zdCBjb250ZXh0ID0geWllbGQqIHBsdWdpbi5pbml0aWFsaXplKHsgdmFyaWFibGVzOiBfdmFyaWFibGVzLCBzZWNyZXRzOiBoeWRyYXRlZENvbmZpZy5zZWNyZXRzIH0pLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QucHJvdmlkZVNlcnZpY2UoU2NvcGUuU2NvcGUsIHNjb3BlKSxcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigoZXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdHRvUGx1Z2luUnVudGltZUVycm9yKGVycm9yLCBwbHVnaW4uaWQsIHVuZGVmaW5lZCwgXCJpbml0aWFsaXplLXBsdWdpblwiLCBmYWxzZSksXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRwbHVnaW4sXG5cdFx0XHRcdFx0XHRtZXRhZGF0YTogcGx1Z2luSW5zdGFuY2UubWV0YWRhdGEsXG5cdFx0XHRcdFx0XHRjb25maWc6IHsgdmFyaWFibGVzOiBfdmFyaWFibGVzLCBzZWNyZXRzOiBoeWRyYXRlZENvbmZpZy5zZWNyZXRzIH0sXG5cdFx0XHRcdFx0XHRjb250ZXh0LFxuXHRcdFx0XHRcdFx0c2NvcGUsXG5cdFx0XHRcdFx0fSBzYXRpc2ZpZXMgSW5pdGlhbGl6ZWRQbHVnaW48VD47XG5cdFx0XHRcdH0pLFxuXHRcdH07XG5cdH0pLFxufSkge1xufVxuIiwiaW1wb3J0IHsgRWZmZWN0LCBFeGl0LCBMYXllciwgU2NvcGUgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFueVBsdWdpbixcblx0SW5pdGlhbGl6ZWRQbHVnaW4sXG5cdFBsdWdpblJlZ2lzdHJ5LFxuXHRTZWNyZXRzQ29uZmlnXG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgTW9kdWxlRmVkZXJhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9tb2R1bGUtZmVkZXJhdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQbHVnaW5MaWZlY3ljbGVTZXJ2aWNlIH0gZnJvbSBcIi4vcGx1Z2luLWxpZmVjeWNsZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQbHVnaW5Mb2FkZXJTZXJ2aWNlLCBQbHVnaW5SZWdpc3RyeVRhZywgUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSBcIi4vcGx1Z2luLWxvYWRlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTZWNyZXRzQ29uZmlnVGFnLCBTZWNyZXRzU2VydmljZSB9IGZyb20gXCIuL3NlY3JldHMuc2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgUGx1Z2luU2VydmljZSBleHRlbmRzIEVmZmVjdC5TZXJ2aWNlPFBsdWdpblNlcnZpY2U+KCkoXCJQbHVnaW5TZXJ2aWNlXCIsIHtcblx0c2NvcGVkOiBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0Y29uc3QgbG9hZGVyID0geWllbGQqIFBsdWdpbkxvYWRlclNlcnZpY2U7XG5cdFx0Y29uc3QgbGlmZWN5Y2xlID0geWllbGQqIFBsdWdpbkxpZmVjeWNsZVNlcnZpY2U7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bG9hZFBsdWdpbjogbG9hZGVyLmxvYWRQbHVnaW4sXG5cdFx0XHRpbnN0YW50aWF0ZVBsdWdpbjogbG9hZGVyLmluc3RhbnRpYXRlUGx1Z2luLFxuXHRcdFx0aW5pdGlhbGl6ZVBsdWdpbjogbG9hZGVyLmluaXRpYWxpemVQbHVnaW4sXG5cdFx0XHRzaHV0ZG93blBsdWdpbjogKHBsdWdpbjogSW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPikgPT5cblx0XHRcdFx0RWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0XHRcdC8vIFNodXRkb3duIHRoZSBwbHVnaW4gZmlyc3QgKGdyYWNlZnVsIGNsZWFudXApXG5cdFx0XHRcdFx0eWllbGQqIHBsdWdpbi5wbHVnaW4uc2h1dGRvd24oKS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0LmNhdGNoQWxsKCgpID0+IEVmZmVjdC52b2lkKVxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHQvLyBDbG9zZSB0aGUgcGx1Z2luIHNjb3BlIHRvIGludGVycnVwdCBmaWJlcnMgYW5kIHJlbGVhc2UgcmVzb3VyY2VzXG5cdFx0XHRcdFx0eWllbGQqIFNjb3BlLmNsb3NlKHBsdWdpbi5zY29wZSwgRXhpdC5zdWNjZWVkKHVuZGVmaW5lZCkpO1xuXG5cdFx0XHRcdFx0Ly8gVW5yZWdpc3RlciBmcm9tIGxpZmVjeWNsZSB0cmFja2luZ1xuXHRcdFx0XHRcdHlpZWxkKiBsaWZlY3ljbGUudW5yZWdpc3RlcihwbHVnaW4pO1xuXHRcdFx0XHR9KSxcblx0XHRcdGNsZWFudXA6IGxpZmVjeWNsZS5jbGVhbnVwLFxuXHRcdH07XG5cdH0pLFxufSkge1xuXHRzdGF0aWMgTGl2ZSA9IChyZWdpc3RyeTogUGx1Z2luUmVnaXN0cnksIHNlY3JldHM6IFNlY3JldHNDb25maWcpID0+IHtcblx0XHRjb25zdCBjb250ZXh0TGF5ZXIgPSBMYXllci5tZXJnZUFsbChcblx0XHRcdExheWVyLnN1Y2NlZWQoUGx1Z2luUmVnaXN0cnlUYWcsIHJlZ2lzdHJ5KSxcblx0XHRcdExheWVyLnN1Y2NlZWQoU2VjcmV0c0NvbmZpZ1RhZywgc2VjcmV0cyksXG5cdFx0KTtcblxuXHRcdGNvbnN0IHNlcnZpY2VzTGF5ZXIgPSBMYXllci5tZXJnZUFsbChcblx0XHRcdE1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlLkRlZmF1bHQsXG5cdFx0XHRTZWNyZXRzU2VydmljZS5EZWZhdWx0LFxuXHRcdFx0UmVnaXN0cnlTZXJ2aWNlLkRlZmF1bHQsXG5cdFx0XHRQbHVnaW5MaWZlY3ljbGVTZXJ2aWNlLkRlZmF1bHQsXG5cdFx0KS5waXBlKFxuXHRcdFx0TGF5ZXIucHJvdmlkZShjb250ZXh0TGF5ZXIpXG5cdFx0KTtcblxuXHRcdHJldHVybiBQbHVnaW5TZXJ2aWNlLkRlZmF1bHQucGlwZShcblx0XHRcdExheWVyLnByb3ZpZGUoUGx1Z2luTG9hZGVyU2VydmljZS5EZWZhdWx0KSxcblx0XHRcdExheWVyLnByb3ZpZGUoc2VydmljZXNMYXllcilcblx0XHQpO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBjcmVhdGVSb3V0ZXJDbGllbnQgfSBmcm9tIFwiQG9ycGMvc2VydmVyXCI7XG5pbXBvcnQgeyBDYXVzZSwgRWZmZWN0LCBFeGl0LCBIYXNoLCBNYW5hZ2VkUnVudGltZSwgT3B0aW9uIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHR5cGUge1xuXHRBbnlQbHVnaW4sXG5cdEluaXRpYWxpemVkUGx1Z2luLFxuXHRMb2FkZWRQbHVnaW4sXG5cdFBsdWdpbkNsaWVudFR5cGUsXG5cdFBsdWdpbkNvbmZpZ0lucHV0LFxuXHRQbHVnaW5JbnN0YW5jZSxcblx0UGx1Z2luUmVnaXN0cnksXG5cdFBsdWdpblJvdXRlclR5cGUsXG5cdFBsdWdpblJ1bnRpbWVDb25maWcsXG5cdFJlZ2lzdGVyZWRQbHVnaW4sXG5cdFJlZ2lzdGVyZWRQbHVnaW5zLFxuXHRVc2VQbHVnaW5SZXN1bHRcbn0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBQbHVnaW5SdW50aW1lRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7IFBsdWdpblNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9wbHVnaW4uc2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgUGx1Z2luUnVudGltZTxSIGV4dGVuZHMgUmVnaXN0ZXJlZFBsdWdpbnMgPSBSZWdpc3RlcmVkUGx1Z2lucz4ge1xuXHRwcml2YXRlIHBsdWdpbkNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIEVmZmVjdC5FZmZlY3Q8SW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPiwgUGx1Z2luUnVudGltZUVycm9yPj4oKTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHJ1bnRpbWU6IE1hbmFnZWRSdW50aW1lLk1hbmFnZWRSdW50aW1lPFBsdWdpblNlcnZpY2UsIG5ldmVyPixcblx0XHRwcml2YXRlIHJlZ2lzdHJ5OiBQbHVnaW5SZWdpc3RyeVxuXHQpIHsgfVxuXG5cdHByaXZhdGUgZ2VuZXJhdGVDYWNoZUtleShwbHVnaW5JZDogc3RyaW5nLCBjb25maWc6IHVua25vd24pOiBzdHJpbmcge1xuXHRcdGNvbnN0IGNvbmZpZ0hhc2ggPSBIYXNoLnN0cnVjdHVyZShjb25maWcgYXMgb2JqZWN0KS50b1N0cmluZygpO1xuXHRcdHJldHVybiBgJHtwbHVnaW5JZH06JHtjb25maWdIYXNofWA7XG5cdH1cblxuXHRwcml2YXRlIHZhbGlkYXRlUGx1Z2luSWQoXG5cdFx0cGx1Z2luSWQ6IHN0cmluZ1xuXHQpOiBFZmZlY3QuRWZmZWN0PHN0cmluZywgUGx1Z2luUnVudGltZUVycm9yPiB7XG5cdFx0aWYgKCEocGx1Z2luSWQgaW4gdGhpcy5yZWdpc3RyeSkpIHtcblx0XHRcdHJldHVybiBFZmZlY3QuZmFpbChuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0cGx1Z2luSWQ6IFN0cmluZyhwbHVnaW5JZCksXG5cdFx0XHRcdG9wZXJhdGlvbjogXCJ2YWxpZGF0ZS1wbHVnaW4taWRcIixcblx0XHRcdFx0Y2F1c2U6IG5ldyBFcnJvcihgUGx1Z2luIElEICcke1N0cmluZyhwbHVnaW5JZCl9JyBub3QgZm91bmQgaW4gcmVnaXN0cnkuYCksXG5cdFx0XHRcdHJldHJ5YWJsZTogZmFsc2UsXG5cdFx0XHR9KSk7XG5cdFx0fVxuXHRcdHJldHVybiBFZmZlY3Quc3VjY2VlZChTdHJpbmcocGx1Z2luSWQpKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgcnVuUHJvbWlzZTxBLCBFPihcblx0XHRlZmZlY3Q6IEVmZmVjdC5FZmZlY3Q8QSwgRSwgUGx1Z2luU2VydmljZT5cblx0KTogUHJvbWlzZTxBPiB7XG5cdFx0Y29uc3QgZXhpdCA9IGF3YWl0IHRoaXMucnVudGltZS5ydW5Qcm9taXNlRXhpdChlZmZlY3QpO1xuXG5cdFx0aWYgKEV4aXQuaXNGYWlsdXJlKGV4aXQpKSB7XG5cdFx0XHRjb25zdCBlcnJvciA9IENhdXNlLmZhaWx1cmVPcHRpb24oZXhpdC5jYXVzZSk7XG5cdFx0XHRpZiAoT3B0aW9uLmlzU29tZShlcnJvcikpIHtcblx0XHRcdFx0dGhyb3cgZXJyb3IudmFsdWU7XG5cdFx0XHR9XG5cdFx0XHR0aHJvdyBDYXVzZS5zcXVhc2goZXhpdC5jYXVzZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV4aXQudmFsdWU7XG5cdH1cblxuXHRhc3luYyB1c2VQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogSyxcblx0XHRjb25maWc6IFBsdWdpbkNvbmZpZ0lucHV0PFJbS10+XG5cdCk6IFByb21pc2U8VXNlUGx1Z2luUmVzdWx0PEs+PiB7XG5cdFx0Y29uc3QgY2FjaGVLZXkgPSB0aGlzLmdlbmVyYXRlQ2FjaGVLZXkocGx1Z2luSWQsIGNvbmZpZyk7XG5cblx0XHRsZXQgY2FjaGVkUGx1Z2luID0gdGhpcy5wbHVnaW5DYWNoZS5nZXQoY2FjaGVLZXkpO1xuXHRcdGlmICghY2FjaGVkUGx1Z2luKSB7XG5cdFx0XHRjb25zdCBvcGVyYXRpb24gPSBFZmZlY3QuZ2VuKHRoaXMsIGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdGNvbnN0IHBsdWdpblNlcnZpY2UgPSB5aWVsZCogUGx1Z2luU2VydmljZTtcblx0XHRcdFx0Y29uc3QgdmFsaWRhdGVkSWQgPSB5aWVsZCogdGhpcy52YWxpZGF0ZVBsdWdpbklkKHBsdWdpbklkKTtcblxuXHRcdFx0XHQvLyBMb2FkIOKGkiBJbnN0YW50aWF0ZSDihpIgSW5pdGlhbGl6ZVxuXHRcdFx0XHRjb25zdCBjdG9yID0geWllbGQqIHBsdWdpblNlcnZpY2UubG9hZFBsdWdpbih2YWxpZGF0ZWRJZCk7XG5cdFx0XHRcdGNvbnN0IGluc3RhbmNlID0geWllbGQqIHBsdWdpblNlcnZpY2UuaW5zdGFudGlhdGVQbHVnaW4ocGx1Z2luSWQsIGN0b3IpO1xuXHRcdFx0XHRjb25zdCBpbml0aWFsaXplZCA9IHlpZWxkKiBwbHVnaW5TZXJ2aWNlLmluaXRpYWxpemVQbHVnaW4oaW5zdGFuY2UsIGNvbmZpZyk7XG5cblx0XHRcdFx0cmV0dXJuIGluaXRpYWxpemVkO1xuXHRcdFx0fSkucGlwZShFZmZlY3QucHJvdmlkZSh0aGlzLnJ1bnRpbWUpKTtcblxuXHRcdFx0Y2FjaGVkUGx1Z2luID0gRWZmZWN0LmNhY2hlZChvcGVyYXRpb24pLnBpcGUoRWZmZWN0LmZsYXR0ZW4pO1xuXHRcdFx0dGhpcy5wbHVnaW5DYWNoZS5zZXQoY2FjaGVLZXksIGNhY2hlZFBsdWdpbik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgaW5pdGlhbGl6ZWQgPSBhd2FpdCB0aGlzLnJ1blByb21pc2UoY2FjaGVkUGx1Z2luKTtcblx0XHRjb25zdCByb3V0ZXIgPSBpbml0aWFsaXplZC5wbHVnaW4uY3JlYXRlUm91dGVyKGluaXRpYWxpemVkLmNvbnRleHQpO1xuXHRcdGNvbnN0IGNsaWVudCA9IGNyZWF0ZVJvdXRlckNsaWVudChyb3V0ZXIpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHJvdXRlcjogcm91dGVyIGFzIFBsdWdpblJvdXRlclR5cGU8UltLXT4sXG5cdFx0XHRjbGllbnQ6IGNsaWVudCBhcyBQbHVnaW5DbGllbnRUeXBlPFJbS10+LFxuXHRcdFx0bWV0YWRhdGE6IGluaXRpYWxpemVkLm1ldGFkYXRhLFxuXHRcdFx0aW5pdGlhbGl6ZWQ6IGluaXRpYWxpemVkIGFzIEluaXRpYWxpemVkUGx1Z2luPFJlZ2lzdGVyZWRQbHVnaW48Sz4+XG5cdFx0fSBhcyBVc2VQbHVnaW5SZXN1bHQ8Sz47XG5cdH1cblxuXHRhc3luYyBsb2FkUGx1Z2luPEsgZXh0ZW5kcyBrZXlvZiBSZWdpc3RlcmVkUGx1Z2lucyAmIHN0cmluZz4oXG5cdFx0cGx1Z2luSWQ6IEtcblx0KTogUHJvbWlzZTxMb2FkZWRQbHVnaW48UmVnaXN0ZXJlZFBsdWdpbjxLPj4+IHtcblx0XHRjb25zdCBlZmZlY3QgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRjb25zdCBwbHVnaW5TZXJ2aWNlID0geWllbGQqIFBsdWdpblNlcnZpY2U7XG5cdFx0XHRyZXR1cm4geWllbGQqIHBsdWdpblNlcnZpY2UubG9hZFBsdWdpbihwbHVnaW5JZCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMucnVuUHJvbWlzZShlZmZlY3QpIGFzIFByb21pc2U8TG9hZGVkUGx1Z2luPFJlZ2lzdGVyZWRQbHVnaW48Sz4+Pjtcblx0fVxuXG5cdGFzeW5jIGluc3RhbnRpYXRlUGx1Z2luPEsgZXh0ZW5kcyBrZXlvZiBSZWdpc3RlcmVkUGx1Z2lucyAmIHN0cmluZz4oXG5cdFx0cGx1Z2luSWQ6IEssXG5cdFx0bG9hZGVkUGx1Z2luOiBMb2FkZWRQbHVnaW48UmVnaXN0ZXJlZFBsdWdpbjxLPj5cblx0KTogUHJvbWlzZTxQbHVnaW5JbnN0YW5jZTxSZWdpc3RlcmVkUGx1Z2luPEs+Pj4ge1xuXHRcdGNvbnN0IGVmZmVjdCA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdGNvbnN0IHBsdWdpblNlcnZpY2UgPSB5aWVsZCogUGx1Z2luU2VydmljZTtcblx0XHRcdHJldHVybiB5aWVsZCogcGx1Z2luU2VydmljZS5pbnN0YW50aWF0ZVBsdWdpbihwbHVnaW5JZCwgbG9hZGVkUGx1Z2luKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gdGhpcy5ydW5Qcm9taXNlKGVmZmVjdCkgYXMgUHJvbWlzZTxQbHVnaW5JbnN0YW5jZTxSZWdpc3RlcmVkUGx1Z2luPEs+Pj47XG5cdH1cblxuXHRhc3luYyBpbml0aWFsaXplUGx1Z2luPFQgZXh0ZW5kcyBBbnlQbHVnaW4+KFxuXHRcdGluc3RhbmNlOiBQbHVnaW5JbnN0YW5jZTxUPixcblx0XHRjb25maWc6IGFueVxuXHQpOiBQcm9taXNlPEluaXRpYWxpemVkUGx1Z2luPFQ+PiB7XG5cdFx0Y29uc3QgZWZmZWN0ID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0Y29uc3QgcGx1Z2luU2VydmljZSA9IHlpZWxkKiBQbHVnaW5TZXJ2aWNlO1xuXHRcdFx0cmV0dXJuIHlpZWxkKiBwbHVnaW5TZXJ2aWNlLmluaXRpYWxpemVQbHVnaW4oaW5zdGFuY2UsIGNvbmZpZyk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMucnVuUHJvbWlzZShlZmZlY3QpO1xuXHR9XG5cblx0YXN5bmMgc2h1dGRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgZWZmZWN0ID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0Y29uc3QgcGx1Z2luU2VydmljZSA9IHlpZWxkKiBQbHVnaW5TZXJ2aWNlO1xuXHRcdFx0eWllbGQqIHBsdWdpblNlcnZpY2UuY2xlYW51cCgpO1xuXHRcdH0pO1xuXHRcdHJldHVybiB0aGlzLnJ1blByb21pc2UoZWZmZWN0KTtcblx0fVxuXG5cdGFzeW5jIGV2aWN0UGx1Z2luPEsgZXh0ZW5kcyBrZXlvZiBSZWdpc3RlcmVkUGx1Z2lucyAmIHN0cmluZz4oXG5cdFx0cGx1Z2luSWQ6IEssXG5cdFx0Y29uZmlnOiBQbHVnaW5Db25maWdJbnB1dDxSZWdpc3RlcmVkUGx1Z2luc1tLXT5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgY2FjaGVLZXkgPSB0aGlzLmdlbmVyYXRlQ2FjaGVLZXkocGx1Z2luSWQsIGNvbmZpZyk7XG5cblx0XHRjb25zdCBlZmZlY3QgPSBFZmZlY3QuZ2VuKHRoaXMsIGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRjb25zdCBwbHVnaW5TZXJ2aWNlID0geWllbGQqIFBsdWdpblNlcnZpY2U7XG5cdFx0XHRjb25zdCBjYWNoZWRQbHVnaW4gPSB0aGlzLnBsdWdpbkNhY2hlLmdldChjYWNoZUtleSk7XG5cblx0XHRcdGlmIChjYWNoZWRQbHVnaW4pIHtcblx0XHRcdFx0dGhpcy5wbHVnaW5DYWNoZS5kZWxldGUoY2FjaGVLZXkpO1xuXG5cdFx0XHRcdGNvbnN0IHBsdWdpblJlc3VsdCA9IHlpZWxkKiBjYWNoZWRQbHVnaW4ucGlwZShcblx0XHRcdFx0XHRFZmZlY3QuY2F0Y2hBbGwoKCkgPT4gRWZmZWN0LnN1Y2NlZWQobnVsbCkpXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0aWYgKHBsdWdpblJlc3VsdCkge1xuXHRcdFx0XHRcdHlpZWxkKiBwbHVnaW5TZXJ2aWNlLnNodXRkb3duUGx1Z2luKHBsdWdpblJlc3VsdCkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5jYXRjaEFsbCgoKSA9PiBFZmZlY3Qudm9pZClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSkucGlwZShFZmZlY3QuY2F0Y2hBbGwoKCkgPT4gRWZmZWN0LnZvaWQpKTtcblxuXHRcdHJldHVybiB0aGlzLnJ1blByb21pc2UoZWZmZWN0KTtcblx0fVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSByZW1vdGUgVVJMIHRvIGVuc3VyZSBpdCBwb2ludHMgdG8gcmVtb3RlRW50cnkuanNcbiAqIElmIHRoZSBVUkwgZG9lc24ndCBlbmQgd2l0aCBhIGZpbGUgZXh0ZW5zaW9uLCBhcHBlbmRzIC9yZW1vdGVFbnRyeS5qc1xuICovXG5mdW5jdGlvbiBub3JtYWxpemVSZW1vdGVVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRpZiAodXJsLmVuZHNXaXRoKCcuanMnKSkgcmV0dXJuIHVybDsgLy8gQWxyZWFkeSBhIGZpbGVcblx0cmV0dXJuIGAke3VybC5lbmRzV2l0aCgnLycpID8gdXJsLnNsaWNlKDAsIC0xKSA6IHVybH0vcmVtb3RlRW50cnkuanNgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGx1Z2luUnVudGltZShcblx0Y29uZmlnOiBQbHVnaW5SdW50aW1lQ29uZmlnXG4pOiBQbHVnaW5SdW50aW1lIHtcblx0Y29uc3Qgc2VjcmV0cyA9IGNvbmZpZy5zZWNyZXRzIHx8IHt9O1xuXG5cdC8vIE5vcm1hbGl6ZSBhbGwgcmVtb3RlIFVSTHMgaW4gdGhlIHJlZ2lzdHJ5XG5cdGNvbnN0IG5vcm1hbGl6ZWRSZWdpc3RyeSA9IE9iamVjdC5mcm9tRW50cmllcyhcblx0XHRPYmplY3QuZW50cmllcyhjb25maWcucmVnaXN0cnkpLm1hcCgoW3BsdWdpbklkLCBlbnRyeV0pID0+IFtcblx0XHRcdHBsdWdpbklkLFxuXHRcdFx0e1xuXHRcdFx0XHQuLi5lbnRyeSxcblx0XHRcdFx0cmVtb3RlVXJsOiBub3JtYWxpemVSZW1vdGVVcmwoZW50cnkucmVtb3RlVXJsKVxuXHRcdFx0fVxuXHRcdF0pXG5cdCkgYXMgUGx1Z2luUmVnaXN0cnk7XG5cblx0Y29uc3QgbGF5ZXIgPSBQbHVnaW5TZXJ2aWNlLkxpdmUobm9ybWFsaXplZFJlZ2lzdHJ5LCBzZWNyZXRzKTtcblx0Y29uc3QgcnVudGltZSA9IE1hbmFnZWRSdW50aW1lLm1ha2UobGF5ZXIpO1xuXG5cdHJldHVybiBuZXcgUGx1Z2luUnVudGltZShydW50aW1lLCBub3JtYWxpemVkUmVnaXN0cnkpO1xufSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBSUEsSUFBYSxxQkFBYixjQUF3Q0EsWUFBSyxZQUFZLHFCQUFxQixDQU0zRTtBQUVILElBQWEsd0JBQWIsY0FB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
|
package/dist/testing/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const require_chunk = require('../chunk-zltIcp7o.cjs');
|
|
2
|
-
const require_runtime = require('../runtime-
|
|
2
|
+
const require_runtime = require('../runtime-D5bSEcHa.cjs');
|
|
3
3
|
require('../normalize-D4Qh0wVk.cjs');
|
|
4
|
-
require('../package-
|
|
4
|
+
require('../package-CMoV9xVN.cjs');
|
|
5
5
|
let effect = require("effect");
|
|
6
6
|
|
|
7
7
|
//#region src/testing/mocks/module-federation.service.ts
|
package/dist/testing/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as PluginRegistryTag, c as SecretsService, d as ModuleFederationError, i as PluginLoaderService, l as PluginLifecycleService, o as RegistryService, r as PluginService, s as SecretsConfigTag, t as PluginRuntime, u as ModuleFederationService } from "../runtime-
|
|
1
|
+
import { a as PluginRegistryTag, c as SecretsService, d as ModuleFederationError, i as PluginLoaderService, l as PluginLifecycleService, o as RegistryService, r as PluginService, s as SecretsConfigTag, t as PluginRuntime, u as ModuleFederationService } from "../runtime-B4AItsDQ.mjs";
|
|
2
2
|
import "../normalize-D7nae0Hn.mjs";
|
|
3
|
-
import "../package-
|
|
3
|
+
import "../package-WZ0vKAyb.mjs";
|
|
4
4
|
import { Effect, Layer, ManagedRuntime } from "effect";
|
|
5
5
|
|
|
6
6
|
//#region src/testing/mocks/module-federation.service.ts
|