@liflig/cdk 2.21.1 → 2.21.3

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.
@@ -13,8 +13,8 @@ const pipelines = require("aws-cdk-lib/pipelines");
13
13
  const fs = require("fs");
14
14
  const path = require("path");
15
15
  const artefact_bucket_1 = require("../griid/artefact-bucket");
16
- const cloud_assembly_lookup_handler_1 = require("./cloud-assembly-lookup-handler");
17
16
  const slack_notification_1 = require("./slack-notification");
17
+ const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
18
18
  /**
19
19
  * CDK Pipeline for Liflig.
20
20
  *
@@ -147,12 +147,12 @@ class LifligCdkPipeline extends constructs.Construct {
147
147
  return undefined;
148
148
  }
149
149
  cloudAssemblyStage(cloudAssemblyArtifact, cdkBucket, pipelineName) {
150
- const cloudAssemblyLookupFn = new lambda.Function(this, "CloudAssemblyLookupFn", {
151
- code: new lambda.InlineCode(`exports.handler = ${cloud_assembly_lookup_handler_1.cloudAssemblyLookupHandler.toString()};`),
152
- handler: "index.handler",
153
- runtime: lambda.Runtime.NODEJS_16_X,
150
+ const cloudAssemblyLookupFn = new aws_lambda_nodejs_1.NodejsFunction(this, "CloudAssemblyLookupFn", {
151
+ entry: require.resolve("./cloud-assembly-lookup-handler"),
152
+ runtime: lambda.Runtime.NODEJS_18_X,
154
153
  timeout: cdk.Duration.minutes(1),
155
154
  memorySize: 512,
155
+ awsSdkConnectionReuse: false,
156
156
  });
157
157
  cdkBucket.grantReadWrite(cloudAssemblyLookupFn);
158
158
  const userParameters = {
@@ -229,4 +229,4 @@ class LifligCdkPipeline extends constructs.Construct {
229
229
  }
230
230
  }
231
231
  exports.LifligCdkPipeline = LifligCdkPipeline;
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmbGlnLWNkay1waXBlbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGstcGlwZWxpbmVzL2xpZmxpZy1jZGstcGlwZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBQ3hDLDZEQUE0RDtBQUM1RCw0RUFBMkU7QUFDM0UsMkNBQTBDO0FBQzFDLGlEQUFnRDtBQUNoRCxpREFBZ0Q7QUFDaEQsMERBQXlEO0FBRXpELG1DQUFrQztBQUNsQyxtREFBa0Q7QUFDbEQseUJBQXdCO0FBQ3hCLDZCQUE0QjtBQUM1Qiw4REFBaUU7QUFDakUsbUZBR3dDO0FBQ3hDLDZEQUFnRjtBQStDaEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFDekQ7O09BRUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsWUFBb0I7UUFDMUMsT0FBTyxhQUFhLFlBQVksR0FBRyxDQUFBO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFlBQW9CO1FBQzlDLE9BQU8sYUFBYSxZQUFZLFVBQVUsQ0FBQTtJQUM1QyxDQUFDO0lBT0QsWUFDRSxLQUEyQixFQUMzQixFQUFVLEVBQ1YsS0FBNkI7O1FBRTdCLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFBLEtBQUssQ0FBQyxlQUFlLG1DQUFJLElBQUEsd0NBQXNCLEVBQUMsSUFBSSxDQUFDLENBQUE7UUFFNUUsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUV6RCxJQUFJLEtBQWlDLENBQUE7UUFDckMsSUFBSSxNQUFpQyxDQUFBO1FBRXJDLFFBQVEsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pCLEtBQUss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QW9QQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0ICogYXMgY29kZXBpcGVsaW5lIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lXCJcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZUFjdGlvbnMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmUtYWN0aW9uc1wiXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIlxuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCJcbmltcG9ydCAqIGFzIGV2ZW50cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50c1wiXG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHNcIlxuaW1wb3J0ICogYXMgczMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCAqIGFzIHBpcGVsaW5lcyBmcm9tIFwiYXdzLWNkay1saWIvcGlwZWxpbmVzXCJcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGdldEdyaWlkQXJ0ZWZhY3RCdWNrZXQgfSBmcm9tIFwiLi4vZ3JpaWQvYXJ0ZWZhY3QtYnVja2V0XCJcbmltcG9ydCB7XG4gIGNsb3VkQXNzZW1ibHlMb29rdXBIYW5kbGVyLFxuICBDbG91ZEFzc2VtYmx5TG9va3VwVXNlclBhcmFtZXRlcnMsXG59IGZyb20gXCIuL2Nsb3VkLWFzc2VtYmx5LWxvb2t1cC1oYW5kbGVyXCJcbmltcG9ydCB7IFNsYWNrTm90aWZpY2F0aW9uLCBTbGFja05vdGlmaWNhdGlvblByb3BzIH0gZnJvbSBcIi4vc2xhY2stbm90aWZpY2F0aW9uXCJcblxuZXhwb3J0IGludGVyZmFjZSBMaWZsaWdDZGtQaXBlbGluZVByb3BzIHtcbiAgLyoqXG4gICAqIEJ1Y2tldCBob2xkaW5nIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24gYW5kIHRyaWdnZXIgZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgZXhpc3RpbmcgYnVja2V0IGJhc2VkIG9uIEdyaWlkIGNvbnZlbnRpb25zXG4gICAqL1xuICBhcnRpZmFjdHNCdWNrZXQ/OiBzMy5JQnVja2V0XG4gIC8qKlxuICAgKiBOYW1lIG9mIHBpcGVsaW5lLiBUaGlzIGlzIHVzZWQgZm9yIHRoZSBwYXRoIHdoZXJlIGNvbmZpZ3VyYXRpb25cbiAgICogaXMgc3RvcmVkIGluIFMzLlxuICAgKi9cbiAgcGlwZWxpbmVOYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFR5cGUgb2YgdXBsb2FkZWQgYXJ0aWZhY3QuIFRoaXMgY2hhbmdlcyB0aGUgYmVoYXZpb3VyIG9mIHRoZVxuICAgKiBwaXBlbGluZSBhbmQgd2hhdCBraW5kIG9mIHByb2Nlc3MgaXQgcGVyZm9ybXMuXG4gICAqXG4gICAqIFR3byB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuICAgKlxuICAgKiAgIC0gY2RrLXNvdXJjZTogVGhlIHVwbG9hZGVkIGFydGlmYWN0IHJlcHJlc2VudHMgYSBDREsgYXBwbGljYXRpb25cbiAgICogICAgIGFzIHNvdXJjZSBjb2RlLiBBIGJ1aWxkIHN0ZXAgd2lsbCBjb21waWxlIHRoaXMgaW50byBhXG4gICAqICAgICBDREsgQ2xvdWQgQXNzZW1ibHkuXG4gICAqXG4gICAqICAgICBBcyBwYXJ0IG9mIHN5bnRoZXNpemluZyB0aGlzIGludG8gYSBDREsgQ2xvdWQgQXNzZW1ibHksXG4gICAqICAgICBhIGZpbGUgXCJ2YXJpYWJsZXMuanNvblwiIHdpbGwgYmUgd3JpdHRlbiBmb3IgdGhlXG4gICAqICAgICBDREsgYXBwbGljYXRpb24gdG8gcGFyYW1ldGVyaXplIHRoZSBidWlsZCBpZiBhbnlcbiAgICogICAgIHZhcmlhYmxlcyBhcmUgZm91bmQgaW4gdGhlIHBpcGVsaW5lIHNvdXJjZS5cbiAgICpcbiAgICogICAtIGNsb3VkLWFzc2VtYmx5OiBUaGUgdXBsb2FkZWQgYXJ0aWZhY3QgcmVwcmVzZW50cyBhXG4gICAqICAgICBDREsgQ2xvdWQgQXNzZW1ibHkgd2hpY2ggaXMgcmVhZHkgZm9yIGRlcGxveW1lbnQuXG4gICAqXG4gICAqICAgICBUaGlzIGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyB2YXJpYWJsZXMgYXQgdGhlIGN1cnJlbnQgdGltZVxuICAgKiAgICAgc2luY2UgQ0RLIFBpcGVsaW5lcyBkb24ndCBzdXBwb3J0IHBhcmFtZXRlcml6ZWQgZGVwbG95cy5cbiAgICogICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzk1NjBcbiAgICovXG4gIHNvdXJjZVR5cGU6IFwiY2RrLXNvdXJjZVwiIHwgXCJjbG91ZC1hc3NlbWJseVwiXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIHVzZWQgZm9yIHBhcmFtZXRlcnMgaW4gUGFyYW1ldGVyIFN0b3JlLlxuICAgKlxuICAgKiBPbmx5IHJlbGV2YW50IGZvciBzb3VyY2VUeXBlIG9mIFwiY2RrLXNvcnVjZVwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBkZWZhdWx0XG4gICAqL1xuICBwYXJhbWV0ZXJzTmFtZXNwYWNlPzogc3RyaW5nXG59XG5cbi8qKlxuICogQ0RLIFBpcGVsaW5lIGZvciBMaWZsaWcuXG4gKlxuICogQXZvaWQgcHV0dGluZyBtdWx0aXBsZSBwaXBlbGluZXMgaW4gYSBzdGFjaywgc2luY2UgdGhlIHBpcGVsaW5lXG4gKiB3aWxsIGFsc28ga2VlcCB0aGUgaG9zdGluZyBzdGFjayB1cC10by1kYXRlLlxuICpcbiAqIFRoZSBwaXBlbGluZSBpcyBleGVjdXRlZCBieSB3cml0aW5nIGFuIGVtcHR5IGZpbGUgdG9cbiAqIHMzOi8vPGFydGlmYWN0cy1idWNrZXQ+L3BpcGVsaW5lcy88cGlwZWxpbmUtbmFtZT4vdHJpZ2dlclxuICpcbiAqIENvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHJlYWQgZnJvbSBTMyBhdCB0aGUgcGF0aFxuICogczM6Ly88YXJ0aWZhY3RzLWJ1Y2tldD4vcGlwZWxpbmVzLzxwaXBlbGluZS1uYW1lPi9cbiAqXG4gKiBGb3IgdXBsb2FkIHR5cGUgXCJjZGstc291cmNlXCI6XG4gKlxuICogICAtIGNkay1zb3VyY2UuanNvbiBob2xkaW5nIGEgcG9pbnRlciB0byB0aGUgYWN0aXZlIENESyBzb3VyY2VcbiAqICAgICB0aGF0IHNob3VsZCBiZSB1c2VkLiBTY2hlbWE6XG4gKlxuICogICAgIHtcbiAqICAgICAgIGJ1Y2tldE5hbWU6IHN0cmluZ1xuICogICAgICAgYnVja2V0S2V5OiBzdHJpbmdcbiAqICAgICB9XG4gKlxuICogICAtIHZhcmlhYmxlcyouanNvbiB3aGljaCBjYW4gYmUgemVybyBvciBtb3JlIGZpbGVzXG4gKiAgICAgd2l0aCBzdHJpbmctc3RyaW5nIG1hcCBob2xkaW5nIHZhcmlhYmxlcyB0aGF0IHdpbGxcbiAqICAgICBiZSB3cml0dGVuIHRvIHZhcmlhYmxlcy5qc29uIGFuZCBjYW4gYmUgcmVhZCBieSB0aGVcbiAqICAgICB0aGUgQ0RLIGFwcGxpY2F0aW9uIGR1cmluZyBzeW50aGVzaXplLlxuICpcbiAqIEZvciB1cGxvYWQgdHlwZSBcImNsb3VkLWFzc2VtYmx5XCI6XG4gKlxuICogICAtIGNsb3VkLWFzc2VtYmx5Lmpzb24gaG9sZGluZyBhIHBvaW50ZXIgdG8gdGhlIGFjdGl2ZVxuICogICAgIENESyBDbG91ZCBBc3NlbWJseSB0aGF0IHNob3VsZCBiZSB1c2VkOiBTY2hlbWE6XG4gKlxuICogICAgIHtcbiAqICAgICAgIGNsb3VkQXNzZW1ibHlCdWNrZXROYW1lOiBzdHJpbmdcbiAqICAgICAgIGNsb3VkQXNzZW1ibHlCdWNrZXRLZXk6IHN0cmluZ1xuICogICAgIH1cbiAqXG4gKiBWYXJpYWJsZXMgZW5hYmxlcyBzZXBhcmF0aW9uIG9mIElhQyBjb2RlIGFuZCBhcHBsaWNhdGlvbiBjb2RlIGlmXG4gKiB0aGV5IGFyZSBub3QgY29sb2NhdGVkIGluIHRoZSBzYW1lIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBMaWZsaWdDZGtQaXBlbGluZSBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFBhdGggb24gUzMgZm9yIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBzdGF0aWMgcGlwZWxpbmVTM1ByZWZpeChwaXBlbGluZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBwaXBlbGluZXMvJHtwaXBlbGluZU5hbWV9L2BcbiAgfVxuXG4gIC8qKlxuICAgKiBLZXkgaW4gUzMgYnVja2V0IHVzZWQgdG8gdHJpZ2dlciBwaXBlbGluZS5cbiAgICpcbiAgICogVGhpcyBpcyBhbiBlbXB0eSBmaWxlIHdpdGhpbiB0aGUgcGlwZWxpbmUgcGF0aC5cbiAgICovXG4gIHN0YXRpYyBwaXBlbGluZVMzVHJpZ2dlcktleShwaXBlbGluZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBwaXBlbGluZXMvJHtwaXBlbGluZU5hbWV9L3RyaWdnZXJgXG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgY2RrUGlwZWxpbmU6IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmVcbiAgcHVibGljIHJlYWRvbmx5IGNvZGVQaXBlbGluZTogY29kZXBpcGVsaW5lLlBpcGVsaW5lXG4gIHB1YmxpYyByZWFkb25seSBhcnRpZmFjdHNCdWNrZXQ6IHMzLklCdWNrZXRcbiAgcHVibGljIHJlYWRvbmx5IHRyaWdnZXJPYmplY3RLZXk6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBMaWZsaWdDZGtQaXBlbGluZVByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICB0aGlzLmFydGlmYWN0c0J1Y2tldCA9IHByb3BzLmFydGlmYWN0c0J1Y2tldCA/PyBnZXRHcmlpZEFydGVmYWN0QnVja2V0KHRoaXMpXG5cbiAgICBjb25zdCBjbG91ZEFzc2VtYmx5QXJ0aWZhY3QgPSBuZXcgY29kZXBpcGVsaW5lLkFydGlmYWN0KClcblxuICAgIGxldCBzeW50aDogcGlwZWxpbmVzLklGaWxlU2V0UHJvZHVjZXJcbiAgICBsZXQgc3RhZ2VzOiBjb2RlcGlwZWxpbmUuU3RhZ2VQcm9wc1tdXG5cbiAgICBzd2l0Y2ggKHByb3BzLnNvdXJjZVR5cGUpIHtcbiAgICAgIGNhc2UgXCJjbG91ZC1hc3NlbWJseVwiOlxuICAgICAgICBjb25zdCBjbG91ZEFzc2VtYmx5ID0gdGhpcy5jbG91ZEFzc2VtYmx5U3RhZ2UoXG4gICAgICAgICAgY2xvdWRBc3NlbWJseUFydGlmYWN0LFxuICAgICAgICAgIHRoaXMuYXJ0aWZhY3RzQnVja2V0LFxuICAgICAgICAgIHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgKVxuICAgICAgICBzeW50aCA9IGNsb3VkQXNzZW1ibHkuc3ludGhcbiAgICAgICAgc3RhZ2VzID0gY2xvdWRBc3NlbWJseS5zdGFnZXNcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJjZGstc291cmNlXCI6XG4gICAgICAgIGNvbnN0IGNka1NvdXJjZSA9IHRoaXMuY2RrU291cmNlU3RhZ2UoXG4gICAgICAgICAgY2xvdWRBc3NlbWJseUFydGlmYWN0LFxuICAgICAgICAgIHRoaXMuYXJ0aWZhY3RzQnVja2V0LFxuICAgICAgICAgIHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgICBwcm9wcy5wYXJhbWV0ZXJzTmFtZXNwYWNlID8/IFwiZGVmYXVsdFwiLFxuICAgICAgICApXG4gICAgICAgIHN5bnRoID0gY2RrU291cmNlLnN5bnRoXG4gICAgICAgIHN0YWdlcyA9IGNka1NvdXJjZS5zdGFnZXNcbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjb25zdCBkdW1teUFydGlmYWN0ID0gbmV3IGNvZGVwaXBlbGluZS5BcnRpZmFjdCgpXG5cbiAgICB0aGlzLnRyaWdnZXJPYmplY3RLZXkgPSBMaWZsaWdDZGtQaXBlbGluZS5waXBlbGluZVMzVHJpZ2dlcktleShcbiAgICAgIHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICApXG5cbiAgICB0aGlzLmNvZGVQaXBlbGluZSA9IG5ldyBjb2RlcGlwZWxpbmUuUGlwZWxpbmUodGhpcywgXCJDb2RlUGlwZWxpbmVcIiwge1xuICAgICAgcGlwZWxpbmVOYW1lOiBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICBzdGFnZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHN0YWdlTmFtZTogXCJTb3VyY2VcIixcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBuZXcgY29kZXBpcGVsaW5lQWN0aW9ucy5TM1NvdXJjZUFjdGlvbih7XG4gICAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwic291cmNlXCIsXG4gICAgICAgICAgICAgIGJ1Y2tldDogdGhpcy5hcnRpZmFjdHNCdWNrZXQsXG4gICAgICAgICAgICAgIHRyaWdnZXI6IGNvZGVwaXBlbGluZUFjdGlvbnMuUzNUcmlnZ2VyLk5PTkUsXG4gICAgICAgICAgICAgIGJ1Y2tldEtleTogdGhpcy50cmlnZ2VyT2JqZWN0S2V5LFxuICAgICAgICAgICAgICBvdXRwdXQ6IGR1bW15QXJ0aWZhY3QsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICAuLi5zdGFnZXMsXG4gICAgICBdLFxuICAgICAgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlOiB0cnVlLFxuICAgIH0pXG5cbiAgICBuZXcgZXZlbnRzLlJ1bGUodGhpcywgXCJQaXBlbGluZVRyaWdnZXJcIiwge1xuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIHNvdXJjZTogW1wiYXdzLnMzXCJdLFxuICAgICAgICBkZXRhaWxUeXBlOiBbXCJPYmplY3QgQ3JlYXRlZFwiXSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgYnVja2V0OiB7XG4gICAgICAgICAgICBuYW1lOiBbdGhpcy5hcnRpZmFjdHNCdWNrZXQuYnVja2V0TmFtZV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgIGtleTogW3RoaXMudHJpZ2dlck9iamVjdEtleV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0YXJnZXRzOiBbbmV3IHRhcmdldHMuQ29kZVBpcGVsaW5lKHRoaXMuY29kZVBpcGVsaW5lKV0sXG4gICAgfSlcblxuICAgIHRoaXMuY2RrUGlwZWxpbmUgPSBuZXcgcGlwZWxpbmVzLkNvZGVQaXBlbGluZSh0aGlzLCBcIkNka1BpcGVsaW5lXCIsIHtcbiAgICAgIHN5bnRoLFxuICAgICAgdXNlQ2hhbmdlU2V0czogZmFsc2UsXG4gICAgICBjb2RlUGlwZWxpbmU6IHRoaXMuY29kZVBpcGVsaW5lLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRBd3NDZGtQYWNrYWdlSnNvbkZpbGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBBbHNvIGxvb2sgdXAgdGhlIHRyZWUgYSBiaXQgdG8gaGFuZGxlIHlhcm4gd29ya3NwYWNlcy5cbiAgICBjb25zdCBjYW5kaWRhdGVzID0gW1xuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwibm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLi4vbm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F3cy1jZGsvcGFja2FnZS5qc29uXCIpLFxuICAgIF1cblxuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIHByaXZhdGUgY2xvdWRBc3NlbWJseVN0YWdlKFxuICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdDogY29kZXBpcGVsaW5lLkFydGlmYWN0LFxuICAgIGNka0J1Y2tldDogczMuSUJ1Y2tldCxcbiAgICBwaXBlbGluZU5hbWU6IHN0cmluZyxcbiAgKTogeyBzdGFnZXM6IGNvZGVwaXBlbGluZS5TdGFnZVByb3BzW107IHN5bnRoOiBwaXBlbGluZXMuSUZpbGVTZXRQcm9kdWNlciB9IHtcbiAgICBjb25zdCBjbG91ZEFzc2VtYmx5TG9va3VwRm4gPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiQ2xvdWRBc3NlbWJseUxvb2t1cEZuXCIsXG4gICAgICB7XG4gICAgICAgIGNvZGU6IG5ldyBsYW1iZGEuSW5saW5lQ29kZShcbiAgICAgICAgICBgZXhwb3J0cy5oYW5kbGVyID0gJHtjbG91ZEFzc2VtYmx5TG9va3VwSGFuZGxlci50b1N0cmluZygpfTtgLFxuICAgICAgICApLFxuICAgICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICB9LFxuICAgIClcblxuICAgIGNka0J1Y2tldC5ncmFudFJlYWRXcml0ZShjbG91ZEFzc2VtYmx5TG9va3VwRm4pXG5cbiAgICBjb25zdCB1c2VyUGFyYW1ldGVyczogQ2xvdWRBc3NlbWJseUxvb2t1cFVzZXJQYXJhbWV0ZXJzID0ge1xuICAgICAgYnVja2V0TmFtZTogY2RrQnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICBvYmplY3RLZXk6IGBwaXBlbGluZXMvJHtwaXBlbGluZU5hbWV9L2Nsb3VkLWFzc2VtYmx5Lmpzb25gLFxuICAgIH1cblxuICAgIGNvbnN0IHN5bnRoID0gcGlwZWxpbmVzLkNvZGVQaXBlbGluZUZpbGVTZXQuZnJvbUFydGlmYWN0KFxuICAgICAgY2xvdWRBc3NlbWJseUFydGlmYWN0LFxuICAgIClcblxuICAgIGNvbnN0IHN0YWdlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgc3RhZ2VOYW1lOiBcIlByZXBhcmVDbG91ZEFzc2VtYmx5XCIsXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICBuZXcgY29kZXBpcGVsaW5lQWN0aW9ucy5MYW1iZGFJbnZva2VBY3Rpb24oe1xuICAgICAgICAgICAgYWN0aW9uTmFtZTogXCJjbG91ZC1hc3NlbWJseS1sb29rdXBcIixcbiAgICAgICAgICAgIGxhbWJkYTogY2xvdWRBc3NlbWJseUxvb2t1cEZuLFxuICAgICAgICAgICAgb3V0cHV0czogW2Nsb3VkQXNzZW1ibHlBcnRpZmFjdF0sXG4gICAgICAgICAgICB1c2VyUGFyYW1ldGVycyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXVxuICAgIHJldHVybiB7IHN0YWdlcywgc3ludGggfVxuICB9XG5cbiAgcHJpdmF0ZSBjZGtTb3VyY2VTdGFnZShcbiAgICBjbG91ZEFzc2VtYmx5QXJ0aWZhY3Q6IGNvZGVwaXBlbGluZS5BcnRpZmFjdCxcbiAgICBjZGtCdWNrZXQ6IHMzLklCdWNrZXQsXG4gICAgcGlwZWxpbmVOYW1lOiBzdHJpbmcsXG4gICAgcGFyYW1ldGVyc05hbWVzcGFjZTogc3RyaW5nLFxuICApOiB7IHN0YWdlczogY29kZXBpcGVsaW5lLlN0YWdlUHJvcHNbXTsgc3ludGg6IHBpcGVsaW5lcy5JRmlsZVNldFByb2R1Y2VyIH0ge1xuICAgIGNvbnN0IHByZXBhcmVDZGtTb3VyY2VGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJQcmVwYXJlQ2RrU291cmNlRm5cIiwge1xuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KFxuICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL2Fzc2V0cy9wcmVwYXJlLWNkay1zb3VyY2UtbGFtYmRhXCIpLFxuICAgICAgKSxcbiAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgLy8gVXNpbmcgcHl0aG9uIGluc3RlYWQgaWYgTm9kZUpTIGR1ZSB0byB6aXAtc3VwcG9ydCBpbiBzdGRsaWIuXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5QWVRIT05fM184LFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgfSlcblxuICAgIGNvbnN0IGFjY291bnQgPSBjZGsuU3RhY2sub2YodGhpcykuYWNjb3VudFxuICAgIGNvbnN0IHJlZ2lvbiA9IGNkay5TdGFjay5vZih0aGlzKS5yZWdpb25cblxuICAgIHByZXBhcmVDZGtTb3VyY2VGbi5ncmFudFByaW5jaXBhbC5hZGRUb1ByaW5jaXBhbFBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1wic3NtOkdldFBhcmFtZXRlcnNCeVBhdGhcIl0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGBhcm46YXdzOnNzbToke3JlZ2lvbn06JHthY2NvdW50fTpwYXJhbWV0ZXIvbGlmbGlnLWNkay8qL3BpcGVsaW5lLXZhcmlhYmxlcy8qYCxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIGNka0J1Y2tldC5ncmFudFJlYWRXcml0ZShwcmVwYXJlQ2RrU291cmNlRm4pXG5cbiAgICBjb25zdCBjZGtTb3VyY2VBcnRpZmFjdCA9IG5ldyBjb2RlcGlwZWxpbmUuQXJ0aWZhY3QoKVxuXG4gICAgY29uc3QgdXNlclBhcmFtZXRlcnM6IFByZXBhcmVDZGtTb3VyY2VVc2VyUGFyYW1ldGVycyA9IHtcbiAgICAgIGJ1Y2tldE5hbWU6IGNka0J1Y2tldC5idWNrZXROYW1lLFxuICAgICAgcHJlZml4OiBgcGlwZWxpbmVzLyR7cGlwZWxpbmVOYW1lfS9gLFxuICAgICAgcGFyYW1ldGVyc05hbWVzcGFjZTogcGFyYW1ldGVyc05hbWVzcGFjZSxcbiAgICB9XG5cbiAgICBjb25zdCBzeW50aCA9IG5ldyBwaXBlbGluZXMuU2hlbGxTdGVwKFwiR2VuZXJhdGVDbG91ZEFzc2VtYmx5XCIsIHtcbiAgICAgIGlucHV0OiBwaXBlbGluZXMuQ29kZVBpcGVsaW5lRmlsZVNldC5mcm9tQXJ0aWZhY3QoY2RrU291cmNlQXJ0aWZhY3QpLFxuICAgICAgaW5zdGFsbENvbW1hbmRzOiBbXCJucG0gY2lcIl0sXG4gICAgICBjb21tYW5kczogW1wibnB4IGNkayBzeW50aFwiXSxcbiAgICB9KVxuICAgIGNvbnN0IHN0YWdlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgc3RhZ2VOYW1lOiBcIlByZXBhcmVDZGtTb3VyY2VcIixcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIG5ldyBjb2RlcGlwZWxpbmVBY3Rpb25zLkxhbWJkYUludm9rZUFjdGlvbih7XG4gICAgICAgICAgICBhY3Rpb25OYW1lOiBcInByZXBhcmUtY2RrLXNvdXJjZVwiLFxuICAgICAgICAgICAgbGFtYmRhOiBwcmVwYXJlQ2RrU291cmNlRm4sXG4gICAgICAgICAgICBvdXRwdXRzOiBbY2RrU291cmNlQXJ0aWZhY3RdLFxuICAgICAgICAgICAgdXNlclBhcmFtZXRlcnMsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF1cbiAgICByZXR1cm4geyBzdGFnZXMsIHN5bnRoIH1cbiAgfVxuXG4gIGFkZFNsYWNrTm90aWZpY2F0aW9uKFxuICAgIHByb3BzOiBPbWl0PFxuICAgICAgU2xhY2tOb3RpZmljYXRpb25Qcm9wcyxcbiAgICAgIFwicGlwZWxpbmVcIiB8IFwiYXJ0aWZhY3RzQnVja2V0XCIgfCBcInRyaWdnZXJPYmplY3RLZXlcIlxuICAgID4sXG4gICk6IHZvaWQge1xuICAgIG5ldyBTbGFja05vdGlmaWNhdGlvbih0aGlzLCBcIlNsYWNrXCIsIHtcbiAgICAgIHBpcGVsaW5lOiB0aGlzLmNvZGVQaXBlbGluZSxcbiAgICAgIGFydGlmYWN0c0J1Y2tldDogdGhpcy5hcnRpZmFjdHNCdWNrZXQsXG4gICAgICB0cmlnZ2VyT2JqZWN0S2V5OiB0aGlzLnRyaWdnZXJPYmplY3RLZXksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KVxuICB9XG59XG5cbmludGVyZmFjZSBQcmVwYXJlQ2RrU291cmNlVXNlclBhcmFtZXRlcnMge1xuICBidWNrZXROYW1lOiBzdHJpbmdcbiAgcHJlZml4OiBzdHJpbmdcbiAgcGFyYW1ldGVyc05hbWVzcGFjZTogc3RyaW5nXG59XG4iXX0=
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmbGlnLWNkay1waXBlbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGstcGlwZWxpbmVzL2xpZmxpZy1jZGstcGlwZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBQ3hDLDZEQUE0RDtBQUM1RCw0RUFBMkU7QUFDM0UsMkNBQTBDO0FBQzFDLGlEQUFnRDtBQUNoRCxpREFBZ0Q7QUFDaEQsMERBQXlEO0FBRXpELG1DQUFrQztBQUNsQyxtREFBa0Q7QUFDbEQseUJBQXdCO0FBQ3hCLDZCQUE0QjtBQUM1Qiw4REFBaUU7QUFFakUsNkRBQWdGO0FBQ2hGLHFFQUE4RDtBQStDOUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFDekQ7O09BRUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsWUFBb0I7UUFDMUMsT0FBTyxhQUFhLFlBQVksR0FBRyxDQUFBO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFlBQW9CO1FBQzlDLE9BQU8sYUFBYSxZQUFZLFVBQVUsQ0FBQTtJQUM1QyxDQUFDO0lBT0QsWUFDRSxLQUEyQixFQUMzQixFQUFVLEVBQ1YsS0FBNkI7O1FBRTdCLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFBLEtBQUssQ0FBQyxlQUFlLG1DQUFJLElBQUEsd0NBQXNCLEVBQUMsSUFBSSxDQUFDLENBQUE7UUFFNUUsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUV6RCxJQUFJLEtBQWlDLENBQUE7UUFDckMsSUFBSSxNQUFpQyxDQUFBO1FBRXJDLFFBQVEsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pCLEtBQUss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dHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZVwiXG5pbXBvcnQgKiBhcyBjb2RlcGlwZWxpbmVBY3Rpb25zIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lLWFjdGlvbnNcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1ldmVudHNcIlxuaW1wb3J0ICogYXMgdGFyZ2V0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzXCJcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBwaXBlbGluZXMgZnJvbSBcImF3cy1jZGstbGliL3BpcGVsaW5lc1wiXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgeyBnZXRHcmlpZEFydGVmYWN0QnVja2V0IH0gZnJvbSBcIi4uL2dyaWlkL2FydGVmYWN0LWJ1Y2tldFwiXG5pbXBvcnQgeyBDbG91ZEFzc2VtYmx5TG9va3VwVXNlclBhcmFtZXRlcnMgfSBmcm9tIFwiLi9jbG91ZC1hc3NlbWJseS1sb29rdXAtaGFuZGxlclwiXG5pbXBvcnQgeyBTbGFja05vdGlmaWNhdGlvbiwgU2xhY2tOb3RpZmljYXRpb25Qcm9wcyB9IGZyb20gXCIuL3NsYWNrLW5vdGlmaWNhdGlvblwiXG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlmbGlnQ2RrUGlwZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBCdWNrZXQgaG9sZGluZyBwaXBlbGluZSBjb25maWd1cmF0aW9uIGFuZCB0cmlnZ2VyIGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlIGV4aXN0aW5nIGJ1Y2tldCBiYXNlZCBvbiBHcmlpZCBjb252ZW50aW9uc1xuICAgKi9cbiAgYXJ0aWZhY3RzQnVja2V0PzogczMuSUJ1Y2tldFxuICAvKipcbiAgICogTmFtZSBvZiBwaXBlbGluZS4gVGhpcyBpcyB1c2VkIGZvciB0aGUgcGF0aCB3aGVyZSBjb25maWd1cmF0aW9uXG4gICAqIGlzIHN0b3JlZCBpbiBTMy5cbiAgICovXG4gIHBpcGVsaW5lTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBUeXBlIG9mIHVwbG9hZGVkIGFydGlmYWN0LiBUaGlzIGNoYW5nZXMgdGhlIGJlaGF2aW91ciBvZiB0aGVcbiAgICogcGlwZWxpbmUgYW5kIHdoYXQga2luZCBvZiBwcm9jZXNzIGl0IHBlcmZvcm1zLlxuICAgKlxuICAgKiBUd28gdHlwZXMgYXJlIHN1cHBvcnRlZDpcbiAgICpcbiAgICogICAtIGNkay1zb3VyY2U6IFRoZSB1cGxvYWRlZCBhcnRpZmFjdCByZXByZXNlbnRzIGEgQ0RLIGFwcGxpY2F0aW9uXG4gICAqICAgICBhcyBzb3VyY2UgY29kZS4gQSBidWlsZCBzdGVwIHdpbGwgY29tcGlsZSB0aGlzIGludG8gYVxuICAgKiAgICAgQ0RLIENsb3VkIEFzc2VtYmx5LlxuICAgKlxuICAgKiAgICAgQXMgcGFydCBvZiBzeW50aGVzaXppbmcgdGhpcyBpbnRvIGEgQ0RLIENsb3VkIEFzc2VtYmx5LFxuICAgKiAgICAgYSBmaWxlIFwidmFyaWFibGVzLmpzb25cIiB3aWxsIGJlIHdyaXR0ZW4gZm9yIHRoZVxuICAgKiAgICAgQ0RLIGFwcGxpY2F0aW9uIHRvIHBhcmFtZXRlcml6ZSB0aGUgYnVpbGQgaWYgYW55XG4gICAqICAgICB2YXJpYWJsZXMgYXJlIGZvdW5kIGluIHRoZSBwaXBlbGluZSBzb3VyY2UuXG4gICAqXG4gICAqICAgLSBjbG91ZC1hc3NlbWJseTogVGhlIHVwbG9hZGVkIGFydGlmYWN0IHJlcHJlc2VudHMgYVxuICAgKiAgICAgQ0RLIENsb3VkIEFzc2VtYmx5IHdoaWNoIGlzIHJlYWR5IGZvciBkZXBsb3ltZW50LlxuICAgKlxuICAgKiAgICAgVGhpcyBkb2VzIG5vdCBzdXBwb3J0IHJlYWRpbmcgdmFyaWFibGVzIGF0IHRoZSBjdXJyZW50IHRpbWVcbiAgICogICAgIHNpbmNlIENESyBQaXBlbGluZXMgZG9uJ3Qgc3VwcG9ydCBwYXJhbWV0ZXJpemVkIGRlcGxveXMuXG4gICAqICAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy85NTYwXG4gICAqL1xuICBzb3VyY2VUeXBlOiBcImNkay1zb3VyY2VcIiB8IFwiY2xvdWQtYXNzZW1ibHlcIlxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSB1c2VkIGZvciBwYXJhbWV0ZXJzIGluIFBhcmFtZXRlciBTdG9yZS5cbiAgICpcbiAgICogT25seSByZWxldmFudCBmb3Igc291cmNlVHlwZSBvZiBcImNkay1zb3J1Y2VcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgZGVmYXVsdFxuICAgKi9cbiAgcGFyYW1ldGVyc05hbWVzcGFjZT86IHN0cmluZ1xufVxuXG4vKipcbiAqIENESyBQaXBlbGluZSBmb3IgTGlmbGlnLlxuICpcbiAqIEF2b2lkIHB1dHRpbmcgbXVsdGlwbGUgcGlwZWxpbmVzIGluIGEgc3RhY2ssIHNpbmNlIHRoZSBwaXBlbGluZVxuICogd2lsbCBhbHNvIGtlZXAgdGhlIGhvc3Rpbmcgc3RhY2sgdXAtdG8tZGF0ZS5cbiAqXG4gKiBUaGUgcGlwZWxpbmUgaXMgZXhlY3V0ZWQgYnkgd3JpdGluZyBhbiBlbXB0eSBmaWxlIHRvXG4gKiBzMzovLzxhcnRpZmFjdHMtYnVja2V0Pi9waXBlbGluZXMvPHBpcGVsaW5lLW5hbWU+L3RyaWdnZXJcbiAqXG4gKiBDb25maWd1cmF0aW9uIGZpbGVzIGFyZSByZWFkIGZyb20gUzMgYXQgdGhlIHBhdGhcbiAqIHMzOi8vPGFydGlmYWN0cy1idWNrZXQ+L3BpcGVsaW5lcy88cGlwZWxpbmUtbmFtZT4vXG4gKlxuICogRm9yIHVwbG9hZCB0eXBlIFwiY2RrLXNvdXJjZVwiOlxuICpcbiAqICAgLSBjZGstc291cmNlLmpzb24gaG9sZGluZyBhIHBvaW50ZXIgdG8gdGhlIGFjdGl2ZSBDREsgc291cmNlXG4gKiAgICAgdGhhdCBzaG91bGQgYmUgdXNlZC4gU2NoZW1hOlxuICpcbiAqICAgICB7XG4gKiAgICAgICBidWNrZXROYW1lOiBzdHJpbmdcbiAqICAgICAgIGJ1Y2tldEtleTogc3RyaW5nXG4gKiAgICAgfVxuICpcbiAqICAgLSB2YXJpYWJsZXMqLmpzb24gd2hpY2ggY2FuIGJlIHplcm8gb3IgbW9yZSBmaWxlc1xuICogICAgIHdpdGggc3RyaW5nLXN0cmluZyBtYXAgaG9sZGluZyB2YXJpYWJsZXMgdGhhdCB3aWxsXG4gKiAgICAgYmUgd3JpdHRlbiB0byB2YXJpYWJsZXMuanNvbiBhbmQgY2FuIGJlIHJlYWQgYnkgdGhlXG4gKiAgICAgdGhlIENESyBhcHBsaWNhdGlvbiBkdXJpbmcgc3ludGhlc2l6ZS5cbiAqXG4gKiBGb3IgdXBsb2FkIHR5cGUgXCJjbG91ZC1hc3NlbWJseVwiOlxuICpcbiAqICAgLSBjbG91ZC1hc3NlbWJseS5qc29uIGhvbGRpbmcgYSBwb2ludGVyIHRvIHRoZSBhY3RpdmVcbiAqICAgICBDREsgQ2xvdWQgQXNzZW1ibHkgdGhhdCBzaG91bGQgYmUgdXNlZDogU2NoZW1hOlxuICpcbiAqICAgICB7XG4gKiAgICAgICBjbG91ZEFzc2VtYmx5QnVja2V0TmFtZTogc3RyaW5nXG4gKiAgICAgICBjbG91ZEFzc2VtYmx5QnVja2V0S2V5OiBzdHJpbmdcbiAqICAgICB9XG4gKlxuICogVmFyaWFibGVzIGVuYWJsZXMgc2VwYXJhdGlvbiBvZiBJYUMgY29kZSBhbmQgYXBwbGljYXRpb24gY29kZSBpZlxuICogdGhleSBhcmUgbm90IGNvbG9jYXRlZCBpbiB0aGUgc2FtZSByZXBvc2l0b3J5LlxuICovXG5leHBvcnQgY2xhc3MgTGlmbGlnQ2RrUGlwZWxpbmUgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBQYXRoIG9uIFMzIGZvciBwaXBlbGluZSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgc3RhdGljIHBpcGVsaW5lUzNQcmVmaXgocGlwZWxpbmVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgcGlwZWxpbmVzLyR7cGlwZWxpbmVOYW1lfS9gXG4gIH1cblxuICAvKipcbiAgICogS2V5IGluIFMzIGJ1Y2tldCB1c2VkIHRvIHRyaWdnZXIgcGlwZWxpbmUuXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gZW1wdHkgZmlsZSB3aXRoaW4gdGhlIHBpcGVsaW5lIHBhdGguXG4gICAqL1xuICBzdGF0aWMgcGlwZWxpbmVTM1RyaWdnZXJLZXkocGlwZWxpbmVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgcGlwZWxpbmVzLyR7cGlwZWxpbmVOYW1lfS90cmlnZ2VyYFxuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGNka1BpcGVsaW5lOiBwaXBlbGluZXMuQ29kZVBpcGVsaW5lXG4gIHB1YmxpYyByZWFkb25seSBjb2RlUGlwZWxpbmU6IGNvZGVwaXBlbGluZS5QaXBlbGluZVxuICBwdWJsaWMgcmVhZG9ubHkgYXJ0aWZhY3RzQnVja2V0OiBzMy5JQnVja2V0XG4gIHB1YmxpYyByZWFkb25seSB0cmlnZ2VyT2JqZWN0S2V5OiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogTGlmbGlnQ2RrUGlwZWxpbmVQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgdGhpcy5hcnRpZmFjdHNCdWNrZXQgPSBwcm9wcy5hcnRpZmFjdHNCdWNrZXQgPz8gZ2V0R3JpaWRBcnRlZmFjdEJ1Y2tldCh0aGlzKVxuXG4gICAgY29uc3QgY2xvdWRBc3NlbWJseUFydGlmYWN0ID0gbmV3IGNvZGVwaXBlbGluZS5BcnRpZmFjdCgpXG5cbiAgICBsZXQgc3ludGg6IHBpcGVsaW5lcy5JRmlsZVNldFByb2R1Y2VyXG4gICAgbGV0IHN0YWdlczogY29kZXBpcGVsaW5lLlN0YWdlUHJvcHNbXVxuXG4gICAgc3dpdGNoIChwcm9wcy5zb3VyY2VUeXBlKSB7XG4gICAgICBjYXNlIFwiY2xvdWQtYXNzZW1ibHlcIjpcbiAgICAgICAgY29uc3QgY2xvdWRBc3NlbWJseSA9IHRoaXMuY2xvdWRBc3NlbWJseVN0YWdlKFxuICAgICAgICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdCxcbiAgICAgICAgICB0aGlzLmFydGlmYWN0c0J1Y2tldCxcbiAgICAgICAgICBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICAgIClcbiAgICAgICAgc3ludGggPSBjbG91ZEFzc2VtYmx5LnN5bnRoXG4gICAgICAgIHN0YWdlcyA9IGNsb3VkQXNzZW1ibHkuc3RhZ2VzXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwiY2RrLXNvdXJjZVwiOlxuICAgICAgICBjb25zdCBjZGtTb3VyY2UgPSB0aGlzLmNka1NvdXJjZVN0YWdlKFxuICAgICAgICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdCxcbiAgICAgICAgICB0aGlzLmFydGlmYWN0c0J1Y2tldCxcbiAgICAgICAgICBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICAgICAgcHJvcHMucGFyYW1ldGVyc05hbWVzcGFjZSA/PyBcImRlZmF1bHRcIixcbiAgICAgICAgKVxuICAgICAgICBzeW50aCA9IGNka1NvdXJjZS5zeW50aFxuICAgICAgICBzdGFnZXMgPSBjZGtTb3VyY2Uuc3RhZ2VzXG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY29uc3QgZHVtbXlBcnRpZmFjdCA9IG5ldyBjb2RlcGlwZWxpbmUuQXJ0aWZhY3QoKVxuXG4gICAgdGhpcy50cmlnZ2VyT2JqZWN0S2V5ID0gTGlmbGlnQ2RrUGlwZWxpbmUucGlwZWxpbmVTM1RyaWdnZXJLZXkoXG4gICAgICBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgKVxuXG4gICAgdGhpcy5jb2RlUGlwZWxpbmUgPSBuZXcgY29kZXBpcGVsaW5lLlBpcGVsaW5lKHRoaXMsIFwiQ29kZVBpcGVsaW5lXCIsIHtcbiAgICAgIHBpcGVsaW5lTmFtZTogcHJvcHMucGlwZWxpbmVOYW1lLFxuICAgICAgc3RhZ2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzdGFnZU5hbWU6IFwiU291cmNlXCIsXG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgbmV3IGNvZGVwaXBlbGluZUFjdGlvbnMuUzNTb3VyY2VBY3Rpb24oe1xuICAgICAgICAgICAgICBhY3Rpb25OYW1lOiBcInNvdXJjZVwiLFxuICAgICAgICAgICAgICBidWNrZXQ6IHRoaXMuYXJ0aWZhY3RzQnVja2V0LFxuICAgICAgICAgICAgICB0cmlnZ2VyOiBjb2RlcGlwZWxpbmVBY3Rpb25zLlMzVHJpZ2dlci5OT05FLFxuICAgICAgICAgICAgICBidWNrZXRLZXk6IHRoaXMudHJpZ2dlck9iamVjdEtleSxcbiAgICAgICAgICAgICAgb3V0cHV0OiBkdW1teUFydGlmYWN0LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uc3RhZ2VzLFxuICAgICAgXSxcbiAgICAgIHJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZTogdHJ1ZSxcbiAgICB9KVxuXG4gICAgbmV3IGV2ZW50cy5SdWxlKHRoaXMsIFwiUGlwZWxpbmVUcmlnZ2VyXCIsIHtcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBzb3VyY2U6IFtcImF3cy5zM1wiXSxcbiAgICAgICAgZGV0YWlsVHlwZTogW1wiT2JqZWN0IENyZWF0ZWRcIl0sXG4gICAgICAgIGRldGFpbDoge1xuICAgICAgICAgIGJ1Y2tldDoge1xuICAgICAgICAgICAgbmFtZTogW3RoaXMuYXJ0aWZhY3RzQnVja2V0LmJ1Y2tldE5hbWVdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICBrZXk6IFt0aGlzLnRyaWdnZXJPYmplY3RLZXldLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGFyZ2V0czogW25ldyB0YXJnZXRzLkNvZGVQaXBlbGluZSh0aGlzLmNvZGVQaXBlbGluZSldLFxuICAgIH0pXG5cbiAgICB0aGlzLmNka1BpcGVsaW5lID0gbmV3IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmUodGhpcywgXCJDZGtQaXBlbGluZVwiLCB7XG4gICAgICBzeW50aCxcbiAgICAgIHVzZUNoYW5nZVNldHM6IGZhbHNlLFxuICAgICAgY29kZVBpcGVsaW5lOiB0aGlzLmNvZGVQaXBlbGluZSxcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0QXdzQ2RrUGFja2FnZUpzb25GaWxlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gQWxzbyBsb29rIHVwIHRoZSB0cmVlIGEgYml0IHRvIGhhbmRsZSB5YXJuIHdvcmtzcGFjZXMuXG4gICAgY29uc3QgY2FuZGlkYXRlcyA9IFtcbiAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIm5vZGVfbW9kdWxlcy9hd3MtY2RrL3BhY2thZ2UuanNvblwiKSxcbiAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIi4uL25vZGVfbW9kdWxlcy9hd3MtY2RrL3BhY2thZ2UuanNvblwiKSxcbiAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIi4uLy4uL25vZGVfbW9kdWxlcy9hd3MtY2RrL3BhY2thZ2UuanNvblwiKSxcbiAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9hd3MtY2RrL3BhY2thZ2UuanNvblwiKSxcbiAgICBdXG5cbiAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhjYW5kaWRhdGUpKSB7XG4gICAgICAgIHJldHVybiBjYW5kaWRhdGVcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBwcml2YXRlIGNsb3VkQXNzZW1ibHlTdGFnZShcbiAgICBjbG91ZEFzc2VtYmx5QXJ0aWZhY3Q6IGNvZGVwaXBlbGluZS5BcnRpZmFjdCxcbiAgICBjZGtCdWNrZXQ6IHMzLklCdWNrZXQsXG4gICAgcGlwZWxpbmVOYW1lOiBzdHJpbmcsXG4gICk6IHsgc3RhZ2VzOiBjb2RlcGlwZWxpbmUuU3RhZ2VQcm9wc1tdOyBzeW50aDogcGlwZWxpbmVzLklGaWxlU2V0UHJvZHVjZXIgfSB7XG4gICAgY29uc3QgY2xvdWRBc3NlbWJseUxvb2t1cEZuID0gbmV3IE5vZGVqc0Z1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiQ2xvdWRBc3NlbWJseUxvb2t1cEZuXCIsXG4gICAgICB7XG4gICAgICAgIGVudHJ5OiByZXF1aXJlLnJlc29sdmUoXCIuL2Nsb3VkLWFzc2VtYmx5LWxvb2t1cC1oYW5kbGVyXCIpLFxuICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMThfWCxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICAgICAgYXdzU2RrQ29ubmVjdGlvblJldXNlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY2RrQnVja2V0LmdyYW50UmVhZFdyaXRlKGNsb3VkQXNzZW1ibHlMb29rdXBGbilcblxuICAgIGNvbnN0IHVzZXJQYXJhbWV0ZXJzOiBDbG91ZEFzc2VtYmx5TG9va3VwVXNlclBhcmFtZXRlcnMgPSB7XG4gICAgICBidWNrZXROYW1lOiBjZGtCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgIG9iamVjdEtleTogYHBpcGVsaW5lcy8ke3BpcGVsaW5lTmFtZX0vY2xvdWQtYXNzZW1ibHkuanNvbmAsXG4gICAgfVxuXG4gICAgY29uc3Qgc3ludGggPSBwaXBlbGluZXMuQ29kZVBpcGVsaW5lRmlsZVNldC5mcm9tQXJ0aWZhY3QoXG4gICAgICBjbG91ZEFzc2VtYmx5QXJ0aWZhY3QsXG4gICAgKVxuXG4gICAgY29uc3Qgc3RhZ2VzID0gW1xuICAgICAge1xuICAgICAgICBzdGFnZU5hbWU6IFwiUHJlcGFyZUNsb3VkQXNzZW1ibHlcIixcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIG5ldyBjb2RlcGlwZWxpbmVBY3Rpb25zLkxhbWJkYUludm9rZUFjdGlvbih7XG4gICAgICAgICAgICBhY3Rpb25OYW1lOiBcImNsb3VkLWFzc2VtYmx5LWxvb2t1cFwiLFxuICAgICAgICAgICAgbGFtYmRhOiBjbG91ZEFzc2VtYmx5TG9va3VwRm4sXG4gICAgICAgICAgICBvdXRwdXRzOiBbY2xvdWRBc3NlbWJseUFydGlmYWN0XSxcbiAgICAgICAgICAgIHVzZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdXG4gICAgcmV0dXJuIHsgc3RhZ2VzLCBzeW50aCB9XG4gIH1cblxuICBwcml2YXRlIGNka1NvdXJjZVN0YWdlKFxuICAgIGNsb3VkQXNzZW1ibHlBcnRpZmFjdDogY29kZXBpcGVsaW5lLkFydGlmYWN0LFxuICAgIGNka0J1Y2tldDogczMuSUJ1Y2tldCxcbiAgICBwaXBlbGluZU5hbWU6IHN0cmluZyxcbiAgICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBzdHJpbmcsXG4gICk6IHsgc3RhZ2VzOiBjb2RlcGlwZWxpbmUuU3RhZ2VQcm9wc1tdOyBzeW50aDogcGlwZWxpbmVzLklGaWxlU2V0UHJvZHVjZXIgfSB7XG4gICAgY29uc3QgcHJlcGFyZUNka1NvdXJjZUZuID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBcIlByZXBhcmVDZGtTb3VyY2VGblwiLCB7XG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vLi4vYXNzZXRzL3ByZXBhcmUtY2RrLXNvdXJjZS1sYW1iZGFcIiksXG4gICAgICApLFxuICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICAvLyBVc2luZyBweXRob24gaW5zdGVhZCBpZiBOb2RlSlMgZHVlIHRvIHppcC1zdXBwb3J0IGluIHN0ZGxpYi5cbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzgsXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICB9KVxuXG4gICAgY29uc3QgYWNjb3VudCA9IGNkay5TdGFjay5vZih0aGlzKS5hY2NvdW50XG4gICAgY29uc3QgcmVnaW9uID0gY2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuXG4gICAgcHJlcGFyZUNka1NvdXJjZUZuLmdyYW50UHJpbmNpcGFsLmFkZFRvUHJpbmNpcGFsUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXCJzc206R2V0UGFyYW1ldGVyc0J5UGF0aFwiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgYGFybjphd3M6c3NtOiR7cmVnaW9ufToke2FjY291bnR9OnBhcmFtZXRlci9saWZsaWctY2RrLyovcGlwZWxpbmUtdmFyaWFibGVzLypgLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY2RrQnVja2V0LmdyYW50UmVhZFdyaXRlKHByZXBhcmVDZGtTb3VyY2VGbilcblxuICAgIGNvbnN0IGNka1NvdXJjZUFydGlmYWN0ID0gbmV3IGNvZGVwaXBlbGluZS5BcnRpZmFjdCgpXG5cbiAgICBjb25zdCB1c2VyUGFyYW1ldGVyczogUHJlcGFyZUNka1NvdXJjZVVzZXJQYXJhbWV0ZXJzID0ge1xuICAgICAgYnVja2V0TmFtZTogY2RrQnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICBwcmVmaXg6IGBwaXBlbGluZXMvJHtwaXBlbGluZU5hbWV9L2AsXG4gICAgICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBwYXJhbWV0ZXJzTmFtZXNwYWNlLFxuICAgIH1cblxuICAgIGNvbnN0IHN5bnRoID0gbmV3IHBpcGVsaW5lcy5TaGVsbFN0ZXAoXCJHZW5lcmF0ZUNsb3VkQXNzZW1ibHlcIiwge1xuICAgICAgaW5wdXQ6IHBpcGVsaW5lcy5Db2RlUGlwZWxpbmVGaWxlU2V0LmZyb21BcnRpZmFjdChjZGtTb3VyY2VBcnRpZmFjdCksXG4gICAgICBpbnN0YWxsQ29tbWFuZHM6IFtcIm5wbSBjaVwiXSxcbiAgICAgIGNvbW1hbmRzOiBbXCJucHggY2RrIHN5bnRoXCJdLFxuICAgIH0pXG4gICAgY29uc3Qgc3RhZ2VzID0gW1xuICAgICAge1xuICAgICAgICBzdGFnZU5hbWU6IFwiUHJlcGFyZUNka1NvdXJjZVwiLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgbmV3IGNvZGVwaXBlbGluZUFjdGlvbnMuTGFtYmRhSW52b2tlQWN0aW9uKHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6IFwicHJlcGFyZS1jZGstc291cmNlXCIsXG4gICAgICAgICAgICBsYW1iZGE6IHByZXBhcmVDZGtTb3VyY2VGbixcbiAgICAgICAgICAgIG91dHB1dHM6IFtjZGtTb3VyY2VBcnRpZmFjdF0sXG4gICAgICAgICAgICB1c2VyUGFyYW1ldGVycyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXVxuICAgIHJldHVybiB7IHN0YWdlcywgc3ludGggfVxuICB9XG5cbiAgYWRkU2xhY2tOb3RpZmljYXRpb24oXG4gICAgcHJvcHM6IE9taXQ8XG4gICAgICBTbGFja05vdGlmaWNhdGlvblByb3BzLFxuICAgICAgXCJwaXBlbGluZVwiIHwgXCJhcnRpZmFjdHNCdWNrZXRcIiB8IFwidHJpZ2dlck9iamVjdEtleVwiXG4gICAgPixcbiAgKTogdm9pZCB7XG4gICAgbmV3IFNsYWNrTm90aWZpY2F0aW9uKHRoaXMsIFwiU2xhY2tcIiwge1xuICAgICAgcGlwZWxpbmU6IHRoaXMuY29kZVBpcGVsaW5lLFxuICAgICAgYXJ0aWZhY3RzQnVja2V0OiB0aGlzLmFydGlmYWN0c0J1Y2tldCxcbiAgICAgIHRyaWdnZXJPYmplY3RLZXk6IHRoaXMudHJpZ2dlck9iamVjdEtleSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pXG4gIH1cbn1cblxuaW50ZXJmYWNlIFByZXBhcmVDZGtTb3VyY2VVc2VyUGFyYW1ldGVycyB7XG4gIGJ1Y2tldE5hbWU6IHN0cmluZ1xuICBwcmVmaXg6IHN0cmluZ1xuICBwYXJhbWV0ZXJzTmFtZXNwYWNlOiBzdHJpbmdcbn1cbiJdfQ==
@@ -4,9 +4,8 @@ exports.EcsUpdateImage = void 0;
4
4
  const constructs = require("constructs");
5
5
  const iam = require("aws-cdk-lib/aws-iam");
6
6
  const lambda = require("aws-cdk-lib/aws-lambda");
7
+ const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
7
8
  const cdk = require("aws-cdk-lib");
8
- const start_deploy_handler_1 = require("./start-deploy-handler");
9
- const status_handler_1 = require("./status-handler");
10
9
  /**
11
10
  * Dynamically update image of an ECS Service outside CDK.
12
11
  *
@@ -27,12 +26,12 @@ class EcsUpdateImage extends constructs.Construct {
27
26
  roleName: props.roleName,
28
27
  assumedBy: new iam.ArnPrincipal(props.callerRoleArn),
29
28
  });
30
- const startDeployFn = new lambda.Function(this, "StartDeployFunction", {
29
+ const startDeployFn = new aws_lambda_nodejs_1.NodejsFunction(this, "StartDeployFunction", {
31
30
  functionName: props.startDeployFunctionName,
32
- code: new lambda.InlineCode(`exports.handler = ${start_deploy_handler_1.startDeployHandler.toString()};`),
33
- runtime: lambda.Runtime.NODEJS_16_X,
34
- handler: "index.handler",
31
+ entry: require.resolve("./start-deploy-handler"),
32
+ runtime: lambda.Runtime.NODEJS_18_X,
35
33
  timeout: cdk.Duration.seconds(60),
34
+ awsSdkConnectionReuse: false,
36
35
  environment: {
37
36
  CLUSTER_NAME: props.cluster.clusterName,
38
37
  SERVICE_NAME: props.service == null ? "" : props.service.serviceName,
@@ -69,12 +68,12 @@ class EcsUpdateImage extends constructs.Construct {
69
68
  if (props.executionRole != null) {
70
69
  props.executionRole.grantPassRole(startDeployFn.role);
71
70
  }
72
- const statusFn = new lambda.Function(this, "StatusFunction", {
71
+ const statusFn = new aws_lambda_nodejs_1.NodejsFunction(this, "StatusFunction", {
73
72
  functionName: props.statusFunctionName,
74
- code: new lambda.InlineCode(`exports.handler = ${status_handler_1.statusHandler.toString()};`),
75
- runtime: lambda.Runtime.NODEJS_16_X,
76
- handler: "index.handler",
73
+ entry: require.resolve("./status-handler"),
74
+ runtime: lambda.Runtime.NODEJS_18_X,
77
75
  timeout: cdk.Duration.seconds(60),
76
+ awsSdkConnectionReuse: false,
78
77
  environment: {
79
78
  CLUSTER_NAME: props.cluster.clusterName,
80
79
  SERVICE_NAME: props.service == null ? "" : props.service.serviceName,
@@ -95,4 +94,4 @@ class EcsUpdateImage extends constructs.Construct {
95
94
  }
96
95
  }
97
96
  exports.EcsUpdateImage = EcsUpdateImage;
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLXVwZGF0ZS1pbWFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lY3MtdXBkYXRlLWltYWdlL2Vjcy11cGRhdGUtaW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBR3hDLDJDQUEwQztBQUMxQyxpREFBZ0Q7QUFDaEQsbUNBQWtDO0FBQ2xDLGlFQUEyRDtBQUMzRCxxREFBZ0Q7QUF5QmhEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxVQUFVLENBQUMsU0FBUztJQUN0RCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQVk7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDMUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFBO1FBRXhDLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ2pELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7U0FDckQsQ0FBQyxDQUFBO1FBRUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUNyRSxZQUFZLEVBQUUsS0FBSyxDQUFDLHVCQUF1QjtZQUMzQyxJQUFJLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUN6QixxQkFBcUIseUNBQWtCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FDdEQ7WUFDRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxX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QkFBc0I7Z0JBQ3RCLDRCQUE0QjtnQkFDNUIsbUJBQW1CO2dCQUNuQixlQUFlO2dCQUNmLHlCQUF5QjthQUMxQjtZQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNqQixDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7Q0FDRjtBQWhHRCx3Q0FnR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGVjciBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiXG5pbXBvcnQgKiBhcyBlY3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCB7IHN0YXJ0RGVwbG95SGFuZGxlciB9IGZyb20gXCIuL3N0YXJ0LWRlcGxveS1oYW5kbGVyXCJcbmltcG9ydCB7IHN0YXR1c0hhbmRsZXIgfSBmcm9tIFwiLi9zdGF0dXMtaGFuZGxlclwiXG5pbXBvcnQgeyBFY3NVcGRhdGVJbWFnZVRhZyB9IGZyb20gXCIuL3RhZ1wiXG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNsdXN0ZXI6IGVjcy5JQ2x1c3RlclxuICBzZXJ2aWNlPzogZWNzLklTZXJ2aWNlXG4gIHRhc2tSb2xlPzogaWFtLklSb2xlXG4gIGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGVcbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgd2lsbCBiZSBncmFudGVkIHBlcm1pc3Npb24gdG8gYXNzdW1lIHRoZSBkZXBsb3lcbiAgICogcm9sZS4gVGhpcyByb2xlIG11c3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFzc3VtZSB0aGUgZGVwbG95IHJvbGUuXG4gICAqL1xuICBjYWxsZXJSb2xlQXJuOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZGVwbG95IHJvbGUuIFRoaXMgaXMgdGhlIHJvbGVcbiAgICogdGhhdCB0aGUgY2FsbGVyIHdpbGwgYXNzdW1lIGluIG9yZGVyIHRvIGhhdmUgcGVybWlzc2lvbiB0byBpbnZva2VcbiAgICogdGhlIExhbWJkYSBGdW5jdGlvbnMuXG4gICAqL1xuICByb2xlTmFtZTogc3RyaW5nXG4gIHN0YXJ0RGVwbG95RnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgc3RhdHVzRnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgdGFnQ29udGFpbmVyOiBFY3NVcGRhdGVJbWFnZVRhZ1xuICBlY3JSZXBvc2l0b3J5OiBlY3IuSVJlcG9zaXRvcnlcbn1cblxuLyoqXG4gKiBEeW5hbWljYWxseSB1cGRhdGUgaW1hZ2Ugb2YgYW4gRUNTIFNlcnZpY2Ugb3V0c2lkZSBDREsuXG4gKlxuICogVGhpcyBjb25zdHJ1Y3Qgc2V0cyB1cCBhIExhbWJkYSBGdW5jdGlvbiB0aGF0IGNhbiBiZSBpbnZva2VkXG4gKiBmcm9tIHRoZSBDRCBwaXBlbGluZSB0byB1cGRhdGUgdGhlIEVDUyBTZXJ2aWNlIHRvIGEgbmV3IGltYWdlLlxuICpcbiAqIFRvIGtlZXAgcmVzb3VyY2VzIGluIHN5bmMsIGEgU2VjcmV0IGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZlxuICogdGhlIGN1cnJlbnQgaW1hZ2UsIHdoaWNoIGlzIGR5bmFtaWNhbGx5IHJlc29sdmVkIGluIHRoZSBDbG91ZEZvcm1hdGlvblxuICogdGVtcGxhdGVzIHRvIGF2b2lkIGluZnJhc3RydWN0dXJlIGNoYW5nZXMgdG8gY2F1c2UgYW4gb2xkZXIvZGlmZmVyZW50XG4gKiBpbWFnZSB0byBiZSB1c2VkLlxuICovXG5leHBvcnQgY2xhc3MgRWNzVXBkYXRlSW1hZ2UgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgYWNjb3VudCA9IGNkay5TdGFjay5vZih0aGlzKS5hY2NvdW50XG4gICAgY29uc3QgcmVnaW9uID0gY2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuXG4gICAgY29uc3Qgcm9sZVRvQmVBc3N1bWVkID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiUm9sZVwiLCB7XG4gICAgICByb2xlTmFtZTogcHJvcHMucm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQXJuUHJpbmNpcGFsKHByb3BzLmNhbGxlclJvbGVBcm4pLFxuICAgIH0pXG5cbiAgICBjb25zdCBzdGFydERlcGxveUZuID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBcIlN0YXJ0RGVwbG95RnVuY3Rpb25cIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBwcm9wcy5zdGFydERlcGxveUZ1bmN0aW9uTmFtZSxcbiAgICAgIGNvZGU6IG5ldyBsYW1iZGEuSW5saW5lQ29kZShcbiAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7c3RhcnREZXBsb3lIYW5kbGVyLnRvU3RyaW5nKCl9O2AsXG4gICAgICApLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIENMVVNURVJfTkFNRTogcHJvcHMuY2x1c3Rlci5jbHVzdGVyTmFtZSxcbiAgICAgICAgU0VSVklDRV9OQU1FOiBwcm9wcy5zZXJ2aWNlID09IG51bGwgPyBcIlwiIDogcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZSxcbiAgICAgICAgUkVQT1NJVE9SWV9VUkw6IHByb3BzLmVjclJlcG9zaXRvcnkucmVwb3NpdG9yeVVyaSxcbiAgICAgICAgRUNSX1RBR19TRUNSRVRfQVJOOiBwcm9wcy50YWdDb250YWluZXIuc2VjcmV0QXJuLFxuICAgICAgfSxcbiAgICAgIHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM6IDEsXG4gICAgfSlcblxuICAgIHN0YXJ0RGVwbG95Rm4uZ3JhbnRJbnZva2Uocm9sZVRvQmVBc3N1bWVkKVxuICAgIHByb3BzLnRhZ0NvbnRhaW5lci5ncmFudFVwZGF0ZShzdGFydERlcGxveUZuKVxuXG4gICAgaWYgKHByb3BzLnNlcnZpY2UgIT0gbnVsbCkge1xuICAgICAgc3RhcnREZXBsb3lGbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcImVjczpEZXJlZ2lzdGVyVGFza0RlZmluaXRpb25cIixcbiAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlU2VydmljZXNcIixcbiAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza0RlZmluaXRpb25cIixcbiAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza3NcIixcbiAgICAgICAgICAgIFwiZWNzOkxpc3RUYXNrc1wiLFxuICAgICAgICAgICAgXCJlY3M6TGlzdFRhc2tEZWZpbml0aW9uc1wiLFxuICAgICAgICAgICAgXCJlY3M6UmVnaXN0ZXJUYXNrRGVmaW5pdGlvblwiLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICB9KSxcbiAgICAgIClcblxuICAgICAgc3RhcnREZXBsb3lGbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXCJlY3M6VXBkYXRlU2VydmljZVwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgIGBhcm46YXdzOmVjczoke3JlZ2lvbn06JHthY2NvdW50fTpzZXJ2aWNlLyR7cHJvcHMuY2x1c3Rlci5jbHVzdGVyTmFtZX0vJHtwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lfWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRhc2tSb2xlICE9IG51bGwpIHtcbiAgICAgIHByb3BzLnRhc2tSb2xlLmdyYW50UGFzc1JvbGUoc3RhcnREZXBsb3lGbi5yb2xlISlcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZXhlY3V0aW9uUm9sZSAhPSBudWxsKSB7XG4gICAgICBwcm9wcy5leGVjdXRpb25Sb2xlLmdyYW50UGFzc1JvbGUoc3RhcnREZXBsb3lGbi5yb2xlISlcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXNGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJTdGF0dXNGdW5jdGlvblwiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IHByb3BzLnN0YXR1c0Z1bmN0aW9uTmFtZSxcbiAgICAgIGNvZGU6IG5ldyBsYW1iZGEuSW5saW5lQ29kZShcbiAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7c3RhdHVzSGFuZGxlci50b1N0cmluZygpfTtgLFxuICAgICAgKSxcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xNl9YLFxuICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBDTFVTVEVSX05BTUU6IHByb3BzLmNsdXN0ZXIuY2x1c3Rlck5hbWUsXG4gICAgICAgIFNFUlZJQ0VfTkFNRTogcHJvcHMuc2VydmljZSA9PSBudWxsID8gXCJcIiA6IHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUsXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBzdGF0dXNGbi5ncmFudEludm9rZShyb2xlVG9CZUFzc3VtZWQpXG5cbiAgICBzdGF0dXNGbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICBcImVjczpEZXJlZ2lzdGVyVGFza0RlZmluaXRpb25cIixcbiAgICAgICAgICBcImVjczpEZXNjcmliZVNlcnZpY2VzXCIsXG4gICAgICAgICAgXCJlY3M6RGVzY3JpYmVUYXNrRGVmaW5pdGlvblwiLFxuICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza3NcIixcbiAgICAgICAgICBcImVjczpMaXN0VGFza3NcIixcbiAgICAgICAgICBcImVjczpMaXN0VGFza0RlZmluaXRpb25zXCIsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgIH0pLFxuICAgIClcbiAgfVxufVxuIl19
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLXVwZGF0ZS1pbWFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lY3MtdXBkYXRlLWltYWdlL2Vjcy11cGRhdGUtaW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBR3hDLDJDQUEwQztBQUMxQyxpREFBZ0Q7QUFDaEQscUVBQThEO0FBQzlELG1DQUFrQztBQXlCbEM7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQWEsY0FBZSxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBQ3RELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBWTtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQTtRQUMxQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFFeEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDakQsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztTQUNyRCxDQUFDLENBQUE7UUFFRixNQUFNLGFBQWEsR0FBRyxJQUFJLGtDQUFjLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO1lBQ3BFLFlBQVksRUFBRSxLQUFLLENBQUMsdUJBQXVCO1lBQzNDLEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDO1lBQ2hELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDbkMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUs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QUM7U0FDakIsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0NBQ0Y7QUE1RkQsd0NBNEZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tIFwiY29uc3RydWN0c1wiXG5pbXBvcnQgKiBhcyBlY3IgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3JcIlxuaW1wb3J0ICogYXMgZWNzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzXCJcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgeyBFY3NVcGRhdGVJbWFnZVRhZyB9IGZyb20gXCIuL3RhZ1wiXG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNsdXN0ZXI6IGVjcy5JQ2x1c3RlclxuICBzZXJ2aWNlPzogZWNzLklTZXJ2aWNlXG4gIHRhc2tSb2xlPzogaWFtLklSb2xlXG4gIGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGVcbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgd2lsbCBiZSBncmFudGVkIHBlcm1pc3Npb24gdG8gYXNzdW1lIHRoZSBkZXBsb3lcbiAgICogcm9sZS4gVGhpcyByb2xlIG11c3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFzc3VtZSB0aGUgZGVwbG95IHJvbGUuXG4gICAqL1xuICBjYWxsZXJSb2xlQXJuOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZGVwbG95IHJvbGUuIFRoaXMgaXMgdGhlIHJvbGVcbiAgICogdGhhdCB0aGUgY2FsbGVyIHdpbGwgYXNzdW1lIGluIG9yZGVyIHRvIGhhdmUgcGVybWlzc2lvbiB0byBpbnZva2VcbiAgICogdGhlIExhbWJkYSBGdW5jdGlvbnMuXG4gICAqL1xuICByb2xlTmFtZTogc3RyaW5nXG4gIHN0YXJ0RGVwbG95RnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgc3RhdHVzRnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgdGFnQ29udGFpbmVyOiBFY3NVcGRhdGVJbWFnZVRhZ1xuICBlY3JSZXBvc2l0b3J5OiBlY3IuSVJlcG9zaXRvcnlcbn1cblxuLyoqXG4gKiBEeW5hbWljYWxseSB1cGRhdGUgaW1hZ2Ugb2YgYW4gRUNTIFNlcnZpY2Ugb3V0c2lkZSBDREsuXG4gKlxuICogVGhpcyBjb25zdHJ1Y3Qgc2V0cyB1cCBhIExhbWJkYSBGdW5jdGlvbiB0aGF0IGNhbiBiZSBpbnZva2VkXG4gKiBmcm9tIHRoZSBDRCBwaXBlbGluZSB0byB1cGRhdGUgdGhlIEVDUyBTZXJ2aWNlIHRvIGEgbmV3IGltYWdlLlxuICpcbiAqIFRvIGtlZXAgcmVzb3VyY2VzIGluIHN5bmMsIGEgU2VjcmV0IGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZlxuICogdGhlIGN1cnJlbnQgaW1hZ2UsIHdoaWNoIGlzIGR5bmFtaWNhbGx5IHJlc29sdmVkIGluIHRoZSBDbG91ZEZvcm1hdGlvblxuICogdGVtcGxhdGVzIHRvIGF2b2lkIGluZnJhc3RydWN0dXJlIGNoYW5nZXMgdG8gY2F1c2UgYW4gb2xkZXIvZGlmZmVyZW50XG4gKiBpbWFnZSB0byBiZSB1c2VkLlxuICovXG5leHBvcnQgY2xhc3MgRWNzVXBkYXRlSW1hZ2UgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgYWNjb3VudCA9IGNkay5TdGFjay5vZih0aGlzKS5hY2NvdW50XG4gICAgY29uc3QgcmVnaW9uID0gY2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuXG4gICAgY29uc3Qgcm9sZVRvQmVBc3N1bWVkID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiUm9sZVwiLCB7XG4gICAgICByb2xlTmFtZTogcHJvcHMucm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQXJuUHJpbmNpcGFsKHByb3BzLmNhbGxlclJvbGVBcm4pLFxuICAgIH0pXG5cbiAgICBjb25zdCBzdGFydERlcGxveUZuID0gbmV3IE5vZGVqc0Z1bmN0aW9uKHRoaXMsIFwiU3RhcnREZXBsb3lGdW5jdGlvblwiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IHByb3BzLnN0YXJ0RGVwbG95RnVuY3Rpb25OYW1lLFxuICAgICAgZW50cnk6IHJlcXVpcmUucmVzb2x2ZShcIi4vc3RhcnQtZGVwbG95LWhhbmRsZXJcIiksXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMThfWCxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgIGF3c1Nka0Nvbm5lY3Rpb25SZXVzZTogZmFsc2UsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBDTFVTVEVSX05BTUU6IHByb3BzLmNsdXN0ZXIuY2x1c3Rlck5hbWUsXG4gICAgICAgIFNFUlZJQ0VfTkFNRTogcHJvcHMuc2VydmljZSA9PSBudWxsID8gXCJcIiA6IHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUsXG4gICAgICAgIFJFUE9TSVRPUllfVVJMOiBwcm9wcy5lY3JSZXBvc2l0b3J5LnJlcG9zaXRvcnlVcmksXG4gICAgICAgIEVDUl9UQUdfU0VDUkVUX0FSTjogcHJvcHMudGFnQ29udGFpbmVyLnNlY3JldEFybixcbiAgICAgIH0sXG4gICAgICByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zOiAxLFxuICAgIH0pXG5cbiAgICBzdGFydERlcGxveUZuLmdyYW50SW52b2tlKHJvbGVUb0JlQXNzdW1lZClcbiAgICBwcm9wcy50YWdDb250YWluZXIuZ3JhbnRVcGRhdGUoc3RhcnREZXBsb3lGbilcblxuICAgIGlmIChwcm9wcy5zZXJ2aWNlICE9IG51bGwpIHtcbiAgICAgIHN0YXJ0RGVwbG95Rm4uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJlY3M6RGVyZWdpc3RlclRhc2tEZWZpbml0aW9uXCIsXG4gICAgICAgICAgICBcImVjczpEZXNjcmliZVNlcnZpY2VzXCIsXG4gICAgICAgICAgICBcImVjczpEZXNjcmliZVRhc2tEZWZpbml0aW9uXCIsXG4gICAgICAgICAgICBcImVjczpEZXNjcmliZVRhc2tzXCIsXG4gICAgICAgICAgICBcImVjczpMaXN0VGFza3NcIixcbiAgICAgICAgICAgIFwiZWNzOkxpc3RUYXNrRGVmaW5pdGlvbnNcIixcbiAgICAgICAgICAgIFwiZWNzOlJlZ2lzdGVyVGFza0RlZmluaXRpb25cIixcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgfSksXG4gICAgICApXG5cbiAgICAgIHN0YXJ0RGVwbG95Rm4uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1wiZWNzOlVwZGF0ZVNlcnZpY2VcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBgYXJuOmF3czplY3M6JHtyZWdpb259OiR7YWNjb3VudH06c2VydmljZS8ke3Byb3BzLmNsdXN0ZXIuY2x1c3Rlck5hbWV9LyR7cHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZX1gLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmIChwcm9wcy50YXNrUm9sZSAhPSBudWxsKSB7XG4gICAgICBwcm9wcy50YXNrUm9sZS5ncmFudFBhc3NSb2xlKHN0YXJ0RGVwbG95Rm4ucm9sZSEpXG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmV4ZWN1dGlvblJvbGUgIT0gbnVsbCkge1xuICAgICAgcHJvcHMuZXhlY3V0aW9uUm9sZS5ncmFudFBhc3NSb2xlKHN0YXJ0RGVwbG95Rm4ucm9sZSEpXG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzRm4gPSBuZXcgTm9kZWpzRnVuY3Rpb24odGhpcywgXCJTdGF0dXNGdW5jdGlvblwiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IHByb3BzLnN0YXR1c0Z1bmN0aW9uTmFtZSxcbiAgICAgIGVudHJ5OiByZXF1aXJlLnJlc29sdmUoXCIuL3N0YXR1cy1oYW5kbGVyXCIpLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICBhd3NTZGtDb25uZWN0aW9uUmV1c2U6IGZhbHNlLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgQ0xVU1RFUl9OQU1FOiBwcm9wcy5jbHVzdGVyLmNsdXN0ZXJOYW1lLFxuICAgICAgICBTRVJWSUNFX05BTUU6IHByb3BzLnNlcnZpY2UgPT0gbnVsbCA/IFwiXCIgOiBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgc3RhdHVzRm4uZ3JhbnRJbnZva2Uocm9sZVRvQmVBc3N1bWVkKVxuXG4gICAgc3RhdHVzRm4uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgXCJlY3M6RGVyZWdpc3RlclRhc2tEZWZpbml0aW9uXCIsXG4gICAgICAgICAgXCJlY3M6RGVzY3JpYmVTZXJ2aWNlc1wiLFxuICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza0RlZmluaXRpb25cIixcbiAgICAgICAgICBcImVjczpEZXNjcmliZVRhc2tzXCIsXG4gICAgICAgICAgXCJlY3M6TGlzdFRhc2tzXCIsXG4gICAgICAgICAgXCJlY3M6TGlzdFRhc2tEZWZpbml0aW9uc1wiLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICB9KSxcbiAgICApXG4gIH1cbn1cbiJdfQ==
@@ -2,5 +2,5 @@ import type { Handler } from "aws-lambda";
2
2
  interface ExpectedInput {
3
3
  tag: string;
4
4
  }
5
- export declare const startDeployHandler: Handler<Partial<ExpectedInput>>;
5
+ export declare const handler: Handler<Partial<ExpectedInput>>;
6
6
  export {};
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.startDeployHandler = void 0;
3
+ exports.handler = void 0;
4
+ const client_ecs_1 = require("@aws-sdk/client-ecs");
5
+ const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
4
6
  // This function is inline-compiled for the lambda.
5
7
  // It must be self-contained.
6
- const startDeployHandler = async (event) => {
7
- const AWS = require("aws-sdk");
8
- const ecs = new AWS.ECS();
9
- const sm = new AWS.SecretsManager();
8
+ const handler = async (event) => {
9
+ const ecsClient = new client_ecs_1.ECSClient();
10
+ const smClient = new client_secrets_manager_1.SecretsManagerClient();
10
11
  function requireEnv(name) {
11
12
  const value = process.env[name];
12
13
  if (value === undefined) {
@@ -16,23 +17,17 @@ const startDeployHandler = async (event) => {
16
17
  }
17
18
  async function getService(clusterName, serviceName) {
18
19
  var _a;
19
- const services = await ecs
20
- .describeServices({
20
+ const services = await ecsClient.send(new client_ecs_1.DescribeServicesCommand({
21
21
  cluster: clusterName,
22
22
  services: [serviceName],
23
- })
24
- .promise();
23
+ }));
25
24
  if (((_a = services.services) === null || _a === void 0 ? void 0 : _a.length) !== 1) {
26
25
  throw new Error(`Service not found: ${clusterName}/${serviceName}`);
27
26
  }
28
27
  return services.services[0];
29
28
  }
30
29
  async function getTaskDefinition(taskDefinition) {
31
- return (await ecs
32
- .describeTaskDefinition({
33
- taskDefinition: taskDefinition,
34
- })
35
- .promise()).taskDefinition;
30
+ return (await ecsClient.send(new client_ecs_1.DescribeTaskDefinitionCommand({ taskDefinition }))).taskDefinition;
36
31
  }
37
32
  async function updateServiceToImage(clusterName, serviceName, image) {
38
33
  console.log(`Cluster name: ${clusterName}`);
@@ -63,14 +58,12 @@ const startDeployHandler = async (event) => {
63
58
  },
64
59
  ],
65
60
  };
66
- const updatedTaskDefinition = (await ecs.registerTaskDefinition(updatedSpec).promise()).taskDefinition;
67
- await ecs
68
- .updateService({
61
+ const updatedTaskDefinition = (await ecsClient.send(new client_ecs_1.RegisterTaskDefinitionCommand(updatedSpec))).taskDefinition;
62
+ await ecsClient.send(new client_ecs_1.UpdateServiceCommand({
69
63
  cluster: clusterName,
70
64
  service: serviceName,
71
65
  taskDefinition: updatedTaskDefinition.taskDefinitionArn,
72
- })
73
- .promise();
66
+ }));
74
67
  console.log("Service is updated");
75
68
  }
76
69
  const clusterName = requireEnv("CLUSTER_NAME");
@@ -84,14 +77,12 @@ const startDeployHandler = async (event) => {
84
77
  // Register tag as current target.
85
78
  // This is needed so that CloudFormation deployments, e.g.
86
79
  // updates to the Task Definition, will use the same image.
87
- await sm
88
- .updateSecret({
80
+ await smClient.send(new client_secrets_manager_1.UpdateSecretCommand({
89
81
  SecretId: ecrTagSecretArn,
90
82
  SecretString: JSON.stringify({
91
83
  tag: event.tag,
92
84
  }),
93
- })
94
- .promise();
85
+ }));
95
86
  // Update the service if we know the service name. This is unknown
96
87
  // during initial deployment of the stack.
97
88
  if (serviceName !== "") {
@@ -100,5 +91,5 @@ const startDeployHandler = async (event) => {
100
91
  }
101
92
  return {};
102
93
  };
103
- exports.startDeployHandler = startDeployHandler;
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtZGVwbG95LWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWNzLXVwZGF0ZS1pbWFnZS9zdGFydC1kZXBsb3ktaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFhQSxtREFBbUQ7QUFDbkQsNkJBQTZCO0FBQ3RCLE1BQU0sa0JBQWtCLEdBQW9DLEtBQUssRUFDdEUsS0FBSyxFQUNMLEVBQUU7SUFDRixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFjLENBQUE7SUFDckMsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUF5QixDQUFBO0lBRTFELFNBQVMsVUFBVSxDQUFDLElBQVk7UUFDOUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNwQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsS0FBSyxVQUFVLFVBQVUsQ0FDdkIsV0FBbUIsRUFDbkIsV0FBbUI7O1FBRW5CLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRzthQUN2QixnQkFBZ0IsQ0FBQztZQUNoQixPQUFPLEVBQUUsV0FBVztZQUNwQixRQUFRLEVBQUUsQ0FBQyxXQUFXLENBQUM7U0FDeEIsQ0FBQzthQUNELE9BQU8sRUFBRSxDQUFBO1FBRVosSUFBSSxDQUFBLE1BQUEsUUFBUSxDQUFDLFFBQVEsMENBQUUsTUFBTSxNQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLFdBQVcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFBO1FBQ3JFLENB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SUFDM0QsTUFBTSxFQUFFO1NBQ0wsWUFBWSxDQUFDO1FBQ1osUUFBUSxFQUFFLGVBQWU7UUFDekIsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDM0IsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1NBQ2YsQ0FBQztLQUNILENBQUM7U0FDRCxPQUFPLEVBQUUsQ0FBQTtJQUVaLGtFQUFrRTtJQUNsRSwwQ0FBMEM7SUFDMUMsSUFBSSxXQUFXLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDdkIsTUFBTSxLQUFLLEdBQUcsR0FBRyxhQUFhLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQzdDLE1BQU0sb0JBQW9CLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUM3RCxDQUFDO0lBRUQsT0FBTyxFQUFFLENBQUE7QUFDWCxDQUFDLENBQUE7QUF2SVksUUFBQSxrQkFBa0Isc0JBdUk5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1jYWxsICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzICovXG5pbXBvcnQgdHlwZSB7IEhhbmRsZXIgfSBmcm9tIFwiYXdzLWxhbWJkYVwiXG5pbXBvcnQgdHlwZSAqIGFzIF9BV1MgZnJvbSBcImF3cy1zZGtcIlxuaW1wb3J0IHsgUmVnaXN0ZXJUYXNrRGVmaW5pdGlvblJlcXVlc3QgfSBmcm9tIFwiYXdzLXNkay9jbGllbnRzL2Vjc1wiXG5cbmludGVyZmFjZSBFeHBlY3RlZElucHV0IHtcbiAgdGFnOiBzdHJpbmdcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBpbmxpbmUtY29tcGlsZWQgZm9yIHRoZSBsYW1iZGEuXG4vLyBJdCBtdXN0IGJlIHNlbGYtY29udGFpbmVkLlxuZXhwb3J0IGNvbnN0IHN0YXJ0RGVwbG95SGFuZGxlcjogSGFuZGxlcjxQYXJ0aWFsPEV4cGVjdGVkSW5wdXQ+PiA9IGFzeW5jIChcbiAgZXZlbnQsXG4pID0+IHtcbiAgY29uc3QgQVdTID0gcmVxdWlyZShcImF3cy1zZGtcIilcbiAgY29uc3QgZWNzID0gbmV3IEFXUy5FQ1MoKSBhcyBfQVdTLkVDU1xuICBjb25zdCBzbSA9IG5ldyBBV1MuU2VjcmV0c01hbmFnZXIoKSBhcyBfQVdTLlNlY3JldHNNYW5hZ2VyXG5cbiAgZnVuY3Rpb24gcmVxdWlyZUVudihuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnZbbmFtZV1cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nICR7bmFtZX1gKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGdldFNlcnZpY2UoXG4gICAgY2x1c3Rlck5hbWU6IHN0cmluZyxcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICApOiBQcm9taXNlPEFXUy5FQ1MuU2VydmljZT4ge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gYXdhaXQgZWNzXG4gICAgICAuZGVzY3JpYmVTZXJ2aWNlcyh7XG4gICAgICAgIGNsdXN0ZXI6IGNsdXN0ZXJOYW1lLFxuICAgICAgICBzZXJ2aWNlczogW3NlcnZpY2VOYW1lXSxcbiAgICAgIH0pXG4gICAgICAucHJvbWlzZSgpXG5cbiAgICBpZiAoc2VydmljZXMuc2VydmljZXM/Lmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXJ2aWNlIG5vdCBmb3VuZDogJHtjbHVzdGVyTmFtZX0vJHtzZXJ2aWNlTmFtZX1gKVxuICAgIH1cblxuICAgIHJldHVybiBzZXJ2aWNlcy5zZXJ2aWNlc1swXVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0VGFza0RlZmluaXRpb24oXG4gICAgdGFza0RlZmluaXRpb246IHN0cmluZyxcbiAgKTogUHJvbWlzZTxBV1MuRUNTLlRhc2tEZWZpbml0aW9uPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IGVjc1xuICAgICAgICAuZGVzY3JpYmVUYXNrRGVmaW5pdGlvbih7XG4gICAgICAgICAgdGFza0RlZmluaXRpb246IHRhc2tEZWZpbml0aW9uLFxuICAgICAgICB9KVxuICAgICAgICAucHJvbWlzZSgpXG4gICAgKS50YXNrRGVmaW5pdGlvbiFcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVNlcnZpY2VUb0ltYWdlKFxuICAgIGNsdXN0ZXJOYW1lOiBzdHJpbmcsXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICBpbWFnZTogc3RyaW5nLFxuICApIHtcbiAgICBjb25zb2xlLmxvZyhgQ2x1c3RlciBuYW1lOiAke2NsdXN0ZXJOYW1lfWApXG4gICAgY29uc29sZS5sb2coYFNlcnZpY2UgbmFtZTogJHtzZXJ2aWNlTmFtZX1gKVxuXG4gICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IGdldFNlcnZpY2UoY2x1c3Rlck5hbWUsIHNlcnZpY2VOYW1lKVxuICAgIGNvbnN0IHByZXZUYXNrRGVmaW5pdGlvbiA9IGF3YWl0IGdldFRhc2tEZWZpbml0aW9uKHNlcnZpY2UudGFza0RlZmluaXRpb24hKVxuXG4gICAgLy8gRG9uJ3QgYm90aGVyIHVwZGF0aW5nIHRoZSBzZXJ2aWNlIGlmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IHRoZSBsYXRlc3QuXG4gICAgY29uc3QgcHJldkltYWdlID0gcHJldlRhc2tEZWZpbml0aW9uLmNvbnRhaW5lckRlZmluaXRpb25zIVswXS5pbWFnZSFcbiAgICBpZiAocHJldkltYWdlID09PSBpbWFnZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVXBkYXRpbmcgaW1hZ2UgZm9yIHNlcnZpY2UgJyR7c2VydmljZU5hbWV9JyBmcm9tICcke3ByZXZJbWFnZX0nIHRvICcke2ltYWdlfSdgLFxuICAgIClcblxuICAgIGNvbnN0IGV4Y2x1ZGUgPSBbXG4gICAgICBcInJlZ2lzdGVyZWRBdFwiLFxuICAgICAgXCJyZWdpc3RlcmVkQnlcIixcbiAgICAgIFwiY29tcGF0aWJpbGl0aWVzXCIsXG4gICAgICBcInJlcXVpcmVzQXR0cmlidXRlc1wiLFxuICAgICAgXCJyZXZpc2lvblwiLFxuICAgICAgXCJzdGF0dXNcIixcbiAgICAgIFwidGFza0RlZmluaXRpb25Bcm5cIixcbiAgICBdXG5cbiAgICBjb25zdCB1cGRhdGVkU3BlYzogUmVnaXN0ZXJUYXNrRGVmaW5pdGlvblJlcXVlc3QgPSB7XG4gICAgICAuLi5PYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByZXZUYXNrRGVmaW5pdGlvbikuZmlsdGVyKFxuICAgICAgICAgIChba2V5XSkgPT4gIWV4Y2x1ZGUuaW5jbHVkZXMoa2V5KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBjb250YWluZXJEZWZpbml0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgLi4ucHJldlRhc2tEZWZpbml0aW9uLmNvbnRhaW5lckRlZmluaXRpb25zIVswXSxcbiAgICAgICAgICBpbWFnZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSBhcyBSZWdpc3RlclRhc2tEZWZpbml0aW9uUmVxdWVzdFxuXG4gICAgY29uc3QgdXBkYXRlZFRhc2tEZWZpbml0aW9uID0gKFxuICAgICAgYXdhaXQgZWNzLnJlZ2lzdGVyVGFza0RlZmluaXRpb24odXBkYXRlZFNwZWMpLnByb21pc2UoKVxuICAgICkudGFza0RlZmluaXRpb24hXG5cbiAgICBhd2FpdCBlY3NcbiAgICAgIC51cGRhdGVTZXJ2aWNlKHtcbiAgICAgICAgY2x1c3RlcjogY2x1c3Rlck5hbWUsXG4gICAgICAgIHNlcnZpY2U6IHNlcnZpY2VOYW1lLFxuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdXBkYXRlZFRhc2tEZWZpbml0aW9uLnRhc2tEZWZpbml0aW9uQXJuLFxuICAgICAgfSlcbiAgICAgIC5wcm9taXNlKClcblxuICAgIGNvbnNvbGUubG9nKFwiU2VydmljZSBpcyB1cGRhdGVkXCIpXG4gIH1cblxuICBjb25zdCBjbHVzdGVyTmFtZSA9IHJlcXVpcmVFbnYoXCJDTFVTVEVSX05BTUVcIilcbiAgY29uc3Qgc2VydmljZU5hbWUgPSByZXF1aXJlRW52KFwiU0VSVklDRV9OQU1FXCIpXG4gIGNvbnN0IHJlcG9zaXRvcnlVcmwgPSByZXF1aXJlRW52KFwiUkVQT1NJVE9SWV9VUkxcIilcbiAgY29uc3QgZWNyVGFnU2VjcmV0QXJuID0gcmVxdWlyZUVudihcIkVDUl9UQUdfU0VDUkVUX0FSTlwiKVxuXG4gIC8vIFZhbGlkYXRlIHRoZSBpbnB1dC5cbiAgaWYgKHR5cGVvZiBldmVudC50YWcgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBpbnZhbGlkOiBcIiArIEpTT04uc3RyaW5naWZ5KGV2ZW50LCB1bmRlZmluZWQsIFwiICBcIikpXG4gIH1cblxuICAvLyBSZWdpc3RlciB0YWcgYXMgY3VycmVudCB0YXJnZXQuXG4gIC8vIFRoaXMgaXMgbmVlZGVkIHNvIHRoYXQgQ2xvdWRGb3JtYXRpb24gZGVwbG95bWVudHMsIGUuZy5cbiAgLy8gdXBkYXRlcyB0byB0aGUgVGFzayBEZWZpbml0aW9uLCB3aWxsIHVzZSB0aGUgc2FtZSBpbWFnZS5cbiAgYXdhaXQgc21cbiAgICAudXBkYXRlU2VjcmV0KHtcbiAgICAgIFNlY3JldElkOiBlY3JUYWdTZWNyZXRBcm4sXG4gICAgICBTZWNyZXRTdHJpbmc6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgdGFnOiBldmVudC50YWcsXG4gICAgICB9KSxcbiAgICB9KVxuICAgIC5wcm9taXNlKClcblxuICAvLyBVcGRhdGUgdGhlIHNlcnZpY2UgaWYgd2Uga25vdyB0aGUgc2VydmljZSBuYW1lLiBUaGlzIGlzIHVua25vd25cbiAgLy8gZHVyaW5nIGluaXRpYWwgZGVwbG95bWVudCBvZiB0aGUgc3RhY2suXG4gIGlmIChzZXJ2aWNlTmFtZSAhPT0gXCJcIikge1xuICAgIGNvbnN0IGltYWdlID0gYCR7cmVwb3NpdG9yeVVybH06JHtldmVudC50YWd9YFxuICAgIGF3YWl0IHVwZGF0ZVNlcnZpY2VUb0ltYWdlKGNsdXN0ZXJOYW1lLCBzZXJ2aWNlTmFtZSwgaW1hZ2UpXG4gIH1cblxuICByZXR1cm4ge31cbn1cbiJdfQ==
94
+ exports.handler = handler;
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtZGVwbG95LWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWNzLXVwZGF0ZS1pbWFnZS9zdGFydC1kZXBsb3ktaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxvREFTNEI7QUFFNUIsNEVBR3dDO0FBTXhDLG1EQUFtRDtBQUNuRCw2QkFBNkI7QUFDdEIsTUFBTSxPQUFPLEdBQW9DLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUN0RSxNQUFNLFNBQVMsR0FBRyxJQUFJLHNCQUFTLEVBQUUsQ0FBQTtJQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLDZDQUFvQixFQUFFLENBQUE7SUFFM0MsU0FBUyxVQUFVLENBQUMsSUFBWTtRQUM5QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQy9CLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ3BDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRCxLQUFLLFVBQVUsVUFBVSxDQUN2QixXQUFtQixFQUNuQixXQUFtQjs7UUFFbkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUNuQyxJQUFJLG9DQUF1QixDQUFDO1lBQzFCLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQztTQUN4QixDQUFDLENBQ0gsQ0FBQTtRQUVELElBQUksQ0FBQSxNQUFBLFFBQVEsQ0FBQyxRQUFRLDBDQUFFLE1BQU0sTUFBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixXQUFXLElBQUksV0FBVyxFQUFFLENBQUMsQ0FBQTtRQUNyRSxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLENB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Q0FDakIsSUFBSSw0Q0FBbUIsQ0FBQztRQUN0QixRQUFRLEVBQUUsZUFBZTtRQUN6QixZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUMzQixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7U0FDZixDQUFDO0tBQ0gsQ0FBQyxDQUNILENBQUE7SUFFRCxrRUFBa0U7SUFDbEUsMENBQTBDO0lBQzFDLElBQUksV0FBVyxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLEdBQUcsYUFBYSxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUM3QyxNQUFNLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFBO0FBQ1gsQ0FBQyxDQUFBO0FBaklZLFFBQUEsT0FBTyxXQWlJbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEhhbmRsZXIgfSBmcm9tIFwiYXdzLWxhbWJkYVwiXG5cbmltcG9ydCB7XG4gIEVDU0NsaWVudCxcbiAgRGVzY3JpYmVUYXNrRGVmaW5pdGlvbkNvbW1hbmQsXG4gIFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kLFxuICBVcGRhdGVTZXJ2aWNlQ29tbWFuZCxcbiAgRGVzY3JpYmVTZXJ2aWNlc0NvbW1hbmQsXG4gIFRhc2tEZWZpbml0aW9uLFxuICBTZXJ2aWNlLFxuICBSZWdpc3RlclRhc2tEZWZpbml0aW9uQ29tbWFuZElucHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWVjc1wiXG5cbmltcG9ydCB7XG4gIFNlY3JldHNNYW5hZ2VyQ2xpZW50LFxuICBVcGRhdGVTZWNyZXRDb21tYW5kLFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlclwiXG5cbmludGVyZmFjZSBFeHBlY3RlZElucHV0IHtcbiAgdGFnOiBzdHJpbmdcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBpbmxpbmUtY29tcGlsZWQgZm9yIHRoZSBsYW1iZGEuXG4vLyBJdCBtdXN0IGJlIHNlbGYtY29udGFpbmVkLlxuZXhwb3J0IGNvbnN0IGhhbmRsZXI6IEhhbmRsZXI8UGFydGlhbDxFeHBlY3RlZElucHV0Pj4gPSBhc3luYyAoZXZlbnQpID0+IHtcbiAgY29uc3QgZWNzQ2xpZW50ID0gbmV3IEVDU0NsaWVudCgpXG4gIGNvbnN0IHNtQ2xpZW50ID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KClcblxuICBmdW5jdGlvbiByZXF1aXJlRW52KG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSBwcm9jZXNzLmVudltuYW1lXVxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgJHtuYW1lfWApXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0U2VydmljZShcbiAgICBjbHVzdGVyTmFtZTogc3RyaW5nLFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICk6IFByb21pc2U8U2VydmljZT4ge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gYXdhaXQgZWNzQ2xpZW50LnNlbmQoXG4gICAgICBuZXcgRGVzY3JpYmVTZXJ2aWNlc0NvbW1hbmQoe1xuICAgICAgICBjbHVzdGVyOiBjbHVzdGVyTmFtZSxcbiAgICAgICAgc2VydmljZXM6IFtzZXJ2aWNlTmFtZV0sXG4gICAgICB9KSxcbiAgICApXG5cbiAgICBpZiAoc2VydmljZXMuc2VydmljZXM/Lmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXJ2aWNlIG5vdCBmb3VuZDogJHtjbHVzdGVyTmFtZX0vJHtzZXJ2aWNlTmFtZX1gKVxuICAgIH1cblxuICAgIHJldHVybiBzZXJ2aWNlcy5zZXJ2aWNlc1swXVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0VGFza0RlZmluaXRpb24oXG4gICAgdGFza0RlZmluaXRpb246IHN0cmluZyxcbiAgKTogUHJvbWlzZTxUYXNrRGVmaW5pdGlvbj4ge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCBlY3NDbGllbnQuc2VuZChcbiAgICAgICAgbmV3IERlc2NyaWJlVGFza0RlZmluaXRpb25Db21tYW5kKHsgdGFza0RlZmluaXRpb24gfSksXG4gICAgICApXG4gICAgKS50YXNrRGVmaW5pdGlvbiFcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVNlcnZpY2VUb0ltYWdlKFxuICAgIGNsdXN0ZXJOYW1lOiBzdHJpbmcsXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICBpbWFnZTogc3RyaW5nLFxuICApIHtcbiAgICBjb25zb2xlLmxvZyhgQ2x1c3RlciBuYW1lOiAke2NsdXN0ZXJOYW1lfWApXG4gICAgY29uc29sZS5sb2coYFNlcnZpY2UgbmFtZTogJHtzZXJ2aWNlTmFtZX1gKVxuXG4gICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IGdldFNlcnZpY2UoY2x1c3Rlck5hbWUsIHNlcnZpY2VOYW1lKVxuICAgIGNvbnN0IHByZXZUYXNrRGVmaW5pdGlvbiA9IGF3YWl0IGdldFRhc2tEZWZpbml0aW9uKHNlcnZpY2UudGFza0RlZmluaXRpb24hKVxuXG4gICAgLy8gRG9uJ3QgYm90aGVyIHVwZGF0aW5nIHRoZSBzZXJ2aWNlIGlmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IHRoZSBsYXRlc3QuXG4gICAgY29uc3QgcHJldkltYWdlID0gcHJldlRhc2tEZWZpbml0aW9uLmNvbnRhaW5lckRlZmluaXRpb25zIVswXS5pbWFnZSFcbiAgICBpZiAocHJldkltYWdlID09PSBpbWFnZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVXBkYXRpbmcgaW1hZ2UgZm9yIHNlcnZpY2UgJyR7c2VydmljZU5hbWV9JyBmcm9tICcke3ByZXZJbWFnZX0nIHRvICcke2ltYWdlfSdgLFxuICAgIClcblxuICAgIGNvbnN0IGV4Y2x1ZGUgPSBbXG4gICAgICBcInJlZ2lzdGVyZWRBdFwiLFxuICAgICAgXCJyZWdpc3RlcmVkQnlcIixcbiAgICAgIFwiY29tcGF0aWJpbGl0aWVzXCIsXG4gICAgICBcInJlcXVpcmVzQXR0cmlidXRlc1wiLFxuICAgICAgXCJyZXZpc2lvblwiLFxuICAgICAgXCJzdGF0dXNcIixcbiAgICAgIFwidGFza0RlZmluaXRpb25Bcm5cIixcbiAgICBdXG5cbiAgICBjb25zdCB1cGRhdGVkU3BlYzogUmVnaXN0ZXJUYXNrRGVmaW5pdGlvbkNvbW1hbmRJbnB1dCA9IHtcbiAgICAgIC4uLk9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocHJldlRhc2tEZWZpbml0aW9uKS5maWx0ZXIoXG4gICAgICAgICAgKFtrZXldKSA9PiAhZXhjbHVkZS5pbmNsdWRlcyhrZXkpLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIGNvbnRhaW5lckRlZmluaXRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5wcmV2VGFza0RlZmluaXRpb24uY29udGFpbmVyRGVmaW5pdGlvbnMhWzBdLFxuICAgICAgICAgIGltYWdlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9IGFzIFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kSW5wdXRcblxuICAgIGNvbnN0IHVwZGF0ZWRUYXNrRGVmaW5pdGlvbiA9IChcbiAgICAgIGF3YWl0IGVjc0NsaWVudC5zZW5kKG5ldyBSZWdpc3RlclRhc2tEZWZpbml0aW9uQ29tbWFuZCh1cGRhdGVkU3BlYykpXG4gICAgKS50YXNrRGVmaW5pdGlvbiFcblxuICAgIGF3YWl0IGVjc0NsaWVudC5zZW5kKFxuICAgICAgbmV3IFVwZGF0ZVNlcnZpY2VDb21tYW5kKHtcbiAgICAgICAgY2x1c3RlcjogY2x1c3Rlck5hbWUsXG4gICAgICAgIHNlcnZpY2U6IHNlcnZpY2VOYW1lLFxuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdXBkYXRlZFRhc2tEZWZpbml0aW9uLnRhc2tEZWZpbml0aW9uQXJuLFxuICAgICAgfSksXG4gICAgKVxuICAgIGNvbnNvbGUubG9nKFwiU2VydmljZSBpcyB1cGRhdGVkXCIpXG4gIH1cblxuICBjb25zdCBjbHVzdGVyTmFtZSA9IHJlcXVpcmVFbnYoXCJDTFVTVEVSX05BTUVcIilcbiAgY29uc3Qgc2VydmljZU5hbWUgPSByZXF1aXJlRW52KFwiU0VSVklDRV9OQU1FXCIpXG4gIGNvbnN0IHJlcG9zaXRvcnlVcmwgPSByZXF1aXJlRW52KFwiUkVQT1NJVE9SWV9VUkxcIilcbiAgY29uc3QgZWNyVGFnU2VjcmV0QXJuID0gcmVxdWlyZUVudihcIkVDUl9UQUdfU0VDUkVUX0FSTlwiKVxuXG4gIC8vIFZhbGlkYXRlIHRoZSBpbnB1dC5cbiAgaWYgKHR5cGVvZiBldmVudC50YWcgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBpbnZhbGlkOiBcIiArIEpTT04uc3RyaW5naWZ5KGV2ZW50LCB1bmRlZmluZWQsIFwiICBcIikpXG4gIH1cblxuICAvLyBSZWdpc3RlciB0YWcgYXMgY3VycmVudCB0YXJnZXQuXG4gIC8vIFRoaXMgaXMgbmVlZGVkIHNvIHRoYXQgQ2xvdWRGb3JtYXRpb24gZGVwbG95bWVudHMsIGUuZy5cbiAgLy8gdXBkYXRlcyB0byB0aGUgVGFzayBEZWZpbml0aW9uLCB3aWxsIHVzZSB0aGUgc2FtZSBpbWFnZS5cbiAgYXdhaXQgc21DbGllbnQuc2VuZChcbiAgICBuZXcgVXBkYXRlU2VjcmV0Q29tbWFuZCh7XG4gICAgICBTZWNyZXRJZDogZWNyVGFnU2VjcmV0QXJuLFxuICAgICAgU2VjcmV0U3RyaW5nOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHRhZzogZXZlbnQudGFnLFxuICAgICAgfSksXG4gICAgfSksXG4gIClcblxuICAvLyBVcGRhdGUgdGhlIHNlcnZpY2UgaWYgd2Uga25vdyB0aGUgc2VydmljZSBuYW1lLiBUaGlzIGlzIHVua25vd25cbiAgLy8gZHVyaW5nIGluaXRpYWwgZGVwbG95bWVudCBvZiB0aGUgc3RhY2suXG4gIGlmIChzZXJ2aWNlTmFtZSAhPT0gXCJcIikge1xuICAgIGNvbnN0IGltYWdlID0gYCR7cmVwb3NpdG9yeVVybH06JHtldmVudC50YWd9YFxuICAgIGF3YWl0IHVwZGF0ZVNlcnZpY2VUb0ltYWdlKGNsdXN0ZXJOYW1lLCBzZXJ2aWNlTmFtZSwgaW1hZ2UpXG4gIH1cblxuICByZXR1cm4ge31cbn1cbiJdfQ==
@@ -7,5 +7,5 @@ interface Response {
7
7
  currentTag: string | null;
8
8
  stabilized: boolean;
9
9
  }
10
- export declare const statusHandler: Handler<unknown, Response>;
10
+ export declare const handler: Handler<unknown, Response>;
11
11
  export {};
@@ -1,12 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.statusHandler = void 0;
4
- // This function is inline-compiled for the lambda.
5
- // It must be self-contained.
6
- const statusHandler = async () => {
3
+ exports.handler = void 0;
4
+ const client_ecs_1 = require("@aws-sdk/client-ecs");
5
+ const handler = async () => {
7
6
  var _a;
8
- const AWS = require("aws-sdk");
9
- const ecs = new AWS.ECS();
7
+ const ecsClient = new client_ecs_1.ECSClient();
10
8
  function requireEnv(name) {
11
9
  const value = process.env[name];
12
10
  if (value === undefined) {
@@ -16,23 +14,18 @@ const statusHandler = async () => {
16
14
  }
17
15
  async function getService(clusterName, serviceName) {
18
16
  var _a;
19
- const services = await ecs
20
- .describeServices({
17
+ const services = await ecsClient.send(new client_ecs_1.DescribeServicesCommand({
21
18
  cluster: clusterName,
22
19
  services: [serviceName],
23
- })
24
- .promise();
20
+ }));
25
21
  if (((_a = services.services) === null || _a === void 0 ? void 0 : _a.length) !== 1) {
26
22
  throw new Error(`Service not found: ${clusterName}/${serviceName}`);
27
23
  }
28
24
  return services.services[0];
29
25
  }
30
26
  async function getTaskDefinition(taskDefinition) {
31
- return (await ecs
32
- .describeTaskDefinition({
33
- taskDefinition: taskDefinition,
34
- })
35
- .promise()).taskDefinition;
27
+ const resp = await ecsClient.send(new client_ecs_1.DescribeTaskDefinitionCommand({ taskDefinition }));
28
+ return resp.taskDefinition;
36
29
  }
37
30
  /**
38
31
  * Check if the service is considered to be stabilized.
@@ -70,5 +63,5 @@ const statusHandler = async () => {
70
63
  stabilized: isStabilized(service),
71
64
  };
72
65
  };
73
- exports.statusHandler = statusHandler;
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWNzLXVwZGF0ZS1pbWFnZS9zdGF0dXMtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnQkEsbURBQW1EO0FBQ25ELDZCQUE2QjtBQUN0QixNQUFNLGFBQWEsR0FBK0IsS0FBSyxJQUFJLEVBQUU7O0lBQ2xFLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQWMsQ0FBQTtJQUVyQyxTQUFTLFVBQVUsQ0FBQyxJQUFZO1FBQzlCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0IsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUE7UUFDcEMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELEtBQUssVUFBVSxVQUFVLENBQ3ZCLFdBQW1CLEVBQ25CLFdBQW1COztRQUVuQixNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUc7YUFDdkIsZ0JBQWdCLENBQUM7WUFDaEIsT0FBTyxFQUFFLFdBQVc7WUFDcEIsUUFBUSxFQUFFLENBQUMsV0FBVyxDQUFDO1NBQ3hCLENBQUM7YUFDRCxPQUFPLEVBQUUsQ0FBQTtRQUVaLElBQUksQ0FBQSxNQUFBLFFBQVEsQ0FBQyxRQUFRLDBDQUFFLE1BQU0sTUFBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixXQUFXLElBQUksV0FBVyxFQUFFLENBQUMsQ0FBQTtRQUNyRSxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFFRCxLQUFLLFVBQVUsaUJBQWlCLENBQzlCLGNBQXNCO1FBRXRCLE9BQU8sQ0FDTCxNQUFNLEdBQUc7YUFDTixzQkFBc0IsQ0FBQztZQUN0QixjQUFjLEVBQUUsY0FBYztTQUMvQixDQUFDO2FBQ0QsT0FBTyxFQUFFLENBQ2IsQ0FBQyxjQUFlLENBQUE7SUFDbkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxZQUFZLENBQUMsT0FBd0I7O1FBQzVDLE9BQU8sQ0FDTCxDQUFBLE1BQUEsT0FBTyxDQUFDLFdBQVcsMENBQUUsTUFBTSxLQUFJLENBQUM7WUFDaEMsT0FBTyxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsWUFBWSxDQUM3QyxDQUFBO0lBQ0gsQ0FBQztJQUVELFNBQVMsVUFBVSxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDOUMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBRTlDLHNFQUFzRTtJQUN0RSxvREFBb0Q7SUFDcEQsSUFBSSxXQUFXLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDdkIsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxVQUFVLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQzFELE1BQU0sY0FBYyxHQUFHLE1BQUEsT0FBTyxDQUFDLFdBQVcsMENBQUUsSUFBSSxDQUM5QyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQ2hDLENBQUE7SUFFRCxNQUFNLGNBQWMsR0FBRyxNQUFNLGlCQUFpQixDQUM1QyxjQUFlLENBQUMsY0FBZSxDQUNoQyxDQUFBO0lBRUQsMkRBQTJEO0lBRTNELE9BQU87UUFDTCxVQUFVLEVBQUUsVUFBVSxDQUFDLGNBQWMsQ0FBQyxvQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFNLENBQUM7UUFDdEUsVUFBVSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUM7S0FDbEMsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQXpGWSxRQUFBLGFBQWEsaUJBeUZ6QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1jYWxsICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXMgKi9cbmltcG9ydCB0eXBlIHsgSGFuZGxlciB9IGZyb20gXCJhd3MtbGFtYmRhXCJcbmltcG9ydCB0eXBlICogYXMgX0FXUyBmcm9tIFwiYXdzLXNka1wiXG5cbmludGVyZmFjZSBSZXNwb25zZSB7XG4gIC8qKlxuICAgKiBUaGUgdGFnIGlzIHVua25vd24gd2hlbiB0aGUgc3RhY2sgaXMgbm90IHlldCBmdWxseSBzZXQgdXBcbiAgICogZHVyaW5nIGluaXRpYWwgYWNjb3VudC9zZXJ2aWNlIGRlcGxveW1lbnQuXG4gICAqL1xuICBjdXJyZW50VGFnOiBzdHJpbmcgfCBudWxsXG4gIHN0YWJpbGl6ZWQ6IGJvb2xlYW5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBpbmxpbmUtY29tcGlsZWQgZm9yIHRoZSBsYW1iZGEuXG4vLyBJdCBtdXN0IGJlIHNlbGYtY29udGFpbmVkLlxuZXhwb3J0IGNvbnN0IHN0YXR1c0hhbmRsZXI6IEhhbmRsZXI8dW5rbm93biwgUmVzcG9uc2U+ID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCBBV1MgPSByZXF1aXJlKFwiYXdzLXNka1wiKVxuICBjb25zdCBlY3MgPSBuZXcgQVdTLkVDUygpIGFzIF9BV1MuRUNTXG5cbiAgZnVuY3Rpb24gcmVxdWlyZUVudihuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnZbbmFtZV1cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nICR7bmFtZX1gKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGdldFNlcnZpY2UoXG4gICAgY2x1c3Rlck5hbWU6IHN0cmluZyxcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICApOiBQcm9taXNlPEFXUy5FQ1MuU2VydmljZT4ge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gYXdhaXQgZWNzXG4gICAgICAuZGVzY3JpYmVTZXJ2aWNlcyh7XG4gICAgICAgIGNsdXN0ZXI6IGNsdXN0ZXJOYW1lLFxuICAgICAgICBzZXJ2aWNlczogW3NlcnZpY2VOYW1lXSxcbiAgICAgIH0pXG4gICAgICAucHJvbWlzZSgpXG5cbiAgICBpZiAoc2VydmljZXMuc2VydmljZXM/Lmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXJ2aWNlIG5vdCBmb3VuZDogJHtjbHVzdGVyTmFtZX0vJHtzZXJ2aWNlTmFtZX1gKVxuICAgIH1cblxuICAgIHJldHVybiBzZXJ2aWNlcy5zZXJ2aWNlc1swXVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0VGFza0RlZmluaXRpb24oXG4gICAgdGFza0RlZmluaXRpb246IHN0cmluZyxcbiAgKTogUHJvbWlzZTxBV1MuRUNTLlRhc2tEZWZpbml0aW9uPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IGVjc1xuICAgICAgICAuZGVzY3JpYmVUYXNrRGVmaW5pdGlvbih7XG4gICAgICAgICAgdGFza0RlZmluaXRpb246IHRhc2tEZWZpbml0aW9uLFxuICAgICAgICB9KVxuICAgICAgICAucHJvbWlzZSgpXG4gICAgKS50YXNrRGVmaW5pdGlvbiFcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgc2VydmljZSBpcyBjb25zaWRlcmVkIHRvIGJlIHN0YWJpbGl6ZWQuXG4gICAqXG4gICAqIFVzZXMgdGhlIGxvZ2ljIGRlc2NyaWJlZCBhdFxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xpL2xhdGVzdC9yZWZlcmVuY2UvZWNzL3dhaXQvc2VydmljZXMtc3RhYmxlLmh0bWxcbiAgICovXG4gIGZ1bmN0aW9uIGlzU3RhYmlsaXplZChzZXJ2aWNlOiBBV1MuRUNTLlNlcnZpY2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgc2VydmljZS5kZXBsb3ltZW50cz8ubGVuZ3RoID09IDEgJiZcbiAgICAgIHNlcnZpY2UucnVubmluZ0NvdW50ID09IHNlcnZpY2UuZGVzaXJlZENvdW50XG4gICAgKVxuICB9XG5cbiAgZnVuY3Rpb24gZXh0cmFjdFRhZyhpbWFnZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFpbWFnZS5pbmNsdWRlcyhcIjpcIikpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBpbWFnZS5yZXBsYWNlKC8uKjovLCBcIlwiKVxuICB9XG5cbiAgY29uc3QgY2x1c3Rlck5hbWUgPSByZXF1aXJlRW52KFwiQ0xVU1RFUl9OQU1FXCIpXG4gIGNvbnN0IHNlcnZpY2VOYW1lID0gcmVxdWlyZUVudihcIlNFUlZJQ0VfTkFNRVwiKVxuXG4gIC8vIFRoZSBzZXJ2aWNlIG5hbWUgaXMgdW5rbm93biBkdXJpbmcgaW5pdGlhbCBkZXBsb3ltZW50IG9mIHRoZSBzdGFjay5cbiAgLy8gSW4gdGhpcyBjYXNlIHdlIHJldHVybiBzdGFiaWxpemVkIHN0YXR1cyBhcyB0cnVlLlxuICBpZiAoc2VydmljZU5hbWUgPT09IFwiXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudFRhZzogbnVsbCxcbiAgICAgIHN0YWJpbGl6ZWQ6IHRydWUsXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2VydmljZSA9IGF3YWl0IGdldFNlcnZpY2UoY2x1c3Rlck5hbWUsIHNlcnZpY2VOYW1lKVxuICBjb25zdCBtYWluRGVwbG95bWVudCA9IHNlcnZpY2UuZGVwbG95bWVudHM/LmZpbmQoXG4gICAgKGl0KSA9PiBpdC5zdGF0dXMgPT09IFwiUFJJTUFSWVwiLFxuICApXG5cbiAgY29uc3QgdGFza0RlZmluaXRpb24gPSBhd2FpdCBnZXRUYXNrRGVmaW5pdGlvbihcbiAgICBtYWluRGVwbG95bWVudCEudGFza0RlZmluaXRpb24hLFxuICApXG5cbiAgLy8gT25seSBvbmUgY29udGFpbmVyIGlzIHN1cHBvcnRlZCBmb3IgdGhlIHRhc2sgZGVmaW5pdGlvbi5cblxuICByZXR1cm4ge1xuICAgIGN1cnJlbnRUYWc6IGV4dHJhY3RUYWcodGFza0RlZmluaXRpb24uY29udGFpbmVyRGVmaW5pdGlvbnMhWzBdLmltYWdlISksXG4gICAgc3RhYmlsaXplZDogaXNTdGFiaWxpemVkKHNlcnZpY2UpLFxuICB9XG59XG4iXX0=
66
+ exports.handler = handler;
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWNzLXVwZGF0ZS1pbWFnZS9zdGF0dXMtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxvREFNNEI7QUFXckIsTUFBTSxPQUFPLEdBQStCLEtBQUssSUFBSSxFQUFFOztJQUM1RCxNQUFNLFNBQVMsR0FBRyxJQUFJLHNCQUFTLEVBQUUsQ0FBQTtJQUVqQyxTQUFTLFVBQVUsQ0FBQyxJQUFZO1FBQzlCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0IsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUE7UUFDcEMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELEtBQUssVUFBVSxVQUFVLENBQ3ZCLFdBQW1CLEVBQ25CLFdBQW1COztRQUVuQixNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQ25DLElBQUksb0NBQXVCLENBQUM7WUFDMUIsT0FBTyxFQUFFLFdBQVc7WUFDcEIsUUFBUSxFQUFFLENBQUMsV0FBVyxDQUFDO1NBQ3hCLENBQUMsQ0FDSCxDQUFBO1FBRUQsSUFBSSxDQUFBLE1BQUEsUUFBUSxDQUFDLFFBQVEsMENBQUUsTUFBTSxNQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLFdBQVcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFBO1FBQ3JFLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVELEtBQUssVUFBVSxpQkFBaUIsQ0FDOUIsY0FBc0I7UUFFdEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUMvQixJQUFJLDBDQUE2QixDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FDdEQsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWUsQ0FBQTtJQUM3QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxTQUFTLFlBQVksQ0FBQyxPQUFnQjs7UUFDcEMsT0FBTyxDQUNMLENBQUEsTUFBQSxPQUFPLENBQUMsV0FBVywwQ0FBRSxNQUFNLEtBQUksQ0FBQztZQUNoQyxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQzdDLENBQUE7SUFDSCxDQUFDO0lBRUQsU0FBUyxVQUFVLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUM5QyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUE7SUFFOUMsc0VBQXNFO0lBQ3RFLG9EQUFvRDtJQUNwRCxJQUFJLFdBQVcsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUN2QixPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUk7WUFDaEIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDMUQsTUFBTSxjQUFjLEdBQUcsTUFBQSxPQUFPLENBQUMsV0FBVywwQ0FBRSxJQUFJLENBQzlDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FDaEMsQ0FBQTtJQUVELE1BQU0sY0FBYyxHQUFHLE1BQU0saUJBQWlCLENBQzVDLGNBQWUsQ0FBQyxjQUFlLENBQ2hDLENBQUE7SUFFRCwyREFBMkQ7SUFFM0QsT0FBTztRQUNMLFVBQVUsRUFBRSxVQUFVLENBQUMsY0FBYyxDQUFDLG9CQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQU0sQ0FBQztRQUN0RSxVQUFVLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQztLQUNsQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBckZZLFFBQUEsT0FBTyxXQXFGbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEhhbmRsZXIgfSBmcm9tIFwiYXdzLWxhbWJkYVwiXG5pbXBvcnQge1xuICBFQ1NDbGllbnQsXG4gIERlc2NyaWJlU2VydmljZXNDb21tYW5kLFxuICBEZXNjcmliZVRhc2tEZWZpbml0aW9uQ29tbWFuZCxcbiAgU2VydmljZSxcbiAgVGFza0RlZmluaXRpb24sXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZWNzXCJcblxuaW50ZXJmYWNlIFJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIFRoZSB0YWcgaXMgdW5rbm93biB3aGVuIHRoZSBzdGFjayBpcyBub3QgeWV0IGZ1bGx5IHNldCB1cFxuICAgKiBkdXJpbmcgaW5pdGlhbCBhY2NvdW50L3NlcnZpY2UgZGVwbG95bWVudC5cbiAgICovXG4gIGN1cnJlbnRUYWc6IHN0cmluZyB8IG51bGxcbiAgc3RhYmlsaXplZDogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgaGFuZGxlcjogSGFuZGxlcjx1bmtub3duLCBSZXNwb25zZT4gPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGVjc0NsaWVudCA9IG5ldyBFQ1NDbGllbnQoKVxuXG4gIGZ1bmN0aW9uIHJlcXVpcmVFbnYobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52W25hbWVdXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyAke25hbWV9YClcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBnZXRTZXJ2aWNlKFxuICAgIGNsdXN0ZXJOYW1lOiBzdHJpbmcsXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxTZXJ2aWNlPiB7XG4gICAgY29uc3Qgc2VydmljZXMgPSBhd2FpdCBlY3NDbGllbnQuc2VuZChcbiAgICAgIG5ldyBEZXNjcmliZVNlcnZpY2VzQ29tbWFuZCh7XG4gICAgICAgIGNsdXN0ZXI6IGNsdXN0ZXJOYW1lLFxuICAgICAgICBzZXJ2aWNlczogW3NlcnZpY2VOYW1lXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIGlmIChzZXJ2aWNlcy5zZXJ2aWNlcz8ubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlcnZpY2Ugbm90IGZvdW5kOiAke2NsdXN0ZXJOYW1lfS8ke3NlcnZpY2VOYW1lfWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHNlcnZpY2VzLnNlcnZpY2VzWzBdXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBnZXRUYXNrRGVmaW5pdGlvbihcbiAgICB0YXNrRGVmaW5pdGlvbjogc3RyaW5nLFxuICApOiBQcm9taXNlPFRhc2tEZWZpbml0aW9uPiB7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGVjc0NsaWVudC5zZW5kKFxuICAgICAgbmV3IERlc2NyaWJlVGFza0RlZmluaXRpb25Db21tYW5kKHsgdGFza0RlZmluaXRpb24gfSksXG4gICAgKVxuICAgIHJldHVybiByZXNwLnRhc2tEZWZpbml0aW9uIVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBzZXJ2aWNlIGlzIGNvbnNpZGVyZWQgdG8gYmUgc3RhYmlsaXplZC5cbiAgICpcbiAgICogVXNlcyB0aGUgbG9naWMgZGVzY3JpYmVkIGF0XG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jbGkvbGF0ZXN0L3JlZmVyZW5jZS9lY3Mvd2FpdC9zZXJ2aWNlcy1zdGFibGUuaHRtbFxuICAgKi9cbiAgZnVuY3Rpb24gaXNTdGFiaWxpemVkKHNlcnZpY2U6IFNlcnZpY2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgc2VydmljZS5kZXBsb3ltZW50cz8ubGVuZ3RoID09IDEgJiZcbiAgICAgIHNlcnZpY2UucnVubmluZ0NvdW50ID09IHNlcnZpY2UuZGVzaXJlZENvdW50XG4gICAgKVxuICB9XG5cbiAgZnVuY3Rpb24gZXh0cmFjdFRhZyhpbWFnZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFpbWFnZS5pbmNsdWRlcyhcIjpcIikpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBpbWFnZS5yZXBsYWNlKC8uKjovLCBcIlwiKVxuICB9XG5cbiAgY29uc3QgY2x1c3Rlck5hbWUgPSByZXF1aXJlRW52KFwiQ0xVU1RFUl9OQU1FXCIpXG4gIGNvbnN0IHNlcnZpY2VOYW1lID0gcmVxdWlyZUVudihcIlNFUlZJQ0VfTkFNRVwiKVxuXG4gIC8vIFRoZSBzZXJ2aWNlIG5hbWUgaXMgdW5rbm93biBkdXJpbmcgaW5pdGlhbCBkZXBsb3ltZW50IG9mIHRoZSBzdGFjay5cbiAgLy8gSW4gdGhpcyBjYXNlIHdlIHJldHVybiBzdGFiaWxpemVkIHN0YXR1cyBhcyB0cnVlLlxuICBpZiAoc2VydmljZU5hbWUgPT09IFwiXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudFRhZzogbnVsbCxcbiAgICAgIHN0YWJpbGl6ZWQ6IHRydWUsXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2VydmljZSA9IGF3YWl0IGdldFNlcnZpY2UoY2x1c3Rlck5hbWUsIHNlcnZpY2VOYW1lKVxuICBjb25zdCBtYWluRGVwbG95bWVudCA9IHNlcnZpY2UuZGVwbG95bWVudHM/LmZpbmQoXG4gICAgKGl0KSA9PiBpdC5zdGF0dXMgPT09IFwiUFJJTUFSWVwiLFxuICApXG5cbiAgY29uc3QgdGFza0RlZmluaXRpb24gPSBhd2FpdCBnZXRUYXNrRGVmaW5pdGlvbihcbiAgICBtYWluRGVwbG95bWVudCEudGFza0RlZmluaXRpb24hLFxuICApXG5cbiAgLy8gT25seSBvbmUgY29udGFpbmVyIGlzIHN1cHBvcnRlZCBmb3IgdGhlIHRhc2sgZGVmaW5pdGlvbi5cblxuICByZXR1cm4ge1xuICAgIGN1cnJlbnRUYWc6IGV4dHJhY3RUYWcodGFza0RlZmluaXRpb24uY29udGFpbmVyRGVmaW5pdGlvbnMhWzBdLmltYWdlISksXG4gICAgc3RhYmlsaXplZDogaXNTdGFiaWxpemVkKHNlcnZpY2UpLFxuICB9XG59XG4iXX0=