@cdktn/provider-generator 0.23.0-pre.46 → 0.23.0-pre.49

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.
@@ -116,7 +116,7 @@ onTf1_6AndNewer("generate module that can't be initialized", async () => {
116
116
  expect(output).toMatchInlineSnapshot(`
117
117
  "// generated by cdktn get
118
118
  // milliHQ/next-js/aws
119
- import { TerraformModule, TerraformModuleUserConfig } from 'cdktn';
119
+ import { TerraformModule, type TerraformModuleUserConfig } from 'cdktn';
120
120
  import { Construct } from 'constructs';
121
121
  export interface NextJsConfig extends TerraformModuleUserConfig {
122
122
  /**
@@ -473,4 +473,4 @@ onTf1_6AndNewer("generate module that can't be initialized", async () => {
473
473
  "
474
474
  `);
475
475
  }, 120000);
476
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWdlbmVyYXRvci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dldC9fX3Rlc3RzX18vZ2VuZXJhdG9yL21vZHVsZS1nZW5lcmF0b3IudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx1Q0FBeUI7QUFDekIsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw0Q0FBcUU7QUFDckUsNkRBQXlEO0FBQ3pELGtDQUFzRDtBQUN0RCxpREFBeUM7QUFFekMsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsSUFBWSxFQUNaLEVBQXVCLEVBQ3ZCLE9BQWdCLEVBQ2hCLEVBQUU7SUFDRixNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLElBQUksV0FBVyxDQUFDO0lBQzdFLE1BQU0sTUFBTSxHQUFHLElBQUEsd0JBQVEsRUFBQyxHQUFHLG1CQUFtQixnQkFBZ0IsQ0FBQyxDQUFDO0lBRWhFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztJQUVsRSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkQsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRSxJQUFJ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LENBQ3hELENBQUM7SUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLG1DQUF5QixDQUM5QyxvQ0FBb0MsQ0FDckMsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLElBQUksa0NBQWUsQ0FDL0I7UUFDRSxlQUFlLEVBQUUsT0FBTztRQUN4QixjQUFjLEVBQUUsa0JBQVEsQ0FBQyxVQUFVO0tBQ3BDLEVBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2Q0FBNkMsQ0FDMUQsQ0FBQztJQUNGLE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFFbkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0NBQWdDLENBQUMsRUFDcEQsT0FBTyxDQUNSLENBQUM7SUFFRixtRkFBbUY7SUFDbkYsOERBQThEO0lBQzlELDJEQUEyRDtJQUMzRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMscUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FzV3BDLENBQUMsQ0FBQztBQUNMLENBQUMsRUFDRCxNQUFNLENBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIG9zIGZyb20gXCJvc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgTGFuZ3VhZ2UsIFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdHNNYWtlciB9IGZyb20gXCIuLi8uLi9jb25zdHJ1Y3RzLW1ha2VyXCI7XG5pbXBvcnQgeyBleHBlY3RNb2R1bGVUb01hdGNoU25hcHNob3QgfSBmcm9tIFwiLi4vdXRpbFwiO1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuXG5jb25zdCBvblRmMV82QW5kTmV3ZXIgPSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgZm46ICgpID0+IFByb21pc2U8dm9pZD4sXG4gIHRpbWVvdXQ/OiBudW1iZXIsXG4pID0+IHtcbiAgY29uc3QgdGVycmFmb3JtQmluYXJ5TmFtZSA9IHByb2Nlc3MuZW52LlRFUlJBRk9STV9CSU5BUllfTkFNRSB8fCBcInRlcnJhZm9ybVwiO1xuICBjb25zdCBvdXRwdXQgPSBleGVjU3luYyhgJHt0ZXJyYWZvcm1CaW5hcnlOYW1lfSB2ZXJzaW9uIC1qc29uYCk7XG5cbiAgaWYgKCFvdXRwdXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZGV0ZXJtaW5lIFRlcnJhZm9ybSB2ZXJzaW9uXCIpO1xuICB9XG5cbiAgY29uc3QgdGZWZXJzaW9uID0gSlNPTi5wYXJzZShvdXRwdXQudG9TdHJpbmcoKSkudGVycmFmb3JtX3ZlcnNpb247XG5cbiAgY29uc3QgW21ham9yLCBtaW5vcl0gPSB0ZlZlcnNpb24udG9TdHJpbmcoKS5zcGxpdChcIi5cIik7XG4gIGlmIChOdW1iZXIobWFqb3IpIDwgMSB8fCAoTnVtYmVyKG1ham9yKSA9PT0gMSAmJiBOdW1iZXIobWlub3IpIDwgNikpIHtcbiAgICB0ZXN0LnNraXAoXG4gICAgICBgJHtuYW1lfSAocmVxdWlyZXMgVGVycmFmb3JtID49IDEuNi4wOyBidXQgaXMgJHt0ZlZlcnNpb259KWAsXG4gICAgICBmbixcbiAgICAgIHRpbWVvdXQsXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICB0ZXN0KG5hbWUsIGZuLCB0aW1lb3V0KTtcbiAgfVxufTtcblxudGVzdChcImdlbmVyYXRlIHNvbWUgbW9kdWxlc1wiLCBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHdvcmtkaXIgPSBmcy5ta2R0ZW1wU3luYyhcbiAgICBwYXRoLmpvaW4ob3MudG1wZGlyKCksIFwibW9kdWxlLWdlbmVyYXRvci50ZXN0XCIpLFxuICApO1xuICBjb25zdCBjb25zdHJhaW50ID0gbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoXG4gICAgXCJ0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvZWtzL2F3c0A3LjAuMVwiLFxuICApO1xuXG4gIGNvbnN0IG1ha2VyID0gbmV3IENvbnN0cnVjdHNNYWtlcihcbiAgICB7XG4gICAgICBjb2RlTWFrZXJPdXRwdXQ6IHdvcmtkaXIsXG4gICAgICB0YXJnZXRMYW5ndWFnZTogTGFuZ3VhZ2UuVFlQRVNDUklQVCxcbiAgICB9LFxuICAgIHByb2Nlc3MuZW52LkNES1RGX0VYUEVSSU1FTlRBTF9QUk9WSURFUl9TQ0hFTUFfQ0FDSEVfUEFUSCxcbiAgKTtcbiAgYXdhaXQgbWFrZXIuZ2VuZXJhdGUoW2NvbnN0cmFpbnRdKTtcblxuICBjb25zdCBvdXRwdXQgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgcGF0aC5qb2luKHdvcmtkaXIsIFwibW9kdWxlcy90ZXJyYWZvcm0tYXdzLW1vZHVsZXMvYXdzL2Vrcy50c1wiKSxcbiAgICBcInV0Zi04XCIsXG4gICk7XG4gIGV4cGVjdChvdXRwdXQpLnRvTWF0Y2hTbmFwc2hvdCgpO1xufSwgMTIwMDAwKTtcblxuZXhwZWN0TW9kdWxlVG9NYXRjaFNuYXBzaG90KFwibm8gbW9kdWxlIG91dHB1dHNcIiwgXCJnZW5lcmF0b3JcIiwgW1xuICBcIm1vZHVsZS1uby1vdXRwdXRzLnRlc3QuZml4dHVyZS50ZlwiLFxuXSk7XG5cbmV4cGVjdE1vZHVsZVRvTWF0Y2hTbmFwc2hvdChcInR5cGVsZXNzIHZhcmlhYmxlc1wiLCBcImdlbmVyYXRvclwiLCBbXG4gIFwibW9kdWxlLW5vLXZhcmlhYmxlLXR5cGUudGVzdC5maXh0dXJlLnRmXCIsXG5dKTtcblxuZXhwZWN0TW9kdWxlVG9NYXRjaFNuYXBzaG90KFwibm8gbmV3bGluZVwiLCBcImdlbmVyYXRvclwiLCBbXG4gIFwibW9kdWxlLW5vLW5ld2xpbmUtMS50ZXN0LmZpeHR1cmUudGZcIixcbiAgXCJtb2R1bGUtbm8tbmV3bGluZS0yLnRlc3QuZml4dHVyZS50ZlwiLFxuXSk7XG5cbnRlc3QoXCJnZW5lcmF0ZSBtdWx0aXBsZSBhd3MgbW9kdWxlc1wiLCBhc3luYyAoKSA9PiB7XG4gIGplc3Quc2V0VGltZW91dCgxMjAwMDApO1xuXG4gIGNvbnN0IHdvcmtkaXIgPSBmcy5ta2R0ZW1wU3luYyhcbiAgICBwYXRoLmpvaW4ob3MudG1wZGlyKCksIFwibW9kdWxlLWdlbmVyYXRvci1hd3MudGVzdFwiKSxcbiAgKTtcbiAgY29uc3QgY29uc3RyYWludHMgPSBbXG4gICAgbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoXCJ0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvdnBjL2F3c0AyLjc4LjBcIiksXG4gICAgbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoXCJ0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvcmRzLWF1cm9yYS9hd3NANC4xLjBcIiksXG4gIF07XG5cbiAgY29uc3QgbWFrZXIgPSBuZXcgQ29uc3RydWN0c01ha2VyKFxuICAgIHtcbiAgICAgIGNvZGVNYWtlck91dHB1dDogd29ya2RpcixcbiAgICAgIHRhcmdldExhbmd1YWdlOiBMYW5ndWFnZS5UWVBFU0NSSVBULFxuICAgIH0sXG4gICAgcHJvY2Vzcy5lbnYuQ0RLVEZfRVhQRVJJTUVOVEFMX1BST1ZJREVSX1NDSEVNQV9DQUNIRV9QQVRILFxuICApO1xuICBhd2FpdCBtYWtlci5nZW5lcmF0ZShjb25zdHJhaW50cyk7XG5cbiAgY29uc3QgdnBjT3V0cHV0ID0gZnMucmVhZEZpbGVTeW5jKFxuICAgIHBhdGguam9pbih3b3JrZGlyLCBcIm1vZHVsZXMvdGVycmFmb3JtLWF3cy1tb2R1bGVzL2F3cy92cGMudHNcIiksXG4gICAgXCJ1dGYtOFwiLFxuICApO1xuICBleHBlY3QodnBjT3V0cHV0KS50b01hdGNoU25hcHNob3QoKTtcblxuICBjb25zdCByZHNPdXRwdXQgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgcGF0aC5qb2luKHdvcmtkaXIsIFwibW9kdWxlcy90ZXJyYWZvcm0tYXdzLW1vZHVsZXMvYXdzL3Jkcy1hdXJvcmEudHNcIiksXG4gICAgXCJ1dGYtOFwiLFxuICApO1xuICBleHBlY3QocmRzT3V0cHV0KS50b01hdGNoU25hcHNob3QoKTtcbn0sIDEyMDAwMCk7XG5cbnRlc3QoXCJnZW5lcmF0ZSBuZXN0ZWQgbW9kdWxlXCIsIGFzeW5jICgpID0+IHtcbiAgY29uc3Qgd29ya2RpciA9IGZzLm1rZHRlbXBTeW5jKFxuICAgIHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJtb2R1bGUtZ2VuZXJhdG9yLW5lc3RlZC50ZXN0XCIpLFxuICApO1xuICBjb25zdCBjb25zdHJhaW50ID0gbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoXG4gICAgXCJ0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvdnBjL2F3cy8vbW9kdWxlcy92cGMtZW5kcG9pbnRzQDMuMTkuMFwiLFxuICApO1xuXG4gIGNvbnN0IG1ha2VyID0gbmV3IENvbnN0cnVjdHNNYWtlcihcbiAgICB7XG4gICAgICBjb2RlTWFrZXJPdXRwdXQ6IHdvcmtkaXIsXG4gICAgICB0YXJnZXRMYW5ndWFnZTogTGFuZ3VhZ2UuVFlQRVNDUklQVCxcbiAgICB9LFxuICAgIHByb2Nlc3MuZW52LkNES1RGX0VYUEVSSU1FTlRBTF9QUk9WSURFUl9TQ0hFTUFfQ0FDSEVfUEFUSCxcbiAgKTtcbiAgYXdhaXQgbWFrZXIuZ2VuZXJhdGUoW2NvbnN0cmFpbnRdKTtcblxuICBjb25zdCBvdXRwdXQgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgcGF0aC5qb2luKFxuICAgICAgd29ya2RpcixcbiAgICAgIFwibW9kdWxlcy90ZXJyYWZvcm0tYXdzLW1vZHVsZXMvYXdzL3ZwYy9tb2R1bGVzL3ZwYy1lbmRwb2ludHMudHNcIixcbiAgICApLFxuICAgIFwidXRmLThcIixcbiAgKTtcbiAgZXhwZWN0KG91dHB1dCkudG9NYXRjaFNuYXBzaG90KCk7XG59LCAxMjAwMDApO1xuXG5leHBlY3RNb2R1bGVUb01hdGNoU25hcHNob3QoXCJnZXRYIHZhcmlhYmxlc1wiLCBcImdlbmVyYXRvclwiLCBbXG4gIFwibW9kdWxlLWdldC14LnRlc3QuZml4dHVyZS50ZlwiLFxuXSk7XG5cbmV4cGVjdE1vZHVsZVRvTWF0Y2hTbmFwc2hvdChcbiAgXCJoYW5kbGUgKi8qIGluIG1vZHVsZSB2YXJpYWJsZSBkZWZhdWx0IHN0cmluZ1wiLFxuICBcImdlbmVyYXRvclwiLFxuICBbXCJtb2R1bGUtd2l0aC1zdGFyLWRlZmF1bHQudGVzdC5maXh0dXJlLnRmXCJdLFxuKTtcblxub25UZjFfNkFuZE5ld2VyKFxuICBcImdlbmVyYXRlIG1vZHVsZSB0aGF0IGNhbid0IGJlIGluaXRpYWxpemVkXCIsXG4gIGFzeW5jICgpID0+IHtcbiAgICBqZXN0LnNldFRpbWVvdXQoMTIwMDAwKTtcblxuICAgIGNvbnN0IHdvcmtkaXIgPSBmcy5ta2R0ZW1wU3luYyhcbiAgICAgIHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJtb2R1bGUtZ2VuZXJhdG9yLnRlc3Qtbm8taW5pdFwiKSxcbiAgICApO1xuICAgIGNvbnN0IGNvbnN0cmFpbnQgPSBuZXcgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludChcbiAgICAgIFwibWlsbGlIUS9uZXh0LWpzL2F3c0AxLjAuMC1jYW5hcnkuNVwiLFxuICAgICk7XG5cbiAgICBjb25zdCBtYWtlciA9IG5ldyBDb25zdHJ1Y3RzTWFrZXIoXG4gICAgICB7XG4gICAgICAgIGNvZGVNYWtlck91dHB1dDogd29ya2RpcixcbiAgICAgICAgdGFyZ2V0TGFuZ3VhZ2U6IExhbmd1YWdlLlRZUEVTQ1JJUFQsXG4gICAgICB9LFxuICAgICAgcHJvY2Vzcy5lbnYuQ0RLVEZfRVhQRVJJTUVOVEFMX1BST1ZJREVSX1NDSEVNQV9DQUNIRV9QQVRILFxuICAgICk7XG4gICAgYXdhaXQgbWFrZXIuZ2VuZXJhdGUoW2NvbnN0cmFpbnRdKTtcblxuICAgIGNvbnN0IG91dHB1dCA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgIHBhdGguam9pbih3b3JrZGlyLCBcIm1vZHVsZXMvbWlsbGlIUS9hd3MvbmV4dC1qcy50c1wiKSxcbiAgICAgIFwidXRmLThcIixcbiAgICApO1xuXG4gICAgLy8geWVzLCB0aGlzIGlzIGEgbG90IG9mIGNvZGUsIGJ1dCB0aGlzIHRlc3QgaXMgc2tpcHBlZCBmb3Igc29tZSBUZXJyYWZvcm0gdmVyc2lvbnNcbiAgICAvLyB3aGljaCB0aGVuIHNob3dzIHNuYXBzaG90cyBhcyBvYnNvbGV0ZSB3aGljaCBmYWlscyB0aGUgdGVzdFxuICAgIC8vIHRoaXMgd2F5LCB0aGVyZSdzIG5vIHN1Y2ggcHJvYmxlbSBpZiB0aGUgdGVzdCBpcyBza2lwcGVkXG4gICAgZXhwZWN0KG91dHB1dCkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbiAgICAgIFwiLy8gZ2VuZXJhdGVkIGJ5IGNka3RuIGdldFxuICAgICAgLy8gbWlsbGlIUS9uZXh0LWpzL2F3c1xuICAgICAgaW1wb3J0IHsgVGVycmFmb3JtTW9kdWxlLCBUZXJyYWZvcm1Nb2R1bGVVc2VyQ29uZmlnIH0gZnJvbSAnY2RrdG4nO1xuICAgICAgaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG4gICAgICBleHBvcnQgaW50ZXJmYWNlIE5leHRKc0NvbmZpZyBleHRlbmRzIFRlcnJhZm9ybU1vZHVsZVVzZXJDb25maWcge1xuICAgICAgICAvKipcbiAgICAgICAgKiBBQ00gY2VydGlmaWNhdGUgYXJuIGZvciBjdXN0b21fZG9tYWluXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGNsb3VkZnJvbnRBY21DZXJ0aWZpY2F0ZUFybj86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICogQWxpYXNlcyBmb3IgY3VzdG9tX2RvbWFpblxuICAgICAgICAqXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGNsb3VkZnJvbnRBbGlhc2VzPzogc3RyaW5nW107XG4gICAgICAgIC8qKlxuICAgICAgICAqIEhlYWRlciBrZXlzIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBjYWNoZSBrZXkgaW4gQ2xvdWRGcm9udC5cbiAgICAgICAgKiBBdXRob3JpemF0aW9uXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGNsb3VkZnJvbnRDYWNoZUtleUhlYWRlcnM/OiBzdHJpbmdbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgbWFpbiBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBzaG91bGQgYmUgY3JlYXRlZC5cbiAgICAgICAgKiB0cnVlXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGNsb3VkZnJvbnRDcmVhdGVEaXN0cmlidXRpb24/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgKiBXaGVuIHVzaW5nIGFuIGV4dGVybmFsIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uIHByb3ZpZGUgaXRzIGFybi5cbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgY2xvdWRmcm9udEV4dGVybmFsQXJuPzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgKiBXaGVuIHVzaW5nIGFuIGV4dGVybmFsIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uIHByb3ZpZGUgaXRzIGlkLlxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBjbG91ZGZyb250RXh0ZXJuYWxJZD86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICogVGhlIG1pbmltdW0gdmVyc2lvbiBvZiB0aGUgU1NMIHByb3RvY29sIHRoYXQgeW91IHdhbnQgQ2xvdWRGcm9udCB0byB1c2UgZm9yIEhUVFBTIGNvbm5lY3Rpb25zLiBPbmUgb2YgU1NMdjMsIFRMU3YxLCBUTFN2MV8yMDE2LCBUTFN2MS4xXzIwMTYsIFRMU3YxLjJfMjAxOCBvciBUTFN2MS4yXzIwMTkuXG4gICAgICAgICogVExTdjFcbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgY2xvdWRmcm9udE1pbmltdW1Qcm90b2NvbFZlcnNpb24/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAqIElkIG9mIGEgY3VzdG9tIHJlcXVlc3QgcG9saWN5IHRoYXQgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHBvbGljeSAoQWxsVmlld2VyKS4gQ2FuIGJlIGN1c3RvbSBvciBtYW5hZ2VkLlxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBjbG91ZGZyb250T3JpZ2luUmVxdWVzdFBvbGljeT86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICogUHJpY2UgY2xhc3MgZm9yIHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbnMgKG1haW4gJiBwcm94eSBjb25maWcpLiBPbmUgb2YgUHJpY2VDbGFzc19BbGwsIFByaWNlQ2xhc3NfMjAwLCBQcmljZUNsYXNzXzEwMC5cbiAgICAgICAgKiBQcmljZUNsYXNzXzEwMFxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBjbG91ZGZyb250UHJpY2VDbGFzcz86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICogSWQgb2YgYSByZXNwb25zZSBoZWFkZXJzIHBvbGljeS4gQ2FuIGJlIGN1c3RvbSBvciBtYW5hZ2VkLiBEZWZhdWx0IGlzIGVtcHR5LlxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBjbG91ZGZyb250UmVzcG9uc2VIZWFkZXJzUG9saWN5Pzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgKiBBbiBvcHRpb25hbCB3ZWJhY2wyIGFybiBvciB3ZWJhY2wgaWQgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGNsb3VkZnJvbnQgZGlzdHJpYnV0aW9uXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGNsb3VkZnJvbnRXZWJhY2xJZD86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICogQ29udHJvbHMgd2hldGhlciByZXNvdXJjZXMgZm9yIGltYWdlIG9wdGltaXphdGlvbiBzdXBwb3J0IHNob3VsZCBiZSBjcmVhdGVkIG9yIG5vdC5cbiAgICAgICAgKiB0cnVlXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGNyZWF0ZUltYWdlT3B0aW1pemF0aW9uPzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICogVXNlIGxvY2FsbHkgYnVpbHQgcGFja2FnZXMgcmF0aGVyIHRoYW4gZG93bmxvYWQgdGhlbSBmcm9tIG5wbS5cbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgZGVidWdVc2VMb2NhbFBhY2thZ2VzPzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICogSWRlbnRpZmllciBmb3IgdGhlIGRlcGxveW1lbnQgZ3JvdXAgKG9ubHkgbG93ZXJjYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCBoeXBoZW5zIGFyZSBhbGxvd2VkKS5cbiAgICAgICAgKiB0Zi1uZXh0XG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGRlcGxveW1lbnROYW1lPzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgKiBDb250cm9scyB3aGV0aGVyIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBydW4gbXVsdGlwbGUgZGVwbG95bWVudHMgaW4gcGFyYWxsZWwgKHJlcXVpcmVzIG11bHRpcGxlX2RlcGxveW1lbnRzX2Jhc2VfZG9tYWluKS5cbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgZW5hYmxlTXVsdGlwbGVEZXBsb3ltZW50cz86IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAqIEFtb3VudCBvZiBtZW1vcnkgaW4gTUIgdGhlIHdvcmtlciBMYW1iZGEgRnVuY3Rpb24gZm9yIGltYWdlIG9wdGltaXphdGlvbiBjYW4gdXNlLiBWYWxpZCB2YWx1ZSBiZXR3ZWVuIDEyOCBNQiB0byAxMCwyNDAgTUIsIGluIDEgTUIgaW5jcmVtZW50cy5cbiAgICAgICAgKiAyLDA0OFxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBpbWFnZU9wdGltaXphdGlvbkxhbWJkYU1lbW9yeVNpemU/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAqIFdoZXRoZXIgdG8gZGVwbG95IGFkZGl0aW9uYWwgbGFtYmRhIEpTT04gcG9saWNpZXMuIElmIGZhbHNlLCBsYW1iZGFfcG9saWN5X2pzb24gd2lsbCBub3QgYmUgYXR0YWNoZWQgdG8gdGhlIGxhbWJkYSBmdW5jdGlvbi4gKE5lY2Vzc2FyeSBzaW5jZSBwb2xpY3kgc3RyaW5ncyBhcmUgb25seSBrbm93biBhZnRlciBhcHBseSB3aGVuIHVzaW5nIFRlcnJhZm9ybXMgZGF0YS5hd3NfaWFtX3BvbGljeV9kb2N1bWVudClcbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgbGFtYmRhQXR0YWNoUG9saWN5SnNvbj86IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAqIFNldCB0byB0cnVlIGlmIHRoZSBMYW1iZGEgZnVuY3Rpb25zIHNob3VsZCBiZSBhdHRhY2hlZCB0byBhIFZQQy4gVXNlIHRoaXMgc2V0dGluZyBpZiBWUEMgcmVzb3VyY2VzIHNob3VsZCBiZSBhY2Nlc3NlZCBieSB0aGUgTGFtYmRhIGZ1bmN0aW9ucy4gV2hlbiBzZXR0aW5nIHRoaXMgdG8gdHJ1ZSwgdXNlIHZwY19zZWN1cml0eV9ncm91cF9pZHMgYW5kIHZwY19zdWJuZXRfaWRzIHRvIHNwZWNpZnkgdGhlIFZQQyBuZXR3b3JraW5nLiBOb3RlIHRoYXQgYXR0YWNoaW5nIHRvIGEgVlBDIHdvdWxkIGludHJvZHVjZSBhIGRlbGF5IG9uIHRvIGNvbGQgc3RhcnRzXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGxhbWJkYUF0dGFjaFRvVnBjPzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICogQWRkaXRpb25hbCBwb2xpY3kgZG9jdW1lbnQgYXMgSlNPTiB0byBhdHRhY2ggdG8gdGhlIExhbWJkYSBGdW5jdGlvbiByb2xlXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGxhbWJkYVBvbGljeUpzb24/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAqIEFSTiBvZiBJQU0gcG9saWN5IHRoYXQgc2NvcGVzIGF3c19pYW1fcm9sZSBhY2Nlc3MgZm9yIHRoZSBsYW1iZGFcbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgbGFtYmRhUm9sZVBlcm1pc3Npb25zQm91bmRhcnk/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAqIERlZmF1bHQgd2lsZGNhcmQgZG9tYWluIHdoZXJlIG5ldyBkZXBsb3ltZW50cyBzaG91bGQgYmUgYXZhaWxhYmxlLiBTaG91bGQgYmUgaW4gdGhlIGZvcm0gb2YgKi5leGFtcGxlLmNvbS5cbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgbXVsdGlwbGVEZXBsb3ltZW50c0Jhc2VEb21haW4/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAqIFRhZyBtZXRhZGF0YSB0byBsYWJlbCBBV1MgcmVzb3VyY2VzIHRoYXQgc3VwcG9ydCB0YWdzLlxuICAgICAgICAqIFRoZSBwcm9wZXJ0eSB0eXBlIGNvbnRhaW5zIGEgbWFwLCB0aGV5IGhhdmUgc3BlY2lhbCBoYW5kbGluZywgcGxlYXNlIHNlZSB7QGxpbmsgY2RrLnRmL21vZHVsZS1tYXAtaW5wdXRzIHRoZSBkb2NzfVxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICogVGFnIG1ldGFkYXRhIHRvIGxhYmVsIEFXUyBTMyBidWNrZXRzLiBPdmVycmlkZXMgdGFncyB3aXRoIHRoZSBzYW1lIG5hbWUgaW4gaW5wdXQgdmFyaWFibGUgdGFncy5cbiAgICAgICAgKiBUaGUgcHJvcGVydHkgdHlwZSBjb250YWlucyBhIG1hcCwgdGhleSBoYXZlIHNwZWNpYWwgaGFuZGxpbmcsIHBsZWFzZSBzZWUge0BsaW5rIGNkay50Zi9tb2R1bGUtbWFwLWlucHV0cyB0aGUgZG9jc31cbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgdGFnc1MzQnVja2V0PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICogVGhlIGxpc3Qgb2YgU2VjdXJpdHkgR3JvdXAgSURzIHRvIGJlIHVzZWQgYnkgdGhlIExhbWJkYSBmdW5jdGlvbnMuIGxhbWJkYV9hdHRhY2hfdG9fdnBjIHNob3VsZCBiZSBzZXQgdG8gdHJ1ZSBmb3IgdGhlc2UgdG8gYmUgYXBwbGllZC5cbiAgICAgICAgKlxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSB2cGNTZWN1cml0eUdyb3VwSWRzPzogc3RyaW5nW107XG4gICAgICAgIC8qKlxuICAgICAgICAqIFRoZSBsaXN0IG9mIFZQQyBzdWJuZXQgSURzIHRvIGF0dGFjaCB0aGUgTGFtYmRhIGZ1bmN0aW9ucy4gbGFtYmRhX2F0dGFjaF90b192cGMgc2hvdWxkIGJlIHNldCB0byB0cnVlIGZvciB0aGVzZSB0byBiZSBhcHBsaWVkLlxuICAgICAgICAqXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IHZwY1N1Ym5ldElkcz86IHN0cmluZ1tdO1xuICAgICAgfVxuICAgICAgLyoqXG4gICAgICAqIERlZmluZXMgYW4gTmV4dEpzIGJhc2VkIG9uIGEgVGVycmFmb3JtIG1vZHVsZVxuICAgICAgKlxuICAgICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL21vZHVsZXMvbWlsbGlIUS9uZXh0LWpzL2F3cy8xLjAuMC1jYW5hcnkuNSBtaWxsaUhRL25leHQtanMvYXdzfVxuICAgICAgKi9cbiAgICAgIGV4cG9ydCBjbGFzcyBOZXh0SnMgZXh0ZW5kcyBUZXJyYWZvcm1Nb2R1bGUge1xuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0czogeyBbbmFtZTogc3RyaW5nXTogYW55IH0gPSB7IH1cbiAgICAgICAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbmZpZzogTmV4dEpzQ29uZmlnID0ge30pIHtcbiAgICAgICAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICAgIHNvdXJjZTogJ21pbGxpSFEvbmV4dC1qcy9hd3MnLFxuICAgICAgICAgICAgdmVyc2lvbjogJzEuMC4wLWNhbmFyeS41JyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNsb3VkZnJvbnRBY21DZXJ0aWZpY2F0ZUFybiA9IGNvbmZpZy5jbG91ZGZyb250QWNtQ2VydGlmaWNhdGVBcm47XG4gICAgICAgICAgdGhpcy5jbG91ZGZyb250QWxpYXNlcyA9IGNvbmZpZy5jbG91ZGZyb250QWxpYXNlcztcbiAgICAgICAgICB0aGlzLmNsb3VkZnJvbnRDYWNoZUtleUhlYWRlcnMgPSBjb25maWcuY2xvdWRmcm9udENhY2hlS2V5SGVhZGVycztcbiAgICAgICAgICB0aGlzLmNsb3VkZnJvbnRDcmVhdGVEaXN0cmlidXRpb24gPSBjb25maWcuY2xvdWRmcm9udENyZWF0ZURpc3RyaWJ1dGlvbjtcbiAgICAgICAgICB0aGlzLmNsb3VkZnJvbnRFeHRlcm5hbEFybiA9IGNvbmZpZy5jbG91ZGZyb250RXh0ZXJuYWxBcm47XG4gICAgICAgICAgdGhpcy5jbG91ZGZyb250RXh0ZXJuYWxJZCA9IGNvbmZpZy5jbG91ZGZyb250RXh0ZXJuYWxJZDtcbiAgICAgICAgICB0aGlzLmNsb3VkZnJvbnRNaW5pbXVtUHJvdG9jb2xWZXJzaW9uID0gY29uZmlnLmNsb3VkZnJvbnRNaW5pbXVtUHJvdG9jb2xWZXJzaW9uO1xuICAgICAgICAgIHRoaXMuY2xvdWRmcm9udE9yaWdpblJlcXVlc3RQb2xpY3kgPSBjb25maWcuY2xvdWRmcm9udE9yaWdpblJlcXVlc3RQb2xpY3k7XG4gICAgICAgICAgdGhpcy5jbG91ZGZyb250UHJpY2VDbGFzcyA9IGNvbmZpZy5jbG91ZGZyb250UHJpY2VDbGFzcztcbiAgICAgICAgICB0aGlzLmNsb3VkZnJvbnRSZXNwb25zZUhlYWRlcnNQb2xpY3kgPSBjb25maWcuY2xvdWRmcm9udFJlc3BvbnNlSGVhZGVyc1BvbGljeTtcbiAgICAgICAgICB0aGlzLmNsb3VkZnJvbnRXZWJhY2xJZCA9IGNvbmZpZy5jbG91ZGZyb250V2ViYWNsSWQ7XG4gICAgICAgICAgdGhpcy5jcmVhdGVJbWFnZU9wdGltaXphdGlvbiA9IGNvbmZpZy5jcmVhdGVJbWFnZU9wdGltaXphdGlvbjtcbiAgICAgICAgICB0aGlzLmRlYnVnVXNlTG9jYWxQYWNrYWdlcyA9IGNvbmZpZy5kZWJ1Z1VzZUxvY2FsUGFja2FnZXM7XG4gICAgICAgICAgdGhpcy5kZXBsb3ltZW50TmFtZSA9IGNvbmZpZy5kZXBsb3ltZW50TmFtZTtcbiAgICAgICAgICB0aGlzLmVuYWJsZU11bHRpcGxlRGVwbG95bWVudHMgPSBjb25maWcuZW5hYmxlTXVsdGlwbGVEZXBsb3ltZW50cztcbiAgICAgICAgICB0aGlzLmltYWdlT3B0aW1pemF0aW9uTGFtYmRhTWVtb3J5U2l6ZSA9IGNvbmZpZy5pbWFnZU9wdGltaXphdGlvbkxhbWJkYU1lbW9yeVNpemU7XG4gICAgICAgICAgdGhpcy5sYW1iZGFBdHRhY2hQb2xpY3lKc29uID0gY29uZmlnLmxhbWJkYUF0dGFjaFBvbGljeUpzb247XG4gICAgICAgICAgdGhpcy5sYW1iZGFBdHRhY2hUb1ZwYyA9IGNvbmZpZy5sYW1iZGFBdHRhY2hUb1ZwYztcbiAgICAgICAgICB0aGlzLmxhbWJkYVBvbGljeUpzb24gPSBjb25maWcubGFtYmRhUG9saWN5SnNvbjtcbiAgICAgICAgICB0aGlzLmxhbWJkYVJvbGVQZXJtaXNzaW9uc0JvdW5kYXJ5ID0gY29uZmlnLmxhbWJkYVJvbGVQZXJtaXNzaW9uc0JvdW5kYXJ5O1xuICAgICAgICAgIHRoaXMubXVsdGlwbGVEZXBsb3ltZW50c0Jhc2VEb21haW4gPSBjb25maWcubXVsdGlwbGVEZXBsb3ltZW50c0Jhc2VEb21haW47XG4gICAgICAgICAgdGhpcy50YWdzID0gY29uZmlnLnRhZ3M7XG4gICAgICAgICAgdGhpcy50YWdzUzNCdWNrZXQgPSBjb25maWcudGFnc1MzQnVja2V0O1xuICAgICAgICAgIHRoaXMudnBjU2VjdXJpdHlHcm91cElkcyA9IGNvbmZpZy52cGNTZWN1cml0eUdyb3VwSWRzO1xuICAgICAgICAgIHRoaXMudnBjU3VibmV0SWRzID0gY29uZmlnLnZwY1N1Ym5ldElkcztcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGNsb3VkZnJvbnRBY21DZXJ0aWZpY2F0ZUFybigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9hY21fY2VydGlmaWNhdGVfYXJuJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgY2xvdWRmcm9udEFjbUNlcnRpZmljYXRlQXJuKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9hY21fY2VydGlmaWNhdGVfYXJuJ10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGNsb3VkZnJvbnRBbGlhc2VzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfYWxpYXNlcyddIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgY2xvdWRmcm9udEFsaWFzZXModmFsdWU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfYWxpYXNlcyddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjbG91ZGZyb250Q2FjaGVLZXlIZWFkZXJzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfY2FjaGVfa2V5X2hlYWRlcnMnXSBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IGNsb3VkZnJvbnRDYWNoZUtleUhlYWRlcnModmFsdWU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfY2FjaGVfa2V5X2hlYWRlcnMnXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgY2xvdWRmcm9udENyZWF0ZURpc3RyaWJ1dGlvbigpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfY3JlYXRlX2Rpc3RyaWJ1dGlvbiddIGFzIGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBjbG91ZGZyb250Q3JlYXRlRGlzdHJpYnV0aW9uKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfY3JlYXRlX2Rpc3RyaWJ1dGlvbiddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjbG91ZGZyb250RXh0ZXJuYWxBcm4oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfZXh0ZXJuYWxfYXJuJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgY2xvdWRmcm9udEV4dGVybmFsQXJuKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9leHRlcm5hbF9hcm4nXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgY2xvdWRmcm9udEV4dGVybmFsSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfZXh0ZXJuYWxfaWQnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBjbG91ZGZyb250RXh0ZXJuYWxJZCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfZXh0ZXJuYWxfaWQnXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgY2xvdWRmcm9udE1pbmltdW1Qcm90b2NvbFZlcnNpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfbWluaW11bV9wcm90b2NvbF92ZXJzaW9uJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgY2xvdWRmcm9udE1pbmltdW1Qcm90b2NvbFZlcnNpb24odmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydjbG91ZGZyb250X21pbmltdW1fcHJvdG9jb2xfdmVyc2lvbiddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjbG91ZGZyb250T3JpZ2luUmVxdWVzdFBvbGljeSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9vcmlnaW5fcmVxdWVzdF9wb2xpY3knXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBjbG91ZGZyb250T3JpZ2luUmVxdWVzdFBvbGljeSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfb3JpZ2luX3JlcXVlc3RfcG9saWN5J10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGNsb3VkZnJvbnRQcmljZUNsYXNzKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWydjbG91ZGZyb250X3ByaWNlX2NsYXNzJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgY2xvdWRmcm9udFByaWNlQ2xhc3ModmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydjbG91ZGZyb250X3ByaWNlX2NsYXNzJ10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGNsb3VkZnJvbnRSZXNwb25zZUhlYWRlcnNQb2xpY3koKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfcmVzcG9uc2VfaGVhZGVyc19wb2xpY3knXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBjbG91ZGZyb250UmVzcG9uc2VIZWFkZXJzUG9saWN5KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9yZXNwb25zZV9oZWFkZXJzX3BvbGljeSddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjbG91ZGZyb250V2ViYWNsSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfd2ViYWNsX2lkJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgY2xvdWRmcm9udFdlYmFjbElkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snY2xvdWRmcm9udF93ZWJhY2xfaWQnXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgY3JlYXRlSW1hZ2VPcHRpbWl6YXRpb24oKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWydjcmVhdGVfaW1hZ2Vfb3B0aW1pemF0aW9uJ10gYXMgYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IGNyZWF0ZUltYWdlT3B0aW1pemF0aW9uKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ2NyZWF0ZV9pbWFnZV9vcHRpbWl6YXRpb24nXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgZGVidWdVc2VMb2NhbFBhY2thZ2VzKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snZGVidWdfdXNlX2xvY2FsX3BhY2thZ2VzJ10gYXMgYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IGRlYnVnVXNlTG9jYWxQYWNrYWdlcyh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydkZWJ1Z191c2VfbG9jYWxfcGFja2FnZXMnXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgZGVwbG95bWVudE5hbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2RlcGxveW1lbnRfbmFtZSddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IGRlcGxveW1lbnROYW1lKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snZGVwbG95bWVudF9uYW1lJ10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGVuYWJsZU11bHRpcGxlRGVwbG95bWVudHMoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWydlbmFibGVfbXVsdGlwbGVfZGVwbG95bWVudHMnXSBhcyBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgZW5hYmxlTXVsdGlwbGVEZXBsb3ltZW50cyh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydlbmFibGVfbXVsdGlwbGVfZGVwbG95bWVudHMnXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgaW1hZ2VPcHRpbWl6YXRpb25MYW1iZGFNZW1vcnlTaXplKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWydpbWFnZV9vcHRpbWl6YXRpb25fbGFtYmRhX21lbW9yeV9zaXplJ10gYXMgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgaW1hZ2VPcHRpbWl6YXRpb25MYW1iZGFNZW1vcnlTaXplKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snaW1hZ2Vfb3B0aW1pemF0aW9uX2xhbWJkYV9tZW1vcnlfc2l6ZSddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBsYW1iZGFBdHRhY2hQb2xpY3lKc29uKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snbGFtYmRhX2F0dGFjaF9wb2xpY3lfanNvbiddIGFzIGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBsYW1iZGFBdHRhY2hQb2xpY3lKc29uKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ2xhbWJkYV9hdHRhY2hfcG9saWN5X2pzb24nXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgbGFtYmRhQXR0YWNoVG9WcGMoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWydsYW1iZGFfYXR0YWNoX3RvX3ZwYyddIGFzIGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBsYW1iZGFBdHRhY2hUb1ZwYyh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydsYW1iZGFfYXR0YWNoX3RvX3ZwYyddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBsYW1iZGFQb2xpY3lKc29uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWydsYW1iZGFfcG9saWN5X2pzb24nXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBsYW1iZGFQb2xpY3lKc29uKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snbGFtYmRhX3BvbGljeV9qc29uJ10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGxhbWJkYVJvbGVQZXJtaXNzaW9uc0JvdW5kYXJ5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWydsYW1iZGFfcm9sZV9wZXJtaXNzaW9uc19ib3VuZGFyeSddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IGxhbWJkYVJvbGVQZXJtaXNzaW9uc0JvdW5kYXJ5KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snbGFtYmRhX3JvbGVfcGVybWlzc2lvbnNfYm91bmRhcnknXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgbXVsdGlwbGVEZXBsb3ltZW50c0Jhc2VEb21haW4oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ211bHRpcGxlX2RlcGxveW1lbnRzX2Jhc2VfZG9tYWluJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgbXVsdGlwbGVEZXBsb3ltZW50c0Jhc2VEb21haW4odmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydtdWx0aXBsZV9kZXBsb3ltZW50c19iYXNlX2RvbWFpbiddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCB0YWdzKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1sndGFncyddIGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCB0YWdzKHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ3RhZ3MnXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgdGFnc1MzQnVja2V0KCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1sndGFnc19zM19idWNrZXQnXSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgdGFnc1MzQnVja2V0KHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ3RhZ3NfczNfYnVja2V0J10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IHZwY1NlY3VyaXR5R3JvdXBJZHMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1sndnBjX3NlY3VyaXR5X2dyb3VwX2lkcyddIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgdnBjU2VjdXJpdHlHcm91cElkcyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1sndnBjX3NlY3VyaXR5X2dyb3VwX2lkcyddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCB2cGNTdWJuZXRJZHMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1sndnBjX3N1Ym5ldF9pZHMnXSBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IHZwY1N1Ym5ldElkcyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1sndnBjX3N1Ym5ldF9pZHMnXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgYXBpRW5kcG9pbnRPdXRwdXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCdhcGlfZW5kcG9pbnQnKVxuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgYXBpRW5kcG9pbnRBY2Nlc3NQb2xpY3lBcm5PdXRwdXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCdhcGlfZW5kcG9pbnRfYWNjZXNzX3BvbGljeV9hcm4nKVxuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgY2xvdWRmcm9udEN1c3RvbUVycm9yUmVzcG9uc2VPdXRwdXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCdjbG91ZGZyb250X2N1c3RvbV9lcnJvcl9yZXNwb25zZScpXG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjbG91ZGZyb250RGVmYXVsdENhY2hlQmVoYXZpb3JPdXRwdXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCdjbG91ZGZyb250X2RlZmF1bHRfY2FjaGVfYmVoYXZpb3InKVxuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgY2xvdWRmcm9udERlZmF1bHRSb290T2JqZWN0T3V0cHV0KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0cmluZygnY2xvdWRmcm9udF9kZWZhdWx0X3Jvb3Rfb2JqZWN0JylcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGNsb3VkZnJvbnREb21haW5OYW1lT3V0cHV0KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0cmluZygnY2xvdWRmcm9udF9kb21haW5fbmFtZScpXG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjbG91ZGZyb250SG9zdGVkWm9uZUlkT3V0cHV0KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0cmluZygnY2xvdWRmcm9udF9ob3N0ZWRfem9uZV9pZCcpXG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjbG91ZGZyb250T3JkZXJlZENhY2hlQmVoYXZpb3JzT3V0cHV0KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0cmluZygnY2xvdWRmcm9udF9vcmRlcmVkX2NhY2hlX2JlaGF2aW9ycycpXG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjbG91ZGZyb250T3JpZ2luc091dHB1dCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmcoJ2Nsb3VkZnJvbnRfb3JpZ2lucycpXG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCB1cGxvYWRCdWNrZXRJZE91dHB1dCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmcoJ3VwbG9hZF9idWNrZXRfaWQnKVxuICAgICAgICB9XG4gICAgICAgIHByb3RlY3RlZCBzeW50aGVzaXplQXR0cmlidXRlcygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHM7XG4gICAgICAgIH1cbiAgICAgICAgcHJvdGVjdGVkIHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5pbnB1dHMpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKFssIHZhbF0pID0+IHZhbCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAubWFwKChba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJhbnlcIixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcIlxuICAgIGApO1xuICB9LFxuICAxMjAwMDAsXG4pO1xuIl19
476
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWdlbmVyYXRvci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dldC9fX3Rlc3RzX18vZ2VuZXJhdG9yL21vZHVsZS1nZW5lcmF0b3IudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx1Q0FBeUI7QUFDekIsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw0Q0FBcUU7QUFDckUsNkRBQXlEO0FBQ3pELGtDQUFzRDtBQUN0RCxpREFBeUM7QUFFekMsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsSUFBWSxFQUNaLEVBQXVCLEVBQ3ZCLE9BQWdCLEVBQ2hCLEVBQUU7SUFDRixNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLElBQUksV0FBVyxDQUFDO0lBQzdFLE1BQU0sTUFBTSxHQUFHLElBQUEsd0JBQVEsRUFBQyxHQUFHLG1CQUFtQixnQkFBZ0IsQ0FBQyxDQUFDO0lBRWhFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztJQUVsRSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkQsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRSxJQUFJ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LENBQ3hELENBQUM7SUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLG1DQUF5QixDQUM5QyxvQ0FBb0MsQ0FDckMsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLElBQUksa0NBQWUsQ0FDL0I7UUFDRSxlQUFlLEVBQUUsT0FBTztRQUN4QixjQUFjLEVBQUUsa0JBQVEsQ0FBQyxVQUFVO0tBQ3BDLEVBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2Q0FBNkMsQ0FDMUQsQ0FBQztJQUNGLE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFFbkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0NBQWdDLENBQUMsRUFDcEQsT0FBTyxDQUNSLENBQUM7SUFFRixtRkFBbUY7SUFDbkYsOERBQThEO0lBQzlELDJEQUEyRDtJQUMzRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMscUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FzV3BDLENBQUMsQ0FBQztBQUNMLENBQUMsRUFDRCxNQUFNLENBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIG9zIGZyb20gXCJvc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgTGFuZ3VhZ2UsIFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdHNNYWtlciB9IGZyb20gXCIuLi8uLi9jb25zdHJ1Y3RzLW1ha2VyXCI7XG5pbXBvcnQgeyBleHBlY3RNb2R1bGVUb01hdGNoU25hcHNob3QgfSBmcm9tIFwiLi4vdXRpbFwiO1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuXG5jb25zdCBvblRmMV82QW5kTmV3ZXIgPSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgZm46ICgpID0+IFByb21pc2U8dm9pZD4sXG4gIHRpbWVvdXQ/OiBudW1iZXIsXG4pID0+IHtcbiAgY29uc3QgdGVycmFmb3JtQmluYXJ5TmFtZSA9IHByb2Nlc3MuZW52LlRFUlJBRk9STV9CSU5BUllfTkFNRSB8fCBcInRlcnJhZm9ybVwiO1xuICBjb25zdCBvdXRwdXQgPSBleGVjU3luYyhgJHt0ZXJyYWZvcm1CaW5hcnlOYW1lfSB2ZXJzaW9uIC1qc29uYCk7XG5cbiAgaWYgKCFvdXRwdXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZGV0ZXJtaW5lIFRlcnJhZm9ybSB2ZXJzaW9uXCIpO1xuICB9XG5cbiAgY29uc3QgdGZWZXJzaW9uID0gSlNPTi5wYXJzZShvdXRwdXQudG9TdHJpbmcoKSkudGVycmFmb3JtX3ZlcnNpb247XG5cbiAgY29uc3QgW21ham9yLCBtaW5vcl0gPSB0ZlZlcnNpb24udG9TdHJpbmcoKS5zcGxpdChcIi5cIik7XG4gIGlmIChOdW1iZXIobWFqb3IpIDwgMSB8fCAoTnVtYmVyKG1ham9yKSA9PT0gMSAmJiBOdW1iZXIobWlub3IpIDwgNikpIHtcbiAgICB0ZXN0LnNraXAoXG4gICAgICBgJHtuYW1lfSAocmVxdWlyZXMgVGVycmFmb3JtID49IDEuNi4wOyBidXQgaXMgJHt0ZlZlcnNpb259KWAsXG4gICAgICBmbixcbiAgICAgIHRpbWVvdXQsXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICB0ZXN0KG5hbWUsIGZuLCB0aW1lb3V0KTtcbiAgfVxufTtcblxudGVzdChcImdlbmVyYXRlIHNvbWUgbW9kdWxlc1wiLCBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHdvcmtkaXIgPSBmcy5ta2R0ZW1wU3luYyhcbiAgICBwYXRoLmpvaW4ob3MudG1wZGlyKCksIFwibW9kdWxlLWdlbmVyYXRvci50ZXN0XCIpLFxuICApO1xuICBjb25zdCBjb25zdHJhaW50ID0gbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoXG4gICAgXCJ0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvZWtzL2F3c0A3LjAuMVwiLFxuICApO1xuXG4gIGNvbnN0IG1ha2VyID0gbmV3IENvbnN0cnVjdHNNYWtlcihcbiAgICB7XG4gICAgICBjb2RlTWFrZXJPdXRwdXQ6IHdvcmtkaXIsXG4gICAgICB0YXJnZXRMYW5ndWFnZTogTGFuZ3VhZ2UuVFlQRVNDUklQVCxcbiAgICB9LFxuICAgIHByb2Nlc3MuZW52LkNES1RGX0VYUEVSSU1FTlRBTF9QUk9WSURFUl9TQ0hFTUFfQ0FDSEVfUEFUSCxcbiAgKTtcbiAgYXdhaXQgbWFrZXIuZ2VuZXJhdGUoW2NvbnN0cmFpbnRdKTtcblxuICBjb25zdCBvdXRwdXQgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgcGF0aC5qb2luKHdvcmtkaXIsIFwibW9kdWxlcy90ZXJyYWZvcm0tYXdzLW1vZHVsZXMvYXdzL2Vrcy50c1wiKSxcbiAgICBcInV0Zi04XCIsXG4gICk7XG4gIGV4cGVjdChvdXRwdXQpLnRvTWF0Y2hTbmFwc2hvdCgpO1xufSwgMTIwMDAwKTtcblxuZXhwZWN0TW9kdWxlVG9NYXRjaFNuYXBzaG90KFwibm8gbW9kdWxlIG91dHB1dHNcIiwgXCJnZW5lcmF0b3JcIiwgW1xuICBcIm1vZHVsZS1uby1vdXRwdXRzLnRlc3QuZml4dHVyZS50ZlwiLFxuXSk7XG5cbmV4cGVjdE1vZHVsZVRvTWF0Y2hTbmFwc2hvdChcInR5cGVsZXNzIHZhcmlhYmxlc1wiLCBcImdlbmVyYXRvclwiLCBbXG4gIFwibW9kdWxlLW5vLXZhcmlhYmxlLXR5cGUudGVzdC5maXh0dXJlLnRmXCIsXG5dKTtcblxuZXhwZWN0TW9kdWxlVG9NYXRjaFNuYXBzaG90KFwibm8gbmV3bGluZVwiLCBcImdlbmVyYXRvclwiLCBbXG4gIFwibW9kdWxlLW5vLW5ld2xpbmUtMS50ZXN0LmZpeHR1cmUudGZcIixcbiAgXCJtb2R1bGUtbm8tbmV3bGluZS0yLnRlc3QuZml4dHVyZS50ZlwiLFxuXSk7XG5cbnRlc3QoXCJnZW5lcmF0ZSBtdWx0aXBsZSBhd3MgbW9kdWxlc1wiLCBhc3luYyAoKSA9PiB7XG4gIGplc3Quc2V0VGltZW91dCgxMjAwMDApO1xuXG4gIGNvbnN0IHdvcmtkaXIgPSBmcy5ta2R0ZW1wU3luYyhcbiAgICBwYXRoLmpvaW4ob3MudG1wZGlyKCksIFwibW9kdWxlLWdlbmVyYXRvci1hd3MudGVzdFwiKSxcbiAgKTtcbiAgY29uc3QgY29uc3RyYWludHMgPSBbXG4gICAgbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoXCJ0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvdnBjL2F3c0AyLjc4LjBcIiksXG4gICAgbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoXCJ0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvcmRzLWF1cm9yYS9hd3NANC4xLjBcIiksXG4gIF07XG5cbiAgY29uc3QgbWFrZXIgPSBuZXcgQ29uc3RydWN0c01ha2VyKFxuICAgIHtcbiAgICAgIGNvZGVNYWtlck91dHB1dDogd29ya2RpcixcbiAgICAgIHRhcmdldExhbmd1YWdlOiBMYW5ndWFnZS5UWVBFU0NSSVBULFxuICAgIH0sXG4gICAgcHJvY2Vzcy5lbnYuQ0RLVEZfRVhQRVJJTUVOVEFMX1BST1ZJREVSX1NDSEVNQV9DQUNIRV9QQVRILFxuICApO1xuICBhd2FpdCBtYWtlci5nZW5lcmF0ZShjb25zdHJhaW50cyk7XG5cbiAgY29uc3QgdnBjT3V0cHV0ID0gZnMucmVhZEZpbGVTeW5jKFxuICAgIHBhdGguam9pbih3b3JrZGlyLCBcIm1vZHVsZXMvdGVycmFmb3JtLWF3cy1tb2R1bGVzL2F3cy92cGMudHNcIiksXG4gICAgXCJ1dGYtOFwiLFxuICApO1xuICBleHBlY3QodnBjT3V0cHV0KS50b01hdGNoU25hcHNob3QoKTtcblxuICBjb25zdCByZHNPdXRwdXQgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgcGF0aC5qb2luKHdvcmtkaXIsIFwibW9kdWxlcy90ZXJyYWZvcm0tYXdzLW1vZHVsZXMvYXdzL3Jkcy1hdXJvcmEudHNcIiksXG4gICAgXCJ1dGYtOFwiLFxuICApO1xuICBleHBlY3QocmRzT3V0cHV0KS50b01hdGNoU25hcHNob3QoKTtcbn0sIDEyMDAwMCk7XG5cbnRlc3QoXCJnZW5lcmF0ZSBuZXN0ZWQgbW9kdWxlXCIsIGFzeW5jICgpID0+IHtcbiAgY29uc3Qgd29ya2RpciA9IGZzLm1rZHRlbXBTeW5jKFxuICAgIHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJtb2R1bGUtZ2VuZXJhdG9yLW5lc3RlZC50ZXN0XCIpLFxuICApO1xuICBjb25zdCBjb25zdHJhaW50ID0gbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoXG4gICAgXCJ0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvdnBjL2F3cy8vbW9kdWxlcy92cGMtZW5kcG9pbnRzQDMuMTkuMFwiLFxuICApO1xuXG4gIGNvbnN0IG1ha2VyID0gbmV3IENvbnN0cnVjdHNNYWtlcihcbiAgICB7XG4gICAgICBjb2RlTWFrZXJPdXRwdXQ6IHdvcmtkaXIsXG4gICAgICB0YXJnZXRMYW5ndWFnZTogTGFuZ3VhZ2UuVFlQRVNDUklQVCxcbiAgICB9LFxuICAgIHByb2Nlc3MuZW52LkNES1RGX0VYUEVSSU1FTlRBTF9QUk9WSURFUl9TQ0hFTUFfQ0FDSEVfUEFUSCxcbiAgKTtcbiAgYXdhaXQgbWFrZXIuZ2VuZXJhdGUoW2NvbnN0cmFpbnRdKTtcblxuICBjb25zdCBvdXRwdXQgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgcGF0aC5qb2luKFxuICAgICAgd29ya2RpcixcbiAgICAgIFwibW9kdWxlcy90ZXJyYWZvcm0tYXdzLW1vZHVsZXMvYXdzL3ZwYy9tb2R1bGVzL3ZwYy1lbmRwb2ludHMudHNcIixcbiAgICApLFxuICAgIFwidXRmLThcIixcbiAgKTtcbiAgZXhwZWN0KG91dHB1dCkudG9NYXRjaFNuYXBzaG90KCk7XG59LCAxMjAwMDApO1xuXG5leHBlY3RNb2R1bGVUb01hdGNoU25hcHNob3QoXCJnZXRYIHZhcmlhYmxlc1wiLCBcImdlbmVyYXRvclwiLCBbXG4gIFwibW9kdWxlLWdldC14LnRlc3QuZml4dHVyZS50ZlwiLFxuXSk7XG5cbmV4cGVjdE1vZHVsZVRvTWF0Y2hTbmFwc2hvdChcbiAgXCJoYW5kbGUgKi8qIGluIG1vZHVsZSB2YXJpYWJsZSBkZWZhdWx0IHN0cmluZ1wiLFxuICBcImdlbmVyYXRvclwiLFxuICBbXCJtb2R1bGUtd2l0aC1zdGFyLWRlZmF1bHQudGVzdC5maXh0dXJlLnRmXCJdLFxuKTtcblxub25UZjFfNkFuZE5ld2VyKFxuICBcImdlbmVyYXRlIG1vZHVsZSB0aGF0IGNhbid0IGJlIGluaXRpYWxpemVkXCIsXG4gIGFzeW5jICgpID0+IHtcbiAgICBqZXN0LnNldFRpbWVvdXQoMTIwMDAwKTtcblxuICAgIGNvbnN0IHdvcmtkaXIgPSBmcy5ta2R0ZW1wU3luYyhcbiAgICAgIHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJtb2R1bGUtZ2VuZXJhdG9yLnRlc3Qtbm8taW5pdFwiKSxcbiAgICApO1xuICAgIGNvbnN0IGNvbnN0cmFpbnQgPSBuZXcgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludChcbiAgICAgIFwibWlsbGlIUS9uZXh0LWpzL2F3c0AxLjAuMC1jYW5hcnkuNVwiLFxuICAgICk7XG5cbiAgICBjb25zdCBtYWtlciA9IG5ldyBDb25zdHJ1Y3RzTWFrZXIoXG4gICAgICB7XG4gICAgICAgIGNvZGVNYWtlck91dHB1dDogd29ya2RpcixcbiAgICAgICAgdGFyZ2V0TGFuZ3VhZ2U6IExhbmd1YWdlLlRZUEVTQ1JJUFQsXG4gICAgICB9LFxuICAgICAgcHJvY2Vzcy5lbnYuQ0RLVEZfRVhQRVJJTUVOVEFMX1BST1ZJREVSX1NDSEVNQV9DQUNIRV9QQVRILFxuICAgICk7XG4gICAgYXdhaXQgbWFrZXIuZ2VuZXJhdGUoW2NvbnN0cmFpbnRdKTtcblxuICAgIGNvbnN0IG91dHB1dCA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgIHBhdGguam9pbih3b3JrZGlyLCBcIm1vZHVsZXMvbWlsbGlIUS9hd3MvbmV4dC1qcy50c1wiKSxcbiAgICAgIFwidXRmLThcIixcbiAgICApO1xuXG4gICAgLy8geWVzLCB0aGlzIGlzIGEgbG90IG9mIGNvZGUsIGJ1dCB0aGlzIHRlc3QgaXMgc2tpcHBlZCBmb3Igc29tZSBUZXJyYWZvcm0gdmVyc2lvbnNcbiAgICAvLyB3aGljaCB0aGVuIHNob3dzIHNuYXBzaG90cyBhcyBvYnNvbGV0ZSB3aGljaCBmYWlscyB0aGUgdGVzdFxuICAgIC8vIHRoaXMgd2F5LCB0aGVyZSdzIG5vIHN1Y2ggcHJvYmxlbSBpZiB0aGUgdGVzdCBpcyBza2lwcGVkXG4gICAgZXhwZWN0KG91dHB1dCkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbiAgICAgIFwiLy8gZ2VuZXJhdGVkIGJ5IGNka3RuIGdldFxuICAgICAgLy8gbWlsbGlIUS9uZXh0LWpzL2F3c1xuICAgICAgaW1wb3J0IHsgVGVycmFmb3JtTW9kdWxlLCB0eXBlIFRlcnJhZm9ybU1vZHVsZVVzZXJDb25maWcgfSBmcm9tICdjZGt0bic7XG4gICAgICBpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbiAgICAgIGV4cG9ydCBpbnRlcmZhY2UgTmV4dEpzQ29uZmlnIGV4dGVuZHMgVGVycmFmb3JtTW9kdWxlVXNlckNvbmZpZyB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIEFDTSBjZXJ0aWZpY2F0ZSBhcm4gZm9yIGN1c3RvbV9kb21haW5cbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgY2xvdWRmcm9udEFjbUNlcnRpZmljYXRlQXJuPzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgKiBBbGlhc2VzIGZvciBjdXN0b21fZG9tYWluXG4gICAgICAgICpcbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgY2xvdWRmcm9udEFsaWFzZXM/OiBzdHJpbmdbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICogSGVhZGVyIGtleXMgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIGNhY2hlIGtleSBpbiBDbG91ZEZyb250LlxuICAgICAgICAqIEF1dGhvcml6YXRpb25cbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgY2xvdWRmcm9udENhY2hlS2V5SGVhZGVycz86IHN0cmluZ1tdO1xuICAgICAgICAvKipcbiAgICAgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBtYWluIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uIHNob3VsZCBiZSBjcmVhdGVkLlxuICAgICAgICAqIHRydWVcbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgY2xvdWRmcm9udENyZWF0ZURpc3RyaWJ1dGlvbj86IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAqIFdoZW4gdXNpbmcgYW4gZXh0ZXJuYWwgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24gcHJvdmlkZSBpdHMgYXJuLlxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBjbG91ZGZyb250RXh0ZXJuYWxBcm4/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAqIFdoZW4gdXNpbmcgYW4gZXh0ZXJuYWwgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24gcHJvdmlkZSBpdHMgaWQuXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGNsb3VkZnJvbnRFeHRlcm5hbElkPzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgKiBUaGUgbWluaW11bSB2ZXJzaW9uIG9mIHRoZSBTU0wgcHJvdG9jb2wgdGhhdCB5b3Ugd2FudCBDbG91ZEZyb250IHRvIHVzZSBmb3IgSFRUUFMgY29ubmVjdGlvbnMuIE9uZSBvZiBTU0x2MywgVExTdjEsIFRMU3YxXzIwMTYsIFRMU3YxLjFfMjAxNiwgVExTdjEuMl8yMDE4IG9yIFRMU3YxLjJfMjAxOS5cbiAgICAgICAgKiBUTFN2MVxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBjbG91ZGZyb250TWluaW11bVByb3RvY29sVmVyc2lvbj86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICogSWQgb2YgYSBjdXN0b20gcmVxdWVzdCBwb2xpY3kgdGhhdCBvdmVycmlkZXMgdGhlIGRlZmF1bHQgcG9saWN5IChBbGxWaWV3ZXIpLiBDYW4gYmUgY3VzdG9tIG9yIG1hbmFnZWQuXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGNsb3VkZnJvbnRPcmlnaW5SZXF1ZXN0UG9saWN5Pzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgKiBQcmljZSBjbGFzcyBmb3IgdGhlIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9ucyAobWFpbiAmIHByb3h5IGNvbmZpZykuIE9uZSBvZiBQcmljZUNsYXNzX0FsbCwgUHJpY2VDbGFzc18yMDAsIFByaWNlQ2xhc3NfMTAwLlxuICAgICAgICAqIFByaWNlQ2xhc3NfMTAwXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGNsb3VkZnJvbnRQcmljZUNsYXNzPzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgKiBJZCBvZiBhIHJlc3BvbnNlIGhlYWRlcnMgcG9saWN5LiBDYW4gYmUgY3VzdG9tIG9yIG1hbmFnZWQuIERlZmF1bHQgaXMgZW1wdHkuXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGNsb3VkZnJvbnRSZXNwb25zZUhlYWRlcnNQb2xpY3k/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAqIEFuIG9wdGlvbmFsIHdlYmFjbDIgYXJuIG9yIHdlYmFjbCBpZCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgY2xvdWRmcm9udCBkaXN0cmlidXRpb25cbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgY2xvdWRmcm9udFdlYmFjbElkPzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgKiBDb250cm9scyB3aGV0aGVyIHJlc291cmNlcyBmb3IgaW1hZ2Ugb3B0aW1pemF0aW9uIHN1cHBvcnQgc2hvdWxkIGJlIGNyZWF0ZWQgb3Igbm90LlxuICAgICAgICAqIHRydWVcbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgY3JlYXRlSW1hZ2VPcHRpbWl6YXRpb24/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgKiBVc2UgbG9jYWxseSBidWlsdCBwYWNrYWdlcyByYXRoZXIgdGhhbiBkb3dubG9hZCB0aGVtIGZyb20gbnBtLlxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBkZWJ1Z1VzZUxvY2FsUGFja2FnZXM/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgKiBJZGVudGlmaWVyIGZvciB0aGUgZGVwbG95bWVudCBncm91cCAob25seSBsb3dlcmNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIGh5cGhlbnMgYXJlIGFsbG93ZWQpLlxuICAgICAgICAqIHRmLW5leHRcbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgZGVwbG95bWVudE5hbWU/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAqIENvbnRyb2xzIHdoZXRoZXIgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHJ1biBtdWx0aXBsZSBkZXBsb3ltZW50cyBpbiBwYXJhbGxlbCAocmVxdWlyZXMgbXVsdGlwbGVfZGVwbG95bWVudHNfYmFzZV9kb21haW4pLlxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBlbmFibGVNdWx0aXBsZURlcGxveW1lbnRzPzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICogQW1vdW50IG9mIG1lbW9yeSBpbiBNQiB0aGUgd29ya2VyIExhbWJkYSBGdW5jdGlvbiBmb3IgaW1hZ2Ugb3B0aW1pemF0aW9uIGNhbiB1c2UuIFZhbGlkIHZhbHVlIGJldHdlZW4gMTI4IE1CIHRvIDEwLDI0MCBNQiwgaW4gMSBNQiBpbmNyZW1lbnRzLlxuICAgICAgICAqIDIsMDQ4XG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGltYWdlT3B0aW1pemF0aW9uTGFtYmRhTWVtb3J5U2l6ZT86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICogV2hldGhlciB0byBkZXBsb3kgYWRkaXRpb25hbCBsYW1iZGEgSlNPTiBwb2xpY2llcy4gSWYgZmFsc2UsIGxhbWJkYV9wb2xpY3lfanNvbiB3aWxsIG5vdCBiZSBhdHRhY2hlZCB0byB0aGUgbGFtYmRhIGZ1bmN0aW9uLiAoTmVjZXNzYXJ5IHNpbmNlIHBvbGljeSBzdHJpbmdzIGFyZSBvbmx5IGtub3duIGFmdGVyIGFwcGx5IHdoZW4gdXNpbmcgVGVycmFmb3JtcyBkYXRhLmF3c19pYW1fcG9saWN5X2RvY3VtZW50KVxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBsYW1iZGFBdHRhY2hQb2xpY3lKc29uPzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICogU2V0IHRvIHRydWUgaWYgdGhlIExhbWJkYSBmdW5jdGlvbnMgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIGEgVlBDLiBVc2UgdGhpcyBzZXR0aW5nIGlmIFZQQyByZXNvdXJjZXMgc2hvdWxkIGJlIGFjY2Vzc2VkIGJ5IHRoZSBMYW1iZGEgZnVuY3Rpb25zLiBXaGVuIHNldHRpbmcgdGhpcyB0byB0cnVlLCB1c2UgdnBjX3NlY3VyaXR5X2dyb3VwX2lkcyBhbmQgdnBjX3N1Ym5ldF9pZHMgdG8gc3BlY2lmeSB0aGUgVlBDIG5ldHdvcmtpbmcuIE5vdGUgdGhhdCBhdHRhY2hpbmcgdG8gYSBWUEMgd291bGQgaW50cm9kdWNlIGEgZGVsYXkgb24gdG8gY29sZCBzdGFydHNcbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgbGFtYmRhQXR0YWNoVG9WcGM/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgKiBBZGRpdGlvbmFsIHBvbGljeSBkb2N1bWVudCBhcyBKU09OIHRvIGF0dGFjaCB0byB0aGUgTGFtYmRhIEZ1bmN0aW9uIHJvbGVcbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgbGFtYmRhUG9saWN5SnNvbj86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICogQVJOIG9mIElBTSBwb2xpY3kgdGhhdCBzY29wZXMgYXdzX2lhbV9yb2xlIGFjY2VzcyBmb3IgdGhlIGxhbWJkYVxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBsYW1iZGFSb2xlUGVybWlzc2lvbnNCb3VuZGFyeT86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICogRGVmYXVsdCB3aWxkY2FyZCBkb21haW4gd2hlcmUgbmV3IGRlcGxveW1lbnRzIHNob3VsZCBiZSBhdmFpbGFibGUuIFNob3VsZCBiZSBpbiB0aGUgZm9ybSBvZiAqLmV4YW1wbGUuY29tLlxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBtdWx0aXBsZURlcGxveW1lbnRzQmFzZURvbWFpbj86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICogVGFnIG1ldGFkYXRhIHRvIGxhYmVsIEFXUyByZXNvdXJjZXMgdGhhdCBzdXBwb3J0IHRhZ3MuXG4gICAgICAgICogVGhlIHByb3BlcnR5IHR5cGUgY29udGFpbnMgYSBtYXAsIHRoZXkgaGF2ZSBzcGVjaWFsIGhhbmRsaW5nLCBwbGVhc2Ugc2VlIHtAbGluayBjZGsudGYvbW9kdWxlLW1hcC1pbnB1dHMgdGhlIGRvY3N9XG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAgICAgICAvKipcbiAgICAgICAgKiBUYWcgbWV0YWRhdGEgdG8gbGFiZWwgQVdTIFMzIGJ1Y2tldHMuIE92ZXJyaWRlcyB0YWdzIHdpdGggdGhlIHNhbWUgbmFtZSBpbiBpbnB1dCB2YXJpYWJsZSB0YWdzLlxuICAgICAgICAqIFRoZSBwcm9wZXJ0eSB0eXBlIGNvbnRhaW5zIGEgbWFwLCB0aGV5IGhhdmUgc3BlY2lhbCBoYW5kbGluZywgcGxlYXNlIHNlZSB7QGxpbmsgY2RrLnRmL21vZHVsZS1tYXAtaW5wdXRzIHRoZSBkb2NzfVxuICAgICAgICAqL1xuICAgICAgICByZWFkb25seSB0YWdzUzNCdWNrZXQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAgICAgICAvKipcbiAgICAgICAgKiBUaGUgbGlzdCBvZiBTZWN1cml0eSBHcm91cCBJRHMgdG8gYmUgdXNlZCBieSB0aGUgTGFtYmRhIGZ1bmN0aW9ucy4gbGFtYmRhX2F0dGFjaF90b192cGMgc2hvdWxkIGJlIHNldCB0byB0cnVlIGZvciB0aGVzZSB0byBiZSBhcHBsaWVkLlxuICAgICAgICAqXG4gICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IHZwY1NlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICogVGhlIGxpc3Qgb2YgVlBDIHN1Ym5ldCBJRHMgdG8gYXR0YWNoIHRoZSBMYW1iZGEgZnVuY3Rpb25zLiBsYW1iZGFfYXR0YWNoX3RvX3ZwYyBzaG91bGQgYmUgc2V0IHRvIHRydWUgZm9yIHRoZXNlIHRvIGJlIGFwcGxpZWQuXG4gICAgICAgICpcbiAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgdnBjU3VibmV0SWRzPzogc3RyaW5nW107XG4gICAgICB9XG4gICAgICAvKipcbiAgICAgICogRGVmaW5lcyBhbiBOZXh0SnMgYmFzZWQgb24gYSBUZXJyYWZvcm0gbW9kdWxlXG4gICAgICAqXG4gICAgICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vbW9kdWxlcy9taWxsaUhRL25leHQtanMvYXdzLzEuMC4wLWNhbmFyeS41IG1pbGxpSFEvbmV4dC1qcy9hd3N9XG4gICAgICAqL1xuICAgICAgZXhwb3J0IGNsYXNzIE5leHRKcyBleHRlbmRzIFRlcnJhZm9ybU1vZHVsZSB7XG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSA9IHsgfVxuICAgICAgICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY29uZmlnOiBOZXh0SnNDb25maWcgPSB7fSkge1xuICAgICAgICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgc291cmNlOiAnbWlsbGlIUS9uZXh0LWpzL2F3cycsXG4gICAgICAgICAgICB2ZXJzaW9uOiAnMS4wLjAtY2FuYXJ5LjUnLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY2xvdWRmcm9udEFjbUNlcnRpZmljYXRlQXJuID0gY29uZmlnLmNsb3VkZnJvbnRBY21DZXJ0aWZpY2F0ZUFybjtcbiAgICAgICAgICB0aGlzLmNsb3VkZnJvbnRBbGlhc2VzID0gY29uZmlnLmNsb3VkZnJvbnRBbGlhc2VzO1xuICAgICAgICAgIHRoaXMuY2xvdWRmcm9udENhY2hlS2V5SGVhZGVycyA9IGNvbmZpZy5jbG91ZGZyb250Q2FjaGVLZXlIZWFkZXJzO1xuICAgICAgICAgIHRoaXMuY2xvdWRmcm9udENyZWF0ZURpc3RyaWJ1dGlvbiA9IGNvbmZpZy5jbG91ZGZyb250Q3JlYXRlRGlzdHJpYnV0aW9uO1xuICAgICAgICAgIHRoaXMuY2xvdWRmcm9udEV4dGVybmFsQXJuID0gY29uZmlnLmNsb3VkZnJvbnRFeHRlcm5hbEFybjtcbiAgICAgICAgICB0aGlzLmNsb3VkZnJvbnRFeHRlcm5hbElkID0gY29uZmlnLmNsb3VkZnJvbnRFeHRlcm5hbElkO1xuICAgICAgICAgIHRoaXMuY2xvdWRmcm9udE1pbmltdW1Qcm90b2NvbFZlcnNpb24gPSBjb25maWcuY2xvdWRmcm9udE1pbmltdW1Qcm90b2NvbFZlcnNpb247XG4gICAgICAgICAgdGhpcy5jbG91ZGZyb250T3JpZ2luUmVxdWVzdFBvbGljeSA9IGNvbmZpZy5jbG91ZGZyb250T3JpZ2luUmVxdWVzdFBvbGljeTtcbiAgICAgICAgICB0aGlzLmNsb3VkZnJvbnRQcmljZUNsYXNzID0gY29uZmlnLmNsb3VkZnJvbnRQcmljZUNsYXNzO1xuICAgICAgICAgIHRoaXMuY2xvdWRmcm9udFJlc3BvbnNlSGVhZGVyc1BvbGljeSA9IGNvbmZpZy5jbG91ZGZyb250UmVzcG9uc2VIZWFkZXJzUG9saWN5O1xuICAgICAgICAgIHRoaXMuY2xvdWRmcm9udFdlYmFjbElkID0gY29uZmlnLmNsb3VkZnJvbnRXZWJhY2xJZDtcbiAgICAgICAgICB0aGlzLmNyZWF0ZUltYWdlT3B0aW1pemF0aW9uID0gY29uZmlnLmNyZWF0ZUltYWdlT3B0aW1pemF0aW9uO1xuICAgICAgICAgIHRoaXMuZGVidWdVc2VMb2NhbFBhY2thZ2VzID0gY29uZmlnLmRlYnVnVXNlTG9jYWxQYWNrYWdlcztcbiAgICAgICAgICB0aGlzLmRlcGxveW1lbnROYW1lID0gY29uZmlnLmRlcGxveW1lbnROYW1lO1xuICAgICAgICAgIHRoaXMuZW5hYmxlTXVsdGlwbGVEZXBsb3ltZW50cyA9IGNvbmZpZy5lbmFibGVNdWx0aXBsZURlcGxveW1lbnRzO1xuICAgICAgICAgIHRoaXMuaW1hZ2VPcHRpbWl6YXRpb25MYW1iZGFNZW1vcnlTaXplID0gY29uZmlnLmltYWdlT3B0aW1pemF0aW9uTGFtYmRhTWVtb3J5U2l6ZTtcbiAgICAgICAgICB0aGlzLmxhbWJkYUF0dGFjaFBvbGljeUpzb24gPSBjb25maWcubGFtYmRhQXR0YWNoUG9saWN5SnNvbjtcbiAgICAgICAgICB0aGlzLmxhbWJkYUF0dGFjaFRvVnBjID0gY29uZmlnLmxhbWJkYUF0dGFjaFRvVnBjO1xuICAgICAgICAgIHRoaXMubGFtYmRhUG9saWN5SnNvbiA9IGNvbmZpZy5sYW1iZGFQb2xpY3lKc29uO1xuICAgICAgICAgIHRoaXMubGFtYmRhUm9sZVBlcm1pc3Npb25zQm91bmRhcnkgPSBjb25maWcubGFtYmRhUm9sZVBlcm1pc3Npb25zQm91bmRhcnk7XG4gICAgICAgICAgdGhpcy5tdWx0aXBsZURlcGxveW1lbnRzQmFzZURvbWFpbiA9IGNvbmZpZy5tdWx0aXBsZURlcGxveW1lbnRzQmFzZURvbWFpbjtcbiAgICAgICAgICB0aGlzLnRhZ3MgPSBjb25maWcudGFncztcbiAgICAgICAgICB0aGlzLnRhZ3NTM0J1Y2tldCA9IGNvbmZpZy50YWdzUzNCdWNrZXQ7XG4gICAgICAgICAgdGhpcy52cGNTZWN1cml0eUdyb3VwSWRzID0gY29uZmlnLnZwY1NlY3VyaXR5R3JvdXBJZHM7XG4gICAgICAgICAgdGhpcy52cGNTdWJuZXRJZHMgPSBjb25maWcudnBjU3VibmV0SWRzO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgY2xvdWRmcm9udEFjbUNlcnRpZmljYXRlQXJuKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWydjbG91ZGZyb250X2FjbV9jZXJ0aWZpY2F0ZV9hcm4nXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBjbG91ZGZyb250QWNtQ2VydGlmaWNhdGVBcm4odmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydjbG91ZGZyb250X2FjbV9jZXJ0aWZpY2F0ZV9hcm4nXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgY2xvdWRmcm9udEFsaWFzZXMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9hbGlhc2VzJ10gYXMgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBjbG91ZGZyb250QWxpYXNlcyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9hbGlhc2VzJ10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGNsb3VkZnJvbnRDYWNoZUtleUhlYWRlcnMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9jYWNoZV9rZXlfaGVhZGVycyddIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgY2xvdWRmcm9udENhY2hlS2V5SGVhZGVycyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9jYWNoZV9rZXlfaGVhZGVycyddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjbG91ZGZyb250Q3JlYXRlRGlzdHJpYnV0aW9uKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9jcmVhdGVfZGlzdHJpYnV0aW9uJ10gYXMgYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IGNsb3VkZnJvbnRDcmVhdGVEaXN0cmlidXRpb24odmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9jcmVhdGVfZGlzdHJpYnV0aW9uJ10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGNsb3VkZnJvbnRFeHRlcm5hbEFybigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9leHRlcm5hbF9hcm4nXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBjbG91ZGZyb250RXh0ZXJuYWxBcm4odmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydjbG91ZGZyb250X2V4dGVybmFsX2FybiddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjbG91ZGZyb250RXh0ZXJuYWxJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9leHRlcm5hbF9pZCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IGNsb3VkZnJvbnRFeHRlcm5hbElkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9leHRlcm5hbF9pZCddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjbG91ZGZyb250TWluaW11bVByb3RvY29sVmVyc2lvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9taW5pbXVtX3Byb3RvY29sX3ZlcnNpb24nXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBjbG91ZGZyb250TWluaW11bVByb3RvY29sVmVyc2lvbih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfbWluaW11bV9wcm90b2NvbF92ZXJzaW9uJ10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGNsb3VkZnJvbnRPcmlnaW5SZXF1ZXN0UG9saWN5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWydjbG91ZGZyb250X29yaWdpbl9yZXF1ZXN0X3BvbGljeSddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IGNsb3VkZnJvbnRPcmlnaW5SZXF1ZXN0UG9saWN5KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9vcmlnaW5fcmVxdWVzdF9wb2xpY3knXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgY2xvdWRmcm9udFByaWNlQ2xhc3MoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfcHJpY2VfY2xhc3MnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBjbG91ZGZyb250UHJpY2VDbGFzcyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ2Nsb3VkZnJvbnRfcHJpY2VfY2xhc3MnXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgY2xvdWRmcm9udFJlc3BvbnNlSGVhZGVyc1BvbGljeSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snY2xvdWRmcm9udF9yZXNwb25zZV9oZWFkZXJzX3BvbGljeSddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IGNsb3VkZnJvbnRSZXNwb25zZUhlYWRlcnNQb2xpY3kodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydjbG91ZGZyb250X3Jlc3BvbnNlX2hlYWRlcnNfcG9saWN5J10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGNsb3VkZnJvbnRXZWJhY2xJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snY2xvdWRmcm9udF93ZWJhY2xfaWQnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBjbG91ZGZyb250V2ViYWNsSWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydjbG91ZGZyb250X3dlYmFjbF9pZCddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjcmVhdGVJbWFnZU9wdGltaXphdGlvbigpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2NyZWF0ZV9pbWFnZV9vcHRpbWl6YXRpb24nXSBhcyBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgY3JlYXRlSW1hZ2VPcHRpbWl6YXRpb24odmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snY3JlYXRlX2ltYWdlX29wdGltaXphdGlvbiddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBkZWJ1Z1VzZUxvY2FsUGFja2FnZXMoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWydkZWJ1Z191c2VfbG9jYWxfcGFja2FnZXMnXSBhcyBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgZGVidWdVc2VMb2NhbFBhY2thZ2VzKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ2RlYnVnX3VzZV9sb2NhbF9wYWNrYWdlcyddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBkZXBsb3ltZW50TmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snZGVwbG95bWVudF9uYW1lJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgZGVwbG95bWVudE5hbWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydkZXBsb3ltZW50X25hbWUnXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgZW5hYmxlTXVsdGlwbGVEZXBsb3ltZW50cygpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2VuYWJsZV9tdWx0aXBsZV9kZXBsb3ltZW50cyddIGFzIGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBlbmFibGVNdWx0aXBsZURlcGxveW1lbnRzKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ2VuYWJsZV9tdWx0aXBsZV9kZXBsb3ltZW50cyddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBpbWFnZU9wdGltaXphdGlvbkxhbWJkYU1lbW9yeVNpemUoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2ltYWdlX29wdGltaXphdGlvbl9sYW1iZGFfbWVtb3J5X3NpemUnXSBhcyBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBpbWFnZU9wdGltaXphdGlvbkxhbWJkYU1lbW9yeVNpemUodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydpbWFnZV9vcHRpbWl6YXRpb25fbGFtYmRhX21lbW9yeV9zaXplJ10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGxhbWJkYUF0dGFjaFBvbGljeUpzb24oKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWydsYW1iZGFfYXR0YWNoX3BvbGljeV9qc29uJ10gYXMgYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IGxhbWJkYUF0dGFjaFBvbGljeUpzb24odmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1snbGFtYmRhX2F0dGFjaF9wb2xpY3lfanNvbiddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBsYW1iZGFBdHRhY2hUb1ZwYygpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2xhbWJkYV9hdHRhY2hfdG9fdnBjJ10gYXMgYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IGxhbWJkYUF0dGFjaFRvVnBjKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ2xhbWJkYV9hdHRhY2hfdG9fdnBjJ10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGxhbWJkYVBvbGljeUpzb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2xhbWJkYV9wb2xpY3lfanNvbiddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IGxhbWJkYVBvbGljeUpzb24odmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydsYW1iZGFfcG9saWN5X2pzb24nXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgbGFtYmRhUm9sZVBlcm1pc3Npb25zQm91bmRhcnkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dHNbJ2xhbWJkYV9yb2xlX3Blcm1pc3Npb25zX2JvdW5kYXJ5J10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgbGFtYmRhUm9sZVBlcm1pc3Npb25zQm91bmRhcnkodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWydsYW1iZGFfcm9sZV9wZXJtaXNzaW9uc19ib3VuZGFyeSddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBtdWx0aXBsZURlcGxveW1lbnRzQmFzZURvbWFpbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0c1snbXVsdGlwbGVfZGVwbG95bWVudHNfYmFzZV9kb21haW4nXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCBtdWx0aXBsZURlcGxveW1lbnRzQmFzZURvbWFpbih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dHNbJ211bHRpcGxlX2RlcGxveW1lbnRzX2Jhc2VfZG9tYWluJ10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IHRhZ3MoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWyd0YWdzJ10gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgc2V0IHRhZ3ModmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1sndGFncyddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCB0YWdzUzNCdWNrZXQoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWyd0YWdzX3MzX2J1Y2tldCddIGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCB0YWdzUzNCdWNrZXQodmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0c1sndGFnc19zM19idWNrZXQnXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgdnBjU2VjdXJpdHlHcm91cElkcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWyd2cGNfc2VjdXJpdHlfZ3JvdXBfaWRzJ10gYXMgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIHNldCB2cGNTZWN1cml0eUdyb3VwSWRzKHZhbHVlOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWyd2cGNfc2VjdXJpdHlfZ3JvdXBfaWRzJ10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IHZwY1N1Ym5ldElkcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRzWyd2cGNfc3VibmV0X2lkcyddIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBzZXQgdnBjU3VibmV0SWRzKHZhbHVlOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuaW5wdXRzWyd2cGNfc3VibmV0X2lkcyddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBhcGlFbmRwb2ludE91dHB1dCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmcoJ2FwaV9lbmRwb2ludCcpXG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBhcGlFbmRwb2ludEFjY2Vzc1BvbGljeUFybk91dHB1dCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmcoJ2FwaV9lbmRwb2ludF9hY2Nlc3NfcG9saWN5X2FybicpXG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjbG91ZGZyb250Q3VzdG9tRXJyb3JSZXNwb25zZU91dHB1dCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmcoJ2Nsb3VkZnJvbnRfY3VzdG9tX2Vycm9yX3Jlc3BvbnNlJylcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGNsb3VkZnJvbnREZWZhdWx0Q2FjaGVCZWhhdmlvck91dHB1dCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmcoJ2Nsb3VkZnJvbnRfZGVmYXVsdF9jYWNoZV9iZWhhdmlvcicpXG4gICAgICAgIH1cbiAgICAgICAgcHVibGljIGdldCBjbG91ZGZyb250RGVmYXVsdFJvb3RPYmplY3RPdXRwdXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCdjbG91ZGZyb250X2RlZmF1bHRfcm9vdF9vYmplY3QnKVxuICAgICAgICB9XG4gICAgICAgIHB1YmxpYyBnZXQgY2xvdWRmcm9udERvbWFpbk5hbWVPdXRwdXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCdjbG91ZGZyb250X2RvbWFpbl9uYW1lJylcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGNsb3VkZnJvbnRIb3N0ZWRab25lSWRPdXRwdXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCdjbG91ZGZyb250X2hvc3RlZF96b25lX2lkJylcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGNsb3VkZnJvbnRPcmRlcmVkQ2FjaGVCZWhhdmlvcnNPdXRwdXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCdjbG91ZGZyb250X29yZGVyZWRfY2FjaGVfYmVoYXZpb3JzJylcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IGNsb3VkZnJvbnRPcmlnaW5zT3V0cHV0KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0cmluZygnY2xvdWRmcm9udF9vcmlnaW5zJylcbiAgICAgICAgfVxuICAgICAgICBwdWJsaWMgZ2V0IHVwbG9hZEJ1Y2tldElkT3V0cHV0KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0cmluZygndXBsb2FkX2J1Y2tldF9pZCcpXG4gICAgICAgIH1cbiAgICAgICAgcHJvdGVjdGVkIHN5bnRoZXNpemVBdHRyaWJ1dGVzKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0cztcbiAgICAgICAgfVxuICAgICAgICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLmlucHV0cylcbiAgICAgICAgICAgICAgLmZpbHRlcigoWywgdmFsXSkgPT4gdmFsICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIC5tYXAoKFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImFueVwiLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFwiXG4gICAgYCk7XG4gIH0sXG4gIDEyMDAwMCxcbik7XG4iXX0=
@@ -23,7 +23,7 @@ class ModuleGenerator {
23
23
  this.code.openFile(target.fileName);
24
24
  this.code.line(`// generated by cdktn get`);
25
25
  this.code.line(`// ${target.source}`);
26
- this.code.line(`import { TerraformModule, TerraformModuleUserConfig } from 'cdktn';`);
26
+ this.code.line(`import { TerraformModule, type TerraformModuleUserConfig } from 'cdktn';`);
27
27
  this.code.line(`import { Construct } from 'constructs';`);
28
28
  const baseName = this.code.toPascalCase(target.name.replace(/[-/.]/g, "_"));
29
29
  const configType = `${baseName}Config`;
@@ -181,4 +181,4 @@ function parseComplexType(type) {
181
181
  }
182
182
  throw new Error(`unexpected kind ${kind}`);
183
183
  }
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nZXQvZ2VuZXJhdG9yL21vZHVsZS1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx5Q0FBbUQ7QUFDbkQscUNBQTBDO0FBQzFDLDZEQUF3RDtBQUd4RCxNQUFhLGVBQWU7SUFDMUIsWUFDbUIsSUFBZSxFQUNmLE9BQXNDO1FBRHRDLFNBQUksR0FBSixJQUFJLENBQVc7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUErQjtRQUV2RCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFFMUIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUFtQztRQUN2RCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBRXpCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNaLHFFQUFxRSxDQUN0RSxDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENB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QUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsSUFBWTtJQUNwQyxNQUFNLE9BQU8sR0FBRywyQ0FBMkMsQ0FBQztJQUM1RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBRWxDLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDdEMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUNyQixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDbkIsT0FBTyxvQkFBb0IsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDdEQsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBDb2RlTWFrZXIsIHRvQ2FtZWxDYXNlIH0gZnJvbSBcImNvZGVtYWtlclwiO1xuaW1wb3J0IHsgQXR0cmlidXRlTW9kZWwgfSBmcm9tIFwiLi9tb2RlbHNcIjtcbmltcG9ydCB7IHNhbml0aXplZENvbW1lbnQgfSBmcm9tIFwiLi9zYW5pdGl6ZWQtY29tbWVudHNcIjtcbmltcG9ydCB7IENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldCB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuXG5leHBvcnQgY2xhc3MgTW9kdWxlR2VuZXJhdG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb2RlOiBDb2RlTWFrZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXRzOiBDb25zdHJ1Y3RzTWFrZXJNb2R1bGVUYXJnZXRbXSxcbiAgKSB7XG4gICAgdGhpcy5jb2RlLmluZGVudGF0aW9uID0gMjtcblxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRoaXMudGFyZ2V0cykge1xuICAgICAgdGhpcy5lbWl0U3VibW9kdWxlKHRhcmdldCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U3VibW9kdWxlKHRhcmdldDogQ29uc3RydWN0c01ha2VyTW9kdWxlVGFyZ2V0KSB7XG4gICAgY29uc3Qgc3BlYyA9IHRhcmdldC5zcGVjO1xuXG4gICAgaWYgKCFzcGVjKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG1pc3Npbmcgc3BlYyBmb3IgJHt0YXJnZXQuZnFufWApO1xuICAgIH1cblxuICAgIHRoaXMuY29kZS5vcGVuRmlsZSh0YXJnZXQuZmlsZU5hbWUpO1xuXG4gICAgdGhpcy5jb2RlLmxpbmUoYC8vIGdlbmVyYXRlZCBieSBjZGt0biBnZXRgKTtcbiAgICB0aGlzLmNvZGUubGluZShgLy8gJHt0YXJnZXQuc291cmNlfWApO1xuXG4gICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICBgaW1wb3J0IHsgVGVycmFmb3JtTW9kdWxlLCBUZXJyYWZvcm1Nb2R1bGVVc2VyQ29uZmlnIH0gZnJvbSAnY2RrdG4nO2AsXG4gICAgKTtcbiAgICB0aGlzLmNvZGUubGluZShgaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7YCk7XG5cbiAgICBjb25zdCBiYXNlTmFtZSA9IHRoaXMuY29kZS50b1Bhc2NhbENhc2UodGFyZ2V0Lm5hbWUucmVwbGFjZSgvWy0vLl0vZywgXCJfXCIpKTtcbiAgICBjb25zdCBjb25maWdUeXBlID0gYCR7YmFzZU5hbWV9Q29uZmlnYDtcblxuICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICBgZXhwb3J0IGludGVyZmFjZSAke2NvbmZpZ1R5cGV9IGV4dGVuZHMgVGVycmFmb3JtTW9kdWxlVXNlckNvbmZpZ2AsXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IGlucHV0IG9mIHNwZWMuaW5wdXRzKSB7XG4gICAgICBjb25zdCBvcHRpb25hbCA9IGlucHV0LnJlcXVpcmVkICYmIGlucHV0LmRlZmF1bHQgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIj9cIjtcblxuICAgICAgY29uc3QgY29tbWVudCA9IHNhbml0aXplZENvbW1lbnQodGhpcy5jb2RlKTtcbiAgICAgIGlmIChpbnB1dC5kZXNjcmlwdGlvbikge1xuICAgICAgICBjb21tZW50LmxpbmUoaW5wdXQuZGVzY3JpcHRpb24pO1xuICAgICAgfVxuICAgICAgaWYgKGlucHV0LmRlZmF1bHQpIHtcbiAgICAgICAgY29tbWVudC5saW5lKGlucHV0LmRlZmF1bHQpO1xuICAgICAgfVxuICAgICAgaWYgKGlucHV0LnR5cGUuaW5jbHVkZXMoXCJtYXAoXCIpKSB7XG4gICAgICAgIGNvbW1lbnQubGluZShcbiAgICAgICAgICBgVGhlIHByb3BlcnR5IHR5cGUgY29udGFpbnMgYSBtYXAsIHRoZXkgaGF2ZSBzcGVjaWFsIGhhbmRsaW5nLCBwbGVhc2Ugc2VlIHtAbGluayBjZGsudGYvbW9kdWxlLW1hcC1pbnB1dHMgdGhlIGRvY3N9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbW1lbnQuZW5kKCk7XG5cbiAgICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgICBgcmVhZG9ubHkgJHtBdHRyaWJ1dGVNb2RlbC5lc2NhcGVOYW1lKFxuICAgICAgICAgIHRvQ2FtZWxDYXNlKGlucHV0Lm5hbWUpLFxuICAgICAgICApfSR7b3B0aW9uYWx9OiAke3BhcnNlVHlwZShpbnB1dC50eXBlKX07YCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG5cbiAgICAvLyBBZGQgYSBsaW5rIHRvIHRoZSBUZXJyYWZvcm0gUmVnaXN0cnkgaWYgaXQgaXMgc291cmNlZCBmcm9tIHRoZXJlXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2UvbW9kdWxlcy9zb3VyY2VzXG4gICAgLy8gUmVnaXN0cnkgbW9kdWxlcyBhcmUgcmVmZXJyZWQgdG8gYXMgPE5BTUVTUEFDRT4vPE5BTUU+LzxQUk9WSURFUj5cbiAgICAvLyBPdGhlciBzb3VyY2VzIGNvbnRhaW4gZG90cywgZS5nLlxuICAgIC8vIGFwcC50ZXJyYWZvcm0uaW8vZXhhbXBsZS1jb3JwL2s4cy1jbHVzdGVyL2F6dXJlcm0gKHByaXZhdGUgcmVnaXN0cmllcylcbiAgICAvLyBnaXRodWIuY29tL2hhc2hpY29ycC9leGFtcGxlIChHaXRodWIpXG4gICAgLy8gZ2l0QGdpdGh1Yi5jb206aGFzaGljb3JwL2V4YW1wbGUuZ2l0XG4gICAgLy8gYml0YnVja2V0Lm9yZy9oYXNoaWNvcnAvdGVycmFmb3JtLWNvbnN1bC1hd3MgKEJpdGJ1Y2tldClcbiAgICAvLyAuLi4gYW5kIG1vcmVcbiAgICAvLyAuLi9tb2R1bGUgYW5kIC4vbW9kdWxlIChsb2NhbCBwYXRocylcbiAgICBjb25zdCBpc05vblJlZ2lzdHJ5TW9kdWxlID0gdGFyZ2V0LnNvdXJjZS5pbmNsdWRlcyhcIi5cIik7XG4gICAgbGV0IHJlZ2lzdHJ5UGF0aDtcbiAgICAvLyBTdWJtb2R1bGVzIGFsc28gZXhpc3QgKGUuZy4gdGVycmFmb3JtLWF3cy1tb2R1bGVzL3ZwYy9hd3MvL21vZHVsZXMvdnBjLWVuZHBvaW50cylcbiAgICAvLyBBbmQgbGlua2luZyBkaXJlY3RseSB0byB0aGVtIGluIHRoZSBSZWdpc3RyeSByZXF1aXJlcyBpbmNsdWRpbmcgdGhlIHZlcnNpb25cbiAgICAvLyBsaWtlIGUuZy4gaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vbW9kdWxlcy90ZXJyYWZvcm0tYXdzLW1vZHVsZXMvdnBjL2F3cy9sYXRlc3Qvc3VibW9kdWxlcy92cGMtZW5kcG9pbnRzXG4gICAgaWYgKHRhcmdldC5zb3VyY2UuaW5jbHVkZXMoXCIvL1wiKSkge1xuICAgICAgcmVnaXN0cnlQYXRoID0gdGFyZ2V0LnNvdXJjZS5yZXBsYWNlKFxuICAgICAgICBcIi8vbW9kdWxlc1wiLFxuICAgICAgICBgLyR7dGFyZ2V0LnZlcnNpb24gfHwgXCJsYXRlc3RcIn0vc3VibW9kdWxlc2AsXG4gICAgICApO1xuICAgICAgLy8gdGVycmFmb3JtLWF3cy1tb2R1bGVzL3ZwYy9hd3MvL21vZHVsZXMvdnBjLWVuZHBvaW50c1xuICAgICAgLy8gLT5cbiAgICAgIC8vIHRlcnJhZm9ybS1hd3MtbW9kdWxlcy92cGMvYXdzL2xhdGVzdC9zdWJtb2R1bGVzL3ZwYy1lbmRwb2ludHNcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbm90IHN1Ym1vZHVsZSBzcGVjaWZpZWQsIGp1c3QgYXBwZW5kIHRoZSB2ZXJzaW9uXG4gICAgICByZWdpc3RyeVBhdGggPSBgJHt0YXJnZXQuc291cmNlfS8ke3RhcmdldC52ZXJzaW9uIHx8IFwibGF0ZXN0XCJ9YDtcbiAgICB9XG5cbiAgICBjb25zdCBjb21tZW50ID0gc2FuaXRpemVkQ29tbWVudCh0aGlzLmNvZGUpO1xuICAgIGNvbW1lbnQubGluZShgRGVmaW5lcyBhbiAke2Jhc2VOYW1lfSBiYXNlZCBvbiBhIFRlcnJhZm9ybSBtb2R1bGVgKTtcbiAgICBjb21tZW50LmxpbmUoYGApO1xuICAgIGNvbW1lbnQubGluZShcbiAgICAgIGlzTm9uUmVnaXN0cnlNb2R1bGVcbiAgICAgICAgPyBgU291cmNlIGF0ICR7dGFyZ2V0LnNvdXJjZX1gXG4gICAgICAgIDogYERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vbW9kdWxlcy8ke3JlZ2lzdHJ5UGF0aH0gJHt0YXJnZXQuc291cmNlfX1gLFxuICAgICk7XG4gICAgY29tbWVudC5lbmQoKTtcbiAgICB0aGlzLmNvZGUub3BlbkJsb2NrKGBleHBvcnQgY2xhc3MgJHtiYXNlTmFtZX0gZXh0ZW5kcyBUZXJyYWZvcm1Nb2R1bGVgKTtcblxuICAgIHRoaXMuY29kZS5saW5lKGBwcml2YXRlIHJlYWRvbmx5IGlucHV0czogeyBbbmFtZTogc3RyaW5nXTogYW55IH0gPSB7IH1gKTtcblxuICAgIGNvbnN0IGFsbE9wdGlvbmFsID0gc3BlYy5pbnB1dHMuZmluZCgoeCkgPT4geC5yZXF1aXJlZCkgPyBcIlwiIDogXCIgPSB7fVwiO1xuXG4gICAgdGhpcy5jb2RlLm9wZW4oXG4gICAgICBgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbmZpZzogJHtjb25maWdUeXBlfSR7YWxsT3B0aW9uYWx9KSB7YCxcbiAgICApO1xuICAgIHRoaXMuY29kZS5vcGVuKGBzdXBlcihzY29wZSwgaWQsIHtgKTtcbiAgICB0aGlzLmNvZGUubGluZShcIi4uLmNvbmZpZyxcIik7XG4gICAgdGhpcy5jb2RlLmxpbmUoYHNvdXJjZTogJyR7dGFyZ2V0LnNvdXJjZX0nLGApO1xuICAgIGlmICh0YXJnZXQudmVyc2lvbikge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYHZlcnNpb246ICcke3RhcmdldC52ZXJzaW9ufScsYCk7XG4gICAgfVxuICAgIHRoaXMuY29kZS5jbG9zZShgfSk7YCk7XG5cbiAgICBmb3IgKGNvbnN0IGlucHV0IG9mIHNwZWMuaW5wdXRzKSB7XG4gICAgICBjb25zdCBpbnB1dE5hbWUgPSBBdHRyaWJ1dGVNb2RlbC5lc2NhcGVOYW1lKHRvQ2FtZWxDYXNlKGlucHV0Lm5hbWUpKTtcbiAgICAgIHRoaXMuY29kZS5saW5lKGB0aGlzLiR7aW5wdXROYW1lfSA9IGNvbmZpZy4ke2lucHV0TmFtZX07YCk7XG4gICAgfVxuXG4gICAgdGhpcy5jb2RlLmNsb3NlKGB9YCk7IC8vIGN0b3JcblxuICAgIGZvciAoY29uc3QgaW5wdXQgb2Ygc3BlYy5pbnB1dHMpIHtcbiAgICAgIGNvbnN0IGlucHV0TmFtZSA9IEF0dHJpYnV0ZU1vZGVsLmVzY2FwZU5hbWUodG9DYW1lbENhc2UoaW5wdXQubmFtZSkpO1xuICAgICAgY29uc3QgaW5wdXRUeXBlID1cbiAgICAgICAgcGFyc2VUeXBlKGlucHV0LnR5cGUpICtcbiAgICAgICAgKGlucHV0LnJlcXVpcmVkICYmIGlucHV0LmRlZmF1bHQgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBcIiB8IHVuZGVmaW5lZFwiKTtcbiAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soYHB1YmxpYyBnZXQgJHtpbnB1dE5hbWV9KCk6ICR7aW5wdXRUeXBlfWApO1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiB0aGlzLmlucHV0c1snJHtpbnB1dC5uYW1lfSddIGFzICR7aW5wdXRUeXBlfTtgKTtcbiAgICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG5cbiAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soYHB1YmxpYyBzZXQgJHtpbnB1dE5hbWV9KHZhbHVlOiAke2lucHV0VHlwZX0pYCk7XG4gICAgICB0aGlzLmNvZGUubGluZShgdGhpcy5pbnB1dHNbJyR7aW5wdXQubmFtZX0nXSA9IHZhbHVlO2ApO1xuICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBzcGVjLm91dHB1dHMpIHtcbiAgICAgIGNvbnN0IG91dHB1dE5hbWUgPSB0b0NhbWVsQ2FzZShvdXRwdXQubmFtZSk7XG4gICAgICB0aGlzLmNvZGUub3BlbkJsb2NrKGBwdWJsaWMgZ2V0ICR7b3V0cHV0TmFtZX1PdXRwdXQoKWApO1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiB0aGlzLmdldFN0cmluZygnJHtvdXRwdXQubmFtZX0nKWApO1xuICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvZGUub3BlbkJsb2NrKGBwcm90ZWN0ZWQgc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKWApO1xuICAgIHRoaXMuY29kZS5saW5lKGByZXR1cm4gdGhpcy5pbnB1dHM7YCk7XG4gICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcblxuICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICBgcHJvdGVjdGVkIHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9YCxcbiAgICApO1xuICAgIHRoaXMuY29kZS5saW5lKGByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGApO1xuICAgIHRoaXMuY29kZS5saW5lKGAgIE9iamVjdC5lbnRyaWVzKHRoaXMuaW5wdXRzKWApO1xuICAgIHRoaXMuY29kZS5saW5lKGAgICAgLmZpbHRlcigoWywgdmFsXSkgPT4gdmFsICE9PSB1bmRlZmluZWQpYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYCAgICAubWFwKChba2V5LCB2YWxdKSA9PiB7YCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYCAgICAgIHJldHVybiBbYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYCAgICAgICAga2V5LGApO1xuICAgIHRoaXMuY29kZS5saW5lKGAgICAgICAgIHtgKTtcbiAgICB0aGlzLmNvZGUubGluZShgICAgICAgICAgIHZhbHVlOiB2YWwsYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYCAgICAgICAgICB0eXBlOiBcImFueVwiLGApO1xuICAgIHRoaXMuY29kZS5saW5lKGAgICAgICAgIH0sYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYCAgICAgIF07YCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYCAgICB9KWApO1xuICAgIHRoaXMuY29kZS5saW5lKGApO2ApO1xuICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG5cbiAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpOyAvLyBjbGFzc1xuICAgIHRoaXMuY29kZS5jbG9zZUZpbGUodGFyZ2V0LmZpbGVOYW1lKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVR5cGUodHlwZTogc3RyaW5nKSB7XG4gIGlmICh0eXBlID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIFwic3RyaW5nXCI7XG4gIH1cbiAgaWYgKHR5cGUgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gXCJudW1iZXJcIjtcbiAgfVxuICBpZiAodHlwZSA9PT0gXCJib29sXCIpIHtcbiAgICByZXR1cm4gXCJib29sZWFuXCI7XG4gIH1cbiAgaWYgKHR5cGUgPT09IFwibGlzdFwiKSB7XG4gICAgcmV0dXJuIFwic3RyaW5nW11cIjtcbiAgfVxuICBpZiAodHlwZSA9PT0gXCJtYXBcIikge1xuICAgIHJldHVybiBcInsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cIjtcbiAgfVxuICBpZiAodHlwZSA9PT0gXCJ0dXBsZVwiKSB7XG4gICAgcmV0dXJuIFwic3RyaW5nW11cIjtcbiAgfVxuICBpZiAodHlwZSA9PT0gXCJhbnlcIikge1xuICAgIHJldHVybiBcImFueVwiO1xuICB9XG5cbiAgY29uc3QgY29tcGxleFR5cGUgPSBwYXJzZUNvbXBsZXhUeXBlKHR5cGUpO1xuICBpZiAoY29tcGxleFR5cGUpIHtcbiAgICByZXR1cm4gY29tcGxleFR5cGU7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gdHlwZSAke3R5cGV9YCk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ29tcGxleFR5cGUodHlwZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgY29tcGxleCA9IC9eKG9iamVjdHxsaXN0fG1hcHxzZXR8dHVwbGUpXFwoKFtcXHNcXFNdKylcXCkvO1xuICBjb25zdCBtYXRjaCA9IGNvbXBsZXguZXhlYyh0eXBlKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBbLCBraW5kLCBpbm5lclR5cGVdID0gbWF0Y2g7XG5cbiAgaWYgKGtpbmQgPT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gYGFueWA7XG4gIH1cblxuICBpZiAoa2luZCA9PT0gXCJsaXN0XCIgfHwga2luZCA9PT0gXCJzZXRcIikge1xuICAgIHJldHVybiBgJHtwYXJzZVR5cGUoaW5uZXJUeXBlKX1bXWA7XG4gIH1cblxuICBpZiAoa2luZCA9PT0gXCJ0dXBsZVwiKSB7XG4gICAgcmV0dXJuIGBhbnlbXWA7XG4gIH1cblxuICBpZiAoa2luZCA9PT0gXCJtYXBcIikge1xuICAgIHJldHVybiBgeyBba2V5OiBzdHJpbmddOiAke3BhcnNlVHlwZShpbm5lclR5cGUpfSB9YDtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBraW5kICR7a2luZH1gKTtcbn1cbiJdfQ==
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nZXQvZ2VuZXJhdG9yL21vZHVsZS1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx5Q0FBbUQ7QUFDbkQscUNBQTBDO0FBQzFDLDZEQUF3RDtBQUd4RCxNQUFhLGVBQWU7SUFDMUIsWUFDbUIsSUFBZSxFQUNmLE9BQXNDO1FBRHRDLFNBQUksR0FBSixJQUFJLENBQVc7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUErQjtRQUV2RCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFFMUIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUFtQztRQUN2RCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBRXpCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNaLDBFQUEwRSxDQUMzRSxDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENB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QUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsSUFBWTtJQUNwQyxNQUFNLE9BQU8sR0FBRywyQ0FBMkMsQ0FBQztJQUM1RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBRWxDLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDdEMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUNyQixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDbkIsT0FBTyxvQkFBb0IsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDdEQsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBDb2RlTWFrZXIsIHRvQ2FtZWxDYXNlIH0gZnJvbSBcImNvZGVtYWtlclwiO1xuaW1wb3J0IHsgQXR0cmlidXRlTW9kZWwgfSBmcm9tIFwiLi9tb2RlbHNcIjtcbmltcG9ydCB7IHNhbml0aXplZENvbW1lbnQgfSBmcm9tIFwiLi9zYW5pdGl6ZWQtY29tbWVudHNcIjtcbmltcG9ydCB7IENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldCB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuXG5leHBvcnQgY2xhc3MgTW9kdWxlR2VuZXJhdG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb2RlOiBDb2RlTWFrZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXRzOiBDb25zdHJ1Y3RzTWFrZXJNb2R1bGVUYXJnZXRbXSxcbiAgKSB7XG4gICAgdGhpcy5jb2RlLmluZGVudGF0aW9uID0gMjtcblxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRoaXMudGFyZ2V0cykge1xuICAgICAgdGhpcy5lbWl0U3VibW9kdWxlKHRhcmdldCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U3VibW9kdWxlKHRhcmdldDogQ29uc3RydWN0c01ha2VyTW9kdWxlVGFyZ2V0KSB7XG4gICAgY29uc3Qgc3BlYyA9IHRhcmdldC5zcGVjO1xuXG4gICAgaWYgKCFzcGVjKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG1pc3Npbmcgc3BlYyBmb3IgJHt0YXJnZXQuZnFufWApO1xuICAgIH1cblxuICAgIHRoaXMuY29kZS5vcGVuRmlsZSh0YXJnZXQuZmlsZU5hbWUpO1xuXG4gICAgdGhpcy5jb2RlLmxpbmUoYC8vIGdlbmVyYXRlZCBieSBjZGt0biBnZXRgKTtcbiAgICB0aGlzLmNvZGUubGluZShgLy8gJHt0YXJnZXQuc291cmNlfWApO1xuXG4gICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICBgaW1wb3J0IHsgVGVycmFmb3JtTW9kdWxlLCB0eXBlIFRlcnJhZm9ybU1vZHVsZVVzZXJDb25maWcgfSBmcm9tICdjZGt0bic7YCxcbiAgICApO1xuICAgIHRoaXMuY29kZS5saW5lKGBpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztgKTtcblxuICAgIGNvbnN0IGJhc2VOYW1lID0gdGhpcy5jb2RlLnRvUGFzY2FsQ2FzZSh0YXJnZXQubmFtZS5yZXBsYWNlKC9bLS8uXS9nLCBcIl9cIikpO1xuICAgIGNvbnN0IGNvbmZpZ1R5cGUgPSBgJHtiYXNlTmFtZX1Db25maWdgO1xuXG4gICAgdGhpcy5jb2RlLm9wZW5CbG9jayhcbiAgICAgIGBleHBvcnQgaW50ZXJmYWNlICR7Y29uZmlnVHlwZX0gZXh0ZW5kcyBUZXJyYWZvcm1Nb2R1bGVVc2VyQ29uZmlnYCxcbiAgICApO1xuICAgIGZvciAoY29uc3QgaW5wdXQgb2Ygc3BlYy5pbnB1dHMpIHtcbiAgICAgIGNvbnN0IG9wdGlvbmFsID0gaW5wdXQucmVxdWlyZWQgJiYgaW5wdXQuZGVmYXVsdCA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiP1wiO1xuXG4gICAgICBjb25zdCBjb21tZW50ID0gc2FuaXRpemVkQ29tbWVudCh0aGlzLmNvZGUpO1xuICAgICAgaWYgKGlucHV0LmRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGNvbW1lbnQubGluZShpbnB1dC5kZXNjcmlwdGlvbik7XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXQuZGVmYXVsdCkge1xuICAgICAgICBjb21tZW50LmxpbmUoaW5wdXQuZGVmYXVsdCk7XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXQudHlwZS5pbmNsdWRlcyhcIm1hcChcIikpIHtcbiAgICAgICAgY29tbWVudC5saW5lKFxuICAgICAgICAgIGBUaGUgcHJvcGVydHkgdHlwZSBjb250YWlucyBhIG1hcCwgdGhleSBoYXZlIHNwZWNpYWwgaGFuZGxpbmcsIHBsZWFzZSBzZWUge0BsaW5rIGNkay50Zi9tb2R1bGUtbWFwLWlucHV0cyB0aGUgZG9jc31gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29tbWVudC5lbmQoKTtcblxuICAgICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICAgIGByZWFkb25seSAke0F0dHJpYnV0ZU1vZGVsLmVzY2FwZU5hbWUoXG4gICAgICAgICAgdG9DYW1lbENhc2UoaW5wdXQubmFtZSksXG4gICAgICAgICl9JHtvcHRpb25hbH06ICR7cGFyc2VUeXBlKGlucHV0LnR5cGUpfTtgLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcblxuICAgIC8vIEFkZCBhIGxpbmsgdG8gdGhlIFRlcnJhZm9ybSBSZWdpc3RyeSBpZiBpdCBpcyBzb3VyY2VkIGZyb20gdGhlcmVcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9sYW5ndWFnZS9tb2R1bGVzL3NvdXJjZXNcbiAgICAvLyBSZWdpc3RyeSBtb2R1bGVzIGFyZSByZWZlcnJlZCB0byBhcyA8TkFNRVNQQUNFPi88TkFNRT4vPFBST1ZJREVSPlxuICAgIC8vIE90aGVyIHNvdXJjZXMgY29udGFpbiBkb3RzLCBlLmcuXG4gICAgLy8gYXBwLnRlcnJhZm9ybS5pby9leGFtcGxlLWNvcnAvazhzLWNsdXN0ZXIvYXp1cmVybSAocHJpdmF0ZSByZWdpc3RyaWVzKVxuICAgIC8vIGdpdGh1Yi5jb20vaGFzaGljb3JwL2V4YW1wbGUgKEdpdGh1YilcbiAgICAvLyBnaXRAZ2l0aHViLmNvbTpoYXNoaWNvcnAvZXhhbXBsZS5naXRcbiAgICAvLyBiaXRidWNrZXQub3JnL2hhc2hpY29ycC90ZXJyYWZvcm0tY29uc3VsLWF3cyAoQml0YnVja2V0KVxuICAgIC8vIC4uLiBhbmQgbW9yZVxuICAgIC8vIC4uL21vZHVsZSBhbmQgLi9tb2R1bGUgKGxvY2FsIHBhdGhzKVxuICAgIGNvbnN0IGlzTm9uUmVnaXN0cnlNb2R1bGUgPSB0YXJnZXQuc291cmNlLmluY2x1ZGVzKFwiLlwiKTtcbiAgICBsZXQgcmVnaXN0cnlQYXRoO1xuICAgIC8vIFN1Ym1vZHVsZXMgYWxzbyBleGlzdCAoZS5nLiB0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvdnBjL2F3cy8vbW9kdWxlcy92cGMtZW5kcG9pbnRzKVxuICAgIC8vIEFuZCBsaW5raW5nIGRpcmVjdGx5IHRvIHRoZW0gaW4gdGhlIFJlZ2lzdHJ5IHJlcXVpcmVzIGluY2x1ZGluZyB0aGUgdmVyc2lvblxuICAgIC8vIGxpa2UgZS5nLiBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9tb2R1bGVzL3RlcnJhZm9ybS1hd3MtbW9kdWxlcy92cGMvYXdzL2xhdGVzdC9zdWJtb2R1bGVzL3ZwYy1lbmRwb2ludHNcbiAgICBpZiAodGFyZ2V0LnNvdXJjZS5pbmNsdWRlcyhcIi8vXCIpKSB7XG4gICAgICByZWdpc3RyeVBhdGggPSB0YXJnZXQuc291cmNlLnJlcGxhY2UoXG4gICAgICAgIFwiLy9tb2R1bGVzXCIsXG4gICAgICAgIGAvJHt0YXJnZXQudmVyc2lvbiB8fCBcImxhdGVzdFwifS9zdWJtb2R1bGVzYCxcbiAgICAgICk7XG4gICAgICAvLyB0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvdnBjL2F3cy8vbW9kdWxlcy92cGMtZW5kcG9pbnRzXG4gICAgICAvLyAtPlxuICAgICAgLy8gdGVycmFmb3JtLWF3cy1tb2R1bGVzL3ZwYy9hd3MvbGF0ZXN0L3N1Ym1vZHVsZXMvdnBjLWVuZHBvaW50c1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBub3Qgc3VibW9kdWxlIHNwZWNpZmllZCwganVzdCBhcHBlbmQgdGhlIHZlcnNpb25cbiAgICAgIHJlZ2lzdHJ5UGF0aCA9IGAke3RhcmdldC5zb3VyY2V9LyR7dGFyZ2V0LnZlcnNpb24gfHwgXCJsYXRlc3RcIn1gO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbW1lbnQgPSBzYW5pdGl6ZWRDb21tZW50KHRoaXMuY29kZSk7XG4gICAgY29tbWVudC5saW5lKGBEZWZpbmVzIGFuICR7YmFzZU5hbWV9IGJhc2VkIG9uIGEgVGVycmFmb3JtIG1vZHVsZWApO1xuICAgIGNvbW1lbnQubGluZShgYCk7XG4gICAgY29tbWVudC5saW5lKFxuICAgICAgaXNOb25SZWdpc3RyeU1vZHVsZVxuICAgICAgICA/IGBTb3VyY2UgYXQgJHt0YXJnZXQuc291cmNlfWBcbiAgICAgICAgOiBgRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9tb2R1bGVzLyR7cmVnaXN0cnlQYXRofSAke3RhcmdldC5zb3VyY2V9fWAsXG4gICAgKTtcbiAgICBjb21tZW50LmVuZCgpO1xuICAgIHRoaXMuY29kZS5vcGVuQmxvY2soYGV4cG9ydCBjbGFzcyAke2Jhc2VOYW1lfSBleHRlbmRzIFRlcnJhZm9ybU1vZHVsZWApO1xuXG4gICAgdGhpcy5jb2RlLmxpbmUoYHByaXZhdGUgcmVhZG9ubHkgaW5wdXRzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSA9IHsgfWApO1xuXG4gICAgY29uc3QgYWxsT3B0aW9uYWwgPSBzcGVjLmlucHV0cy5maW5kKCh4KSA9PiB4LnJlcXVpcmVkKSA/IFwiXCIgOiBcIiA9IHt9XCI7XG5cbiAgICB0aGlzLmNvZGUub3BlbihcbiAgICAgIGBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY29uZmlnOiAke2NvbmZpZ1R5cGV9JHthbGxPcHRpb25hbH0pIHtgLFxuICAgICk7XG4gICAgdGhpcy5jb2RlLm9wZW4oYHN1cGVyKHNjb3BlLCBpZCwge2ApO1xuICAgIHRoaXMuY29kZS5saW5lKFwiLi4uY29uZmlnLFwiKTtcbiAgICB0aGlzLmNvZGUubGluZShgc291cmNlOiAnJHt0YXJnZXQuc291cmNlfScsYCk7XG4gICAgaWYgKHRhcmdldC52ZXJzaW9uKSB7XG4gICAgICB0aGlzLmNvZGUubGluZShgdmVyc2lvbjogJyR7dGFyZ2V0LnZlcnNpb259JyxgKTtcbiAgICB9XG4gICAgdGhpcy5jb2RlLmNsb3NlKGB9KTtgKTtcblxuICAgIGZvciAoY29uc3QgaW5wdXQgb2Ygc3BlYy5pbnB1dHMpIHtcbiAgICAgIGNvbnN0IGlucHV0TmFtZSA9IEF0dHJpYnV0ZU1vZGVsLmVzY2FwZU5hbWUodG9DYW1lbENhc2UoaW5wdXQubmFtZSkpO1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYHRoaXMuJHtpbnB1dE5hbWV9ID0gY29uZmlnLiR7aW5wdXROYW1lfTtgKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvZGUuY2xvc2UoYH1gKTsgLy8gY3RvclxuXG4gICAgZm9yIChjb25zdCBpbnB1dCBvZiBzcGVjLmlucHV0cykge1xuICAgICAgY29uc3QgaW5wdXROYW1lID0gQXR0cmlidXRlTW9kZWwuZXNjYXBlTmFtZSh0b0NhbWVsQ2FzZShpbnB1dC5uYW1lKSk7XG4gICAgICBjb25zdCBpbnB1dFR5cGUgPVxuICAgICAgICBwYXJzZVR5cGUoaW5wdXQudHlwZSkgK1xuICAgICAgICAoaW5wdXQucmVxdWlyZWQgJiYgaW5wdXQuZGVmYXVsdCA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IFwiIHwgdW5kZWZpbmVkXCIpO1xuICAgICAgdGhpcy5jb2RlLm9wZW5CbG9jayhgcHVibGljIGdldCAke2lucHV0TmFtZX0oKTogJHtpbnB1dFR5cGV9YCk7XG4gICAgICB0aGlzLmNvZGUubGluZShgcmV0dXJuIHRoaXMuaW5wdXRzWycke2lucHV0Lm5hbWV9J10gYXMgJHtpbnB1dFR5cGV9O2ApO1xuICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcblxuICAgICAgdGhpcy5jb2RlLm9wZW5CbG9jayhgcHVibGljIHNldCAke2lucHV0TmFtZX0odmFsdWU6ICR7aW5wdXRUeXBlfSlgKTtcbiAgICAgIHRoaXMuY29kZS5saW5lKGB0aGlzLmlucHV0c1snJHtpbnB1dC5uYW1lfSddID0gdmFsdWU7YCk7XG4gICAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIHNwZWMub3V0cHV0cykge1xuICAgICAgY29uc3Qgb3V0cHV0TmFtZSA9IHRvQ2FtZWxDYXNlKG91dHB1dC5uYW1lKTtcbiAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soYHB1YmxpYyBnZXQgJHtvdXRwdXROYW1lfU91dHB1dCgpYCk7XG4gICAgICB0aGlzLmNvZGUubGluZShgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCcke291dHB1dC5uYW1lfScpYCk7XG4gICAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIHRoaXMuY29kZS5vcGVuQmxvY2soYHByb3RlY3RlZCBzeW50aGVzaXplQXR0cmlidXRlcygpYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiB0aGlzLmlucHV0cztgKTtcbiAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuXG4gICAgdGhpcy5jb2RlLm9wZW5CbG9jayhcbiAgICAgIGBwcm90ZWN0ZWQgc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH1gLFxuICAgICk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYCAgT2JqZWN0LmVudHJpZXModGhpcy5pbnB1dHMpYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYCAgICAuZmlsdGVyKChbLCB2YWxdKSA9PiB2YWwgIT09IHVuZGVmaW5lZClgKTtcbiAgICB0aGlzLmNvZGUubGluZShgICAgIC5tYXAoKFtrZXksIHZhbF0pID0+IHtgKTtcbiAgICB0aGlzLmNvZGUubGluZShgICAgICAgcmV0dXJuIFtgKTtcbiAgICB0aGlzLmNvZGUubGluZShgICAgICAgICBrZXksYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYCAgICAgICAge2ApO1xuICAgIHRoaXMuY29kZS5saW5lKGAgICAgICAgICAgdmFsdWU6IHZhbCxgKTtcbiAgICB0aGlzLmNvZGUubGluZShgICAgICAgICAgIHR5cGU6IFwiYW55XCIsYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYCAgICAgICAgfSxgKTtcbiAgICB0aGlzLmNvZGUubGluZShgICAgICAgXTtgKTtcbiAgICB0aGlzLmNvZGUubGluZShgICAgIH0pYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYCk7YCk7XG4gICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcblxuICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7IC8vIGNsYXNzXG4gICAgdGhpcy5jb2RlLmNsb3NlRmlsZSh0YXJnZXQuZmlsZU5hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlVHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgaWYgKHR5cGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgfVxuICBpZiAodHlwZSA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBcIm51bWJlclwiO1xuICB9XG4gIGlmICh0eXBlID09PSBcImJvb2xcIikge1xuICAgIHJldHVybiBcImJvb2xlYW5cIjtcbiAgfVxuICBpZiAodHlwZSA9PT0gXCJsaXN0XCIpIHtcbiAgICByZXR1cm4gXCJzdHJpbmdbXVwiO1xuICB9XG4gIGlmICh0eXBlID09PSBcIm1hcFwiKSB7XG4gICAgcmV0dXJuIFwieyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVwiO1xuICB9XG4gIGlmICh0eXBlID09PSBcInR1cGxlXCIpIHtcbiAgICByZXR1cm4gXCJzdHJpbmdbXVwiO1xuICB9XG4gIGlmICh0eXBlID09PSBcImFueVwiKSB7XG4gICAgcmV0dXJuIFwiYW55XCI7XG4gIH1cblxuICBjb25zdCBjb21wbGV4VHlwZSA9IHBhcnNlQ29tcGxleFR5cGUodHlwZSk7XG4gIGlmIChjb21wbGV4VHlwZSkge1xuICAgIHJldHVybiBjb21wbGV4VHlwZTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgdW5rbm93biB0eXBlICR7dHlwZX1gKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VDb21wbGV4VHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBjb21wbGV4ID0gL14ob2JqZWN0fGxpc3R8bWFwfHNldHx0dXBsZSlcXCgoW1xcc1xcU10rKVxcKS87XG4gIGNvbnN0IG1hdGNoID0gY29tcGxleC5leGVjKHR5cGUpO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IFssIGtpbmQsIGlubmVyVHlwZV0gPSBtYXRjaDtcblxuICBpZiAoa2luZCA9PT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBgYW55YDtcbiAgfVxuXG4gIGlmIChraW5kID09PSBcImxpc3RcIiB8fCBraW5kID09PSBcInNldFwiKSB7XG4gICAgcmV0dXJuIGAke3BhcnNlVHlwZShpbm5lclR5cGUpfVtdYDtcbiAgfVxuXG4gIGlmIChraW5kID09PSBcInR1cGxlXCIpIHtcbiAgICByZXR1cm4gYGFueVtdYDtcbiAgfVxuXG4gIGlmIChraW5kID09PSBcIm1hcFwiKSB7XG4gICAgcmV0dXJuIGB7IFtrZXk6IHN0cmluZ106ICR7cGFyc2VUeXBlKGlubmVyVHlwZSl9IH1gO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIGtpbmQgJHtraW5kfWApO1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdktn/provider-generator",
3
- "version": "0.23.0-pre.46",
3
+ "version": "0.23.0-pre.49",
4
4
  "description": "Exposes API to generate Terraform CDK provider bindings",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -37,8 +37,8 @@
37
37
  ],
38
38
  "license": "MPL-2.0",
39
39
  "dependencies": {
40
- "@cdktn/commons": "0.23.0-pre.46",
41
- "@cdktn/provider-schema": "0.23.0-pre.46",
40
+ "@cdktn/commons": "0.23.0-pre.49",
41
+ "@cdktn/provider-schema": "0.23.0-pre.49",
42
42
  "codemaker": "1.128.0",
43
43
  "fs-extra": "8.1.0",
44
44
  "glob": "10.5.0",
@@ -3,7 +3,7 @@
3
3
  exports[`generate multiple aws modules 1`] = `
4
4
  "// generated by cdktn get
5
5
  // terraform-aws-modules/vpc/aws
6
- import { TerraformModule, TerraformModuleUserConfig } from 'cdktn';
6
+ import { TerraformModule, type TerraformModuleUserConfig } from 'cdktn';
7
7
  import { Construct } from 'constructs';
8
8
  export interface VpcConfig extends TerraformModuleUserConfig {
9
9
  /**
@@ -6379,7 +6379,7 @@ export class Vpc extends TerraformModule {
6379
6379
  exports[`generate multiple aws modules 2`] = `
6380
6380
  "// generated by cdktn get
6381
6381
  // terraform-aws-modules/rds-aurora/aws
6382
- import { TerraformModule, TerraformModuleUserConfig } from 'cdktn';
6382
+ import { TerraformModule, type TerraformModuleUserConfig } from 'cdktn';
6383
6383
  import { Construct } from 'constructs';
6384
6384
  export interface RdsAuroraConfig extends TerraformModuleUserConfig {
6385
6385
  /**
@@ -7324,7 +7324,7 @@ export class RdsAurora extends TerraformModule {
7324
7324
  exports[`generate nested module 1`] = `
7325
7325
  "// generated by cdktn get
7326
7326
  // terraform-aws-modules/vpc/aws//modules/vpc-endpoints
7327
- import { TerraformModule, TerraformModuleUserConfig } from 'cdktn';
7327
+ import { TerraformModule, type TerraformModuleUserConfig } from 'cdktn';
7328
7328
  import { Construct } from 'constructs';
7329
7329
  export interface VpcEndpointsConfig extends TerraformModuleUserConfig {
7330
7330
  /**
@@ -7452,7 +7452,7 @@ export class VpcEndpoints extends TerraformModule {
7452
7452
  exports[`generate some modules 1`] = `
7453
7453
  "// generated by cdktn get
7454
7454
  // terraform-aws-modules/eks/aws
7455
- import { TerraformModule, TerraformModuleUserConfig } from 'cdktn';
7455
+ import { TerraformModule, type TerraformModuleUserConfig } from 'cdktn';
7456
7456
  import { Construct } from 'constructs';
7457
7457
  export interface EksConfig extends TerraformModuleUserConfig {
7458
7458
  /**
@@ -8150,7 +8150,7 @@ export class Eks extends TerraformModule {
8150
8150
  exports[`getX variables 1`] = `
8151
8151
  "// generated by cdktn get
8152
8152
  // ./module
8153
- import { TerraformModule, TerraformModuleUserConfig } from 'cdktn';
8153
+ import { TerraformModule, type TerraformModuleUserConfig } from 'cdktn';
8154
8154
  import { Construct } from 'constructs';
8155
8155
  export interface ModuleConfig extends TerraformModuleUserConfig {
8156
8156
  /**
@@ -8217,7 +8217,7 @@ export class Module extends TerraformModule {
8217
8217
  exports[`handle */* in module variable default string 1`] = `
8218
8218
  "// generated by cdktn get
8219
8219
  // ./module
8220
- import { TerraformModule, TerraformModuleUserConfig } from 'cdktn';
8220
+ import { TerraformModule, type TerraformModuleUserConfig } from 'cdktn';
8221
8221
  import { Construct } from 'constructs';
8222
8222
  export interface ModuleConfig extends TerraformModuleUserConfig {
8223
8223
  /**
@@ -8273,7 +8273,7 @@ export class Module extends TerraformModule {
8273
8273
  exports[`no module outputs 1`] = `
8274
8274
  "// generated by cdktn get
8275
8275
  // ./module
8276
- import { TerraformModule, TerraformModuleUserConfig } from 'cdktn';
8276
+ import { TerraformModule, type TerraformModuleUserConfig } from 'cdktn';
8277
8277
  import { Construct } from 'constructs';
8278
8278
  export interface ModuleConfig extends TerraformModuleUserConfig {
8279
8279
  /**
@@ -8327,7 +8327,7 @@ export class Module extends TerraformModule {
8327
8327
  exports[`no newline 1`] = `
8328
8328
  "// generated by cdktn get
8329
8329
  // ./module
8330
- import { TerraformModule, TerraformModuleUserConfig } from 'cdktn';
8330
+ import { TerraformModule, type TerraformModuleUserConfig } from 'cdktn';
8331
8331
  import { Construct } from 'constructs';
8332
8332
  export interface ModuleConfig extends TerraformModuleUserConfig {
8333
8333
  }
@@ -8369,7 +8369,7 @@ export class Module extends TerraformModule {
8369
8369
  exports[`typeless variables 1`] = `
8370
8370
  "// generated by cdktn get
8371
8371
  // ./module
8372
- import { TerraformModule, TerraformModuleUserConfig } from 'cdktn';
8372
+ import { TerraformModule, type TerraformModuleUserConfig } from 'cdktn';
8373
8373
  import { Construct } from 'constructs';
8374
8374
  export interface ModuleConfig extends TerraformModuleUserConfig {
8375
8375
  /**